Send commitlog mailing list submissions to
        commitlog@lists.openmoko.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r4289 - in
      trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi: .
      src ([EMAIL PROTECTED])
   2. r4290 -
      trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/data
      ([EMAIL PROTECTED])
   3. r4291 - trunk/src/host/qemu-neo1973/openmoko
      ([EMAIL PROTECTED])
   4. r4292 - in
      trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
      ([EMAIL PROTECTED])
   5. r4293 - in
      trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
      ([EMAIL PROTECTED])
   6. r4294 - in
      trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: rob
Date: 2008-04-01 12:06:07 +0200 (Tue, 01 Apr 2008)
New Revision: 4289

Modified:
   trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/ChangeLog
   
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/src/openmoko-panel-wifi.c
Log:
2008-04-01  Rob Bradford  <[EMAIL PROTECTED]>

        * src/openmoko-panel-wifi.c: (wifi_applet_is_wireless_available),
        (wifi_applet_update_visibility), (wifi_applet_weak_notify_cb),
        (wifi_applet_timeout_cb), (mb_panel_applet_create):
        Poll every 5 seconds for the state of the wifi radio. It would be
        nicer to be notified rather than needing to poll. This uses the 
        SIOCGIWTXPOW ioctl().



Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/ChangeLog      
2008-04-01 05:35:32 UTC (rev 4288)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/ChangeLog      
2008-04-01 10:06:07 UTC (rev 4289)
@@ -1,3 +1,12 @@
+2008-04-01  Rob Bradford  <[EMAIL PROTECTED]>
+
+       * src/openmoko-panel-wifi.c: (wifi_applet_is_wireless_available),
+       (wifi_applet_update_visibility), (wifi_applet_weak_notify_cb),
+       (wifi_applet_timeout_cb), (mb_panel_applet_create):
+       Poll every 5 seconds for the state of the wifi radio. It would be
+       nicer to be notified rather than needing to poll. This uses the 
+       SIOCGIWTXPOW ioctl().
+
 2008-03-28  Rob Bradford  <[EMAIL PROTECTED]>
 
        * Initial commit

Modified: 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/src/openmoko-panel-wifi.c
===================================================================
--- 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/src/openmoko-panel-wifi.c
      2008-04-01 05:35:32 UTC (rev 4288)
+++ 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/src/openmoko-panel-wifi.c
      2008-04-01 10:06:07 UTC (rev 4289)
@@ -16,36 +16,119 @@
  *
  */
 
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <math.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <netdb.h>             /* gethostbyname, getnetbyname */
+#include <net/ethernet.h>      /* struct ether_addr */
+#include <sys/time.h>          /* struct timeval */
+#include <unistd.h>
+
+#include <linux/if.h>
+#include <linux/wireless.h>
+
 #include <libmokopanelui2/moko-panel-applet.h>
 #include <gtk/gtk.h>
 
+#define IFACE "eth0"
+#define QUERY_FREQ 5 
+
+typedef struct 
+{
+  GtkWidget *applet;
+  int sock; /* socket for doing query on */
+  gchar *iface;
+  guint timeout_id;
+} WifiAppletData;
+
 static gboolean
-wifi_applet_is_wireless_available ()
+wifi_applet_is_wireless_available (WifiAppletData *applet)
 {
-  /* Not implemented yet */
-  return TRUE;
+  struct iwreq wrq;
+
+  /* Clear our request and set the interface name */
+  memset (&wrq, 0, sizeof (struct iwreq));
+  strncpy ((char *)&wrq.ifr_name, applet->iface, IFNAMSIZ);
+
+  /* Feel the power, uhh, do the ioctl() */
+  if (ioctl (applet->sock, SIOCGIWTXPOW, &wrq) != 0)
+  {
+    g_warning ("Error performing ioctl: %s", g_strerror (errno));
+    return FALSE;
+  }
+
+  return !wrq.u.txpower.disabled;
 }
 
 static void
-wifi_applet_update_visibility (GtkWidget *applet)
+wifi_applet_update_visibility (WifiAppletData *applet)
 {
-  if (wifi_applet_is_wireless_available ())
-    gtk_widget_show_all (applet);
+  if (wifi_applet_is_wireless_available (applet))
+    gtk_widget_show_all (applet->applet);
   else
-    gtk_widget_hide_all (applet);
+    gtk_widget_hide_all (applet->applet);
 }
 
