r3795 - in trunk/src/target/OM-2007.2/applications/openmoko-messages2: . data src
chris at sita.openmoko.org
chris at sita.openmoko.org
Wed Jan 9 15:38:26 CET 2008
Author: chris
Date: 2008-01-09 15:38:23 +0100 (Wed, 09 Jan 2008)
New Revision: 3795
Added:
trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/org.openmoko.OpenmokoMessages2.service.in
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.h
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.xml
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/Makefile.am
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.h
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.h
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
Log:
* configure.ac:
* data/Makefile.am:
* data/org.openmoko.OpenmokoMessages2.service.in:
* src/Makefile.am:
* src/sms-compose.c: (sms_compose_refresh):
* src/sms-compose.h:
* src/sms-contacts.c: (contacts_changed_cb),
(contacts_seq_complete_cb), (sms_contacts_page_new):
* src/sms-dbus.c: (sms_dbus_class_init), (sms_dbus_init),
(sms_dbus_new), (free_data), (view_messages_idle),
(send_message_idle), (sms_dbus_view_messages),
(sms_dbus_send_message), (sms_dbus_append_recipient):
* src/sms-dbus.h:
* src/sms-dbus.xml:
* src/sms-main.c: (main):
* src/sms-notes.c: (notes_treeview_scroll_to_bottom),
(note_progress_cb), (page_shown), (sms_notes_refresh):
* src/sms-notes.h:
* src/sms-utils.c: (sms_select_contact):
* src/sms-utils.h:
* src/sms.h:
Add DBus interface for viewing/sending SMS messages. Also, break
scrolling to bottom of messages (but it was even more broken before,
really)
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2008-01-09 14:38:23 UTC (rev 3795)
@@ -1,3 +1,30 @@
+2008-01-09 Chris Lord <chris at openedhand.com>
+
+ * configure.ac:
+ * data/Makefile.am:
+ * data/org.openmoko.OpenmokoMessages2.service.in:
+ * src/Makefile.am:
+ * src/sms-compose.c: (sms_compose_refresh):
+ * src/sms-compose.h:
+ * src/sms-contacts.c: (contacts_changed_cb),
+ (contacts_seq_complete_cb), (sms_contacts_page_new):
+ * src/sms-dbus.c: (sms_dbus_class_init), (sms_dbus_init),
+ (sms_dbus_new), (free_data), (view_messages_idle),
+ (send_message_idle), (sms_dbus_view_messages),
+ (sms_dbus_send_message), (sms_dbus_append_recipient):
+ * src/sms-dbus.h:
+ * src/sms-dbus.xml:
+ * src/sms-main.c: (main):
+ * src/sms-notes.c: (notes_treeview_scroll_to_bottom),
+ (note_progress_cb), (page_shown), (sms_notes_refresh):
+ * src/sms-notes.h:
+ * src/sms-utils.c: (sms_select_contact):
+ * src/sms-utils.h:
+ * src/sms.h:
+ Add DBus interface for viewing/sending SMS messages. Also, break
+ scrolling to bottom of messages (but it was even more broken before,
+ really)
+
2008-01-07 Chris Lord <chris at openedhand.com>
* src/sms-notes.c: (scroll_notes_to_bottom_cb), (note_progress_cb),
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac 2008-01-09 14:38:23 UTC (rev 3795)
@@ -26,6 +26,21 @@
AC_DEFINE(HAVE_PHOTO_TYPE, 1, [Defined if EContactPhotoType exists])
fi
+dnl ==============================================
+dnl DBUS
+dnl ==============================================
+
+DBUS_GLIB_BIN="`$PKG_CONFIG --variable=exec_prefix dbus-glib-1`/bin"
+
+dnl AC_ARG_WITH(dbusbindir,
+dnl AC_HELP_STRING([--with-dbusbindir=[=DIR]],
+dnl [Use a different path to dbus tools]),,
+dnl dbusdir=$withval;)
+
+AC_ARG_WITH(dbusbindir,[ --with-dbusbindir=DIR dbus tools in DIR], [DBUS_GLIB_BIN="$withval"])
+echo "DBus tools location ${DBUS_GLIB_BIN}"
+AC_SUBST(DBUS_GLIB_BIN)
+
AC_OUTPUT([
Makefile
src/Makefile
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/Makefile.am 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/Makefile.am 2008-01-09 14:38:23 UTC (rev 3795)
@@ -2,6 +2,17 @@
desktopdir = $(datadir)/applications
desktop_DATA = openmoko-messages.desktop
+#
+# Dbus service file
+#
+servicedir = $(datadir)/dbus-1/services
+service_in_files = org.openmoko.OpenmokoMessages2.service.in
+service_DATA = $(service_in_files:.service.in=.service)
+
+# Expand the bindir in the service file
+$(service_DATA) : $(service_in_files) Makefile
+ sed -e "s|\@bindir\@|$(bindir)|g" $< > $@
+
MAINTAINERCLEANFILES = Makefile.in
EXTRA_DIST = $(desktop_DATA)
Added: trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/org.openmoko.OpenmokoMessages2.service.in
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/org.openmoko.OpenmokoMessages2.service.in 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/data/org.openmoko.OpenmokoMessages2.service.in 2008-01-09 14:38:23 UTC (rev 3795)
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.openmoko.openmoko-messages2
+Exec=@bindir@/openmoko-messages
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am 2008-01-09 14:38:23 UTC (rev 3795)
@@ -14,5 +14,14 @@
sms-compose.c \
sms-compose.h \
sms-utils.c \
- sms-utils.h
+ sms-utils.h \
+ sms-dbus.c \
+ sms-dbus.h
+%-glue.h: %.xml
+ $(LIBTOOL) --mode=execute $(DBUS_GLIB_BIN)/dbus-binding-tool --prefix=$(subst -,_,$*) --mode=glib-server --output=$@ $<
+
+BUILT_SOURCES = sms-dbus-glue.h
+
+EXTRA_DIST = sms-dbus.xml
+
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -110,6 +110,19 @@
MOKO_STOCK_SMS_NEW);
}
+void
+sms_compose_refresh (SmsData *data)
+{
+ if (gtk_notebook_get_current_page (GTK_NOTEBOOK (data->notebook)) ==
+ SMS_PAGE_COMPOSE) {
+ page_hidden (data);
+ page_shown (data);
+ } else {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook),
+ SMS_PAGE_COMPOSE);
+ }
+}
+
static void
notify_visible_cb (GObject *gobject, GParamSpec *arg1, SmsData *data)
{
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.h 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.h 2008-01-09 14:38:23 UTC (rev 3795)
@@ -23,5 +23,6 @@
#include "sms.h"
GtkWidget *sms_compose_page_new (SmsData *data);
+void sms_compose_refresh (SmsData *data);
#endif /* SMS_COMPOSE_H */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -233,6 +233,8 @@
static void
contacts_changed_cb (EBookView *ebookview, GList *contacts, SmsData *data)
{
+ data->book_seq_complete = FALSE;
+
for (; contacts; contacts = contacts->next) {
GList *categories, *c;
GtkTreeIter *iter;
@@ -301,6 +303,13 @@
}
static void
+contacts_seq_complete_cb (EBookView *ebookview, EBookViewStatus status,
+ SmsData *data)
+{
+ data->book_seq_complete = TRUE;
+}
+
+static void
free_iter_slice (GtkTreeIter *iter)
{
g_slice_free (GtkTreeIter, iter);
@@ -594,6 +603,7 @@
GError *error = NULL;
+ data->book_seq_complete = FALSE;
data->contact_groups = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify)g_free, (GDestroyNotify)malloc_list_free);
data->group_refs = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -736,6 +746,8 @@
G_CALLBACK (contacts_changed_cb), data);
g_signal_connect (view, "contacts-removed",
G_CALLBACK (contacts_removed_cb), data);
+ g_signal_connect (view, "sequence-complete",
+ G_CALLBACK (contacts_seq_complete_cb), data);
e_book_view_start (view);
/* Connect to toolbar delete buttons */
Added: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -0,0 +1,152 @@
+/*
+ * openmoko-messages -- OpenMoko SMS Application
+ *
+ * Authored by Chris Lord <chris at openedhand.com>
+ *
+ * Copyright (C) 2008 OpenMoko Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser Public License as published by
+ * the Free Software Foundation; version 2 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date$) [$Author$]
+ */
+
+#include "sms.h"
+#include "sms-dbus.h"
+#include "sms-utils.h"
+#include "sms-compose.h"
+#include "sms-notes.h"
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+
+G_DEFINE_TYPE (SmsDbus, sms_dbus, G_TYPE_OBJECT)
+
+#include "sms-dbus-glue.h"
+
+static void
+sms_dbus_class_init (SmsDbusClass *klass)
+{
+ dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+ &dbus_glib_sms_dbus_object_info);
+}
+
+static void
+sms_dbus_init (SmsDbus *sms_dbus)
+{
+}
+
+SmsDbus *
+sms_dbus_new (SmsData *data)
+{
+ SmsDbus *sms_dbus = g_object_new (SMS_TYPE_DBUS, NULL);
+ sms_dbus->priv = data;
+ return sms_dbus;
+}
+
+typedef struct {
+ SmsData *data;
+ gchar *uid;
+ gchar *number;
+ gchar *message;
+} SmsDbusData;
+
+static void
+free_data (SmsDbusData *data)
+{
+ g_free (data->uid);
+ g_free (data->number);
+ g_free (data->message);
+ g_slice_free (SmsDbusData, data);
+}
+
+static gboolean
+view_messages_idle (SmsDbusData *data)
+{
+ if (data->data->book_seq_complete) {
+ if (sms_select_contact (data->data, data->uid))
+ sms_notes_refresh (data->data);
+
+ free_data (data);
+ return FALSE;
+ } else
+ return TRUE;
+}
+
+static gboolean
+send_message_idle (SmsDbusData *data)
+{
+ if (data->data->book_seq_complete) {
+ if (sms_select_contact (data->data, data->uid))
+ sms_compose_refresh (data->data);
+
+ free_data (data);
+ return FALSE;
+ } else
+ return TRUE;
+}
+
+gboolean
+sms_dbus_view_messages (SmsDbus *sms_dbus, const gchar *uid, GError **error)
+{
+ EContact *contact;
+
+ if (e_book_get_contact (sms_dbus->priv->ebook, uid, &contact, error)) {
+ SmsDbusData *data;
+
+ g_object_unref (contact);
+
+ data = g_slice_new0 (SmsDbusData);
+ data->data = sms_dbus->priv;
+ data->uid = g_strdup (uid);
+
+ g_idle_add ((GSourceFunc)view_messages_idle, data);
+
+ return TRUE;
+ } else
+ return FALSE;
+}
+
+gboolean
+sms_dbus_send_message (SmsDbus *sms_dbus, const gchar *uid, const gchar *number,
+ const gchar *message, GError **error)
+{
+ EContact *contact;
+
+ if (e_book_get_contact (sms_dbus->priv->ebook, uid, &contact, error)) {
+ SmsDbusData *data;
+
+ g_object_unref (contact);
+
+ data = g_slice_new0 (SmsDbusData);
+ data->data = sms_dbus->priv;
+ data->uid = g_strdup (uid);
+ data->number = g_strdup (number);
+ data->message = g_strdup (message);
+
+ g_idle_add ((GSourceFunc)send_message_idle, data);
+
+ return TRUE;
+ } else
+ return FALSE;
+}
+
+gboolean
+sms_dbus_append_recipient (SmsDbus *sms_dbus, const gchar *uid,
+ const gchar *number, GError **error)
+{
+ EContact *contact;
+
+ if (e_book_get_contact (sms_dbus->priv->ebook, uid, &contact, error)) {
+ /* TODO: Add multiple recipient support and implement this */
+ g_object_unref (contact);
+ return TRUE;
+ } else
+ return FALSE;
+}
+
Added: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.h 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.h 2008-01-09 14:38:23 UTC (rev 3795)
@@ -0,0 +1,74 @@
+/*
+ * openmoko-messages -- OpenMoko SMS Application
+ *
+ * Authored by Chris Lord <chris at openedhand.com>
+ *
+ * Copyright (C) 2008 OpenMoko Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser Public License as published by
+ * the Free Software Foundation; version 2 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date$) [$Author$]
+ */
+
+#ifndef SMS_DBUS_H
+#define SMS_DBUS_H
+
+#include "sms.h"
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define SMS_TYPE_DBUS (sms_dbus_get_type ())
+
+#define SMS_DBUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ SMS_TYPE_DBUS, SmsDbus))
+
+#define SMS_DBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
+ SMS_TYPE_DBUS, SmsDbusClass))
+
+#define SMS_IS_DBUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ SMS_TYPE_DBUS))
+
+#define SMS_IS_DBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ SMS_TYPE_DBUS))
+
+#define SMS_DBUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+ SMS_TYPE_DBUS, SmsDbusClass))
+
+typedef struct _SmsDbus SmsDbus;
+typedef struct _SmsDbusClass SmsDbusClass;
+
+struct _SmsDbus
+{
+ GObject parent;
+ SmsData *priv;
+};
+
+struct _SmsDbusClass
+{
+ GObjectClass parent_class;
+};
+
+SmsDbus * sms_dbus_new (SmsData *data);
+
+/* dbus methods */
+gboolean sms_dbus_view_messages (SmsDbus *sms_dbus, const gchar *uid,
+ GError **error);
+gboolean sms_dbus_send_message (SmsDbus *sms_dbus, const gchar *uid,
+ const gchar *number, const gchar *message,
+ GError **error);
+gboolean sms_dbus_append_recipient (SmsDbus *sms_dbus, const gchar *uid,
+ const gchar *number, GError **error);
+
+G_END_DECLS
+
+#endif /* SMS_DBUS_H */
+
Added: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.xml
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.xml 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-dbus.xml 2008-01-09 14:38:23 UTC (rev 3795)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<node name="/org/openmoko/OpenmokoMessages2">
+<interface name="org.openmoko.OpenmokoMessages2">
+<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="sms_dbus"/>
+
+ <method name="ViewMessages">
+ <arg type="s" name="uid" direction="in" />
+ </method>
+
+ <method name="SendMessage">
+ <arg type="s" name="uid" direction="in" />
+ <arg type="s" name="number" direction="in" />
+ <arg type="s" name="message" direction="in" />
+ </method>
+
+ <method name="AppendRecipient">
+ <arg type="s" name="uid" direction="in" />
+ <arg type="s" name="number" direction="in" />
+ </method>
+
+</interface>
+</node>
+
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -21,8 +21,14 @@
#include "sms-contacts.h"
#include "sms-notes.h"
#include "sms-compose.h"
+#include "sms-dbus.h"
#include <libmokoui2/moko-stock.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+#define SMS_NAMESPACE "org.openmoko.OpenmokoMessages2"
+#define SMS_PATH "/org/openmoko/OpenmokoMessages2"
+
static void
notebook_add_page_with_icon (GtkWidget *notebook, GtkWidget *child,
const gchar *icon_name, int padding)
@@ -52,6 +58,7 @@
{
SmsData data;
DBusGConnection *connection;
+ DBusGProxy *proxy;
GtkWidget *vbox, *toolbar;
GError *error = NULL;
@@ -65,9 +72,25 @@
g_error_free (error);
data.sms_proxy = NULL;
} else {
+ guint32 ret;
+
data.sms_proxy = dbus_g_proxy_new_for_name (connection,
"org.openmoko.PhoneKit", "/org/openmoko/PhoneKit/Sms",
"org.openmoko.PhoneKit.Sms");
+
+ proxy = dbus_g_proxy_new_for_name (connection,
+ DBUS_SERVICE_DBUS, DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS);
+ if (org_freedesktop_DBus_request_name (proxy,
+ SMS_NAMESPACE, 0, &ret, &error)) {
+ SmsDbus *sms_dbus = sms_dbus_new (&data);
+ dbus_g_connection_register_g_object (connection,
+ SMS_PATH, G_OBJECT (sms_dbus));
+ } else {
+ g_warning ("Failing requestion dbus name %s: %s",
+ SMS_NAMESPACE, error->message);
+ g_error_free (error);
+ }
}
data.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -42,6 +42,27 @@
RECV_NOTES,
};
+static gboolean
+notes_treeview_scroll_to_bottom (SmsData *data)
+{
+ GtkTreePath *path;
+ GtkTreeModel *model;
+ GtkTreeViewColumn *column;
+
+ column = gtk_tree_view_get_column (
+ GTK_TREE_VIEW (data->notes_treeview), 0);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (data->notes_treeview));
+ path = gtk_tree_path_new_from_indices (
+ gtk_tree_model_iter_n_children (model, NULL) - 1, -1);
+
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (data->notes_treeview),
+ path, column, TRUE, 1.0, 0.0);
+
+ gtk_tree_path_free (path);
+
+ return FALSE;
+}
+
static void
note_changed_cb (JanaStoreView *store_view, GList *components, SmsData *data)
{
@@ -90,22 +111,15 @@
}
static void
-scroll_notes_to_bottom_cb (GtkAdjustment *vadjust, SmsData *data)
-{
- /* Scroll note list to the bottom */
- if (vadjust->value != (vadjust->upper - vadjust->page_size))
- gtk_adjustment_set_value (vadjust,
- vadjust->upper - vadjust->page_size);
-}
-
-static void
note_progress_cb (JanaStoreView *store_view, gint percent, SmsData *data)
{
if (percent != 100) return;
- /* Remove scroll-to-bottom callback */
- g_signal_handlers_disconnect_by_func (
- data->notes_treeview, scroll_notes_to_bottom_cb, data);
+ notes_treeview_scroll_to_bottom (data);
+ /*g_idle_add ((GSourceFunc)notes_treeview_scroll_to_bottom, data);*/
+
+ g_signal_handlers_disconnect_by_func (store_view,
+ note_progress_cb, data);
}
static gboolean
@@ -180,8 +194,6 @@
G_CALLBACK (scroll_changed_cb), data);
g_signal_connect (vadjust, "value-changed",
G_CALLBACK (scroll_changed_cb), data);
- g_signal_connect (vadjust, "changed",
- G_CALLBACK (scroll_notes_to_bottom_cb), data);
/* Assign the recipient photo to the generic avatar icon, in case we
* can't find it later.
@@ -289,6 +301,19 @@
}
}
+void
+sms_notes_refresh (SmsData *data)
+{
+ if (gtk_notebook_get_current_page (GTK_NOTEBOOK (data->notebook)) ==
+ SMS_PAGE_NOTES) {
+ page_hidden (data);
+ page_shown (data);
+ } else {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook),
+ SMS_PAGE_NOTES);
+ }
+}
+
static void
notify_visible_cb (GObject *gobject, GParamSpec *arg1, SmsData *data)
{
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.h 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.h 2008-01-09 14:38:23 UTC (rev 3795)
@@ -23,5 +23,6 @@
#include "sms.h"
GtkWidget *sms_notes_page_new (SmsData *data);
+void sms_notes_refresh (SmsData *data);
#endif
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c 2008-01-09 14:38:23 UTC (rev 3795)
@@ -33,6 +33,32 @@
gtk_combo_box_remove_text (combo, 0);
}
+gboolean
+sms_select_contact (SmsData *data, const gchar *uid)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter_first (data->contacts_store, &iter)) do {
+ gchar *iter_uid;
+ gtk_tree_model_get (data->contacts_store,
+ &iter, COL_UID, &iter_uid, -1);
+
+ if (iter_uid && (strcmp (uid, iter_uid) == 0)) {
+ g_free (iter_uid);
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (data->contacts_treeview));
+ gtk_tree_selection_select_iter (selection, &iter);
+ return TRUE;
+ }
+
+ g_free (iter_uid);
+
+ } while (gtk_tree_model_iter_next (data->contacts_store, &iter));
+
+ return FALSE;
+}
+
EContact *
sms_get_selected_contact (SmsData *data)
{
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h 2008-01-09 14:38:23 UTC (rev 3795)
@@ -27,5 +27,6 @@
GdkPixbuf *sms_contact_load_photo (EContact *contact);
gboolean sms_contacts_note_count_update (SmsData *data);
gboolean sms_delete_selected_contact_messages (SmsData *data);
+gboolean sms_select_contact (SmsData *data, const gchar *uid);
#endif /* SMS_UTILS_H */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h 2008-01-09 13:54:05 UTC (rev 3794)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h 2008-01-09 14:38:23 UTC (rev 3795)
@@ -43,6 +43,7 @@
GHashTable *note_emblems;
EBook *ebook;
+ gboolean book_seq_complete;
GtkTreeModel *contacts_store;
GtkTreeModel *contacts_filter;
GHashTable *contacts;
More information about the commitlog
mailing list