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