GtkWidget *toolbar;
GtkWidget *menubar;
GtkWidget *msg_view;
+
+ gchar *msg_uid;
};
#define MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
{ "Edit", NULL, N_("_Edit") },
{ "Actions", NULL, N_("_Actions") },
{ "Help", NULL, N_("_Help") },
+ { "Email", NULL, N_("E_mail") },
/* EDIT */
{ "EditUndo", GTK_STOCK_UNDO, N_("_Undo"), "<CTRL>Z", N_("Undo last action"), NULL },
{ "EditRedo", GTK_STOCK_REDO, N_("_Redo"), "<shift><CTRL>Z", N_("Redo previous action"), NULL },
- { "EditCut", GTK_STOCK_CUT, N_("Cut"), "<CTRL>X", N_("_Cut"), NULL },
- { "EditCopy", GTK_STOCK_COPY, N_("Copy"), "<CTRL>C", N_("Copy"), NULL },
- { "EditPaste", GTK_STOCK_PASTE, N_("Paste"), "<CTRL>V", N_("Paste"), NULL },
+ { "Cut", GTK_STOCK_CUT, N_("Cut"), "<CTRL>X", N_("_Cut"), G_CALLBACK (modest_ui_actions_on_cut) },
+ { "Copy", GTK_STOCK_COPY, N_("Copy"), "<CTRL>C", N_("Copy"), G_CALLBACK (modest_ui_actions_on_copy) },
+ { "Paste", GTK_STOCK_PASTE, N_("Paste"), "<CTRL>V", N_("Paste"), G_CALLBACK (modest_ui_actions_on_paste) },
{ "EditDelete", GTK_STOCK_DELETE, N_("_Delete"), "<CTRL>Q", N_("Delete"), NULL },
- { "EditSelectAll", NULL, N_("Select all"), "<CTRL>A", N_("Select all"), NULL },
+ { "SelectAll", NULL, N_("Select all"), "<CTRL>A", N_("Select all"), G_CALLBACK (modest_ui_actions_on_select_all) },
{ "EditDeselectAll", NULL, N_("Deselect all"), "<Shift><CTRL>A", N_("Deselect all"), NULL },
/* ACTIONS */
+ { "ActionsNewMessage", MODEST_STOCK_NEW_MAIL, N_("_New"), "<CTRL>N", N_("Compose new message"), G_CALLBACK (modest_ui_actions_on_new_msg) },
{ "ActionsReply", MODEST_STOCK_REPLY, N_("_Reply"), NULL, N_("Reply to a message"), G_CALLBACK (modest_ui_actions_on_reply) },
{ "ActionsReplyAll", MODEST_STOCK_REPLY_ALL, N_("Reply to all"), NULL, N_("Reply to all"), G_CALLBACK (modest_ui_actions_on_reply_all) },
{ "ActionsForward", MODEST_STOCK_FORWARD, N_("_Forward"), NULL, N_("Forward a message"), G_CALLBACK (modest_ui_actions_on_forward) },
{ "ActionsBounce", NULL, N_("_Bounce"), NULL, N_("Bounce a message"), NULL },
{ "ActionsSendReceive", GTK_STOCK_REFRESH, N_("Send/Receive"), NULL, N_("Send and receive messages"), NULL },
- { "ActionsDelete", MODEST_STOCK_DELETE, N_("Delete message"), NULL, N_("Delete messages"), G_CALLBACK (modest_ui_actions_on_delete) },
+ { "ActionsDelete", MODEST_STOCK_DELETE, N_("Delete message"), NULL, N_("Delete messages"), G_CALLBACK (modest_ui_actions_on_delete_message) },
/* HELP */
{ "HelpAbout", GTK_STOCK_ABOUT, N_("About"), NULL, N_("About Modest"), G_CALLBACK (modest_ui_actions_on_about) },
}
static void
+save_state (ModestWindow *self)
+{
+ modest_widget_memory_save (modest_runtime_get_conf (),
+ G_OBJECT(self),
+ MODEST_CONF_MSG_VIEW_WINDOW_KEY);
+}
+
+
+static void
+restore_settings (ModestWindow *self)
+{
+ modest_widget_memory_restore (modest_runtime_get_conf (),
+ G_OBJECT(self),
+ MODEST_CONF_MSG_VIEW_WINDOW_KEY);
+}
+
+static void
modest_msg_view_window_class_init (ModestMsgViewWindowClass *klass)
{
GObjectClass *gobject_class;
gobject_class->finalize = modest_msg_view_window_finalize;
g_type_class_add_private (gobject_class, sizeof(ModestMsgViewWindowPrivate));
+
+ ModestWindowClass *modest_window_class = (ModestWindowClass *) klass;
+ modest_window_class->save_state_func = save_state;
}
static void
ModestMsgViewWindowPrivate *priv;
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
- priv->toolbar = NULL;
- priv->menubar = NULL;
- priv->msg_view = NULL;
-}
-
-static void
-save_settings (ModestMsgViewWindow *self)
-{
- modest_widget_memory_save (modest_runtime_get_conf (),
- G_OBJECT(self), "modest-msg-view-window");
-}
-
-
-static void
-restore_settings (ModestMsgViewWindow *self)
-{
- modest_widget_memory_restore (modest_runtime_get_conf (),
- G_OBJECT(self), "modest-msg-view-window");
+ priv->toolbar = NULL;
+ priv->menubar = NULL;
+ priv->msg_view = NULL;
+ priv->msg_uid = NULL;
}
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
- priv->msg_view = modest_msg_view_new (msg);
+ priv->msg_view = GTK_WIDGET (tny_platform_factory_new_msg_view (modest_tny_platform_factory_get_instance ()));
+ tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
main_vbox = gtk_vbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0);
static void
modest_msg_view_window_finalize (GObject *obj)
-{
+{
+ ModestMsgViewWindowPrivate *priv;
+
+ priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
+
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
static gboolean
on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgViewWindow *self)
{
- save_settings (self);
+ modest_window_save_state (MODEST_WINDOW(self));
return FALSE;
}
ModestWindow *
-modest_msg_view_window_new (TnyMsg *msg, const gchar *account)
+modest_msg_view_window_new_for_attachment (TnyMsg *msg,
+ const gchar *modest_account_name,
+ const gchar *msg_uid)
{
GObject *obj;
ModestMsgViewWindowPrivate *priv;
ModestWindowPrivate *parent_priv;
GtkActionGroup *action_group;
GError *error = NULL;
+ TnyHeader *header = NULL;
+ const gchar *subject = NULL;
g_return_val_if_fail (msg, NULL);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
- modest_window_set_active_account (MODEST_WINDOW(obj), account);
+ priv->msg_uid = g_strdup (msg_uid);
+
+ modest_window_set_active_account (MODEST_WINDOW(obj), modest_account_name);
parent_priv->ui_manager = gtk_ui_manager_new();
action_group = gtk_action_group_new ("ModestMsgViewWindowActions");
/* Init window */
init_window (MODEST_MSG_VIEW_WINDOW(obj), msg);
- restore_settings (MODEST_MSG_VIEW_WINDOW(obj));
+ restore_settings (MODEST_WINDOW(obj));
+
+ header = tny_msg_get_header (msg);
+ if (header)
+ subject = tny_header_get_subject (header);
- gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+ if (subject != NULL)
+ gtk_window_set_title (GTK_WINDOW (obj), subject);
+ else
+ gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+
+ if (header)
+ g_object_unref (header);
+
gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
g_signal_connect (G_OBJECT(obj), "delete-event", G_CALLBACK(on_delete_event), obj);
msg_view = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(self)->msg_view;
- return modest_msg_view_get_message (MODEST_MSG_VIEW(msg_view));
+ return tny_msg_view_get_msg (TNY_MSG_VIEW(msg_view));
+}
+
+const gchar*
+modest_msg_view_window_get_message_uid (ModestMsgViewWindow *self)
+{
+ ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
+ TnyMsg *msg;
+ TnyHeader *header;
+ const gchar *retval = NULL;
+
+ msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
+ msg = modest_msg_view_window_get_message (self);
+
+ if (!msg)
+ return NULL;
+
+ header = tny_msg_get_header (msg);
+ if (header) {
+ retval = tny_header_get_uid (header);
+ g_object_unref (header);
+ }
+ g_object_unref (msg);
+
+ return retval;
+}
+
+ModestWindow*
+modest_msg_view_window_new_with_header_model (TnyMsg *msg,
+ const gchar *modest_account_name,
+ const gchar *msg_uid,
+ GtkTreeModel *model,
+ GtkTreeRowReference *row_reference)
+{
+ /* Currently we simply redirect to new constructor. It should store a
+ reference to the header list model, to enable next/prev message
+ actions */
+ g_message ("partially implemented %s", __FUNCTION__);
+
+ return modest_msg_view_window_new_for_attachment (msg, modest_account_name, msg_uid);
+}
+
+
+gboolean
+modest_msg_view_window_select_next_message (ModestMsgViewWindow *window)
+{
+ g_message ("not implemented %s", __FUNCTION__);
+ return FALSE;
+}
+
+gboolean
+modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window)
+{
+ g_message ("not implemented %s", __FUNCTION__);
+ return FALSE;
+}
+
+void
+modest_msg_view_window_view_attachment (ModestMsgViewWindow *window, TnyMimePart *mime_part)
+{
+ g_message ("not implemented %s", __FUNCTION__);
+}
+
+void
+modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, GList *mime_parts)
+{
+ g_message ("not implemented %s", __FUNCTION__);
+}
+void
+modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean get_all)
+{
+ g_message ("not implemented %s", __FUNCTION__);
+}
+
+TnyHeader *
+modest_msg_view_window_get_header (ModestMsgViewWindow *self)
+{
+ TnyMsg *msg;
+ TnyHeader *header = NULL;
+
+ msg = modest_msg_view_window_get_message (self);
+ if (msg) {
+ header = tny_msg_get_header (msg);
+ g_object_unref (msg);
+ }
+ return header;
+}
+
+TnyFolderType
+modest_msg_view_window_get_folder_type (ModestMsgViewWindow *window)
+{
+ ModestMsgViewWindowPrivate *priv;
+ TnyMsg *msg;
+ TnyFolderType folder_type;
+
+ priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
+
+ folder_type = TNY_FOLDER_TYPE_UNKNOWN;
+
+ msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
+ if (msg) {
+ TnyFolder *folder;
+
+ folder = tny_msg_get_folder (msg);
+ if (folder) {
+ folder_type = tny_folder_get_folder_type (folder);
+ g_object_unref (folder);
+ }
+ g_object_unref (msg);
+ }
+
+ return folder_type;
+}
+
+/* NOT IMPLEMENTED METHODS */
+
+gboolean
+modest_msg_view_window_last_message_selected (ModestMsgViewWindow *window)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return TRUE;
+}
+
+gboolean
+modest_msg_view_window_first_message_selected (ModestMsgViewWindow *window)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return TRUE;
+}
+
+gboolean
+modest_msg_view_window_transfer_mode_enabled (ModestMsgViewWindow *self)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return FALSE;
+}
+
+gboolean
+modest_msg_view_window_toolbar_on_transfer_mode (ModestMsgViewWindow *self)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return FALSE;
+}
+
+
+GList *
+modest_msg_view_window_get_attachments (ModestMsgViewWindow *win)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return NULL;
+}
+
+gboolean
+modest_msg_view_window_is_search_result (ModestMsgViewWindow *window)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return FALSE;
+}
+
+gboolean
+modest_msg_view_window_has_headers_model (ModestMsgViewWindow *window)
+{
+ g_message ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return FALSE;
}