Changeset 41

Show
Ignore:
Timestamp:
11/05/07 12:00:01
Author:
pvanhoof
Message:
        • Copy, Move and Rename folder implementations
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r40 r41  
    55        tmut_msg_creator_set_forward_msg 
    66        * Implemented From-combobox in TMutMsgCreator 
     7        * Copy, Move and Rename folder implementations 
    78 
    892007-11-02  Philip Van Hoof  <pvanhoof@gnome.org> 
  • trunk/src/tmut-menu-view.c

    r40 r41  
    8989        return; 
    9090} 
     91typedef enum { 
     92        DO_COPY, 
     93        DO_MOVE 
     94} MoveCopyOption; 
    9195 
    9296typedef struct { 
     
    132136} 
    133137 
     138 
    134139void 
    135 tmut_menu_view_on_folder_move_activated (GObject *sender, TMutMenuView *self
     140folder_mover_helper (GObject *sender, TMutMenuView *self, MoveCopyOption option
    136141{ 
    137142        TMutMenuViewPriv *priv = TMUT_MENU_VIEW_GET_PRIVATE (self); 
     
    163168                                info->from = TNY_FOLDER (g_object_ref (folder)); 
    164169 
    165                                 /* TODO: make this choosable */ 
    166                                 info->del_originals = TRUE; 
     170                                if (option == DO_MOVE) 
     171                                       info->del_originals = TRUE; 
    167172 
    168173                                view = tmut_folder_selector_new (); 
    169174                                tny_account_store_view_set_account_store (TNY_ACCOUNT_STORE_VIEW (view), priv->account_store); 
    170  
    171175                                g_signal_connect (G_OBJECT (view), "folder-selected", 
    172176                                        G_CALLBACK (on_folder_selected_for_move), info); 
     
    174178                                        G_CALLBACK (on_folder_selected_for_move_destroy), info); 
    175179                                gtk_widget_show (GTK_WIDGET (view)); 
    176  
    177180                                tmut_shell_window_set_child ( 
    178181                                        tmut_shell_child_get_window (TMUT_SHELL_CHILD (self)),  
     
    186189        return; 
    187190} 
     191 
     192 
     193void  
     194tmut_menu_view_on_folder_copy_activated (GObject *sender, TMutMenuView *self) 
     195{ 
     196        folder_mover_helper (sender, self, DO_COPY); 
     197        return; 
     198} 
     199 
     200void 
     201tmut_menu_view_on_folder_move_activated (GObject *sender, TMutMenuView *self) 
     202{ 
     203        folder_mover_helper (sender, self, DO_MOVE); 
     204        return; 
     205} 
     206 
     207 
     208void  
     209tmut_menu_view_on_folder_rename_activated (GObject *sender, TMutMenuView *self) 
     210{ 
     211        TMutMenuViewPriv *priv = TMUT_MENU_VIEW_GET_PRIVATE (self); 
     212        GtkTreeSelection *selection = gtk_tree_view_get_selection (priv->folders_treeview); 
     213        GtkTreeModel *model; 
     214        GtkTreeIter iter; 
     215 
     216        if (gtk_tree_selection_get_selected (selection, &model, &iter))  
     217        { 
     218                gint type; 
     219                gtk_tree_model_get (model, &iter,  
     220                        TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN,  
     221                        &type, -1); 
     222 
     223                if (type != TNY_FOLDER_TYPE_ROOT)  
     224                { 
     225                        TnyFolder *folder; 
     226 
     227                        gtk_tree_model_get (model, &iter,  
     228                                TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN,  
     229                                &folder, -1); 
     230 
     231                        if (folder)  
     232                        { 
     233                                GtkWidget *dialog, *entry; 
     234                                gint result; 
     235 
     236                                dialog = gtk_dialog_new_with_buttons (_("Rename folder"), 
     237                                                GTK_WINDOW (priv->shell), 
     238                                                GTK_DIALOG_MODAL, 
     239                                                GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 
     240                                                GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT, 
     241                                                NULL); 
     242 
     243                                entry = gtk_entry_new (); 
     244                                gtk_entry_set_text (GTK_ENTRY (entry), tny_folder_get_name (folder)); 
     245                                gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), entry); 
     246                                gtk_widget_show (entry); 
     247 
     248                                if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)  
     249                                { 
     250                                        const gchar *newname = gtk_entry_get_text (GTK_ENTRY (entry)); 
     251 
     252                                        tny_folder_copy_async (folder, tny_folder_get_folder_store (folder),  
     253                                                newname, TRUE, on_copy_done,  
     254                                                status_update, g_object_ref (self)); 
     255                                } 
     256 
     257                                if (dialog) 
     258                                        gtk_widget_destroy (dialog); 
     259 
     260                                g_object_unref (folder); 
     261                        } 
     262                } 
     263        } 
     264 
     265        return;} 
    188266 
    189267void 
     
    348426        GtkMenu *menu; 
    349427        GtkWidget *fcreate_menuitem, *fmove_menuitem, *fdel_menuitem,  
    350                   *nmsg_menuitem
     428                  *nmsg_menuitem, *fcopy_menuitem, *frename_menuitem
    351429        GtkButton *menu_button; 
    352430 
     
    354432        menu = GTK_MENU (gtk_menu_new ()); 
    355433        fcreate_menuitem = gtk_menu_item_new_with_label (_("Create new folder")); 
    356         fmove_menuitem = gtk_menu_item_new_with_label (_("Copy or move a folder")); 
     434        fmove_menuitem = gtk_menu_item_new_with_label (_("Move a folder")); 
     435        fcopy_menuitem = gtk_menu_item_new_with_label (_("Copy a folder")); 
     436        frename_menuitem = gtk_menu_item_new_with_label (_("Rename a folder")); 
    357437        fdel_menuitem = gtk_menu_item_new_with_label (_("Delete a folder")); 
    358438        nmsg_menuitem = gtk_menu_item_new_with_label (_("New message")); 
     
    360440        gtk_widget_show (fcreate_menuitem); 
    361441        gtk_widget_show (fmove_menuitem); 
     442        gtk_widget_show (fcopy_menuitem); 
     443        gtk_widget_show (frename_menuitem); 
    362444        gtk_widget_show (fdel_menuitem); 
    363445        gtk_widget_show (GTK_WIDGET (menu)); 
     
    365447        gtk_menu_prepend (menu, nmsg_menuitem); 
    366448        gtk_menu_prepend (menu, fcreate_menuitem); 
     449        gtk_menu_prepend (menu, fcopy_menuitem); 
    367450        gtk_menu_prepend (menu, fmove_menuitem); 
     451        gtk_menu_prepend (menu, frename_menuitem); 
    368452        gtk_menu_prepend (menu, fdel_menuitem); 
    369453        gtk_menu_attach_to_widget (menu, GTK_WIDGET (menu_button), NULL); 
     
    378462        g_signal_connect (G_OBJECT (fmove_menuitem), "activate", 
    379463                G_CALLBACK (tmut_menu_view_on_folder_move_activated), self); 
     464        g_signal_connect (G_OBJECT (fcopy_menuitem), "activate", 
     465                G_CALLBACK (tmut_menu_view_on_folder_copy_activated), self); 
     466        g_signal_connect (G_OBJECT (frename_menuitem), "activate", 
     467                G_CALLBACK (tmut_menu_view_on_folder_rename_activated), self); 
    380468        g_signal_connect (G_OBJECT (fdel_menuitem), "activate", 
    381469                G_CALLBACK (tmut_menu_view_on_folder_delete_activated), self); 
  • trunk/src/tmut-menu-view.h

    r21 r41  
    6666 
    6767/* Preimplemented handlers for your action performers */ 
     68void tmut_menu_view_on_folder_rename_activated (GObject *sender, TMutMenuView *self); 
    6869void tmut_menu_view_on_folder_move_activated (GObject *sender, TMutMenuView *self); 
     70void tmut_menu_view_on_folder_copy_activated (GObject *sender, TMutMenuView *self); 
    6971void tmut_menu_view_on_folder_create_activated (GObject *sender, TMutMenuView *self); 
    7072void tmut_menu_view_on_folder_delete_activated (GObject *sender, TMutMenuView *self);