ModestWindowPrivate *parent_priv;
parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
- menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/HeaderViewContextMenu");
+ menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/HeaderViewCSM");
return show_context_popup_menu (self,
GTK_TREE_VIEW (header_view),
ModestWindowPrivate *parent_priv;
parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
- menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewContextMenu");
+ menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewCSM");
return show_context_popup_menu (self,
GTK_TREE_VIEW (folder_view),
{ "EmailForward", NULL, N_("mcen_me_inbox_forward"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_forward) },
{ "EmailDelete", NULL, N_("mcen_me_inbox_delete"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_delete) },
{ "EmailContents", NULL, N_("mcen_me_inbox_retrieve_contents"), NULL, NULL, NULL },
- { "EmailDetails", NULL, N_("mcen_me_inbox_messagedetails"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_message_details) },
+ { "EmailDetails", NULL, N_("mcen_me_inbox_messagedetails"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_details) },
{ "EmailPurgeAttachments", NULL, N_("mcen_me_inbox_remove_attachments"), NULL, NULL, NULL },
/* globals */
static GtkWindowClass *parent_class = NULL;
-/* uncomment the following if you have defined any signals */
-/* static guint signals[LAST_SIGNAL] = {0}; */
+
+/* Private actions */
+static const GtkActionEntry modest_folder_view_action_entries [] = {
+
+ /* Folder View CSM actions */
+ { "FolderViewCSMNewFolder", NULL, N_("FIXME: New Folder"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_new_folder) },
+ { "FolderViewCSMRenameFolder", NULL, N_("mcen_me_user_renamefolder"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_rename_folder) },
+ { "FolderViewCSMPasteMsgs", NULL, N_("FIXME: Paste"), NULL, NULL, NULL },
+ { "FolderViewCSMDeleteFolder", NULL, N_("FIXME: Delete"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_delete_folder) },
+ { "FolderViewCSMSearchMessages", NULL, N_("mcen_me_inbox_search"), NULL, NULL, NULL },
+ { "FolderViewCSMHelp", NULL, N_("mcen_me_inbox_help"), NULL, NULL, NULL },
+};
+
+/************************************************************************/
GType
modest_main_window_get_type (void)
g_signal_connect (G_OBJECT(priv->folder_view), "folder-display-name-changed",
G_CALLBACK(modest_ui_actions_on_folder_display_name_changed), self);
- menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewContextMenu");
+ menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewCSM");
gtk_widget_tap_and_hold_setup (GTK_WIDGET (priv->folder_view), menu, NULL, 0);
/* header view */
G_N_ELEMENTS (modest_action_entries),
self);
+ gtk_action_group_add_actions (action_group,
+ modest_folder_view_action_entries,
+ G_N_ELEMENTS (modest_folder_view_action_entries),
+ self);
+
gtk_action_group_add_toggle_actions (action_group,
modest_toggle_action_entries,
G_N_ELEMENTS (modest_toggle_action_entries),
reply_button = gtk_ui_manager_get_widget (parent_priv->ui_manager,
"/ToolBar/ToolbarMessageReply");
menu = gtk_ui_manager_get_widget (parent_priv->ui_manager,
- "/ToolbarReplyContextMenu");
+ "/ToolbarReplyCSM");
gtk_widget_tap_and_hold_setup (GTK_WIDGET (reply_button), menu, NULL, 0);
/* Set send & receive button tap and hold menu */
if (priv->contents_style != MODEST_MAIN_WINDOW_CONTENTS_STYLE_DETAILS)
return;
- account = TNY_ACCOUNT (modest_folder_view_get_selected (priv->folder_view));
- if (account)
- if (account &&
- strcmp (tny_account_get_id (account), MODEST_LOCAL_FOLDERS_ACCOUNT_ID) == 0) {
- /* TODO: change device name */
- }
-
+ account = (TnyAccount *) modest_folder_view_get_selected (priv->folder_view);
+ if (TNY_IS_ACCOUNT (account) &&
+ !strcmp (tny_account_get_id (account), MODEST_LOCAL_FOLDERS_ACCOUNT_ID)) {
+ GList *children;
+ GtkLabel *label;
+ const gchar *device_name;
+ gchar *new_text;
+
+ /* Get label */
+ children = gtk_container_get_children (GTK_CONTAINER (priv->details_widget));
+ label = GTK_LABEL (children->data);
+
+ device_name = modest_conf_get_string (modest_runtime_get_conf(),
+ MODEST_CONF_DEVICE_NAME, NULL);
+
+ new_text = g_strdup_printf ("%s: %s",
+ _("mcen_fi_localroot_description"),
+ device_name);
+
+ gtk_label_set_text (label, new_text);
+ gtk_widget_show (GTK_WIDGET (label));
+
+ g_free (new_text);
+ g_list_free (children);
+ }
}
<toolitem action="ToolbarSendReceive"/>
</toolbar>
- <popup name="HeaderViewContextMenu">
+ <popup name="HeaderViewCSM">
<menuitem action="EmailReply"/>
<menuitem action="EmailForward"/>
</popup>
- <popup name="FolderViewContextMenu">
- <menuitem action="EmailNewFolder"/>
- <menuitem action="FoldersDelete"/>
- <menuitem action="FoldersRename"/>
- <menuitem action="FoldersMoveToTrash"/>
+ <popup name="FolderViewCSM">
+ <menuitem action="FolderViewCSMNewFolder"/>
+ <menuitem action="FolderViewCSMRenameFolder"/>
+ <separator/>
+ <menuitem action="FolderViewCSMPasteMsgs"/>
+ <separator/>
+ <menuitem action="FolderViewCSMDeleteFolder"/>
+ <separator/>
+ <menuitem action="FolderViewCSMSearchMessages"/>
+ <menuitem action="FolderViewCSMHelp"/>
</popup>
- <popup name="ToolbarReplyContextMenu">
+ <popup name="ToolbarReplyCSM">
<menuitem action="ToolbarMessageForward"/>
<menuitem action="ToolbarMessageReplyAll"/>
<menuitem action="ToolbarMessageReply"/>
typedef struct _RecurseFoldersHelper {
TnyStatsFunc function;
guint sum;
+ guint folders;
} RecurseFoldersHelper;
static void
tny_folder_store_get_folders (store, folders, query, NULL);
iter = tny_list_create_iterator (folders);
+ helper->folders += tny_list_get_length (folders);
+
while (!tny_iterator_is_done (iter))
{
TnyFolderStats *stats;
folder = TNY_FOLDER (tny_iterator_get_current (iter));
stats = tny_folder_get_stats (folder);
- helper->sum += helper->function (stats);
+ if (helper->function)
+ helper->sum += helper->function (stats);
recurse_folders (TNY_FOLDER_STORE (folder), query, helper);
gint
modest_tny_account_get_folder_count (TnyAccount *self)
{
+ RecurseFoldersHelper *helper;
+ gint retval;
+
g_return_val_if_fail (TNY_IS_ACCOUNT (self), -1);
- return 8;
+ /* Create helper */
+ helper = g_malloc0 (sizeof (RecurseFoldersHelper));
+ helper->function = NULL;
+ helper->sum = 0;
+ helper->folders = 0;
+
+ recurse_folders (TNY_FOLDER_STORE (self), NULL, helper);
+
+ retval = helper->folders;
+
+ g_free (helper);
+
+ return retval;
}
gint
static void get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err,
gpointer user_data);
static void reply_forward (ReplyForwardAction action, ModestWindow *win);
-static void modest_ui_actions_message_details_cb (gpointer msg_data,
- gpointer helper_data);
+
static gchar* ask_for_folder_name (GtkWindow *parent_window, const gchar *title);
} else if (TNY_IS_ACCOUNT (folder_store)) {
modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_DETAILS);
-
-/* if (selected) { */
-
-/* } else { */
-/* /\* TODO *\/ */
-/* } */
}
}
}
static void
-modest_ui_actions_message_details_cb (gpointer msg_data,
- gpointer helper_data)
+show_header_details (TnyHeader *header,
+ GtkWindow *window)
{
GtkWidget *dialog;
- TnyMsg *msg = (TnyMsg *) msg_data;
- TnyHeader *header;
- GetMsgAsyncHelper *helper = (GetMsgAsyncHelper *) helper_data;
-
- header = tny_msg_get_header (msg);
- dialog = modest_msg_view_details_dialog_new (GTK_WINDOW (helper->window), header);
+ dialog = modest_msg_view_details_dialog_new (window, header);
g_object_unref (header);
gtk_widget_show_all (dialog);
}
void
-modest_ui_actions_on_message_details (GtkAction *action,
- ModestWindow *win)
+modest_ui_actions_on_details (GtkAction *action,
+ ModestWindow *win)
{
TnyList * headers_list;
- GetMsgAsyncHelper *helper;
-
- headers_list = get_selected_headers (win);
- if (!headers_list)
- return;
-
- helper = g_slice_new0 (GetMsgAsyncHelper);
- helper->window = win;
- helper->func = modest_ui_actions_message_details_cb;
- helper->iter = tny_list_create_iterator (headers_list);
- helper->user_data = NULL;
+ TnyIterator *iter;
+ TnyHeader *header;
if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
TnyMsg *msg;
msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
- if (!msg)
+ if (!msg) {
return;
- else {
- modest_ui_actions_message_details_cb (msg, helper);
+ } else {
+ headers_list = get_selected_headers (win);
+ if (!headers_list)
+ return;
+
+ iter = tny_list_create_iterator (headers_list);
+
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ show_header_details (header, GTK_WINDOW (win));
+ g_object_unref (header);
+
+ g_object_unref (iter);
+ }
+ } else if (MODEST_IS_MAIN_WINDOW (win)) {
+ GtkWidget *folder_view, *header_view;
+
+ /* Check which widget has the focus */
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (gtk_widget_is_focus (folder_view)) {
+ TnyFolder *folder;
+
+ folder = modest_folder_view_get_selected (folder_view);
+
+ /* Show only when it's a folder */
+ if (!folder || !TNY_IS_FOLDER (folder))
+ return;
+
+ /* TODO */
+ } else {
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!gtk_widget_is_focus (header_view))
+ return;
+
+ headers_list = get_selected_headers (win);
+ if (!headers_list)
+ return;
+
+ iter = tny_list_create_iterator (headers_list);
+ while (!tny_iterator_is_done (iter)) {
+
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ show_header_details (header, GTK_WINDOW (win));
+ g_object_unref (header);
+
+ tny_iterator_next (iter);
+ }
+ g_object_unref (iter);
}
- } else {
- /* here we should add an implementation to run the message details dialog
- from the main window */
- g_return_if_reached ();
}
}
the focus. This callback could be called even if the folder
view has not the focus, because the handled signal could be
emitted when the folder view is redrawn */
- if (GTK_WIDGET_HAS_FOCUS (folder_view)) {
+ if (gtk_widget_is_focus (GTK_WIDGET (folder_view))) {
if (display_name)
gtk_window_set_title (window, display_name);
else
void modest_ui_actions_on_prev (GtkAction *action, ModestWindow *main_window);
-void modest_ui_actions_on_message_details (GtkAction *action, ModestWindow *win);
+void modest_ui_actions_on_details (GtkAction *action, ModestWindow *win);
/**
-/* connection-specific-smtp-window.c */
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
#include "modest-msg-view-details-dialog.h"