+/* Tidy up callback. Don't want stray timeouts. */
+static void
+wifi_applet_weak_notify_cb (gpointer data, GObject *dead_object)
+{
+  WifiAppletData *applet = (WifiAppletData *)data;
+
+  g_source_remove (applet->timeout_id);
+  close (applet->sock);
+  g_free (applet);
+}
+
+static gboolean
+wifi_applet_timeout_cb (gpointer data)
+{
+  wifi_applet_update_visibility ((WifiAppletData *)data);
+
+  return TRUE;
+}
+
 G_MODULE_EXPORT GtkWidget * 
 mb_panel_applet_create (const gchar *id, GtkOrientation orientation)
 {
-    GtkWidget *applet;
+  WifiAppletData *applet;
 
-    applet = moko_panel_applet_new ();
+  applet = g_new0 (WifiAppletData, 1);
 
-    moko_panel_applet_set_icon (MOKO_PANEL_APPLET (applet),
-        PKGDATADIR "/" "Wifi.png");
+  /* Open socket to perform ioctl() on */
+  applet->sock = socket (AF_INET, SOCK_DGRAM, 0);
 
-    wifi_applet_update_visibility (applet);
+  if (!applet->sock)
+  {
+    g_warning ("Unable to open socket: %s", g_strerror (errno));
+    return FALSE;
+  }
 
-    return applet;
+  /* Our interface name */
+  applet->iface = IFACE;
+
+  applet->applet = moko_panel_applet_new ();
+
+  /* 
+   * Weak reference so we can find out when the applet is destroyed to get
+   * rid of the timeout and tidy up
+   */
+  g_object_weak_ref ((GObject *)applet->applet, wifi_applet_weak_notify_cb, 
applet);
+
+  moko_panel_applet_set_icon (MOKO_PANEL_APPLET (applet->applet),
+      PKGDATADIR "/" "Wifi.png");
+
+  wifi_applet_update_visibility (applet);
+
+  applet->timeout_id = g_timeout_add_seconds (QUERY_FREQ, 
wifi_applet_timeout_cb, 
+      applet);
+
+  return applet->applet;
 }




--- End Message ---
--- Begin Message ---
Author: john_lee
Date: 2008-04-01 14:24:10 +0200 (Tue, 01 Apr 2008)
New Revision: 4290

Modified:
   trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/data/Wifi.png
Log:
Use the png file from Will.
http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=1287


Modified: 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-wifi/data/Wifi.png
===================================================================
(Binary files differ)




--- End Message ---
--- Begin Message ---
Author: andrew
Date: 2008-04-01 19:09:42 +0200 (Tue, 01 Apr 2008)
New Revision: 4291

Modified:
   trunk/src/host/qemu-neo1973/openmoko/env
Log:
Update buildhost download paths (Thilo Fromm).


Modified: trunk/src/host/qemu-neo1973/openmoko/env
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/env    2008-04-01 12:24:10 UTC (rev 
4290)
+++ trunk/src/host/qemu-neo1973/openmoko/env    2008-04-01 17:09:42 UTC (rev 
4291)
@@ -23,8 +23,8 @@
 splash_size=0x5000
 
 # We don't want the "-latest" symlinks to match
-kernel_wildcard="uImage-2.6.*-fic-gta01.bin"
-rootfs_wildcard="OpenMoko-openmoko-*image*-fic-gta01.rootfs.jffs2"
+kernel_wildcard="uImage-2.6.*-om-gta01.bin"
+rootfs_wildcard="OpenMoko-openmoko-*image*-om-gta01.rootfs.jffs2"
 uboot_wildcard="u-boot-gta01bv4-1*.bin"
 
 
download_dir="http://buildhost.openmoko.org/daily/neo1973/deploy/glibc/images/neo1973/";




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2008-04-01 21:46:30 +0200 (Tue, 01 Apr 2008)
New Revision: 4292

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/Makefile.am
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am
Log:
2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>

        * configure.ac:
        * src/Makefile.am:

        Bring in libhito for future use



