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