Ignore:
Timestamp:
03/27/07 10:34:31 (6 years ago)
Author:
alex_tang
Message:

Add contact window to choose contacts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/target/OM-2007/applications/openmoko-messages/src/callbacks.c

    r1452 r1516  
    2121#include "callbacks.h" 
    2222#include "detail-area.h" 
     23#include "sms-contact-window.h" 
    2324#include <gtk/gtk.h> 
    2425#include <dbus/dbus.h> 
    2526#include <dbus/dbus-glib.h> 
    2627 
     28void cb_addressBtn_clicked (GtkButton* button, gpointer* data); 
     29void sms_contact_select_done (GtkWidget* widget, gpointer data); 
     30 
    2731void 
    2832send_signal_to_footer (DBusConnection* bus, gchar* message_str) 
    2933{ 
    30     DBusMessage *message; 
    31  
    32     if(message_str == NULL) 
    33         g_debug("Input string is null"); 
    34     else 
    35         g_debug(message_str); 
    36  
    37     message = dbus_message_new_signal ("/org/openmoko/footer", 
    38                                        "org.openmoko.dbus.TaskManager",  
    39                                        "push_statusbar_message"); 
    40     dbus_message_append_args (message, 
    41                               DBUS_TYPE_STRING, &message_str, 
    42                               DBUS_TYPE_INVALID); 
    43     dbus_connection_send (bus, message, NULL); 
    44     dbus_message_unref (message); 
    45 } 
    46  
    47 static gboolean  
     34  DBusMessage *message; 
     35 
     36  if(message_str == NULL) 
     37    g_debug("Input string is null"); 
     38  else 
     39    g_debug(message_str); 
     40 
     41  message = dbus_message_new_signal ("/org/openmoko/footer", 
     42                                     "org.openmoko.dbus.TaskManager", 
     43                                     "push_statusbar_message"); 
     44  dbus_message_append_args (message, 
     45                            DBUS_TYPE_STRING, &message_str, 
     46                            DBUS_TYPE_INVALID); 
     47  dbus_connection_send (bus, message, NULL); 
     48  dbus_message_unref (message); 
     49} 
     50 
     51static gboolean 
    4852model_number_helper (GtkTreeModel* model, 
    49                      GtkTreePath*  path, 
    50                      GtkTreeIter*  iter, 
    51                      gpointer      data) 
    52 { 
    53     MessengerData* d = (MessengerData*)data; 
    54     d->msg_num ++; 
    55     return FALSE; 
     53                     GtkTreePath*  path, 
     54                     GtkTreeIter*  iter, 
     55                     gpointer      data) 
     56{ 
     57  MessengerData* d = (MessengerData*)data; 
     58  d->msg_num ++; 
     59  return FALSE; 
    5660} 
    5761 
    5862gint get_model_number (MessengerData* d) 
    5963{ 
    60     d->msg_num = 0; 
    61     gtk_tree_model_foreach (d->filter,model_number_helper,d); 
    62     return d->msg_num; 
     64  d->msg_num = 0; 
     65  gtk_tree_model_foreach (d->filter,model_number_helper,d); 
     66  return d->msg_num; 
    6367} 
    6468 
    6569gboolean cb_filter_changed(GtkWidget* widget, gchar* text, MessengerData* d) 
    6670{ 
    67     d->currentfolder = g_strdup(text); 
    68     gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
    69     gchar* str = g_strdup_printf("folder %s has %d messages",text,get_model_number(d)); 
    70     send_signal_to_footer(d->bus,str); 
    71      
    72     return FALSE; 
     71  d->currentfolder = g_strdup(text); 
     72  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
     73  gchar* str = g_strdup_printf("folder %s has %d messages",text,get_model_number(d)); 
     74  send_signal_to_footer(d->bus,str); 
     75 
     76  return FALSE; 
    7377} 
    7478 
    7579void cb_new_sms (GtkMenuItem* item, MessengerData* d) 
    7680{ 
    77     SmsDialogWindow* sms_window = sms_dialog_window_new(); 
    78     sms_dialog_window_set_title (sms_window,"New SMS"); 
    79     gtk_window_set_decorated (GTK_WINDOW(sms_window), FALSE); 
    80     gtk_widget_show_all (GTK_WIDGET(sms_window)); 
     81  SmsDialogWindow* sms_window = sms_dialog_window_new(); 
     82  sms_dialog_window_set_title (sms_window,"New SMS"); 
     83  gtk_window_set_decorated (GTK_WINDOW(sms_window), FALSE); 
     84  gtk_widget_show_all (GTK_WIDGET(sms_window)); 
     85 
     86  g_signal_connect (G_OBJECT(sms_window->addressBtn), 
     87                    "clicked", 
     88                    G_CALLBACK(cb_addressBtn_clicked), 
     89                    sms_window->toEntry ); 
    8190} 
    8291 
    8392void cb_new_mail (GtkMenuItem* item, MessengerData* d) 
    8493{ 
    85     SmsDialogWindow* mail_window = sms_dialog_window_new(); 
    86     mail_dialog_window_set_title (mail_window,"New Email"); 
    87     gtk_window_set_decorated (GTK_WINDOW(mail_window), FALSE); 
    88     gtk_widget_show_all ( GTK_WIDGET(mail_window) ); 
     94  SmsDialogWindow* mail_window = sms_dialog_window_new(); 
     95  mail_dialog_window_set_title (mail_window,"New Email"); 
     96  gtk_window_set_decorated (GTK_WINDOW(mail_window), FALSE); 
     97  gtk_widget_show_all ( GTK_WIDGET(mail_window) ); 
     98 
     99  g_signal_connect (G_OBJECT(mail_window->addressBtn), 
     100                    "clicked", 
     101                    G_CALLBACK(cb_addressBtn_clicked), 
     102                    mail_window->toEntry); 
    89103} 
    90104 
    91105void cb_new_folder (GtkMenuItem* item, MessengerData* d) 
    92106{ 
    93     g_debug ("new folder called"); 
    94     GtkWidget* hbox; 
    95     GtkWidget* nfResetBtn; 
    96     GtkWidget* nfConfirmBtn; 
    97  
    98     if ((d->nfWin != NULL) && (d->nfWin->window != NULL)) 
    99         gtk_entry_set_text (GTK_ENTRY(d->nfEntry),""); 
    100     else 
    101     { 
    102         d->nfWin = moko_dialog_window_new(); 
    103         GtkWidget* nfBox = gtk_vbox_new (FALSE,10); 
    104         gtk_widget_set_size_request (nfBox, 480, -1); 
    105         GtkWidget* nfAlign = gtk_alignment_new (0,0,1,1); 
    106         gtk_alignment_set_padding (GTK_ALIGNMENT(nfAlign), 100, 0, 30, 10); 
    107         moko_dialog_window_set_title ( MOKO_DIALOG_WINDOW(d->nfWin), "New Folder"); 
    108          
    109         GtkWidget* nfLabel = gtk_label_new ("Please input new folder name:"); 
    110         gtk_misc_set_alignment (GTK_MISC(nfLabel),0,0.5); 
    111         gtk_box_pack_start (GTK_BOX(nfBox), nfLabel, FALSE, TRUE, 0); 
    112          
    113         d->nfEntry = gtk_entry_new (); 
    114         gtk_box_pack_start (GTK_BOX(nfBox), d->nfEntry, FALSE, TRUE, 0); 
    115          
    116         hbox = gtk_hbox_new (FALSE,20); 
    117         nfConfirmBtn = gtk_button_new_with_label ("OK"); 
    118         nfResetBtn = gtk_button_new_with_label ("Reset"); 
    119         gtk_box_pack_start (GTK_BOX(hbox), nfConfirmBtn, FALSE, TRUE, 0); 
    120         gtk_box_pack_start (GTK_BOX(hbox), nfResetBtn, FALSE, TRUE, 0); 
    121         gtk_box_pack_start (GTK_BOX(nfBox), hbox, FALSE, TRUE, 0); 
    122  
    123         gtk_container_add (GTK_CONTAINER(nfAlign),nfBox); 
    124  
    125         moko_dialog_window_set_contents (MOKO_DIALOG_WINDOW(d->nfWin), nfAlign); 
    126         g_signal_connect (G_OBJECT(nfConfirmBtn),  
    127                           "clicked", 
    128                           G_CALLBACK(cb_nfBtn_clicked), 
    129                           d); 
    130         g_signal_connect (G_OBJECT(nfResetBtn), 
    131                           "clicked", 
    132                           G_CALLBACK(cb_nfResetBtn_clicked), 
    133                           d); 
    134     } 
    135     gtk_window_set_decorated (GTK_WINDOW(d->nfWin), FALSE); 
    136     gtk_widget_show_all (d->nfWin); 
     107  g_debug ("new folder called"); 
     108  GtkWidget* hbox; 
     109  GtkWidget* nfResetBtn; 
     110  GtkWidget* nfConfirmBtn; 
     111 
     112  if ((d->nfWin != NULL) && (d->nfWin->window != NULL)) 
     113    gtk_entry_set_text (GTK_ENTRY(d->nfEntry),""); 
     114  else 
     115    { 
     116      d->nfWin = moko_dialog_window_new(); 
     117      GtkWidget* nfBox = gtk_vbox_new (FALSE,10); 
     118      gtk_widget_set_size_request (nfBox, 480, -1); 
     119      GtkWidget* nfAlign = gtk_alignment_new (0,0,1,1); 
     120      gtk_alignment_set_padding (GTK_ALIGNMENT(nfAlign), 100, 0, 30, 10); 
     121      moko_dialog_window_set_title ( MOKO_DIALOG_WINDOW(d->nfWin), "New Folder"); 
     122 
     123      GtkWidget* nfLabel = gtk_label_new ("Please input new folder name:"); 
     124      gtk_misc_set_alignment (GTK_MISC(nfLabel),0,0.5); 
     125      gtk_box_pack_start (GTK_BOX(nfBox), nfLabel, FALSE, TRUE, 0); 
     126 
     127      d->nfEntry = gtk_entry_new (); 
     128      gtk_box_pack_start (GTK_BOX(nfBox), d->nfEntry, FALSE, TRUE, 0); 
     129 
     130      hbox = gtk_hbox_new (FALSE,20); 
     131      nfConfirmBtn = gtk_button_new_with_label ("OK"); 
     132      nfResetBtn = gtk_button_new_with_label ("Reset"); 
     133      gtk_box_pack_start (GTK_BOX(hbox), nfConfirmBtn, FALSE, TRUE, 0); 
     134      gtk_box_pack_start (GTK_BOX(hbox), nfResetBtn, FALSE, TRUE, 0); 
     135      gtk_box_pack_start (GTK_BOX(nfBox), hbox, FALSE, TRUE, 0); 
     136 
     137      gtk_container_add (GTK_CONTAINER(nfAlign),nfBox); 
     138 
     139      moko_dialog_window_set_contents (MOKO_DIALOG_WINDOW(d->nfWin), nfAlign); 
     140      g_signal_connect (G_OBJECT(nfConfirmBtn), 
     141                        "clicked", 
     142                        G_CALLBACK(cb_nfBtn_clicked), 
     143                        d); 
     144      g_signal_connect (G_OBJECT(nfResetBtn), 
     145                        "clicked", 
     146                        G_CALLBACK(cb_nfResetBtn_clicked), 
     147                        d); 
     148    } 
     149  gtk_window_set_decorated (GTK_WINDOW(d->nfWin), FALSE); 
     150  gtk_widget_show_all (d->nfWin); 
    137151} 
    138152 
    139153void cb_mode_read (GtkMenuItem* item, MessengerData* d) 
    140154{ 
    141     g_debug ("mode read"); 
    142     message* msg; 
    143     GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
    144     GtkTreeModel* model; 
    145     GtkTreeIter iter; 
    146     gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
    147  
    148     if ( has_selection ){ 
    149         msg = g_malloc(sizeof(message)); 
    150         gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
    151         gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
    152         gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
    153     } 
    154     else msg = NULL; 
    155     detail_read_message (DETAIL_AREA(d->details),msg); 
     155  g_debug ("mode read"); 
     156  message* msg; 
     157  GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
     158  GtkTreeModel* model; 
     159  GtkTreeIter iter; 
     160  gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
     161 
     162  if ( has_selection ) 
     163    { 
     164      msg = g_malloc(sizeof(message)); 
     165      gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
     166      gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
     167      gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
     168    } 
     169  else msg = NULL; 
     170  detail_read_message (DETAIL_AREA(d->details),msg); 
    156171} 
    157172 
    158173void cb_mode_reply (GtkMenuItem* item, MessengerData* d) 
    159174{ 
    160     g_debug ("mode reply"); 
    161     message* msg; 
    162     GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
    163     GtkTreeModel* model; 
    164     GtkTreeIter iter; 
    165     gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
    166  
    167     if ( has_selection ) { 
    168         msg = g_malloc(sizeof(message)); 
    169         gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
    170         gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
    171         gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
    172     }else msg = NULL; 
    173      
    174     SmsDialogWindow* sms_window = sms_dialog_window_new(); 
    175     if (msg != NULL){ 
    176         sms_dialog_window_set_title (sms_window,"Reply SMS"); 
    177         sms_dialog_reply_message (sms_window,msg); 
    178     }else sms_dialog_window_set_title (sms_window,"New SMS"); 
    179     gtk_widget_show_all ( GTK_WIDGET(sms_window) ); 
     175  g_debug ("mode reply"); 
     176  message* msg; 
     177  GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
     178  GtkTreeModel* model; 
     179  GtkTreeIter iter; 
     180  gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
     181 
     182  if ( has_selection ) 
     183    { 
     184      msg = g_malloc(sizeof(message)); 
     185      gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
     186      gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
     187      gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
     188    } 
     189  else msg = NULL; 
     190 
     191  SmsDialogWindow* sms_window = sms_dialog_window_new(); 
     192  if (msg != NULL) 
     193    { 
     194      sms_dialog_window_set_title (sms_window,"Reply SMS"); 
     195      sms_dialog_reply_message (sms_window,msg); 
     196    } 
     197  else sms_dialog_window_set_title (sms_window,"New SMS"); 
     198  gtk_widget_show_all ( GTK_WIDGET(sms_window) ); 
    180199} 
    181200 
    182201void cb_mode_forward (GtkMenuItem* item, MessengerData* d) 
    183202{ 
    184     g_debug ("mode forward"); 
    185     message* msg; 
    186     GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
    187     GtkTreeModel* model; 
    188     GtkTreeIter iter; 
    189     gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
    190  
    191     if ( has_selection ){ 
    192         msg = g_malloc(sizeof(message)); 
    193         gtk_tree_model_get( model, &iter,  
    194                             COLUMN_FROM, &msg->name,  
    195                             COLUMN_SUBJECT, &msg->subject, 
    196                             COLUMN_FOLDER, &msg->folder, 
    197                             COLUMN_CONTENT, &msg->content, 
    198                             -1 ); 
    199     } 
    200     else msg = NULL; 
    201  
    202     SmsDialogWindow* sms_window = sms_dialog_window_new(); 
    203     sms_dialog_window_set_title (sms_window,"Forward SMS"); 
    204     sms_dialog_forward_message (sms_window, msg); 
    205     gtk_widget_show_all ( GTK_WIDGET(sms_window) ); 
     203  g_debug ("mode forward"); 
     204  message* msg; 
     205  GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW( d->view )); 
     206  GtkTreeModel* model; 
     207  GtkTreeIter iter; 
     208  gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter ); 
     209 
     210  if ( has_selection ) 
     211    { 
     212      msg = g_malloc(sizeof(message)); 
     213      gtk_tree_model_get( model, &iter, 
     214                          COLUMN_FROM, &msg->name, 
     215                          COLUMN_SUBJECT, &msg->subject, 
     216                          COLUMN_FOLDER, &msg->folder, 
     217                          COLUMN_CONTENT, &msg->content, 
     218                          -1 ); 
     219    } 
     220  else msg = NULL; 
     221 
     222  SmsDialogWindow* sms_window = sms_dialog_window_new(); 
     223  sms_dialog_window_set_title (sms_window,"Forward SMS"); 
     224  sms_dialog_forward_message (sms_window, msg); 
     225  gtk_widget_show_all ( GTK_WIDGET(sms_window) ); 
    206226} 
    207227 
    208228void cb_delete_folder (GtkMenuItem* item, MessengerData* d) 
    209229{ 
    210     g_debug ("delete folder called"); 
    211     GtkWidget* msgDialog; 
    212      
    213     GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    214     GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    215     gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
    216     if (!g_strcasecmp(oldName,"Inbox")  || 
    217         !g_strcasecmp(oldName,"Outbox") || 
    218         !g_strcasecmp(oldName,"Draft")  || 
    219         !g_strcasecmp(oldName,"Sent")   || 
    220         !g_strcasecmp(oldName,"Trash")){ 
    221         msgDialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
    222                                             GTK_DIALOG_DESTROY_WITH_PARENT, 
    223                                             GTK_MESSAGE_WARNING, 
    224                                             GTK_BUTTONS_CLOSE, 
    225                                             g_strdup_printf("Current folder '%s'\nis not a custom folder\nCan't delete",oldName) ); 
    226         gtk_dialog_run (GTK_DIALOG (msgDialog)); 
    227         gtk_widget_destroy (msgDialog); 
    228     }else{ 
    229         GtkWidget* dialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
    230                                                     GTK_DIALOG_DESTROY_WITH_PARENT, 
    231                                                     GTK_MESSAGE_WARNING, 
    232                                                     GTK_BUTTONS_OK_CANCEL, 
    233         g_strdup_printf("Are you sure to delete folder: %s",d->currentfolder)); 
    234         gint result = gtk_dialog_run (GTK_DIALOG (dialog)); 
    235         switch (result){ 
    236             case GTK_RESPONSE_OK: 
    237                             g_debug ("clicked ok"); 
    238                             delete_folder(d,oldName); 
    239                             break; 
    240             case GTK_RESPONSE_CANCEL: g_debug ("clicked cancel"); break; 
    241             default: g_debug ("clicked default"); break; 
    242         } 
    243         gtk_widget_destroy (dialog); 
     230  g_debug ("delete folder called"); 
     231  GtkWidget* msgDialog; 
     232 
     233  GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     234  GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     235  gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
     236  if (!g_strcasecmp(oldName,"Inbox")  || 
     237      !g_strcasecmp(oldName,"Outbox") || 
     238      !g_strcasecmp(oldName,"Draft")  || 
     239      !g_strcasecmp(oldName,"Sent")   || 
     240      !g_strcasecmp(oldName,"Trash")) 
     241    { 
     242      msgDialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
     243                                          GTK_DIALOG_DESTROY_WITH_PARENT, 
     244                                          GTK_MESSAGE_WARNING, 
     245                                          GTK_BUTTONS_CLOSE, 
     246                                          g_strdup_printf("Current folder '%s'\nis not a custom folder\nCan't delete",oldName) ); 
     247      gtk_dialog_run (GTK_DIALOG (msgDialog)); 
     248      gtk_widget_destroy (msgDialog); 
     249    } 
     250  else 
     251    { 
     252      GtkWidget* dialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
     253                          GTK_DIALOG_DESTROY_WITH_PARENT, 
     254                          GTK_MESSAGE_WARNING, 
     255                          GTK_BUTTONS_OK_CANCEL, 
     256                          g_strdup_printf("Are you sure to delete folder: %s",d->currentfolder)); 
     257      gint result = gtk_dialog_run (GTK_DIALOG (dialog)); 
     258      switch (result) 
     259        { 
     260        case GTK_RESPONSE_OK: 
     261          g_debug ("clicked ok"); 
     262          delete_folder(d,oldName); 
     263          break; 
     264        case GTK_RESPONSE_CANCEL: 
     265          g_debug ("clicked cancel"); 
     266          break; 
     267        default: 
     268          g_debug ("clicked default"); 
     269          break; 
     270        } 
     271      gtk_widget_destroy (dialog); 
    244272    } 
    245273} 
     
    247275void cb_delete_message (GtkMenuItem* item, MessengerData* d) 
    248276{ 
    249     GtkTreeModel* model; 
    250     GtkTreeIter iter; 
    251     GtkTreeIter childiter; 
    252     GtkTreeSelection* selection; 
    253            
    254     selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(d->view)); 
    255     gboolean has_selection = gtk_tree_selection_get_selected (selection, &model,&iter); 
    256     if (has_selection){ 
    257         gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(d->filter),&childiter,&iter); 
    258         gtk_list_store_remove (d->liststore, &childiter); 
    259     }else { 
    260         GtkWidget* dialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
    261                                                     GTK_DIALOG_DESTROY_WITH_PARENT, 
    262                                                     GTK_MESSAGE_WARNING, 
    263                                                     GTK_BUTTONS_OK, 
    264                                                     "No message selected"); 
    265         gtk_dialog_run (GTK_DIALOG (dialog)); 
    266         gtk_widget_destroy (dialog); 
     277  GtkTreeModel* model; 
     278  GtkTreeIter iter; 
     279  GtkTreeIter childiter; 
     280  GtkTreeSelection* selection; 
     281 
     282  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(d->view)); 
     283  gboolean has_selection = gtk_tree_selection_get_selected (selection, &model,&iter); 
     284  if (has_selection) 
     285    { 
     286      gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(d->filter),&childiter,&iter); 
     287      gtk_list_store_remove (d->liststore, &childiter); 
     288    } 
     289  else 
     290    { 
     291      GtkWidget* dialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
     292                          GTK_DIALOG_DESTROY_WITH_PARENT, 
     293                          GTK_MESSAGE_WARNING, 
     294                          GTK_BUTTONS_OK, 
     295                          "No message selected"); 
     296      gtk_dialog_run (GTK_DIALOG (dialog)); 
     297      gtk_widget_destroy (dialog); 
    267298    } 
    268299} 
     
    270301void cb_mmitem_activate (GtkMenuItem* item, MessengerData* d) 
    271302{ 
    272     g_debug ("message membership"); 
    273     d->mmWin = sms_membership_window_new(); 
    274     gtk_window_set_decorated (GTK_WINDOW(d->mmWin), FALSE); 
    275     sms_membership_window_set_messages (SMS_MEMBERSHIP_WINDOW(d->mmWin), d->liststore); 
    276     sms_membership_window_set_menubox (SMS_MEMBERSHIP_WINDOW(d->mmWin), d->folderlist); 
    277     sms_membership_window_show ( SMS_MEMBERSHIP_WINDOW(d->mmWin) ); 
     303  g_debug ("message membership"); 
     304  d->mmWin = sms_membership_window_new(); 
     305  gtk_window_set_decorated (GTK_WINDOW(d->mmWin), FALSE); 
     306  sms_membership_window_set_messages (SMS_MEMBERSHIP_WINDOW(d->mmWin), d->liststore); 
     307  sms_membership_window_set_menubox (SMS_MEMBERSHIP_WINDOW(d->mmWin), d->folderlist); 
     308  sms_membership_window_show ( SMS_MEMBERSHIP_WINDOW(d->mmWin) ); 
    278309} 
    279310 
    280311void cb_frBtn_clicked (GtkButton* button, MessengerData* d) 
    281312{ 
    282     GSList *c; 
    283     gchar* folder; 
    284      
    285     GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    286     GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    287     gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
    288     gchar* newName = g_strdup (gtk_entry_get_text(GTK_ENTRY(d->frEntry))); 
    289     gtk_label_set_text (GTK_LABEL(menulabel),newName); 
    290     gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
    291                  
    292     c = d->folderlist; 
    293     for (; c; c = g_slist_next(c) ){ 
    294         folder = (gchar*) c->data; 
    295         if (!g_strcasecmp(folder,oldName)){ 
    296             g_debug ("old %s, new %s", oldName, newName); 
    297             c->data = g_strdup(newName);  
    298         } 
    299     } 
    300     d->filtmenu = reload_filter_menu (d,d->folderlist); 
    301     MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
    302     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
    303     moko_menu_box_set_filter_menu(menubox, GTK_MENU(d->filtmenu)); 
    304     gtk_widget_show_all (GTK_WIDGET(menubox)); 
    305     gtk_widget_hide (d->frWin); 
     313  GSList *c; 
     314  gchar* folder; 
     315 
     316  GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     317  GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     318  gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
     319  gchar* newName = g_strdup (gtk_entry_get_text(GTK_ENTRY(d->frEntry))); 
     320  gtk_label_set_text (GTK_LABEL(menulabel),newName); 
     321  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
     322 
     323  c = d->folderlist; 
     324  for (; c; c = g_slist_next(c) ) 
     325    { 
     326      folder = (gchar*) c->data; 
     327      if (!g_strcasecmp(folder,oldName)) 
     328        { 
     329          g_debug ("old %s, new %s", oldName, newName); 
     330          c->data = g_strdup(newName); 
     331        } 
     332    } 
     333  d->filtmenu = reload_filter_menu (d,d->folderlist); 
     334  MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
     335  g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
     336  moko_menu_box_set_filter_menu(menubox, GTK_MENU(d->filtmenu)); 
     337  gtk_widget_show_all (GTK_WIDGET(menubox)); 
     338  gtk_widget_hide (d->frWin); 
    306339} 
    307340 
    308341void cb_frResetBtn_clicked (GtkButton* button, GtkWidget* entry) 
    309342{ 
    310     gtk_entry_set_text(GTK_ENTRY(entry),""); 
     343  gtk_entry_set_text(GTK_ENTRY(entry),""); 
    311344} 
    312345 
    313346void cb_fnitem_activate (GtkMenuItem* item, MessengerData* d) 
    314347{ 
    315     g_debug ("folder rename called"); 
    316     GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    317     GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    318  
    319     gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
    320     if (!g_strcasecmp(oldName,"Inbox") || 
    321         !g_strcasecmp(oldName,"Outbox") || 
    322         !g_strcasecmp(oldName,"Draft") || 
    323         !g_strcasecmp(oldName,"Sent") || 
    324         !g_strcasecmp(oldName,"Sent")){ 
    325         GtkWidget* msgDialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
    326                                                        GTK_DIALOG_DESTROY_WITH_PARENT, 
    327                                                        GTK_MESSAGE_WARNING, 
    328                                                        GTK_BUTTONS_CLOSE, 
    329         g_strdup_printf("Current folder '%s'\nis not a custom folder\nCan't rename",oldName) ); 
    330         gtk_dialog_run (GTK_DIALOG (msgDialog)); 
    331         gtk_widget_destroy (msgDialog); 
    332     }else { 
    333         GtkWidget* hbox; 
    334         GtkWidget* frResetBtn; 
    335         GtkWidget* frConfirmBtn; 
    336  
    337         if ((d->frWin != NULL) && (d->frWin->window != NULL)) 
    338             gtk_entry_set_text (GTK_ENTRY(d->frEntry),""); 
    339         else{ 
    340             d->frWin = moko_dialog_window_new(); 
    341             GtkWidget* frBox = gtk_vbox_new (FALSE,10); 
    342             gtk_widget_set_size_request (frBox, 480, -1); 
    343             GtkWidget* frAlign = gtk_alignment_new (0,0,1,1); 
    344             gtk_alignment_set_padding (GTK_ALIGNMENT(frAlign), 100, 0, 30, 10); 
    345             moko_dialog_window_set_title (MOKO_DIALOG_WINDOW(d->frWin), "Folder Rename"); 
    346  
    347             GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    348             GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    349             GtkWidget* frLabel = gtk_label_new (g_strdup_printf("Please input new folder name for %s:", gtk_label_get_text (GTK_LABEL(menulabel)))); 
    350             gtk_misc_set_alignment (GTK_MISC(frLabel),0,0.5); 
    351             gtk_box_pack_start (GTK_BOX(frBox), frLabel, FALSE, TRUE, 0); 
    352  
    353             d->frEntry = gtk_entry_new (); 
    354             gtk_box_pack_start (GTK_BOX(frBox), d->frEntry, FALSE, TRUE, 0); 
    355  
    356             hbox = gtk_hbox_new (FALSE,20); 
    357             frConfirmBtn = gtk_button_new_with_label ("OK"); 
    358             frResetBtn = gtk_button_new_with_label ("Reset"); 
    359             gtk_box_pack_start (GTK_BOX(hbox), frConfirmBtn, FALSE, TRUE, 0); 
    360             gtk_box_pack_start (GTK_BOX(hbox), frResetBtn, FALSE, TRUE, 0); 
    361             gtk_box_pack_start (GTK_BOX(frBox), hbox, FALSE, TRUE, 0); 
    362             gtk_container_add (GTK_CONTAINER(frAlign),frBox); 
    363              
    364             moko_dialog_window_set_contents (MOKO_DIALOG_WINDOW(d->frWin), frAlign); 
    365             g_signal_connect (G_OBJECT(frConfirmBtn),  
    366                               "clicked", 
    367                               G_CALLBACK(cb_frBtn_clicked), 
    368                               d); 
    369             g_signal_connect (G_OBJECT(frResetBtn), 
    370                               "clicked", 
    371                               G_CALLBACK(cb_frResetBtn_clicked), 
    372                               d->frEntry); 
    373         } 
    374         gtk_widget_show_all ( GTK_WIDGET(d->frWin) ); 
    375    } 
     348  g_debug ("folder rename called"); 
     349  GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     350  GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     351 
     352  gchar* oldName = g_strdup (gtk_label_get_text (GTK_LABEL(menulabel))); 
     353  if (!g_strcasecmp(oldName,"Inbox") || 
     354      !g_strcasecmp(oldName,"Outbox") || 
     355      !g_strcasecmp(oldName,"Draft") || 
     356      !g_strcasecmp(oldName,"Sent") || 
     357      !g_strcasecmp(oldName,"Sent")) 
     358    { 
     359      GtkWidget* msgDialog = gtk_message_dialog_new( GTK_WINDOW(moko_application_get_main_window(d->app)), 
     360                             GTK_DIALOG_DESTROY_WITH_PARENT, 
     361                             GTK_MESSAGE_WARNING, 
     362                             GTK_BUTTONS_CLOSE, 
     363                             g_strdup_printf("Current folder '%s'\nis not a custom folder\nCan't rename",oldName) ); 
     364      gtk_dialog_run (GTK_DIALOG (msgDialog)); 
     365      gtk_widget_destroy (msgDialog); 
     366    } 
     367  else 
     368    { 
     369      GtkWidget* hbox; 
     370      GtkWidget* frResetBtn; 
     371      GtkWidget* frConfirmBtn; 
     372 
     373      if ((d->frWin != NULL) && (d->frWin->window != NULL)) 
     374        gtk_entry_set_text (GTK_ENTRY(d->frEntry),""); 
     375      else 
     376        { 
     377          d->frWin = moko_dialog_window_new(); 
     378          GtkWidget* frBox = gtk_vbox_new (FALSE,10); 
     379          gtk_widget_set_size_request (frBox, 480, -1); 
     380          GtkWidget* frAlign = gtk_alignment_new (0,0,1,1); 
     381          gtk_alignment_set_padding (GTK_ALIGNMENT(frAlign), 100, 0, 30, 10); 
     382          moko_dialog_window_set_title (MOKO_DIALOG_WINDOW(d->frWin), "Folder Rename"); 
     383 
     384          GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     385          GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     386          GtkWidget* frLabel = gtk_label_new (g_strdup_printf("Please input new folder name for %s:",   gtk_label_get_text (GTK_LABEL(menulabel)))); 
     387          gtk_misc_set_alignment (GTK_MISC(frLabel),0,0.5); 
     388          gtk_box_pack_start (GTK_BOX(frBox), frLabel, FALSE, TRUE, 0); 
     389 
     390          d->frEntry = gtk_entry_new (); 
     391          gtk_box_pack_start (GTK_BOX(frBox), d->frEntry, FALSE, TRUE, 0); 
     392 
     393          hbox = gtk_hbox_new (FALSE,20); 
     394          frConfirmBtn = gtk_button_new_with_label ("OK"); 
     395          frResetBtn = gtk_button_new_with_label ("Reset"); 
     396          gtk_box_pack_start (GTK_BOX(hbox), frConfirmBtn, FALSE, TRUE, 0); 
     397          gtk_box_pack_start (GTK_BOX(hbox), frResetBtn, FALSE, TRUE, 0); 
     398          gtk_box_pack_start (GTK_BOX(frBox), hbox, FALSE, TRUE, 0); 
     399          gtk_container_add (GTK_CONTAINER(frAlign),frBox); 
     400 
     401          moko_dialog_window_set_contents (MOKO_DIALOG_WINDOW(d->frWin), frAlign); 
     402          g_signal_connect (G_OBJECT(frConfirmBtn), 
     403                            "clicked", 
     404                            G_CALLBACK(cb_frBtn_clicked), 
     405                            d); 
     406          g_signal_connect (G_OBJECT(frResetBtn), 
     407                            "clicked", 
     408                            G_CALLBACK(cb_frResetBtn_clicked), 
     409                            d->frEntry); 
     410        } 
     411      gtk_widget_show_all ( GTK_WIDGET(d->frWin) ); 
     412    } 
    376413} 
    377414 
    378415void cb_nfBtn_clicked (GtkButton* button, MessengerData* d) 
    379416{ 
    380     gchar* folder = g_strdup(gtk_entry_get_text(GTK_ENTRY(d->nfEntry))); 
    381     g_debug ("new folder %s",folder); 
    382     d->folderlist = g_slist_append (d->folderlist,folder); 
    383     d->filtmenu = reload_filter_menu (d,d->folderlist); 
    384     MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( d->window ); 
    385     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
    386     moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
    387     gtk_widget_show_all (GTK_WIDGET(menubox)); 
    388     foldersdb_update (d->folderlist); 
    389     update_folder_sensitive(d, d->folderlist); 
    390     gtk_widget_hide (d->nfWin); 
     417  gchar* folder = g_strdup(gtk_entry_get_text(GTK_ENTRY(d->nfEntry))); 
     418  g_debug ("new folder %s",folder); 
     419  d->folderlist = g_slist_append (d->folderlist,folder); 
     420  d->filtmenu = reload_filter_menu (d,d->folderlist); 
     421  MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( d->window ); 
     422  g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
     423  moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
     424  gtk_widget_show_all (GTK_WIDGET(menubox)); 
     425  foldersdb_update (d->folderlist); 
     426  update_folder_sensitive(d, d->folderlist); 
     427  gtk_widget_hide (d->nfWin); 
    391428} 
    392429 
    393430void cb_nfResetBtn_clicked (GtkButton* button, MessengerData* d) 
    394431{ 
    395     gtk_entry_set_text(GTK_ENTRY(d->nfEntry),""); 
    396     g_debug ("reset entry"); 
     432  gtk_entry_set_text(GTK_ENTRY(d->nfEntry),""); 
     433  g_debug ("reset entry"); 
    397434} 
    398435 
    399436void cb_dfBtn_clicked (GtkButton* button, MessengerData* d) 
    400437{ 
    401     GSList* c; 
    402  
    403     for( c =d->folderlist; c; c=g_slist_next(c)){ 
    404         if(!g_strcasecmp((gchar*)c->data, d->currentfolder)) { 
    405             d->folderlist = g_slist_remove (d->folderlist, c->data); 
    406             break; 
    407         } 
    408     } 
    409  
    410     d->filtmenu = reload_filter_menu (d,d->folderlist); 
    411     MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
    412     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
    413     moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
    414  
    415     /*set the default filter item to "Inbox" */ 
    416     gchar* str = g_strdup("Inbox"); 
    417     moko_menu_box_set_active_filter (menubox,str); 
    418     gtk_widget_show_all (GTK_WIDGET(menubox)); 
    419     update_folder_sensitive (d, d->folderlist); 
    420      
    421     /*result inform */ 
    422     GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW(gtk_widget_get_parent_window(GTK_WIDGET(button))), 
    423                                                 GTK_DIALOG_DESTROY_WITH_PARENT, 
    424                                                 GTK_MESSAGE_INFO, 
    425                                                 GTK_BUTTONS_CLOSE, 
    426                                                 "Delete successful"); 
    427     gtk_dialog_run (GTK_DIALOG (dialog)); 
    428     gtk_widget_destroy (dialog); 
     438  GSList* c; 
     439 
     440  for( c =d->folderlist; c; c=g_slist_next(c)) 
     441    { 
     442      if(!g_strcasecmp((gchar*)c->data, d->currentfolder)) 
     443        { 
     444          d->folderlist = g_slist_remove (d->folderlist, c->data); 
     445          break; 
     446        } 
     447    } 
     448 
     449  d->filtmenu = reload_filter_menu (d,d->folderlist); 
     450  MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
     451  g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
     452  moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
     453 
     454  /*set the default filter item to "Inbox" */ 
     455  gchar* str = g_strdup("Inbox"); 
     456  moko_menu_box_set_active_filter (menubox,str); 
     457  gtk_widget_show_all (GTK_WIDGET(menubox)); 
     458  update_folder_sensitive (d, d->folderlist); 
     459 
     460  /*result inform */ 
     461  GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW(gtk_widget_get_parent_window(GTK_WIDGET(button))), 
     462                      GTK_DIALOG_DESTROY_WITH_PARENT, 
     463                      GTK_MESSAGE_INFO, 
     464                      GTK_BUTTONS_CLOSE, 
     465                      "Delete successful"); 
     466  gtk_dialog_run (GTK_DIALOG (dialog)); 
     467  gtk_widget_destroy (dialog); 
    429468} 
    430469 
    431470void delete_folder (MessengerData* d, gchar* oldName) 
    432471{ 
    433     GSList* c; 
    434  
    435     for( c =d->folderlist; c; c=g_slist_next(c)) { 
    436         if(!g_strcasecmp((gchar*)c->data, oldName)) { 
    437             d->folderlist = g_slist_remove (d->folderlist, c->data);     
    438             break; 
     472  GSList* c; 
     473 
     474  for( c =d->folderlist; c; c=g_slist_next(c)) 
     475    { 
     476      if(!g_strcasecmp((gchar*)c->data, oldName)) 
     477        { 
     478          d->folderlist = g_slist_remove (d->folderlist, c->data); 
     479          break; 
    439480        } 
    440481    } 
    441482 
    442     d->filtmenu = reload_filter_menu (d,d->folderlist); 
    443     MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
    444     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
    445     moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
    446  
    447     /*set the default filter item to "Inbox" */ 
    448     gchar* str = g_strdup("Inbox"); 
    449     moko_menu_box_set_active_filter (menubox,str); 
    450     gtk_widget_show_all (GTK_WIDGET(menubox)); 
    451     update_folder_sensitive (d, d->folderlist); 
     483  d->filtmenu = reload_filter_menu (d,d->folderlist); 
     484  MokoMenuBox* menubox = (MokoMenuBox*)moko_paned_window_get_menubox( MOKO_PANED_WINDOW(d->window) ); 
     485  g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d ); 
     486  moko_menu_box_set_filter_menu(menubox,GTK_MENU(d->filtmenu)); 
     487 
     488  /*set the default filter item to "Inbox" */ 
     489  gchar* str = g_strdup("Inbox"); 
     490  moko_menu_box_set_active_filter (menubox,str); 
     491  gtk_widget_show_all (GTK_WIDGET(menubox)); 
     492  update_folder_sensitive (d, d->folderlist); 
    452493} 
    453494 
    454495void on_mmode_rdo_btn_clicked (gchar* folder) 
    455496{ 
    456     g_debug ("switch to %s folder", folder); 
     497  g_debug ("switch to %s folder", folder); 
    457498} 
    458499 
    459500void cb_cursor_changed(GtkTreeSelection* selection, MessengerData* d) 
    460501{ 
    461     GtkTreeModel* model; 
    462     GtkTreeIter iter; 
    463     GtkTreeIter childiter; 
    464     GtkTreeView* view; 
    465     message* msg; 
    466     GdkPixbuf* icon; 
    467     GError*   error = NULL; 
    468      
    469     view = gtk_tree_selection_get_tree_view( selection ); 
    470     if ( gtk_tree_selection_get_selected( selection, &model, &iter ) ) { 
    471         msg = g_malloc(sizeof(message)); 
    472         gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
    473         gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
    474         gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
    475         gtk_tree_model_get( model, &iter, COLUMN_STATUS, &msg->status, -1); 
    476          
    477         if (msg->status == UNREAD) { 
    478             icon = gdk_pixbuf_new_from_file (PKGDATADIR "/Mode_Read.png", &error); 
    479             msg->status = READ; 
    480             gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(d->filter),&childiter,&iter); 
    481             gtk_list_store_set (d->liststore, &childiter,  
    482                                 COLUMN_ICON, icon, 
    483                                 COLUMN_STATUS, msg->status,  
    484                                 -1); 
     502  GtkTreeModel* model; 
     503  GtkTreeIter iter; 
     504  GtkTreeIter childiter; 
     505  GtkTreeView* view; 
     506  message* msg; 
     507  GdkPixbuf* icon; 
     508  GError*   error = NULL; 
     509 
     510  view = gtk_tree_selection_get_tree_view( selection ); 
     511  if ( gtk_tree_selection_get_selected( selection, &model, &iter ) ) 
     512    { 
     513      msg = g_malloc(sizeof(message)); 
     514      gtk_tree_model_get( model, &iter, COLUMN_FROM, &msg->name, -1 ); 
     515      gtk_tree_model_get( model, &iter, COLUMN_SUBJECT, &msg->subject, -1 ); 
     516      gtk_tree_model_get( model, &iter, COLUMN_FOLDER, &msg->folder, -1 ); 
     517      gtk_tree_model_get( model, &iter, COLUMN_STATUS, &msg->status, -1); 
     518 
     519      if (msg->status == UNREAD) 
     520        { 
     521          icon = gdk_pixbuf_new_from_file (PKGDATADIR "/Mode_Read.png", &error); 
     522          msg->status = READ; 
     523          gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(d->filter),&childiter,&iter); 
     524          gtk_list_store_set (d->liststore, &childiter, 
     525                              COLUMN_ICON, icon, 
     526                              COLUMN_STATUS, msg->status, 
     527                              -1); 
    485528        } 
    486         detail_read_message (DETAIL_AREA(d->details),msg); 
    487       } 
     529      detail_read_message (DETAIL_AREA(d->details),msg); 
     530    } 
    488531} 
    489532 
     
    492535                                    gpointer         user_data) 
    493536{ 
    494     g_debug("Button send clicked\n"); 
     537  g_debug("Button send clicked\n"); 
    495538} 
    496539 
     
    499542                                        gpointer         user_data) 
    500543{ 
    501     g_debug("Button address clicked\n"); 
     544  g_debug("Button address clicked\n"); 
    502545} 
    503546 
    504547void cb_search_entry_changed (GtkEditable* editable, MessengerData* d) 
    505548{ 
    506     GtkWidget* search_entry = GTK_WIDGET(editable); 
    507     d->s_key = g_strdup (gtk_entry_get_text(GTK_ENTRY(search_entry))); 
    508     gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
    509     g_debug ("search %s, result has %d messages",d->s_key,get_model_number(d)); 
    510     gchar* str = g_strdup_printf("search %s, result has %d messages",d->s_key,get_model_number(d)); 
    511     send_signal_to_footer(d->bus,str); 
     549  GtkWidget* search_entry = GTK_WIDGET(editable); 
     550  d->s_key = g_strdup (gtk_entry_get_text(GTK_ENTRY(search_entry))); 
     551  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
     552  g_debug ("search %s, result has %d messages",d->s_key,get_model_number(d)); 
     553  gchar* str = g_strdup_printf("search %s, result has %d messages",d->s_key,get_model_number(d)); 
     554  send_signal_to_footer(d->bus,str); 
    512555} 
    513556 
    514557void cb_search_on (MessengerData* d) 
    515558{ 
    516     g_debug ("search on"); 
    517     GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    518     GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    519     gtk_label_set_text (GTK_LABEL(menulabel),"Search Result"); 
    520     d->searchOn = TRUE; 
     559  g_debug ("search on"); 
     560  GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     561  GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     562  gtk_label_set_text (GTK_LABEL(menulabel),"Search Result"); 
     563  d->searchOn = TRUE; 
    521564} 
    522565 
    523566void cb_search_off (MessengerData* d) 
    524567{ 
    525     g_debug ("search off "); 
    526     GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
    527     GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
    528     gtk_label_set_text (GTK_LABEL(menulabel),"Inbox"); 
    529     d->searchOn = FALSE;  
    530     GtkWidget* search_entry = GTK_WIDGET(moko_tool_box_get_entry (MOKO_TOOL_BOX(d->toolbox))); 
    531     gtk_entry_set_text (GTK_ENTRY(search_entry), ""); 
    532     d->s_key = ""; 
    533     gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
    534 } 
    535  
    536  
     568  g_debug ("search off "); 
     569  GtkWidget* menuitem = gtk_menu_get_attach_widget (GTK_MENU(d->filtmenu)); 
     570  GtkWidget* menulabel = GTK_BIN(menuitem)->child; 
     571  gtk_label_set_text (GTK_LABEL(menulabel),"Inbox"); 
     572  d->searchOn = FALSE; 
     573  GtkWidget* search_entry = GTK_WIDGET(moko_tool_box_get_entry (MOKO_TOOL_BOX(d->toolbox))); 
     574  gtk_entry_set_text (GTK_ENTRY(search_entry), ""); 
     575  d->s_key = ""; 
     576  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(d->filter)); 
     577} 
     578 
     579void cb_addressBtn_clicked (GtkButton* button, gpointer* data) 
     580{ 
     581  GtkWidget* contactWin = sms_contact_new(); 
     582  gtk_window_set_decorated (GTK_WINDOW(contactWin),FALSE); 
     583  GtkWidget* toEntry = (GtkWidget*)data; 
     584  g_signal_connect (G_OBJECT(contactWin),"contact_select_done", 
     585                    G_CALLBACK(sms_contact_select_done), toEntry); 
     586  gtk_widget_show(contactWin); 
     587} 
     588 
     589void sms_contact_select_done (GtkWidget* widget, gpointer data) 
     590{ 
     591  g_debug("sms select contact done"); 
     592  GtkWidget* toEntry = (GtkWidget*)data; 
     593  gtk_entry_set_text (GTK_ENTRY(toEntry),SMS_CONTACT_WINDOW(widget)->nameList); 
     594} 
     595 
Note: See TracChangeset for help on using the changeset viewer.