Property changes on: trunk/src/target/OM-2007.2/applications/openmoko-messages2
___________________________________________________________________
Name: svn:externals
   + libhito       http://svn.o-hand.com/repos/contacts/branches/hito/libhito



Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 17:09:42 UTC (rev 4291)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 19:46:30 UTC (rev 4292)
@@ -1,3 +1,10 @@
+2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>
+
+       * configure.ac:
+       * src/Makefile.am:
+
+       Bring in libhito for future use
+
 2008-04-01  Erin Yueh  <[EMAIL PROTECTED]>
 
        * src/sms-dbus.c: (sms_dbus_send_message):

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/Makefile.am      
2008-04-01 17:09:42 UTC (rev 4291)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/Makefile.am      
2008-04-01 19:46:30 UTC (rev 4292)
@@ -1 +1 @@
-SUBDIRS=src data
+SUBDIRS=libhito src data

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac     
2008-04-01 17:09:42 UTC (rev 4291)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac     
2008-04-01 19:46:30 UTC (rev 4292)
@@ -17,6 +17,13 @@
 PKG_CHECK_MODULES(JANA, libjana libjana-ecal libjana-gtk)
 PKG_CHECK_MODULES(DBUS, dbus-glib-1)
 
+
+# CFLAGS and LIBS definitions for libhito
+CONTACTS_CFLAGS="$EBOOK_CFLAGS $GTK_CFLAGS"
+CONTACTS_LIBS="$EBOOK_LIBS $GTK_LIBS"
+AC_SUBST(CONTACTS_CFLAGS)
+AC_SUBST(CONTACTS_LIBS)
+
 old_cflags=$CFLAGS
 CFLAGS=$EBOOK_CFLAGS
 AC_CHECK_TYPE(EContactPhotoType, [], [], [#include <libebook/e-book.h>])
@@ -43,6 +50,7 @@
 
 AC_OUTPUT([
 Makefile
+libhito/Makefile
 src/Makefile
 data/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  
2008-04-01 17:09:42 UTC (rev 4291)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am  
2008-04-01 19:46:30 UTC (rev 4292)
@@ -1,6 +1,7 @@
+INCLUDES = -I$(top_srcdir)/libhito
 
 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)
+AM_LDFLAGS = $(GTK_LIBS) $(JANA_LIBS) $(MOKOUI_LIBS) $(EBOOK_LIBS) 
$(DBUS_LIBS) $(top_builddir)/libhito/libhito.a
 
 bin_PROGRAMS=openmoko-messages
 




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2008-04-01 21:53:59 +0200 (Tue, 01 Apr 2008)
New Revision: 4293

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
Log:
2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>

        * src/sms-contacts.c: (openmoko_contacts_util_dial_number):
        * src/sms-utils.c:

        Remove functions copied from libhito which now conflict with built in
        version of libhito.


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 19:46:30 UTC (rev 4292)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 19:53:59 UTC (rev 4293)
@@ -1,5 +1,13 @@
 2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/sms-contacts.c: (openmoko_contacts_util_dial_number):
+       * src/sms-utils.c:
+
+       Remove functions copied from libhito which now conflict with built in
+       version of libhito.
+
+2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>
+
        * configure.ac:
        * src/Makefile.am:
 

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-04-01 19:46:30 UTC (rev 4292)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c   
    2008-04-01 19:53:59 UTC (rev 4293)
@@ -90,34 +90,6 @@
   }
 }
 
-
-/* hito_vcard_attribute_get_type() taken from hito-vcard-util.c
- * Copyright 2007 OpenedHand Ltd, licensed under GPL */
-gchar*
-hito_vcard_attribute_get_type (EVCardAttribute *attr)
-{
-  GList *list, *l;
-  gchar *result = NULL;
-  list = e_vcard_attribute_get_param (attr, "TYPE");
-
-  for (l = list; l; l = g_list_next (l))
-  {
-    if (result)
-    {
-      gchar *old_result = result;
-      result = g_strconcat (l->data, ";", old_result, NULL);
-      g_free (old_result);
-    }
-    else
-    {
-      result = g_strdup (l->data);
-    }
-  }
-
-  return result;
-}
-
-
 static void
 on_dial_number_clicked (GtkWidget *eb, GdkEventButton *event, GtkDialog 
*dialog)
 {

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-04-01 19:46:30 UTC (rev 4292)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c  
2008-04-01 19:53:59 UTC (rev 4293)
@@ -26,59 +26,6 @@
 #  include <config.h>
 #endif
 
-/* Following two functions taken from contacts hito branch, written by
- * Ross Burton, copyright OpenedHand 2007
- */
-GList *
-hito_vcard_get_named_attributes (EVCard *contact, const char *name)
-{
-  GList *attrs = NULL, *l;
-
-  g_return_val_if_fail (E_IS_VCARD (contact), NULL);
-  g_return_val_if_fail (name != NULL, NULL);
-
-  for (l = e_vcard_get_attributes (E_VCARD (contact)); l; l = l->next)
-  {
-    EVCardAttribute *attr;
-    const char *n;
-
-    attr = (EVCardAttribute *) l->data;
-    n = e_vcard_attribute_get_name (attr);
-
-    if (strcmp (n, name) == 0)
-      attrs = g_list_prepend (attrs, attr);
-  }
-
-  return g_list_reverse (attrs);
-}
-
-/*
- * load the attribute value, returning a newly allocated semicolon seperated
- * string for multivalue attributes
- */
-gchar*
-hito_vcard_attribute_get_value_string (EVCardAttribute *attr)
-{
-  gchar *attr_value = NULL;
-  GList *l;
-  l = e_vcard_attribute_get_values (attr);
-  if (l)
-  {
-    attr_value = g_strdup (l->data);
-
-    while ((l = g_list_next (l)))
-    {
-      gchar *old = attr_value;
-      if (old)
-        attr_value = g_strdup_printf ("%s; %s", old, (gchar*) l->data);
-      else
-        attr_value = g_strdup (l->data);
-      g_free (old);
-    }
-  }
-  return attr_value;
-}
-
 void
 sms_clear_combo_box_text (GtkComboBox *combo)
 {




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2008-04-01 21:54:23 +0200 (Tue, 01 Apr 2008)
New Revision: 4294

Added:
   
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.c
   
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.h
Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am
Log:
2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>

        * src/Makefile.am:
        * src/moko-save-number.c:
        * src/moko-save-number.h:

        Add moko-save-number.{c,h} for use in saving unknown numbers to contacts


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 19:53:59 UTC (rev 4293)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2008-04-01 19:54:23 UTC (rev 4294)
@@ -1,5 +1,13 @@
 2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/Makefile.am:
+       * src/moko-save-number.c:
+       * src/moko-save-number.h:
+
+       Add moko-save-number.{c,h} for use in saving unknown numbers to contacts
+
+2008-04-01  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/sms-contacts.c: (openmoko_contacts_util_dial_number):
        * src/sms-utils.c:
 

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-04-01 19:53:59 UTC (rev 4293)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/Makefile.am  
2008-04-01 19:54:23 UTC (rev 4294)
@@ -17,7 +17,9 @@
        sms-utils.c \
        sms-utils.h \
        sms-dbus.c \
-       sms-dbus.h
+       sms-dbus.h \
+       moko-save-number.c \
+       moko-save-number.h
 
 %-glue.h: %.xml
        $(LIBTOOL) --mode=execute $(DBUS_GLIB_BIN)/dbus-binding-tool 
--prefix=$(subst -,_,$*) --mode=glib-server --output=$@ $<

Added: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.c
   2008-04-01 19:53:59 UTC (rev 4293)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.c
   2008-04-01 19:54:23 UTC (rev 4294)
@@ -0,0 +1,247 @@
+/*
+ *  moko-save-number.c: save a phone number to a contact by creating a new
+ *                      contact or adding to an existing one.
+ *
+ *  Authored by OpenedHand Ltd <[EMAIL PROTECTED]>
+ *
+ *  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.
+ *
+ */
+
+
+#include <gtk/gtk.h>
+
+#include <moko-finger-scroll.h>
+
+#include <libebook/e-book.h>
+
+#include "hito-contact-view.h"
+#include "hito-contact-store.h"
+#include "hito-group-store.h"
+#include "hito-group-combo.h"
+#include "hito-all-group.h"
+#include "hito-separator-group.h"
+#include "hito-group.h"
+#include "hito-no-category-group.h"
+#include "hito-vcard-util.h"
+
+
+struct _SaveButtonInfo
+{
+  GtkWidget *dialog;
+  gint response_id;
+  gchar *number;
+};
+typedef struct _SaveButtonInfo SaveButtonInfo;
+
+
+
+static void
+create_new_contact_from_number (gchar *number)
+{
+  GtkWidget *dialog, *name, *label;
+
+  dialog = gtk_dialog_new_with_buttons ("Save as Contact",
+             NULL, GTK_DIALOG_MODAL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+            GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);
+
+  gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+
+  label = gtk_label_new ("Enter a name for the contact");
+  name = gtk_entry_new ();
+
+  gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG(dialog)->vbox), label);
+  gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG(dialog)->vbox), name);
+
+  gtk_widget_show (label);
+  gtk_widget_show (name);
+
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+  {
+    EContact *contact;
+    EBook *book;
+    EVCardAttribute *attr;
+
+    /* create contact */
+    contact = e_contact_new ();
+    /* add name */
+    e_contact_set (contact, E_CONTACT_FULL_NAME, gtk_entry_get_text (GTK_ENTRY 
(name)));
+    /* add number */
+    attr = e_vcard_attribute_new ("", EVC_TEL);
+    e_vcard_add_attribute_with_value (E_VCARD (contact), attr, number);
+    hito_vcard_attribute_set_type (attr, "Other");
+
+    /* open address book */
+    /* TODO: check GErrors */
+    book = e_book_new_system_addressbook (NULL);
+    e_book_open (book, FALSE, NULL);
+
+    /* add contact to address book, and close */
+    e_book_add_contact (book, contact, NULL);
+
+    g_object_unref (book);
+    g_object_unref (contact);
+  }
+  gtk_widget_destroy (dialog);
+}
+
+static void
+add_number_to_contact (gchar *number)
+{
+    EBook *book;
+    EBookQuery *query;
+    EBookView *view;
+    GtkWidget *window, *contacts_treeview, *scroll, *groups_combo;
+    GtkTreeModel *store, *group_store, *contact_filter;
+    GError *err = NULL;
+    
+    window = gtk_dialog_new_with_buttons ("Add to Contact", NULL, 0,
+                                         "Cancel", GTK_RESPONSE_CANCEL,
+                                         "Add", GTK_RESPONSE_OK,
+                                         NULL);
+    
+    book = e_book_new_system_addressbook (&err);
+    if (err)
+      return;
+    e_book_open (book, FALSE, &err);
+    if (err)
+     return;
+    query = e_book_query_any_field_contains (NULL);
+    e_book_get_book_view (book, query, NULL, 0, &view, &err);
+    if (err)
+      return;
+
+    e_book_query_unref (query);  
+    e_book_view_start (view);
+
+
+    store = hito_contact_store_new (view);
+
+    group_store = hito_group_store_new ();
+    hito_group_store_set_view (HITO_GROUP_STORE (group_store), view);
+    hito_group_store_add_group (HITO_GROUP_STORE (group_store), 
hito_all_group_new ());
+    hito_group_store_add_group (HITO_GROUP_STORE (group_store), 
hito_separator_group_new (-99));
+    hito_group_store_add_group (HITO_GROUP_STORE (group_store), 
hito_separator_group_new (99));
+    hito_group_store_add_group (HITO_GROUP_STORE (group_store), 
hito_no_category_group_new ());
+
+    contact_filter = hito_contact_model_filter_new (HITO_CONTACT_STORE 
(store));
+
+    groups_combo = hito_group_combo_new (HITO_GROUP_STORE (group_store));
+    hito_group_combo_connect_filter (HITO_GROUP_COMBO (groups_combo),
+                                   HITO_CONTACT_MODEL_FILTER (contact_filter));
+    gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (window)->vbox), 
groups_combo);
+
+
+    
+    contacts_treeview = hito_contact_view_new (HITO_CONTACT_STORE (store), 
HITO_CONTACT_MODEL_FILTER (contact_filter));
+    
+    scroll = moko_finger_scroll_new ();
+    gtk_widget_set_size_request (scroll, -1, 300);
+    gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (window)->vbox), scroll);
+    
+    gtk_container_add (GTK_CONTAINER (scroll), contacts_treeview);
+    
+    gtk_widget_show_all (scroll);
+    gtk_widget_show_all (groups_combo);
+    
+    if (gtk_dialog_run (GTK_DIALOG (window)) == GTK_RESPONSE_OK)
+    {
+      GtkTreeIter iter;
+      EContact *contact;
+      EVCardAttribute *attr;
+      GtkTreeModel *model;
+      GtkTreeSelection *selection;
+
+      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW 
(contacts_treeview));
+
+      if (gtk_tree_selection_get_selected (selection, &model, &iter))
+      {
+        gtk_tree_model_get (model, &iter, COLUMN_CONTACT, &contact, -1);
+        if (contact)
+        {
+          attr = e_vcard_attribute_new ("", EVC_TEL);
+          e_vcard_add_attribute_with_value (E_VCARD (contact), attr, number);
+          hito_vcard_attribute_set_type (attr, "Other");
+          e_book_async_commit_contact (book, contact, NULL, NULL);
+          g_object_unref (contact);
+        }
+      }
+    }
+
+    gtk_widget_destroy (window);
+    g_object_unref (book);
+}
+
+static void
+on_btn_save_clicked (GtkWidget *button, SaveButtonInfo *info)
+{
+  gint action = info->response_id;
+  gchar *number = g_strdup (info->number);
+    
+  /* this also destroys info data */
+  gtk_widget_destroy (info->dialog);
+  
+  if (action == 1)
+  {
+    /* create new contact */
+    create_new_contact_from_number (number);
+  }
+  else
+  {
+    add_number_to_contact (number);
+  }
+  g_free (number);
+}
+
+static void
+btn_save_info_weak_notify (SaveButtonInfo *info, GObject *object)
+{
+  g_free (info->number);
+  g_free (info);
+}
+
+void
+moko_save_number (gchar *number)
+{
+  GtkWidget *window, *btn, *vbox;
+  SaveButtonInfo *btn_info;
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG);
+  gtk_window_set_title (GTK_WINDOW (window), number);
+  
+  vbox = gtk_vbox_new (TRUE, 0);
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+  
+  btn = gtk_button_new_with_label ("Create New Contact");
+  gtk_box_pack_start_defaults (GTK_BOX (vbox), btn);
+  btn_info = g_new0 (SaveButtonInfo, 1);
+  btn_info->dialog = window;
+  btn_info->response_id = 1;
+  btn_info->number = g_strdup (number);
+  g_signal_connect (btn, "clicked", G_CALLBACK (on_btn_save_clicked), 
btn_info);
+  g_object_weak_ref (G_OBJECT (btn), (GWeakNotify) btn_save_info_weak_notify, 
btn_info);
+  
+  btn = gtk_button_new_with_label ("Add to Contact");
+  gtk_box_pack_start_defaults (GTK_BOX (vbox), btn);
+  btn_info = g_new0 (SaveButtonInfo, 1);
+  btn_info->dialog = window;
+  btn_info->response_id = 2;
+  btn_info->number = g_strdup (number);
+  g_signal_connect (btn, "clicked", G_CALLBACK (on_btn_save_clicked), 
btn_info);
+  g_object_weak_ref (G_OBJECT (btn), (GWeakNotify) btn_save_info_weak_notify, 
btn_info);
+  
+  g_free (number);
+  
+  gtk_widget_show_all (window);
+}
+

Added: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.h
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.h
   2008-04-01 19:53:59 UTC (rev 4293)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/moko-save-number.h
   2008-04-01 19:54:23 UTC (rev 4294)
@@ -0,0 +1,21 @@
+/*
+ *  moko-save-number.h: save a phone number to a contact by creating a new
+ *                      contact or adding to an existing one.
+ *
+ *  Authored by OpenedHand Ltd <[EMAIL PROTECTED]>
+ *
+ *  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.
+ *
+ */
+
+
+void moko_save_number (gchar *number);




--- End Message ---
_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to