static void update_window_title (ModestMsgViewWindow *window);
+static gchar *
+translate_func (const gchar *msgid,
+ const gchar *domain_name);
+
/* list my signals */
enum {
/* MY_SIGNAL_1, */
static const GtkToggleActionEntry msg_view_toggle_action_entries [] = {
{ "FindInMessage", GTK_STOCK_FIND, N_("qgn_toolb_gene_find"), NULL, NULL, G_CALLBACK (modest_msg_view_window_toggle_find_toolbar), FALSE },
+ { "ToolsFindInMessage", NULL, N_("mcen_me_viewer_find"), NULL, NULL, G_CALLBACK (modest_msg_view_window_toggle_find_toolbar), FALSE },
};
static const GtkRadioActionEntry msg_view_zoom_action_entries [] = {
modest_msg_view_window_update_priority (window);
+ /* Check toolbar dimming rules */
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+
return MODEST_WINDOW(window);
}
action_group = gtk_action_group_new ("ModestMsgViewWindowActions");
gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
+ gtk_action_group_set_translate_func (action_group, (GtkTranslateFunc) translate_func, GETTEXT_PACKAGE, g_free);
menu_rules_group = modest_dimming_rules_group_new ("ModestMenuDimmingRules");
toolbar_rules_group = modest_dimming_rules_group_new ("ModestToolbarDimmingRules");
return (const gchar*) priv->msg_uid;
}
+static void
+toggle_action_set_active_block_notify (GtkToggleAction *action,
+ gboolean value)
+{
+ GSList *proxies = NULL;
+
+ for (proxies = gtk_action_get_proxies (GTK_ACTION (action));
+ proxies != NULL; proxies = g_slist_next (proxies)) {
+ GtkWidget *widget = (GtkWidget *) proxies->data;
+ gtk_action_block_activate_from (GTK_ACTION (action), widget);
+ }
+
+ gtk_toggle_action_set_active (action, value);
+
+ for (proxies = gtk_action_get_proxies (GTK_ACTION (action));
+ proxies != NULL; proxies = g_slist_next (proxies)) {
+ GtkWidget *widget = (GtkWidget *) proxies->data;
+ gtk_action_unblock_activate_from (GTK_ACTION (action), widget);
+ }
+}
+
+
static void
modest_msg_view_window_toggle_find_toolbar (GtkToggleAction *toggle,
gpointer data)
{
ModestMsgViewWindow *window = MODEST_MSG_VIEW_WINDOW (data);
ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
+ ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
+ gboolean is_active;
+ GtkAction *action;
+
+ is_active = gtk_toggle_action_get_active (toggle);
- if (gtk_toggle_action_get_active (toggle)) {
+ if (is_active) {
gtk_widget_show (priv->find_toolbar);
hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
} else {
gtk_widget_hide (priv->find_toolbar);
}
+ /* update the toggle buttons status */
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/FindInMessage");
+ toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), is_active);
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ToolsMenu/ToolsFindInMessageMenu");
+ toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), is_active);
}
modest_mail_operation_get_msg (mail_op, header, view_msg_cb, NULL);
g_object_unref (mail_op);
+ /* Update toolbar dimming rules */
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+
return TRUE;
}
}
g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
- path = gtk_tree_path_new_from_string ("0");
+ /* Check that the model is not empty */
+ if (!gtk_tree_model_get_iter_first (priv->header_model, &iter))
+ return FALSE;
- /* Update the row reference */
- /* Get first message */
- gtk_tree_model_get_iter (priv->header_model, &iter, path);
- gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
+ /* Get the header */
+ gtk_tree_model_get (priv->header_model,
+ &iter,
+ TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
&header, -1);
g_return_val_if_fail (TNY_IS_HEADER (header), FALSE);
- if (tny_header_get_flags (header) & TNY_HEADER_FLAG_DELETED)
+ if (tny_header_get_flags (header) & TNY_HEADER_FLAG_DELETED) {
+ g_object_unref (header);
return modest_msg_view_window_select_next_message (self);
+ }
/* Update the row reference */
gtk_tree_row_reference_free (priv->row_reference);
+ path = gtk_tree_path_new_first ();
priv->row_reference = gtk_tree_row_reference_new (priv->header_model, path);
gtk_tree_path_free (path);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
modest_mail_operation_get_msg (mail_op, header, view_msg_cb, NULL);
g_object_unref (mail_op);
+
+ /* Update toolbar dimming rules */
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (self));
/* Free */
-/* g_object_unref (header); */
+ g_object_unref (header);
return TRUE;
}
{
TnyHeaderFlags flags;
ModestMsgViewWindowPrivate *priv = NULL;
+ GtkTreePath *path;
ModestMailOperation *mail_op = NULL;
g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
- if (priv->header_model) {
- GtkTreePath *path;
+ /* Return inmediatly if there is no header model */
+ if (!priv->header_model)
+ return FALSE;
- path = gtk_tree_row_reference_get_path (priv->row_reference);
- while (gtk_tree_path_prev (path)) {
- TnyHeader *header;
- GtkTreeIter iter;
+ path = gtk_tree_row_reference_get_path (priv->row_reference);
+ while (gtk_tree_path_prev (path)) {
+ TnyHeader *header;
+ GtkTreeIter iter;
- gtk_tree_model_get_iter (priv->header_model, &iter, path);
- gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
- &header, -1);
- if (!header)
- break;
- if (tny_header_get_flags (header) & TNY_HEADER_FLAG_DELETED)
- continue;
+ gtk_tree_model_get_iter (priv->header_model, &iter, path);
+ gtk_tree_model_get (priv->header_model, &iter,
+ TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
+ &header, -1);
+ if (!header)
+ break;
+ if (tny_header_get_flags (header) & TNY_HEADER_FLAG_DELETED) {
+ g_object_unref (header);
+ continue;
+ }
- /* Update the row reference */
- gtk_tree_row_reference_free (priv->row_reference);
- priv->row_reference = gtk_tree_row_reference_new (priv->header_model, path);
+ /* Update the row reference */
+ gtk_tree_row_reference_free (priv->row_reference);
+ priv->row_reference = gtk_tree_row_reference_new (priv->header_model, path);
- /* Mark as read */
- flags = tny_header_get_flags (header);
- if (!(flags & TNY_HEADER_FLAG_SEEN))
- tny_header_set_flags (header, flags | TNY_HEADER_FLAG_SEEN);
+ /* Mark as read */
+ flags = tny_header_get_flags (header);
+ if (!(flags & TNY_HEADER_FLAG_SEEN))
+ tny_header_set_flags (header, flags | TNY_HEADER_FLAG_SEEN);
- /* New mail operation */
- mail_op = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_RECEIVE, G_OBJECT(window));
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
- modest_mail_operation_get_msg (mail_op, header, view_msg_cb, NULL);
+ /* New mail operation */
+ mail_op = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_RECEIVE, G_OBJECT(window));
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
+ modest_mail_operation_get_msg (mail_op, header, view_msg_cb, NULL);
- return TRUE;
- }
+ /* Update toolbar dimming rules */
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+
+ g_object_unref (header);
+
+ return TRUE;
}
return FALSE;
} else {
GtkWidget *save_dialog = NULL;
gchar *folder;
- save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gchar *save_multiple_str = g_strdup_printf (_("FIXME: %d attachments"),
+ g_list_length (mime_parts));
+ save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE);
+ g_object_set (G_OBJECT (save_dialog), "save-multiple", save_multiple_str, NULL);
+
folder = g_build_filename (g_get_home_dir (), DEFAULT_FOLDER, NULL);
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (save_dialog), folder);
g_free (folder);
gtk_window_set_title (GTK_WINDOW (window), subject);
}
+
+static gchar *
+translate_func (const gchar *msgid,
+ const gchar *domain_name)
+{
+ return _(msgid);
+}