Changeset 61

Show
Ignore:
Timestamp:
12/01/07 09:58:50
Author:
pvanhoof
Message:

Debugging aid

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/tmut-menu-view.c

    r59 r61  
    416416} 
    417417 
    418 void tmut_menu_view_on_new_msg_activated (GObject *sender, TMutMenuView *self) 
     418static void  
     419tmut_menu_view_on_onli_activated (GtkMenuItem *menuitem, TMutMenuView *self) 
     420
     421        TMutMenuViewPriv *priv = TMUT_MENU_VIEW_GET_PRIVATE (self); 
     422        TnyDevice *device = tny_account_store_get_device (priv->account_store); 
     423 
     424        if (!tny_device_is_online (device)) { 
     425                GtkWidget *label = gtk_bin_get_child (GTK_BIN (menuitem)); 
     426                tny_device_force_online (device); 
     427                gtk_label_set (GTK_LABEL (label), _("Force offline")); 
     428        } else { 
     429                GtkWidget *label = gtk_bin_get_child (GTK_BIN (menuitem)); 
     430                tny_device_force_offline (device); 
     431                gtk_label_set (GTK_LABEL (label), _("Force online")); 
     432        } 
     433 
     434        g_object_unref (device); 
     435        return; 
     436
     437 
     438void  
     439tmut_menu_view_on_new_msg_activated (GObject *sender, TMutMenuView *self) 
    419440{ 
    420441        TMutMsgCreator *view = tmut_msg_creator_new (); 
     
    443464} 
    444465 
     466typedef struct { 
     467        TnyDevice *device; 
     468        GtkMenuItem *menuitem; 
     469} CheckOnlineStateInfo; 
     470 
     471static gboolean  
     472check_online_state_idle (gpointer user_data) 
     473{ 
     474        CheckOnlineStateInfo *info = (CheckOnlineStateInfo *) user_data; 
     475 
     476        if (!tny_device_is_online (info->device)) { 
     477                GtkWidget *label = gtk_bin_get_child (GTK_BIN (info->menuitem)); 
     478                gtk_label_set (GTK_LABEL (label), _("Force online")); 
     479        } else { 
     480                GtkWidget *label = gtk_bin_get_child (GTK_BIN (info->menuitem)); 
     481                gtk_label_set (GTK_LABEL (label), _("Force offline")); 
     482        } 
     483 
     484        return FALSE; 
     485} 
     486 
     487static void  
     488check_online_state_destroy (gpointer user_data) 
     489{ 
     490        CheckOnlineStateInfo *info = (CheckOnlineStateInfo *) user_data; 
     491        g_object_unref (info->device); 
     492        g_object_unref (info->menuitem); 
     493        g_slice_free (CheckOnlineStateInfo, info); 
     494        return; 
     495} 
     496 
    445497static void 
    446498tmut_menu_view_create_menu_default (TMutMenuView *self) 
    447499{ 
     500        TMutMenuViewPriv *priv = TMUT_MENU_VIEW_GET_PRIVATE (self); 
     501        CheckOnlineStateInfo *info = g_slice_new0 (CheckOnlineStateInfo); 
    448502        GtkMenu *menu; 
    449503        GtkWidget *fcreate_menuitem, *fmove_menuitem, *fdel_menuitem,  
    450                   *nmsg_menuitem, *fcopy_menuitem, *frename_menuitem; 
     504                  *nmsg_menuitem, *fcopy_menuitem, *frename_menuitem, 
     505                  *onli_menuitem; 
    451506        GtkButton *menu_button; 
    452507 
     508        info->device = tny_account_store_get_device (priv->account_store); 
    453509        menu_button = GTK_BUTTON (gtk_button_new_with_label (_("Actions"))); 
    454510        menu = GTK_MENU (gtk_menu_new ()); 
     
    459515        fdel_menuitem = gtk_menu_item_new_with_label (_("Delete a folder")); 
    460516        nmsg_menuitem = gtk_menu_item_new_with_label (_("New message")); 
     517 
     518        if (!tny_device_is_online (info->device)) 
     519                onli_menuitem = gtk_menu_item_new_with_label (_("Force offline")); 
     520        else 
     521                onli_menuitem = gtk_menu_item_new_with_label (_("Force online")); 
     522 
     523        info->menuitem = g_object_ref (onli_menuitem); 
     524 
     525        g_idle_add_full (5000, check_online_state_idle,  
     526                info, check_online_state_destroy); 
     527 
     528        gtk_widget_show (onli_menuitem); 
    461529        gtk_widget_show (nmsg_menuitem); 
    462530        gtk_widget_show (fcreate_menuitem); 
     
    467535        gtk_widget_show (GTK_WIDGET (menu)); 
    468536        gtk_widget_show (GTK_WIDGET (menu_button)); 
     537 
     538        gtk_menu_prepend (menu, onli_menuitem); 
    469539        gtk_menu_prepend (menu, nmsg_menuitem); 
    470540        gtk_menu_prepend (menu, fcreate_menuitem); 
     
    478548        g_signal_connect (G_OBJECT (menu_button), "clicked", 
    479549                G_CALLBACK (popup_the_actions_menu), menu); 
     550        g_signal_connect (G_OBJECT (onli_menuitem), "activate", 
     551                G_CALLBACK (tmut_menu_view_on_onli_activated), self); 
    480552        g_signal_connect (G_OBJECT (nmsg_menuitem), "activate", 
    481553                G_CALLBACK (tmut_menu_view_on_new_msg_activated), self); 
     
    555627                g_object_unref (priv->account_store); 
    556628        priv->account_store = TNY_ACCOUNT_STORE (g_object_ref (account_store)); 
     629 
     630        TMUT_MENU_VIEW_GET_CLASS (self)->create_menu_func (TMUT_MENU_VIEW (self)); 
    557631 
    558632        return; 
     
    649723                G_CALLBACK (on_folder_changed), self); 
    650724 
    651         TMUT_MENU_VIEW_GET_CLASS (self)->create_menu_func (self); 
    652  
    653725        return; 
    654726}