#include <glib/gi18n.h>
#include <gtk/gtktreeviewcolumn.h>
-#include <modest-runtime.h>
+#include <tny-account-store-view.h>
#include <widgets/modest-main-window.h>
#include <widgets/modest-window-priv.h>
#include <widgets/modest-msg-edit-window.h>
-#include "modest-account-view-window.h"
-
+#include <widgets/modest-account-view-window.h>
+#include <modest-runtime.h>
#include "modest-widget-memory.h"
#include "modest-ui-actions.h"
#include "modest-main-window-ui.h"
GtkWidget *online_toggle;
GtkWidget *folder_info_label;
+
+ ModestHeaderView *header_view;
+ ModestFolderView *folder_view;
+ ModestMsgView *msg_preview;
+
+ GtkWidget *status_bar;
+ GtkWidget *progress_bar;
+
};
static void
modest_main_window_init (ModestMainWindow *obj)
{
+ TnyAccountStore *account_store;
ModestMainWindowPrivate *priv;
TnyFolderStoreQuery *query;
+ GtkWidget *icon;
+ gboolean online;
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
priv->msg_paned = NULL;
priv->main_paned = NULL;
- /* folder view */
- query = tny_folder_store_query_new ();
- tny_folder_store_query_add_item (query, NULL,
- TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
-
- obj->folder_view =
- MODEST_FOLDER_VIEW(modest_folder_view_new (modest_runtime_get_account_store(),
- query));
- if (!obj->folder_view)
- g_printerr ("modest: cannot instantiate folder view\n");
- g_object_unref (G_OBJECT (query));
-
- /* header view */
- obj->header_view =
- MODEST_HEADER_VIEW(modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_DETAILS));
- if (!obj->header_view)
- g_printerr ("modest: cannot instantiate header view\n");
-
- /* msg preview */
- obj->msg_preview = MODEST_MSG_VIEW(modest_msg_view_new (NULL));
- if (!obj->msg_preview)
- g_printerr ("modest: cannot instantiate msgpreiew\n");
+ account_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ());
/* online/offline combo */
priv->online_toggle = gtk_toggle_button_new ();
+ online = tny_device_is_online (modest_runtime_get_device());
+ icon = gtk_image_new_from_icon_name (online ? GTK_STOCK_CONNECT : GTK_STOCK_DISCONNECT,
+ GTK_ICON_SIZE_BUTTON);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(priv->online_toggle), online);
+ gtk_button_set_image (GTK_BUTTON(priv->online_toggle),icon);
/* label with number of items, unread items for
the current folder */
priv->folder_info_label = gtk_label_new (NULL);
/* status bar */
- obj->status_bar = gtk_statusbar_new ();
- gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(obj->status_bar),
+ priv->status_bar = gtk_statusbar_new ();
+ gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(priv->status_bar),
FALSE);
/* progress bar */
- obj->progress_bar = gtk_progress_bar_new ();
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(obj->progress_bar), 1.0);
- gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR(obj->progress_bar),
+ priv->progress_bar = gtk_progress_bar_new ();
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(priv->progress_bar), 1.0);
+ gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR(priv->progress_bar),
PANGO_ELLIPSIZE_END);
+
+ /* msg preview */
+ priv->msg_preview = MODEST_MSG_VIEW(modest_msg_view_new (NULL));
+ if (!priv->msg_preview)
+ g_printerr ("modest: cannot instantiate msgpreiew\n");
+
+ /* header view */
+ priv->header_view =
+ MODEST_HEADER_VIEW(modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_DETAILS));
+ if (!priv->header_view)
+ g_printerr ("modest: cannot instantiate header view\n");
+
+ /* folder view */
+ query = tny_folder_store_query_new ();
+ tny_folder_store_query_add_item (query, NULL,
+ TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
+
+ priv->folder_view = MODEST_FOLDER_VIEW (modest_folder_view_new (query));
+ if (!priv->folder_view)
+ g_printerr ("modest: cannot instantiate folder view\n");
+ g_object_unref (G_OBJECT (query));
}
static void
}
+GtkWidget*
+modest_main_window_get_child_widget (ModestMainWindow *self,
+ ModestWidgetType widget_type)
+{
+ ModestMainWindowPrivate *priv;
+ GtkWidget *widget;
+
+ g_return_val_if_fail (self, NULL);
+ g_return_val_if_fail (widget_type >= 0 && widget_type < MODEST_WIDGET_TYPE_NUM,
+ NULL);
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ switch (widget_type) {
+ case MODEST_WIDGET_TYPE_HEADER_VIEW:
+ widget = (GtkWidget*)priv->header_view; break;
+ case MODEST_WIDGET_TYPE_FOLDER_VIEW:
+ widget = (GtkWidget*)priv->folder_view; break;
+ case MODEST_WIDGET_TYPE_MSG_PREVIEW:
+ widget = (GtkWidget*)priv->msg_preview; break;
+ case MODEST_WIDGET_TYPE_STATUS_BAR:
+ widget = (GtkWidget*)priv->status_bar; break;
+ case MODEST_WIDGET_TYPE_PROGRESS_BAR:
+ widget = (GtkWidget*)priv->progress_bar; break;
+ default:
+ g_return_val_if_reached (NULL);
+ return NULL;
+ }
+
+ return widget ? GTK_WIDGET(widget) : NULL;
+}
+
+
static void
restore_sizes (ModestMainWindow *self)
{
"modest-msg-paned");
modest_widget_memory_restore (conf, G_OBJECT(priv->main_paned),
"modest-main-paned");
- modest_widget_memory_restore (conf, G_OBJECT(self->header_view),"header-view");
+ modest_widget_memory_restore (conf, G_OBJECT(priv->header_view),"header-view");
modest_widget_memory_restore (conf,G_OBJECT(self), "modest-main-window");
}
"modest-msg-paned");
modest_widget_memory_save (conf, G_OBJECT(priv->main_paned),
"modest-main-paned");
- modest_widget_memory_save (conf, G_OBJECT(self->header_view), "header-view");
+ modest_widget_memory_save (conf, G_OBJECT(priv->header_view), "header-view");
}
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
- device = tny_account_store_get_device
- (TNY_ACCOUNT_STORE(modest_runtime_get_account_store()));
-
+ device = modest_runtime_get_device ();
online = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->online_toggle));
if (online)
tny_device_force_online (device);
else
tny_device_force_offline (device);
-
- g_object_unref (G_OBJECT (device));
}
static gboolean
{
ModestWindowPrivate *parent_priv;
ModestMainWindowPrivate *priv;
- TnyDevice *device;
ModestTnyAccountStore *account_store;
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
account_store = modest_runtime_get_account_store ();
- device = tny_account_store_get_device(TNY_ACCOUNT_STORE(account_store));
/* folder view */
- g_signal_connect (G_OBJECT(self->folder_view), "folder_selection_changed",
+ g_signal_connect (G_OBJECT(priv->folder_view), "folder_selection_changed",
G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
- g_signal_connect (G_OBJECT(self->folder_view), "folder_moved",
- G_CALLBACK(modest_ui_actions_on_folder_moved), NULL);
- g_signal_connect (G_OBJECT(self->folder_view), "button-press-event",
+ g_signal_connect (G_OBJECT(priv->folder_view), "button-press-event",
G_CALLBACK (on_folder_view_button_press_event),self);
- g_signal_connect (self->folder_view,"popup-menu",
+ g_signal_connect (priv->folder_view,"popup-menu",
G_CALLBACK (on_folder_view_button_press_event),self);
/* header view */
- g_signal_connect (G_OBJECT(self->header_view), "status_update",
+ g_signal_connect (G_OBJECT(priv->header_view), "status_update",
G_CALLBACK(modest_ui_actions_on_header_status_update), self);
- g_signal_connect (G_OBJECT(self->header_view), "header_selected",
+ g_signal_connect (G_OBJECT(priv->header_view), "header_selected",
G_CALLBACK(modest_ui_actions_on_header_selected), self);
- g_signal_connect (G_OBJECT(self->header_view), "header_activated",
+ g_signal_connect (G_OBJECT(priv->header_view), "header_activated",
G_CALLBACK(modest_ui_actions_on_header_activated), self);
- g_signal_connect (G_OBJECT(self->header_view), "item_not_found",
+ g_signal_connect (G_OBJECT(priv->header_view), "item_not_found",
G_CALLBACK(modest_ui_actions_on_item_not_found), self);
- g_signal_connect (G_OBJECT(self->header_view), "button-press-event",
+ g_signal_connect (G_OBJECT(priv->header_view), "button-press-event",
G_CALLBACK (on_header_view_button_press_event), self);
- g_signal_connect (G_OBJECT(self->header_view),"popup-menu",
+ g_signal_connect (G_OBJECT(priv->header_view),"popup-menu",
G_CALLBACK (on_header_view_button_press_event), self);
/* msg preview */
- g_signal_connect (G_OBJECT(self->msg_preview), "link_clicked",
+ g_signal_connect (G_OBJECT(priv->msg_preview), "link_clicked",
G_CALLBACK(modest_ui_actions_on_msg_link_clicked), self);
- g_signal_connect (G_OBJECT(self->msg_preview), "link_hover",
+ g_signal_connect (G_OBJECT(priv->msg_preview), "link_hover",
G_CALLBACK(modest_ui_actions_on_msg_link_hover), self);
- g_signal_connect (G_OBJECT(self->msg_preview), "attachment_clicked",
+ g_signal_connect (G_OBJECT(priv->msg_preview), "attachment_clicked",
G_CALLBACK(modest_ui_actions_on_msg_attachment_clicked), self);
/* Account store */
- g_signal_connect (G_OBJECT (modest_runtime_get_account_store()), "accounts_reloaded",
- G_CALLBACK (modest_ui_actions_on_accounts_reloaded), self);
+ g_signal_connect (G_OBJECT (modest_runtime_get_account_store()), "password_requested",
+ G_CALLBACK (modest_ui_actions_on_password_requested), self);
/* Device */
- g_signal_connect (G_OBJECT(device), "connection_changed",
+ g_signal_connect (G_OBJECT(modest_runtime_get_device()), "connection_changed",
G_CALLBACK(on_connection_changed), self);
g_signal_connect (G_OBJECT(priv->online_toggle), "toggled",
G_CALLBACK(on_online_toggle_toggled), self);
parent_priv->menubar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar");
gtk_toolbar_set_tooltips (GTK_TOOLBAR (parent_priv->toolbar), TRUE);
- folder_win = wrapped_in_scrolled_window (GTK_WIDGET(self->folder_view), FALSE);
- header_win = wrapped_in_scrolled_window (GTK_WIDGET(self->header_view), FALSE);
+ folder_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->folder_view), FALSE);
+ header_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->header_view), FALSE);
/* paned */
priv->folder_paned = gtk_vpaned_new ();
gtk_paned_add1 (GTK_PANED(priv->main_paned), folder_win);
gtk_paned_add2 (GTK_PANED(priv->main_paned), priv->msg_paned);
gtk_paned_add1 (GTK_PANED(priv->msg_paned), header_win);
- gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(self->msg_preview));
-
- gtk_widget_show (GTK_WIDGET(self->header_view));
+ gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview));
/* status bar / progress */
status_hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX(status_hbox), priv->folder_info_label, FALSE,FALSE, 6);
- gtk_box_pack_start (GTK_BOX(status_hbox), self->status_bar, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX(status_hbox), self->progress_bar,FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(status_hbox), priv->status_bar, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX(status_hbox), priv->progress_bar,FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(status_hbox), priv->online_toggle,FALSE, FALSE, 0);
/* putting it all together... */
gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
gtk_widget_show_all (main_vbox);
- /* Init toggle in correct state */
- //modest_ui_actions_on_connection_changed (device, tny_device_is_online (device), self);
-
+ /* Connect signals */
connect_signals (MODEST_MAIN_WINDOW(obj));
+
+ /* Set account store */
+ tny_account_store_view_set_account_store (TNY_ACCOUNT_STORE_VIEW (priv->folder_view),
+ TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
+
return (ModestWindow *) obj;
}