r1522 - trunk/src/target/OM-2007/applications/openmoko-messages/src
alex_tang at sita.openmoko.org
alex_tang at sita.openmoko.org
Wed Mar 28 07:58:13 CEST 2007
Author: alex_tang
Date: 2007-03-28 07:58:08 +0200 (Wed, 28 Mar 2007)
New Revision: 1522
Modified:
trunk/src/target/OM-2007/applications/openmoko-messages/src/callbacks.c
trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.c
trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.h
Log:
Get selected contacts and set into sms send entry.
Modified: trunk/src/target/OM-2007/applications/openmoko-messages/src/callbacks.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-messages/src/callbacks.c 2007-03-28 02:33:14 UTC (rev 1521)
+++ trunk/src/target/OM-2007/applications/openmoko-messages/src/callbacks.c 2007-03-28 05:58:08 UTC (rev 1522)
@@ -590,6 +590,26 @@
{
g_debug("sms select contact done");
GtkWidget* toEntry = (GtkWidget*)data;
- gtk_entry_set_text (GTK_ENTRY(toEntry),SMS_CONTACT_WINDOW(widget)->nameList);
+ GList* contacts = SMS_CONTACT_WINDOW(widget)->selectedContacts;
+ g_debug ("start to add %d contacts to entry", g_list_length(contacts));
+ gchar* nameList = NULL;
+ gchar* name;
+ GList* nextContext = contacts;
+ EContact *contact;
+ for ( ; nextContext != NULL; nextContext = nextContext->next){
+ contact = E_CONTACT (nextContext->data);
+ name = e_contact_get_const (contact, E_CONTACT_FULL_NAME);
+ if (nameList == NULL)
+ nameList = g_strdup (name);
+ else
+ nameList = g_strconcat (nameList,",",name,NULL);
+ g_debug(nameList);
+ }
+ if (strlen(gtk_entry_get_text (GTK_ENTRY(toEntry))) > 0)
+ gtk_entry_append_text (GTK_ENTRY(toEntry),g_strdup_printf(",%s",nameList));
+ else
+ gtk_entry_set_text (GTK_ENTRY(toEntry),nameList);
+ g_free(nameList);
+ g_free(name);
}
Modified: trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.c 2007-03-28 02:33:14 UTC (rev 1521)
+++ trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.c 2007-03-28 05:58:08 UTC (rev 1522)
@@ -28,6 +28,7 @@
GtkWidget* vbox;
GtkWidget* buttonbox;
GtkWidget* contacts_view;
+ SmsContactData* data;
}SmsContactWindowPrivate;
static gint sms_contact_signals[LAST_SIGNAL] = {0};
@@ -40,6 +41,8 @@
GList* contacts, gpointer closure);
static void contacts_view_cursor_changed(GtkTreeSelection* selection, SmsContactData* data);
static void contact_select_done(void);
+gboolean get_selected_contact (GtkTreeModel* model, GtkTreePath* path,
+ GtkTreeIter* iter, gpointer data);
static void
sms_contact_window_dispose(GObject* object)
@@ -83,11 +86,11 @@
static void updateContactsView (EBook* book, EBookStatus status,
GList* contacts, gpointer closure)
{
- g_debug("contacts has ");
GtkTreeIter iter;
SmsContactData* data = (SmsContactData*)closure;
GtkListStore *contacts_liststore = data->contacts_liststore;
GList* c = contacts;
+ data->contacts = contacts;
g_debug ("list length %d", g_list_length(c));
for (;c;c=c->next){
@@ -141,10 +144,10 @@
SmsContactWindowPrivate* priv = SMS_CONTACT_WINDOW_GET_PRIVATE(self);
priv->vbox = gtk_vbox_new(FALSE,0);
SmsContactData* data = g_new0(SmsContactData,1);
+ priv->data = data;
data->book = e_book_new_system_addressbook(NULL);
if (!data->book)
g_critical ("Could not load system addressbook");
- self->nameList = g_strdup("tyh");
/* Set the "select" window title */
GtkWidget* titleLabel = gtk_label_new ("Select Contacts");
@@ -225,8 +228,48 @@
return GTK_WIDGET (moko_navigation_list);
}
+gboolean get_selected_contact (GtkTreeModel* model, GtkTreePath* path,
+ GtkTreeIter* iter, gpointer data)
+{
+ SmsContactWindow* self = (SmsContactWindow*)data;
+ SmsContactWindowPrivate* priv = SMS_CONTACT_WINDOW_GET_PRIVATE(self);
+ SmsContactData* contactData = priv->data;
+ g_debug ("select item contacts %d", g_list_length(contactData->contacts));
+
+ gchar* name;
+ gboolean selected;
+ gtk_tree_model_get (model, iter,
+ CONTACT_SEL_COL, &selected,
+ CONTACT_NAME_COL,&name,
+ -1);
+ if (selected)
+ g_debug ("contact %s selected", name);
+ else {
+ g_debug ("contact %s not selected, remove from contacts list", name);
+ GList* contactListItem = contactData->contacts;
+ for ( ; contactListItem; contactListItem=contactListItem->next){
+ EContact* contact = E_CONTACT (contactListItem->data);
+ const gchar *contactName;
+ contactName = e_contact_get_const (contact, E_CONTACT_FULL_NAME);
+ if (!g_strcasecmp(name, contactName))
+ contactData->contacts = g_list_remove (contactData->contacts,
+ contactListItem->data);
+ }
+ }
+
+ return FALSE;
+}
+
static void sms_contact_window_close (SmsContactWindow* self)
{
+ /* get selected items */
+ SmsContactWindowPrivate* priv = SMS_CONTACT_WINDOW_GET_PRIVATE(self);
+ GtkWidget* contactView = moko_navigation_list_get_tree_view(MOKO_NAVIGATION_LIST(priv->contacts_view));
+ GtkTreeModel* contactModel = gtk_tree_view_get_model (GTK_TREE_VIEW(contactView));
+ gtk_tree_model_foreach (contactModel, get_selected_contact, self);
+ self->selectedContacts = priv->data->contacts;
+
+ /* emit selection done signal */
g_signal_emit (G_OBJECT(self),sms_contact_signals[CONTACT_SELECT_DONE_SIGNAL],0);
/* Synthesize delete_event to close dialog. */
Modified: trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.h 2007-03-28 02:33:14 UTC (rev 1521)
+++ trunk/src/target/OM-2007/applications/openmoko-messages/src/sms-contact-window.h 2007-03-28 05:58:08 UTC (rev 1522)
@@ -55,7 +55,7 @@
{
MokoWindow parent;
/* instance members */
- gchar* nameList;
+ GList* selectedContacts;
}SmsContactWindow;
typedef struct
@@ -69,6 +69,7 @@
{
EBook* book;
GtkListStore *contacts_liststore;
+ GList* contacts;
}SmsContactData;
G_END_DECLS
More information about the commitlog
mailing list