Changeset 3679


Ignore:
Timestamp:
12/18/07 16:05:06 (5 years ago)
Author:
chris
Message:
  • 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
Location:
trunk/src/target/OM-2007.2/applications/openmoko-messages2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog

    r3678 r3679  
     12007-12-18  Chris Lord  <chris@openedhand.com> 
     2 
     3        * src/sms-compose.c: (page_hidden): 
     4        * src/sms-contacts.c: (page_shown), (delete_clicked_cb), 
     5        (selection_changed_cb), (sms_contacts_update_delete_all), 
     6        (sms_contacts_page_new): 
     7        * src/sms-contacts.h: 
     8        * src/sms-main.c: (main): 
     9        * src/sms-notes.c: (page_shown), (row_inserted_cb), 
     10        (row_deleted_cb), (selection_changed_cb), (sms_notes_page_new): 
     11        * src/sms-utils.c: (sms_delete_selected_contact_messages), 
     12        (sms_contacts_note_count_update): 
     13        * src/sms-utils.h: 
     14        Set buttons insensitive when their actions are not valid 
     15 
    1162007-12-18  Chris Lord  <chris@openedhand.com> 
    217 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-compose.c

    r3678 r3679  
    109109        gtk_tool_button_set_stock_id (GTK_TOOL_BUTTON (data->new_button), 
    110110                MOKO_STOCK_SMS_NEW); 
    111         gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), TRUE); 
    112         gtk_widget_set_sensitive (GTK_WIDGET (data->delete_all_button), TRUE); 
    113111} 
    114112 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c

    r3675 r3679  
    3232static gboolean hidden = FALSE; 
    3333 
     34static void selection_changed_cb (GtkTreeSelection *selection, SmsData *data); 
     35 
    3436static void 
    3537page_shown (SmsData *data) 
    3638{ 
     39        GtkTreeSelection *selection; 
     40         
     41        /* Update delete/delete-all buttons */ 
     42        sms_contacts_update_delete_all (data); 
     43        selection = gtk_tree_view_get_selection (data->contacts_treeview); 
     44        selection_changed_cb (selection, data); 
    3745} 
    3846 
     
    363371        if (hidden) return; 
    364372         
    365         sms_delete_selected_contact_messages (data); 
     373        if (sms_delete_selected_contact_messages (data)) { 
     374                gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), 
     375                        FALSE); 
     376        } 
    366377} 
    367378 
     
    522533} 
    523534 
     535static void 
     536selection_changed_cb (GtkTreeSelection *selection, SmsData *data) 
     537{ 
     538        GtkTreeModel *model; 
     539        gboolean sensitive; 
     540        GtkTreeIter iter; 
     541        gchar *detail; 
     542         
     543        if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { 
     544                gtk_widget_set_sensitive (GTK_WIDGET ( 
     545                        data->delete_button), FALSE); 
     546                return; 
     547        } 
     548         
     549        /* Not the nicest way to know if there are messages, but better than  
     550         * doing multiple look-ups on the hash-tables 
     551         */ 
     552        gtk_tree_model_get (model, &iter, COL_DETAIL, &detail, -1); 
     553        if (!detail) { 
     554                sensitive = FALSE; 
     555        } else { 
     556                sensitive = TRUE; 
     557                if (detail[0] == '0') { 
     558                        const gchar *next_line = strchr (detail, '\n') + 1; 
     559                        if ((!next_line) || (next_line[0] == '0')) 
     560                                sensitive = FALSE; 
     561                } 
     562                g_free (detail); 
     563        } 
     564 
     565        gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), sensitive); 
     566} 
     567 
     568void 
     569sms_contacts_update_delete_all (SmsData *data) 
     570{ 
     571        if (gtk_notebook_get_current_page (data->notebook) == SMS_PAGE_CONTACTS) 
     572        { 
     573                if (g_hash_table_size (data->note_count) > 0) { 
     574                        gtk_widget_set_sensitive (GTK_WIDGET ( 
     575                                data->delete_all_button), TRUE); 
     576                } else { 
     577                        gtk_widget_set_sensitive (GTK_WIDGET ( 
     578                                data->delete_all_button), FALSE); 
     579                } 
     580        } 
     581} 
     582 
    524583GtkWidget * 
    525584sms_contacts_page_new (SmsData *data) 
     
    527586        EBookQuery *qrys[(E_CONTACT_LAST_PHONE_ID-E_CONTACT_FIRST_PHONE_ID)+1]; 
    528587        GtkWidget *contacts_combo, *scroll, *vbox; 
     588        GtkTreeSelection *selection; 
    529589        GtkCellRenderer *renderer; 
    530590        EBookQuery *tel_query; 
     
    636696        gtk_tree_view_set_headers_visible ( 
    637697                GTK_TREE_VIEW (data->contacts_treeview), FALSE); 
     698        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW ( 
     699                data->contacts_treeview)); 
     700        gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); 
     701        g_signal_connect (selection, "changed", 
     702                G_CALLBACK (selection_changed_cb), data); 
    638703         
    639704        /* Create renderer and column */ 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.h

    r3650 r3679  
    3434 
    3535GtkWidget *sms_contacts_page_new (SmsData *data); 
     36void sms_contacts_update_delete_all (SmsData *data); 
    3637 
    3738#endif 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-main.c

    r3650 r3679  
    9595        /*gtk_toolbar_insert (GTK_TOOLBAR (toolbar), 
    9696                gtk_separator_tool_item_new (), 3);*/ 
     97        gtk_widget_set_sensitive (GTK_WIDGET (data.delete_all_button), FALSE); 
    9798         
    9899        /* Delete button */ 
     
    101102        gtk_tool_item_set_expand (data.delete_button, TRUE); 
    102103        gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data.delete_button, 2); 
     104        gtk_widget_set_sensitive (GTK_WIDGET (data.delete_button), FALSE); 
    103105         
    104106        /* Create notebook */ 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c

    r3677 r3679  
    142142        gboolean found_match = FALSE; 
    143143        EContact *contact = NULL; 
     144         
     145        gtk_widget_set_sensitive (GTK_WIDGET (data->delete_button), FALSE); 
    144146         
    145147        if (!open) return; 
     
    623625} 
    624626 
     627static void 
     628row_inserted_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, 
     629                 SmsData *data) 
     630{ 
     631        gtk_widget_set_sensitive (GTK_WIDGET (data->delete_all_button), TRUE); 
     632} 
     633 
     634static void 
     635row_deleted_cb (GtkTreeModel *model, GtkTreePath *path, SmsData *data) 
     636{ 
     637        GtkTreeIter iter; 
     638         
     639        if (!gtk_tree_model_get_iter_first (model, &iter)) 
     640                gtk_widget_set_sensitive (GTK_WIDGET ( 
     641                        data->delete_all_button), FALSE); 
     642} 
     643 
     644static void 
     645selection_changed_cb (GtkTreeSelection *selection, SmsData *data) 
     646{ 
     647        GtkTreeModel *model; 
     648        GtkTreeIter iter; 
     649         
     650        if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { 
     651                gtk_widget_set_sensitive (GTK_WIDGET ( 
     652                        data->delete_button), FALSE); 
     653        } else { 
     654                gtk_widget_set_sensitive (GTK_WIDGET ( 
     655                        data->delete_button), TRUE); 
     656        } 
     657} 
     658 
    625659GtkWidget * 
    626660sms_notes_page_new (SmsData *data) 
     
    651685                data->note_filter, (GtkTreeModelFilterVisibleFunc) 
    652686                notes_visible_func, data, NULL); 
     687        g_signal_connect (data->note_filter, "row-inserted", 
     688                G_CALLBACK (row_inserted_cb), data); 
     689        g_signal_connect (data->note_filter, "row-deleted", 
     690                G_CALLBACK (row_deleted_cb), data); 
    653691         
    654692        /* Create a category-colour hash for the cell renderer */ 
     
    666704                GTK_TREE_VIEW (data->notes_treeview), 0, "Messages", renderer, 
    667705                (GtkTreeCellDataFunc)sms_notes_data_func, data, NULL); 
     706        g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW ( 
     707                data->notes_treeview)), "changed", 
     708                G_CALLBACK (selection_changed_cb), data); 
    668709         
    669710        /* Create search bar */ 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c

    r3675 r3679  
    6262} 
    6363 
    64 void 
     64gboolean 
    6565sms_delete_selected_contact_messages (SmsData *data) 
    6666{ 
     
    8080        if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) { 
    8181                gtk_widget_destroy (dialog); 
    82                 return; 
     82                return FALSE; 
    8383        } 
    8484         
     
    129129                } 
    130130        } 
     131         
     132        return TRUE; 
    131133} 
    132134 
     
    217219        data->note_count_idle = 0; 
    218220 
     221        /* Update the delete-all button if we're on the contacts page */ 
     222        sms_contacts_update_delete_all (data); 
     223 
    219224        /* Change sort column so changing priorities doesn't break iterating  
    220225         * through the model. 
  • trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h

    r3675 r3679  
    2727GdkPixbuf *sms_contact_load_photo (EContact *contact); 
    2828gboolean sms_contacts_note_count_update (SmsData *data); 
    29 void sms_delete_selected_contact_messages (SmsData *data); 
     29gboolean sms_delete_selected_contact_messages (SmsData *data); 
    3030 
    3131#endif /* SMS_UTILS_H */ 
Note: See TracChangeset for help on using the changeset viewer.