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. r3864 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
src/phone-kit ([EMAIL PROTECTED])
2. r3865 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
src/phone-kit ([EMAIL PROTECTED])
3. r3866 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
src/phone-kit ([EMAIL PROTECTED])
4. r3867 -
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit
([EMAIL PROTECTED])
5. r3868 - in
trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
([EMAIL PROTECTED])
--- Begin Message ---
Author: chris
Date: 2008-01-17 12:52:40 +0100 (Thu, 17 Jan 2008)
New Revision: 3864
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
Log:
* src/phone-kit/moko-network.c: (on_network_registered),
(moko_network_get_country_code):
Do get the operators list, but only when roaming - when not roaming,
return the home country code when asked for the local country code
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 11:36:56 UTC (rev 3863)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 11:52:40 UTC (rev 3864)
@@ -1,5 +1,12 @@
2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+ * src/phone-kit/moko-network.c: (on_network_registered),
+ (moko_network_get_country_code):
+ Do get the operators list, but only when roaming - when not roaming,
+ return the home country code when asked for the local country code
+
+2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+
* src/moko-dialer-glue.h:
Remove, shouldn't be in version control
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 11:36:56 UTC (rev 3863)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 11:52:40 UTC (rev 3864)
@@ -196,12 +196,6 @@
/* Retrieve operator name */
lgsm_oper_get (handle);
- /* Retrieve operator list to get current country code */
- /* FIXME: This takes too long, we need gsmd to give us the current
- * operator number from lgsm_oper_get.
- */
- /*lgsm_opers_get (handle);*/
-
/* Retrieve IMSI to get home country code */
lgsm_get_imsi (handle);
@@ -212,14 +206,21 @@
priv->retry_oper = g_timeout_add_seconds (RETRY_DELAY,
(GSourceFunc)retry_oper_get,
listener);
- /*if (priv->retry_opers_n)
- priv->retry_opers = g_timeout_add_seconds (RETRY_DELAY,
-
(GSourceFunc)retry_opers_get,
- listener);*/
if (priv->retry_imsi_n)
priv->retry_imsi = g_timeout_add_seconds (RETRY_DELAY,
(GSourceFunc)retry_get_imsi,
listener);
+
+ if (type == GSMD_NETREG_REG_ROAMING) {
+ /* Retrieve operator list to get current country code */
+ /* FIXME: This blocks other gsmd calls... Error states? */
+ lgsm_opers_get (handle);
+
+ if (priv->retry_opers_n)
+ priv->retry_opers = g_timeout_add_seconds (RETRY_DELAY,
+
(GSourceFunc)retry_opers_get,
+ listener);
+ }
}
break;
@@ -933,6 +934,10 @@
if (!moko_network_check_registration (self, error)) return FALSE;
priv = self->priv;
+ if (priv->registered == GSMD_NETREG_REG_HOME) {
+ return moko_network_get_home_country_code (self, dial_code, error);
+ }
+
if (!priv->network_number) {
if (error) *error = g_error_new (PHONE_KIT_NETWORK_ERROR,
PK_NETWORK_ERROR_NO_PROVIDER_NUM,
--- End Message ---
--- Begin Message ---
Author: chris
Date: 2008-01-17 13:39:04 +0100 (Thu, 17 Jan 2008)
New Revision: 3865
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
Log:
* src/phone-kit/moko-talking.c: (moko_talking_init):
Make the volume slider control the 'Headphone' mixer, fixes bug #394
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 11:52:40 UTC (rev 3864)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 12:39:04 UTC (rev 3865)
@@ -1,5 +1,10 @@
2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+ * src/phone-kit/moko-talking.c: (moko_talking_init):
+ Make the volume slider control the 'Headphone' mixer, fixes bug #394
+
+2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+
* src/phone-kit/moko-network.c: (on_network_registered),
(moko_network_get_country_code):
Do get the operators list, but only when roaming - when not roaming,
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
2008-01-17 11:52:40 UTC (rev 3864)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
2008-01-17 12:39:04 UTC (rev 3865)
@@ -69,8 +69,7 @@
gint call_direction;
- MokoAlsaVolumeControl *amp_left;
- MokoAlsaVolumeControl *amp_right;
+ MokoAlsaVolumeControl *headphone;
};
enum
@@ -510,13 +509,6 @@
}
static void
-volume_changed_cb (MokoAlsaVolumeControl *control1, gdouble volume,
- MokoAlsaVolumeControl *control2)
-{
- moko_alsa_volume_control_set_volume (control2, volume);
-}
-
-static void
moko_talking_init (MokoTalking *talking)
{
MokoTalkingPrivate *priv;
@@ -565,21 +557,14 @@
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 4);
/* Volume controls */
- priv->amp_left = moko_alsa_volume_control_new ();
- moko_alsa_volume_control_set_device_from_name (priv->amp_left, "neo1973");
- moko_alsa_volume_control_set_element_from_name (priv->amp_left, "Amp Left");
- priv->amp_right = moko_alsa_volume_control_new ();
- moko_alsa_volume_control_set_device_from_name (priv->amp_right, "neo1973");
- moko_alsa_volume_control_set_element_from_name (priv->amp_right, "Amp
Right");
+ priv->headphone = moko_alsa_volume_control_new ();
+ moko_alsa_volume_control_set_device_from_name (priv->headphone, "neo1973");
+ moko_alsa_volume_control_set_element_from_name (priv->headphone,
"Headphone");
priv->volume = moko_alsa_volume_scale_new (GTK_ORIENTATION_HORIZONTAL);
moko_alsa_volume_scale_set_control (MOKO_ALSA_VOLUME_SCALE (priv->volume),
- priv->amp_left);
+ priv->headphone);
- /* Chain Amp Left to Amp Right */
- g_signal_connect (priv->amp_left, "volume_changed",
- G_CALLBACK (volume_changed_cb), priv->amp_right);
-
/* Outgoing call and talking share the same toolbar */
priv->main_bar = toolbar = gtk_toolbar_new ();
gtk_box_pack_start (GTK_BOX (main_vbox), toolbar, FALSE, FALSE, 0);
--- End Message ---
--- Begin Message ---
Author: chris
Date: 2008-01-17 15:46:10 +0100 (Thu, 17 Jan 2008)
New Revision: 3866
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
Log:
* src/phone-kit/moko-network.c: (moko_network_dispose), (io_func),
(network_init_gsmd):
Use GIOChannel instead of GSource for polling (simplifies code)
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 12:39:04 UTC (rev 3865)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-17 14:46:10 UTC (rev 3866)
@@ -1,5 +1,11 @@
2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+ * src/phone-kit/moko-network.c: (moko_network_dispose), (io_func),
+ (network_init_gsmd):
+ Use GIOChannel instead of GSource for polling (simplifies code)
+
+2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+
* src/phone-kit/moko-talking.c: (moko_talking_init):
Make the volume slider control the 'Headphone' mixer, fixes bug #394
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 12:39:04 UTC (rev 3865)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 14:46:10 UTC (rev 3866)
@@ -59,12 +59,6 @@
static guint signals[LAST_SIGNAL] = {0, };
-typedef struct {
- GSource source;
- GPollFD pollfd;
- struct lgsm_handle *handle;
-} MokoNetworkSource;
-
struct _MokoNetworkPrivate
{
gchar *own_number;
@@ -80,8 +74,8 @@
gint retry_imsi_n;
/* gsmd connection variables */
+ GIOChannel *channel;
struct lgsm_handle *handle;
- MokoNetworkSource *source;
int lac;
/* Registration variables */
@@ -333,16 +327,17 @@
stop_retrying (MOKO_NETWORK (object));
+ if (priv->channel) {
+ g_io_channel_shutdown (priv->channel, FALSE, NULL);
+ g_io_channel_unref (priv->channel);
+ priv->channel = NULL;
+ }
+
if (priv->handle) {
lgsm_exit (priv->handle);
priv->handle = NULL;
}
- if (priv->source) {
- g_source_destroy ((GSource *)priv->source);
- priv->source = NULL;
- }
-
G_OBJECT_CLASS (moko_network_parent_class)->dispose (object);
}
@@ -687,37 +682,43 @@
return 0;
}
-static gboolean
-connection_source_prepare (GSource* self, gint* timeout)
-{
- return FALSE;
-}
-
static gboolean
-connection_source_check (GSource* source)
+io_func (GIOChannel *source, GIOCondition condition, MokoNetwork *self)
{
- MokoNetworkSource *self = (MokoNetworkSource *)source;
- return self->pollfd.revents & G_IO_IN;
-}
+ gchar buf[1025];
+ gsize length;
-static gboolean
-connection_source_dispatch (GSource *source, GSourceFunc callback,
- gpointer data)
-{
- char buf[1025];
- int size;
+ MokoNetworkPrivate *priv = self->priv;
+ GError *error = NULL;
+
+ g_debug ("Start IO");
+
+ switch (condition) {
+ case G_IO_IN :
+ if (g_io_channel_read_chars (source, buf, sizeof (buf), &length, &error)
+ == G_IO_STATUS_NORMAL) {
+ lgsm_handle_packet (priv->handle, buf, length);
+ } else {
+ g_warning ("Error reading from source: %s", error->message);
+ g_error_free (error);
+ }
+ break;
- MokoNetworkSource *self = (MokoNetworkSource *)source;
-
- size = read (self->pollfd.fd, &buf, sizeof(buf));
- if (size < 0) {
- g_warning ("moko_gsmd_connection_source_dispatch:%s %s",
- "read error from libgsmd:", strerror (errno));
- } else {
- if (size == 0) /* EOF */
+ case G_IO_ERR :
+ case G_IO_NVAL :
+ g_warning ("Encountered an error, stopping IO watch");
return FALSE;
- lgsm_handle_packet (self->handle, buf, size);
+
+ case G_IO_HUP :
+ g_warning ("Gsmd hung up - TODO: Reconnect/restart gsmd?");
+ return FALSE;
+
+ default :
+ g_warning ("Unhandled IO condition");
+ break;
}
+
+ g_debug ("End IO");
return TRUE;
}
@@ -725,14 +726,8 @@
static void
network_init_gsmd (MokoNetwork *network)
{
- static GSourceFuncs funcs = {
- connection_source_prepare,
- connection_source_check,
- connection_source_dispatch,
- NULL,
- };
-
MokoNetworkPrivate *priv;
+
priv = network->priv;
/* Add ourselves as an event listener */
@@ -764,14 +759,11 @@
lgsm_phone_power (priv->handle, 1);
/* Start polling for events */
- priv->source = (MokoNetworkSource *)
- g_source_new (&funcs, sizeof (MokoNetworkSource));
- priv->source->handle = priv->handle;
- priv->source->pollfd.fd = lgsm_fd (priv->handle);
- priv->source->pollfd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
- priv->source->pollfd.revents = 0;
- g_source_add_poll ((GSource*)priv->source, &priv->source->pollfd);
- g_source_attach ((GSource*)priv->source, NULL);
+ priv->channel = g_io_channel_unix_new (lgsm_fd (priv->handle));
+ g_io_channel_set_encoding (priv->channel, NULL, NULL);
+ g_io_channel_set_buffered (priv->channel, FALSE);
+ g_io_add_watch (priv->channel, G_IO_IN | G_IO_ERR | G_IO_NVAL | G_IO_HUP,
+ (GIOFunc)io_func, network);
}
static void
--- End Message ---
--- Begin Message ---
Author: chris
Date: 2008-01-17 15:46:33 +0100 (Thu, 17 Jan 2008)
New Revision: 3867
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
Log:
Try saving before committing... (remove a couple of debug statements)
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 14:46:10 UTC (rev 3866)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-network.c
2008-01-17 14:46:33 UTC (rev 3867)
@@ -691,8 +691,6 @@
MokoNetworkPrivate *priv = self->priv;
GError *error = NULL;
- g_debug ("Start IO");
-
switch (condition) {
case G_IO_IN :
if (g_io_channel_read_chars (source, buf, sizeof (buf), &length, &error)
@@ -717,8 +715,6 @@
g_warning ("Unhandled IO condition");
break;
}
-
- g_debug ("End IO");
return TRUE;
}
--- End Message ---
--- Begin Message ---
Author: chris
Date: 2008-01-17 16:24:45 +0100 (Thu, 17 Jan 2008)
New Revision: 3868
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.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-utils.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
Log:
* src/sms-main.c: (new_clicked_cb):
Don't clear the text input if the compose page is active
* src/sms-compose.c: (page_shown):
* src/sms-notes.c: (page_shown):
* src/sms-utils.c: (hito_vcard_get_named_attributes),
(hito_vcard_attribute_get_value_string),
(sms_delete_selected_contact_messages),
(sms_contacts_note_count_update):
* src/sms-utils.h:
Import two contacts-hito functions and use them to read numbers from
EVCard instead of EContact
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
2008-01-17 14:46:33 UTC (rev 3867)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
2008-01-17 15:24:45 UTC (rev 3868)
@@ -1,3 +1,18 @@
+2008-01-17 Chris Lord <[EMAIL PROTECTED]>
+
+ * src/sms-main.c: (new_clicked_cb):
+ Don't clear the text input if the compose page is active
+
+ * src/sms-compose.c: (page_shown):
+ * src/sms-notes.c: (page_shown):
+ * src/sms-utils.c: (hito_vcard_get_named_attributes),
+ (hito_vcard_attribute_get_value_string),
+ (sms_delete_selected_contact_messages),
+ (sms_contacts_note_count_update):
+ * src/sms-utils.h:
+ Import two contacts-hito functions and use them to read numbers from
+ EVCard instead of EContact
+
2008-01-14 Chris Lord <[EMAIL PROTECTED]>
* src/sms-main.c: (new_clicked_cb), (main):
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-17 14:46:33 UTC (rev 3867)
+++
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c
2008-01-17 15:24:45 UTC (rev 3868)
@@ -27,13 +27,11 @@
page_shown (SmsData *data)
{
GtkTreeModel *model;
+ GList *numbers, *n;
EContact *contact;
GdkPixbuf *photo;
gchar *string;
- gint i;
- gboolean set = FALSE;
-
/* Make delete(-all) buttons insensitive */
/* TODO: Replace these with more useful buttons? */
gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), FALSE);
@@ -77,28 +75,25 @@
g_free (string);
/* Fill number combo */
- for (i = E_CONTACT_FIRST_PHONE_ID; i <= E_CONTACT_LAST_PHONE_ID; i++) {
- const gchar *number = e_contact_get_const (
- contact, (EContactField)i);
+ numbers = hito_vcard_get_named_attributes (E_VCARD (contact), EVC_TEL);
+ for (n = numbers; n; n = n->next) {
+ gchar *number = hito_vcard_attribute_get_value_string (
+ (EVCardAttribute *)n->data);
if (!number) continue;
- if (((i == E_CONTACT_PHONE_MOBILE) ||
- (i == E_CONTACT_PHONE_PRIMARY)) && (!set)) {
- gtk_entry_set_text (GTK_ENTRY (GTK_BIN (
- data->number_combo)->child), number);
- set = TRUE;
- }
gtk_combo_box_append_text (GTK_COMBO_BOX (data->number_combo),
number);
+ g_free (number);
}
- if (!set) {
- gtk_entry_set_text (GTK_ENTRY (GTK_BIN (
- data->number_combo)->child),
- gtk_combo_box_get_active_text (
- GTK_COMBO_BOX (data->number_combo)));
- }
+ g_list_free (numbers);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (data->number_combo), 0);
+ gtk_entry_set_text (GTK_ENTRY (GTK_BIN (
+ data->number_combo)->child),
+ gtk_combo_box_get_active_text (
+ GTK_COMBO_BOX (data->number_combo)));
+
g_object_unref (contact);
}
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-17 14:46:33 UTC (rev 3867)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c
2008-01-17 15:24:45 UTC (rev 3868)
@@ -49,6 +49,9 @@
static void
new_clicked_cb (GtkToolButton *button, SmsData *data)
{
+ if (gtk_notebook_get_current_page (GTK_NOTEBOOK (data->notebook)) ==
+ SMS_PAGE_COMPOSE) return;
+
gtk_text_buffer_set_text (gtk_text_view_get_buffer (
GTK_TEXT_VIEW (data->sms_textview)), "", -1);
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-17 14:46:33 UTC (rev 3867)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
2008-01-17 15:24:45 UTC (rev 3868)
@@ -174,7 +174,7 @@
{
JanaStoreView *store_view;
GtkAdjustment *hadjust, *vadjust;
- gint i;
+ GList *numbers, *n;
gboolean found_match = FALSE;
EContact *contact = NULL;
@@ -246,17 +246,21 @@
data->author_icon = g_object_ref (data->no_photo);
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);
+ numbers = hito_vcard_get_named_attributes (E_VCARD (contact), EVC_TEL);
+ for (n = numbers; n; n = n->next) {
+ gchar *number = hito_vcard_attribute_get_value_string (
+ (EVCardAttribute *)n->data);
+
if (!number) continue;
jana_store_view_add_match (store_view,
JANA_STORE_VIEW_AUTHOR, number);
jana_store_view_add_match (store_view,
JANA_STORE_VIEW_RECIPIENT, number);
+ g_free (number);
found_match = TRUE;
}
+ g_list_free (numbers);
if (found_match) {
jana_gtk_note_store_set_view (JANA_GTK_NOTE_STORE (
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-17 14:46:33 UTC (rev 3867)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
2008-01-17 15:24:45 UTC (rev 3868)
@@ -25,6 +25,59 @@
# 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)
{
@@ -135,20 +188,28 @@
gtk_widget_destroy (dialog);
if (contact) {
- gint i, j;
+ gint i;
+ GList *n, *numbers;
- for (i = E_CONTACT_FIRST_PHONE_ID;
- i <= E_CONTACT_LAST_PHONE_ID; i++) {
+ numbers = hito_vcard_get_named_attributes (
+ E_VCARD (contact), EVC_TEL);
+
+ for (n = numbers; n; n = n->next) {
SmsNoteCountData *ncdata;
- const gchar *number = e_contact_get_const (
- contact, (EContactField)i);
+
+ gchar *number = hito_vcard_attribute_get_value_string (
+ (EVCardAttribute *)n->data);
+
if (!number) continue;
ncdata = g_hash_table_lookup (data->note_count, number);
- if (!ncdata) continue;
+ if (!ncdata) {
+ g_free (number);
+ continue;
+ }
- for (j = 0; j < 2; j++) {
- GList *uids = j ? ncdata->read : ncdata->unread;
+ for (i = 0; i < 2; i++) {
+ GList *uids = i ? ncdata->read : ncdata->unread;
for (; uids; uids = uids->next) {
/* TODO: Add
* jana_store_remove_component_from_uid
@@ -165,8 +226,10 @@
}
g_hash_table_remove (data->note_count, number);
+ g_free (number);
}
+ g_list_free (numbers);
g_object_unref (contact);
} else {
while (data->unassigned_notes) {
@@ -281,7 +344,7 @@
return FALSE;
do {
- gint i;
+ GList *numbers, *n;
EContact *contact;
gchar *uid;
gboolean unknown;
@@ -306,20 +369,25 @@
unread = 0;
read = 0;
- for (i = E_CONTACT_FIRST_PHONE_ID;
- i <= E_CONTACT_LAST_PHONE_ID; i++) {
+ numbers = hito_vcard_get_named_attributes (
+ E_VCARD (contact), EVC_TEL);
+ for (n = numbers; n; n = n->next) {
SmsNoteCountData *ncdata;
- const gchar *number = e_contact_get_const (
- contact, (EContactField)i);
+
+ gchar *number = hito_vcard_attribute_get_value_string (
+ (EVCardAttribute *)n->data);
+
if (!number) continue;
ncdata = g_hash_table_lookup (data->note_count, number);
+ g_free (number);
if (!ncdata) continue;
read += g_list_length (ncdata->read);
unread += g_list_length (ncdata->unread);
ncdata->assigned = assignment;
}
+ g_list_free (numbers);
set_message_count (data, &iter, read, unread, FALSE);
} while (gtk_tree_model_iter_next (data->contacts_store, &iter));
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-17 14:46:33 UTC (rev 3867)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
2008-01-17 15:24:45 UTC (rev 3868)
@@ -22,6 +22,9 @@
#include "sms.h"
+GList *hito_vcard_get_named_attributes (EVCard *contact, const char *name);
+gchar *hito_vcard_attribute_get_value_string (EVCardAttribute *attr);
+
void sms_clear_combo_box_text (GtkComboBox *combo);
EContact *sms_get_selected_contact (SmsData *data);
GdkPixbuf *sms_contact_load_photo (EContact *contact);
--- End Message ---
_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog