r3679 - in trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
chris at sita.openmoko.org
chris at sita.openmoko.org
Tue Dec 18 16:05:08 CET 2007
Author: chris
Date: 2007-12-18 16:05:06 +0100 (Tue, 18 Dec 2007)
New Revision: 3679
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-contacts.c
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.h
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-compose.c: (page_hidden):
* src/sms-contacts.c: (page_shown), (delete_clicked_cb),
(selection_changed_cb), (sms_contacts_update_delete_all),
(sms_contacts_page_new):
* src/sms-contacts.h:
* src/sms-main.c: (main):
* src/sms-notes.c: (page_shown), (row_inserted_cb),
(row_deleted_cb), (selection_changed_cb), (sms_notes_page_new):
* src/sms-utils.c: (sms_delete_selected_contact_messages),
(sms_contacts_note_count_update):
* src/sms-utils.h:
Set buttons insensitive when their actions are not valid
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog 2007-12-18 15:05:06 UTC (rev 3679)
@@ -1,5 +1,20 @@
2007-12-18 Chris Lord <chris at openedhand.com>
+ * src/sms-compose.c: (page_hidden):
+ * src/sms-contacts.c: (page_shown), (delete_clicked_cb),
+ (selection_changed_cb), (sms_contacts_update_delete_all),
+ (sms_contacts_page_new):
+ * src/sms-contacts.h:
+ * src/sms-main.c: (main):
+ * src/sms-notes.c: (page_shown), (row_inserted_cb),
+ (row_deleted_cb), (selection_changed_cb), (sms_notes_page_new):
+ * src/sms-utils.c: (sms_delete_selected_contact_messages),
+ (sms_contacts_note_count_update):
+ * src/sms-utils.h:
+ Set buttons insensitive when their actions are not valid
+
+2007-12-18 Chris Lord <chris at openedhand.com>
+
* src/sms-compose.c: (text_changed_cb), (sms_compose_page_new):
Add a message length indicator to the composition page
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 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c 2007-12-18 15:05:06 UTC (rev 3679)
@@ -108,8 +108,6 @@
gtk_widget_set_sensitive (GTK_WIDGET (data->new_button), TRUE);
gtk_tool_button_set_stock_id (GTK_TOOL_BUTTON (data->new_button),
MOKO_STOCK_SMS_NEW);
- gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), TRUE);
- gtk_widget_set_sensitive (GTK_WIDGET (data->delete_all_button), TRUE);
}
static void
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 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c 2007-12-18 15:05:06 UTC (rev 3679)
@@ -31,9 +31,17 @@
static gboolean hidden = FALSE;
+static void selection_changed_cb (GtkTreeSelection *selection, SmsData *data);
+
static void
page_shown (SmsData *data)
{
+ GtkTreeSelection *selection;
+
+ /* Update delete/delete-all buttons */
+ sms_contacts_update_delete_all (data);
+ selection = gtk_tree_view_get_selection (data->contacts_treeview);
+ selection_changed_cb (selection, data);
}
static void
@@ -362,7 +370,10 @@
{
if (hidden) return;
- sms_delete_selected_contact_messages (data);
+ if (sms_delete_selected_contact_messages (data)) {
+ gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button),
+ FALSE);
+ }
}
static void
@@ -521,11 +532,60 @@
}
}
+static void
+selection_changed_cb (GtkTreeSelection *selection, SmsData *data)
+{
+ GtkTreeModel *model;
+ gboolean sensitive;
+ GtkTreeIter iter;
+ gchar *detail;
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_button), FALSE);
+ return;
+ }
+
+ /* Not the nicest way to know if there are messages, but better than
+ * doing multiple look-ups on the hash-tables
+ */
+ gtk_tree_model_get (model, &iter, COL_DETAIL, &detail, -1);
+ if (!detail) {
+ sensitive = FALSE;
+ } else {
+ sensitive = TRUE;
+ if (detail[0] == '0') {
+ const gchar *next_line = strchr (detail, '\n') + 1;
+ if ((!next_line) || (next_line[0] == '0'))
+ sensitive = FALSE;
+ }
+ g_free (detail);
+ }
+
+ gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), sensitive);
+}
+
+void
+sms_contacts_update_delete_all (SmsData *data)
+{
+ if (gtk_notebook_get_current_page (data->notebook) == SMS_PAGE_CONTACTS)
+ {
+ if (g_hash_table_size (data->note_count) > 0) {
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_all_button), TRUE);
+ } else {
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_all_button), FALSE);
+ }
+ }
+}
+
GtkWidget *
sms_contacts_page_new (SmsData *data)
{
EBookQuery *qrys[(E_CONTACT_LAST_PHONE_ID-E_CONTACT_FIRST_PHONE_ID)+1];
GtkWidget *contacts_combo, *scroll, *vbox;
+ GtkTreeSelection *selection;
GtkCellRenderer *renderer;
EBookQuery *tel_query;
EBookView *view;
@@ -635,6 +695,11 @@
data->contacts_treeview), TRUE);
gtk_tree_view_set_headers_visible (
GTK_TREE_VIEW (data->contacts_treeview), FALSE);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (
+ data->contacts_treeview));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (selection_changed_cb), data);
/* Create renderer and column */
/* Slight abuse of the note cell renderer I suppose... */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.h 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.h 2007-12-18 15:05:06 UTC (rev 3679)
@@ -33,6 +33,7 @@
};
GtkWidget *sms_contacts_page_new (SmsData *data);
+void sms_contacts_update_delete_all (SmsData *data);
#endif
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-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c 2007-12-18 15:05:06 UTC (rev 3679)
@@ -94,12 +94,14 @@
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data.delete_all_button, 1);
/*gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
gtk_separator_tool_item_new (), 3);*/
+ gtk_widget_set_sensitive (GTK_WIDGET (data.delete_all_button), FALSE);
/* Delete button */
data.delete_button = gtk_tool_button_new_from_stock (
GTK_STOCK_DELETE);
gtk_tool_item_set_expand (data.delete_button, TRUE);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data.delete_button, 2);
+ gtk_widget_set_sensitive (GTK_WIDGET (data.delete_button), FALSE);
/* Create notebook */
data.notebook = gtk_notebook_new ();
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-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c 2007-12-18 15:05:06 UTC (rev 3679)
@@ -142,6 +142,8 @@
gboolean found_match = FALSE;
EContact *contact = NULL;
+ gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), FALSE);
+
if (!open) return;
/* Attach to scrolling signals so we can mark messages as read */
@@ -622,6 +624,38 @@
}
}
+static void
+row_inserted_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+ SmsData *data)
+{
+ gtk_widget_set_sensitive (GTK_WIDGET (data->delete_all_button), TRUE);
+}
+
+static void
+row_deleted_cb (GtkTreeModel *model, GtkTreePath *path, SmsData *data)
+{
+ GtkTreeIter iter;
+
+ if (!gtk_tree_model_get_iter_first (model, &iter))
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_all_button), FALSE);
+}
+
+static void
+selection_changed_cb (GtkTreeSelection *selection, SmsData *data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_button), FALSE);
+ } else {
+ gtk_widget_set_sensitive (GTK_WIDGET (
+ data->delete_button), TRUE);
+ }
+}
+
GtkWidget *
sms_notes_page_new (SmsData *data)
{
@@ -650,6 +684,10 @@
gtk_tree_model_filter_set_visible_func ((GtkTreeModelFilter *)
data->note_filter, (GtkTreeModelFilterVisibleFunc)
notes_visible_func, data, NULL);
+ g_signal_connect (data->note_filter, "row-inserted",
+ G_CALLBACK (row_inserted_cb), data);
+ g_signal_connect (data->note_filter, "row-deleted",
+ G_CALLBACK (row_deleted_cb), data);
/* Create a category-colour hash for the cell renderer */
colours_hash = g_hash_table_new (g_str_hash, g_str_equal);
@@ -665,6 +703,9 @@
gtk_tree_view_insert_column_with_data_func (
GTK_TREE_VIEW (data->notes_treeview), 0, "Messages", renderer,
(GtkTreeCellDataFunc)sms_notes_data_func, data, NULL);
+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (
+ data->notes_treeview)), "changed",
+ G_CALLBACK (selection_changed_cb), data);
/* Create search bar */
notes_combo = gtk_combo_box_new_text ();
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 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c 2007-12-18 15:05:06 UTC (rev 3679)
@@ -61,7 +61,7 @@
return contact;
}
-void
+gboolean
sms_delete_selected_contact_messages (SmsData *data)
{
EContact *contact;
@@ -79,7 +79,7 @@
if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) {
gtk_widget_destroy (dialog);
- return;
+ return FALSE;
}
gtk_widget_destroy (dialog);
@@ -128,6 +128,8 @@
data->unassigned_notes, data->unassigned_notes);
}
}
+
+ return TRUE;
}
/* Following two functions taken from pimlico Contacts and modified slightly */
@@ -216,6 +218,9 @@
data->note_count_idle = 0;
+ /* Update the delete-all button if we're on the contacts page */
+ sms_contacts_update_delete_all (data);
+
/* Change sort column so changing priorities doesn't break iterating
* through the model.
*/
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 2007-12-18 12:18:10 UTC (rev 3678)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h 2007-12-18 15:05:06 UTC (rev 3679)
@@ -26,6 +26,6 @@
EContact *sms_get_selected_contact (SmsData *data);
GdkPixbuf *sms_contact_load_photo (EContact *contact);
gboolean sms_contacts_note_count_update (SmsData *data);
-void sms_delete_selected_contact_messages (SmsData *data);
+gboolean sms_delete_selected_contact_messages (SmsData *data);
#endif /* SMS_UTILS_H */
More information about the commitlog
mailing list