+
+static void
+on_connection_changed (TnyDevice *device, gboolean online, ModestMainWindow *self)
+{
+ GtkWidget *icon;
+ const gchar *icon_name;
+ ModestMainWindowPrivate *priv;
+
+ g_return_if_fail (device);
+ g_return_if_fail (self);
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ icon_name = online ? GTK_STOCK_CONNECT : GTK_STOCK_DISCONNECT;
+ icon = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
+
+ /* Block handlers in order to avoid unnecessary calls */
+ //g_signal_handler_block (G_OBJECT (priv->online_toggle), priv->toggle_button_signal);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(priv->online_toggle), online);
+ //g_signal_handler_unblock (G_OBJECT (online_toggle), priv->toggle_button_signal);
+
+ gtk_button_set_image (GTK_BUTTON(priv->online_toggle), icon);
+ //statusbar_push (widget_factory, 0, online ? _("Modest went online") : _("Modest went offline"));
+
+ /* If Modest has became online and the header view has a
+ header selected then show it */
+ /* FIXME: there is a race condition if some account needs to
+ ask the user for a password */
+
+/* if (online) { */
+/* GtkTreeSelection *selected; */
+
+/* selected = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view)); */
+/* _modest_header_view_change_selection (selected, header_view); */
+/* } */
+}
+
+void
+on_online_toggle_toggled (GtkToggleButton *toggle, ModestMainWindow *self)
+{
+ gboolean online;
+ TnyDevice *device;
+ ModestMainWindowPrivate *priv;
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ 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);
+}
+
+static gboolean
+on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMainWindow *self)
+{
+ save_sizes (self);
+ return FALSE;
+}
+
+static void
+on_destroy (GtkWidget *widget, GdkEvent *event, ModestMainWindow *self)
+{
+ gtk_main_quit();
+}
+
+
+
+static void
+connect_signals (ModestMainWindow *self)
+{
+ ModestWindowPrivate *parent_priv;
+ ModestMainWindowPrivate *priv;
+ ModestTnyAccountStore *account_store;
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+ parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+
+ account_store = modest_runtime_get_account_store ();
+
+ /* folder view */
+ 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(priv->folder_view), "button-press-event",
+ G_CALLBACK (on_folder_view_button_press_event),self);
+ g_signal_connect (priv->folder_view,"popup-menu",
+ G_CALLBACK (on_folder_view_button_press_event),self);
+
+ /* header view */
+ 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(priv->header_view), "header_selected",
+ G_CALLBACK(modest_ui_actions_on_header_selected), self);
+ g_signal_connect (G_OBJECT(priv->header_view), "header_activated",
+ G_CALLBACK(modest_ui_actions_on_header_activated), self);
+ 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(priv->header_view), "button-press-event",
+ G_CALLBACK (on_header_view_button_press_event), self);
+ 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(priv->msg_preview), "link_clicked",
+ G_CALLBACK(modest_ui_actions_on_msg_link_clicked), self);
+ 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(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()), "password_requested",
+ G_CALLBACK (modest_ui_actions_on_password_requested), self);
+
+ /* Device */
+ 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);
+
+ /* window */
+ g_signal_connect (G_OBJECT(self), "destroy", G_CALLBACK(on_destroy), NULL);
+ g_signal_connect (G_OBJECT(self), "delete-event", G_CALLBACK(on_delete_event), self);
+}
+
+