r3460 - in trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
chris at sita.openmoko.org
chris at sita.openmoko.org
Tue Nov 20 18:55:19 CET 2007
Author: chris
Date: 2007-11-20 18:55:15 +0100 (Tue, 20 Nov 2007)
New Revision: 3460
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/src/Makefile.am
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.h
Log:
* configure.ac:
* src/Makefile.am:
* src/sms-main.c: (main):
* src/sms-notes.c: (get_selected_contact), (page_shown),
(new_toggled_cb), (send_clicked_cb), (sms_notes_page_new):
* src/sms.h:
Hook up send button, don't show all messages when a contact has no
phone numbers, don't focus in text view when toggling off send
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2007-11-20 17:55:15 UTC (rev 3460)
@@ -1,3 +1,14 @@
+2007-11-20 Chris Lord <chris at openedhand.com>
+
+ * configure.ac:
+ * src/Makefile.am:
+ * src/sms-main.c: (main):
+ * src/sms-notes.c: (get_selected_contact), (page_shown),
+ (new_toggled_cb), (send_clicked_cb), (sms_notes_page_new):
+ * src/sms.h:
+ Hook up send button, don't show all messages when a contact has no
+ phone numbers, don't focus in text view when toggling off send
+
2007-11-14 Chris Lord <chris at openedhand.com>
* src/sms-main.c: (main):
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac 2007-11-20 17:55:15 UTC (rev 3460)
@@ -25,6 +25,7 @@
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0)
PKG_CHECK_MODULES(MOKOUI, libmokoui2 >= 0.3)
PKG_CHECK_MODULES(JANA, libjana libjana-ecal libjana-gtk)
+PKG_CHECK_MODULES(DBUS, dbus-glib-1)
AC_OUTPUT([
Makefile
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 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am 2007-11-20 17:55:15 UTC (rev 3460)
@@ -1,7 +1,7 @@
INCLUDES = -I$(top_srcdir)/libhito
-AM_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" $(GTK_CFLAGS) $(JANA_CFLAGS) $(MOKOUI_CFLAGS) $(EBOOK_CFLAGS) -Wall
-AM_LDFLAGS = $(GTK_LIBS) $(JANA_LIBS) $(MOKOUI_LIBS) $(EBOOK_LIBS)
+AM_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" $(GTK_CFLAGS) $(JANA_CFLAGS) $(MOKOUI_CFLAGS) $(EBOOK_CFLAGS) $(DBUS_CFLAGS) -Wall
+AM_LDFLAGS = $(GTK_LIBS) $(JANA_LIBS) $(MOKOUI_LIBS) $(EBOOK_LIBS) $(DBUS_LIBS)
bin_PROGRAMS=openmoko-messages
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 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c 2007-11-20 17:55:15 UTC (rev 3460)
@@ -42,9 +42,23 @@
main (int argc, char **argv)
{
SmsData data;
+ DBusGConnection *connection;
GtkWidget *vbox, *toolbar;
+ GError *error = NULL;
gtk_init (&argc, &argv);
+
+ /* Get SMS dbus proxy */
+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+ if (!connection) {
+ g_warning ("Failed to get dbus connection: %s", error->message);
+ g_error_free (error);
+ data.sms_proxy = NULL;
+ } else {
+ data.sms_proxy = dbus_g_proxy_new_for_name (connection,
+ "org.openmoko.Dialer", "/org/openmoko/Dialer/SMS",
+ "org.openmoko.Dialer");
+ }
data.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (data.window), "Messages");
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 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c 2007-11-20 17:55:15 UTC (rev 3460)
@@ -28,41 +28,56 @@
static gboolean hidden = TRUE;
static gboolean open = FALSE;
-static void
-page_shown (SmsData *data)
+static EContact *
+get_selected_contact (SmsData *data)
{
GtkTreeSelection *selection;
GtkTreeModel *model;
GtkTreeIter iter;
+ EContact *contact = NULL;
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (data->contacts_treeview));
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return NULL;
+ gtk_tree_model_get (model, &iter, COLUMN_CONTACT, &contact, -1);
+
+ return contact;
+}
+
+static void
+page_shown (SmsData *data)
+{
+ JanaStoreView *store_view;
gint i;
+ gboolean found_match = FALSE;
EContact *contact = NULL;
if (!open) return;
- selection = gtk_tree_view_get_selection (
- GTK_TREE_VIEW (data->contacts_treeview));
+ if (!(contact = get_selected_contact (data))) return;
- if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return;
-
- gtk_tree_model_get (model, &iter, COLUMN_CONTACT, &contact, -1);
- if (!contact) return;
-
- data->notes_view = jana_store_get_view (data->notes);
+ store_view = jana_store_get_view (data->notes);
for (i = E_CONTACT_FIRST_PHONE_ID; i <= E_CONTACT_LAST_PHONE_ID; i++) {
const gchar *number = e_contact_get_const (
contact, (EContactField)i);
if (!number) continue;
- jana_store_view_add_match (data->notes_view,
+ jana_store_view_add_match (store_view,
JANA_STORE_VIEW_AUTHOR, number);
- jana_store_view_add_match (data->notes_view,
+ jana_store_view_add_match (store_view,
JANA_STORE_VIEW_RECIPIENT, number);
+ found_match = TRUE;
}
- jana_gtk_note_store_set_view (JANA_GTK_NOTE_STORE (data->note_store),
- data->notes_view);
- jana_store_view_start (data->notes_view);
- g_object_unref (data->notes_view);
+
+ if (found_match) {
+ jana_gtk_note_store_set_view (JANA_GTK_NOTE_STORE (
+ data->note_store), store_view);
+ jana_store_view_start (store_view);
+ }
+ g_object_unref (store_view);
g_object_unref (contact);
}
@@ -115,13 +130,67 @@
{
gboolean active = gtk_toggle_tool_button_get_active (button);
- if (active)
+ g_object_set (data->sms_hbox, "visible", active, NULL);
+ if (active) {
gtk_notebook_set_current_page (GTK_NOTEBOOK (
data->notebook), SMS_PAGE_NOTES);
- g_object_set (data->sms_hbox, "visible", active, NULL);
- gtk_widget_grab_focus (data->sms_textview);
+ gtk_widget_grab_focus (data->sms_textview);
+ }
}
+static void
+send_clicked_cb (GtkButton *button, SmsData *data)
+{
+ GtkTextIter start, end;
+ GtkTextBuffer *buffer;
+ const gchar *number;
+ EContact *contact;
+ gchar *message;
+
+ /* TODO: Spawn an error dialog or something */
+ if (!(contact = get_selected_contact (data))) return;
+
+ gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
+ data->new_button), FALSE);
+
+ /* Try getting mobile and primary number first, before looping through
+ * all numbers.
+ */
+ number = NULL;
+ if (!(number = e_contact_get_const (contact, E_CONTACT_PHONE_MOBILE)) &&
+ !(number = e_contact_get_const (contact, E_CONTACT_PHONE_PRIMARY))){
+ gint i;
+ for (i = E_CONTACT_FIRST_PHONE_ID;
+ i <= E_CONTACT_LAST_PHONE_ID; i++) {
+ number = e_contact_get_const (
+ contact, (EContactField)i);
+ if (number) break;
+ }
+ }
+
+ if (number) {
+ GError *error = NULL;
+ buffer = gtk_text_view_get_buffer (
+ GTK_TEXT_VIEW (data->sms_textview));
+ gtk_text_buffer_get_start_iter (buffer, &start);
+ gtk_text_buffer_get_end_iter (buffer, &end);
+ message = gtk_text_buffer_get_text (
+ buffer, &start, &end, FALSE);
+
+ g_debug ("Sending message '%s' to %s", message, number);
+ if (!dbus_g_proxy_call (data->sms_proxy, "Send", &error,
+ G_TYPE_STRING, number, G_TYPE_STRING, message,
+ G_TYPE_INVALID, G_TYPE_STRING, NULL, G_TYPE_INVALID)) {
+ g_debug ("Error sending message: %s", error->message);
+ g_error_free (error);
+ }
+
+ g_free (message);
+ }
+
+ g_object_unref (contact);
+}
+
static void sms_notes_data_func (GtkTreeViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *model,
@@ -171,7 +240,6 @@
data->notes = jana_ecal_store_new (JANA_COMPONENT_NOTE);
g_signal_connect (data->notes, "opened",
G_CALLBACK (store_opened_cb), data);
- data->notes_view = NULL;
/* Create model and filter */
data->note_store = jana_gtk_note_store_new ();
@@ -209,6 +277,9 @@
"<small>0\n /\n 160</small>");
button = gtk_button_new_with_label ("Send");
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (send_clicked_cb), data);
+ if (!data->sms_proxy) gtk_widget_set_sensitive (button, FALSE);
sms_vbox = gtk_vbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (sms_vbox), label, FALSE, TRUE, 0);
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 2007-11-20 17:53:18 UTC (rev 3459)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h 2007-11-20 17:55:15 UTC (rev 3460)
@@ -23,6 +23,8 @@
#include <glib.h>
#include <gtk/gtk.h>
#include <libjana-gtk/jana-gtk.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
typedef struct {
JanaStore *notes;
@@ -44,6 +46,8 @@
gulong delete_all_handler;
gulong delete_handler;
+
+ DBusGProxy *sms_proxy;
} SmsData;
typedef enum {
More information about the commitlog
mailing list