#
# Makefile.am
-# Time-stamp: <2007-02-07 22:26:18 (djcb)>
+# Time-stamp: <2007-02-10 14:47:15 (djcb)>
#
#
# use Automake 'trick' ==> convenience static libraries, which
modest-account-assistant.c \
modest-account-assistant.h \
modest-account-view-window.c \
- modest-account-view-window.h \
modest-msg-edit-window.c \
modest-icon-names.h \
modest-main-window.c \
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+
+#include <widgets/modest-account-view-window.h>
+#include <widgets/modest-account-view.h>
+
#include <modest-runtime.h>
#include <modest-account-mgr-helpers.h>
-#include <widgets/modest-account-view.h>
#include <string.h>
-#include "modest-account-view-window.h"
#include "modest-account-assistant.h"
#include "modest-tny-platform-factory.h"
+++ /dev/null
-/* modest-account-view-window.h */
-/* insert (c)/licensing information) */
-
-#ifndef __MODEST_ACCOUNT_VIEW_WINDOW_H__
-#define __MODEST_ACCOUNT_VIEW_WINDOW_H__
-
-#include <gtk/gtkwidget.h>
-
-G_BEGIN_DECLS
-
-/* convenience macros */
-#define MODEST_TYPE_ACCOUNT_VIEW_WINDOW (modest_account_view_window_get_type())
-#define MODEST_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindow))
-#define MODEST_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,GtkWindow))
-#define MODEST_IS_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
-#define MODEST_IS_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
-#define MODEST_ACCOUNT_VIEW_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindowClass))
-
-typedef struct _ModestAccountViewWindow ModestAccountViewWindow;
-typedef struct _ModestAccountViewWindowClass ModestAccountViewWindowClass;
-
-struct _ModestAccountViewWindow {
- GtkWindow parent;
- /* insert public members, if any */
-};
-
-struct _ModestAccountViewWindowClass {
- GtkWindowClass parent_class;
- /* insert signal callback declarations, eg. */
- /* void (* my_event) (ModestAccountViewWindow* obj); */
-};
-
-/* member functions */
-GType modest_account_view_window_get_type (void) G_GNUC_CONST;
-
-GtkWidget* modest_account_view_window_new (void);
-
-G_END_DECLS
-
-#endif /* __MODEST_ACCOUNT_VIEW_WINDOW_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-widget-memory.h"
#include "modest-ui-actions.h"
GtkWidget *online_toggle;
GtkWidget *folder_info_label;
+
+ ModestHeaderView *header_view;
+ ModestFolderView *folder_view;
+ ModestMsgView *msg_preview;
+
+ GtkWidget *status_bar;
+ GtkWidget *progress_bar;
+
};
tny_folder_store_query_add_item (query, NULL,
TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
- obj->folder_view =
+ priv->folder_view =
MODEST_FOLDER_VIEW(modest_folder_view_new (modest_runtime_get_account_store(),
query));
- if (!obj->folder_view)
+ if (!priv->folder_view)
g_printerr ("modest: cannot instantiate folder view\n");
g_object_unref (G_OBJECT (query));
/* header view */
- obj->header_view =
+ priv->header_view =
MODEST_HEADER_VIEW(modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_DETAILS));
- if (!obj->header_view)
+ if (!priv->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)
+ priv->msg_preview = MODEST_MSG_VIEW(modest_msg_view_new (NULL));
+ if (!priv->msg_preview)
g_printerr ("modest: cannot instantiate msgpreiew\n");
/* online/offline combo */
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);
}
}
+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");
}
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_signal_connect (G_OBJECT(priv->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",
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_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview));
- gtk_widget_show (GTK_WIDGET(self->header_view));
+ gtk_widget_show (GTK_WIDGET(priv->header_view));
/* 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... */
GError *error = NULL;
g_return_val_if_fail (msg, NULL);
- g_return_val_if_fail (msg, NULL);
-
+
obj = g_object_new(MODEST_TYPE_MSG_VIEW_WINDOW, NULL);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
return MODEST_WINDOW(obj);
}
+
+
+TnyMsg*
+modest_msg_view_window_get_message (ModestMsgViewWindow *self)
+{
+ GtkWidget *msg_view;
+ g_return_val_if_fail (self, NULL);
+
+ msg_view = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(self)->msg_view;
+
+ return modest_msg_view_get_message (MODEST_MSG_VIEW(msg_view));
+}
libmodest_ui_la_SOURCES= \
modest-account-view-window.c \
- modest-account-view-window.h \
modest-icon-names.h \
modest-main-window.c \
modest-main-window-ui.h \
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+
+#include <widgets/modest-account-view-window.h>
+#include <widgets/modest-account-view.h>
+
#include <modest-runtime.h>
#include <modest-account-mgr-helpers.h>
-#include <widgets/modest-account-view.h>
#include <string.h>
-#include "modest-account-view-window.h"
#include "modest-account-assistant.h"
#include "modest-tny-platform-factory.h"
+++ /dev/null
-/* modest-account-view-window.h */
-/* insert (c)/licensing information) */
-
-#ifndef __MODEST_ACCOUNT_VIEW_WINDOW_H__
-#define __MODEST_ACCOUNT_VIEW_WINDOW_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-/* convenience macros */
-#define MODEST_TYPE_ACCOUNT_VIEW_WINDOW (modest_account_view_window_get_type())
-#define MODEST_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindow))
-#define MODEST_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,GtkWindow))
-#define MODEST_IS_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
-#define MODEST_IS_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
-#define MODEST_ACCOUNT_VIEW_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindowClass))
-
-typedef struct _ModestAccountViewWindow ModestAccountViewWindow;
-typedef struct _ModestAccountViewWindowClass ModestAccountViewWindowClass;
-
-struct _ModestAccountViewWindow {
- GtkWindow parent;
- /* insert public members, if any */
-};
-
-struct _ModestAccountViewWindowClass {
- GtkWindowClass parent_class;
- /* insert signal callback declarations, eg. */
- /* void (* my_event) (ModestAccountViewWindow* obj); */
-};
-
-/* member functions */
-GType modest_account_view_window_get_type (void) G_GNUC_CONST;
-
-GtkWidget* modest_account_view_window_new (void);
-
-G_END_DECLS
-
-#endif /* __MODEST_ACCOUNT_VIEW_WINDOW_H__ */
-
#include <widgets/modest-main-window.h>
#include <widgets/modest-msg-edit-window.h>
+#include <widgets/modest-account-view-window.h>
#include "modest-widget-memory.h"
#include "modest-window-priv.h"
#include "modest-main-window-ui.h"
-#include "modest-account-view-window.h"
#include "modest-account-mgr.h"
#include "modest-conf.h"
struct _ModestMainWindowPrivate {
GtkWidget *msg_paned;
GtkWidget *main_paned;
+
+ ModestHeaderView *header_view;
+ ModestFolderView *folder_view;
+
};
}
+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;
+ default:
+ g_return_val_if_reached (NULL);
+ return NULL;
+ }
+
+ return widget ? GTK_WIDGET(widget) : NULL;
+}
+
+
static void
restore_sizes (ModestMainWindow *self)
modest_window_set_active_account (MODEST_WINDOW(obj), account_name);
return MODEST_WINDOW(obj);
}
+
+
+
+TnyMsg*
+modest_msg_view_window_get_message (ModestMsgViewWindow *self)
+{
+ ModestMsgView *msg_view;
+ g_return_val_if_fail (self, NULL);
+
+ msg_view = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj)->msg_view;
+
+ return modest_msg_view_get_message (msg_view);
+}
send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
if (!TNY_IS_SEND_QUEUE(send_queue))
g_printerr ("modest: could not find send queue for account\n");
- else
- tny_send_queue_add (send_queue, msg);
+ else {
+ GError *err = NULL;
+ tny_send_queue_add (send_queue, msg, &err);
+ if (err) {
+ g_printerr ("modest: error adding msg to send queue: %s\n",
+ err->message);
+ g_error_free (err);
+ }
+ }
}
void
VOID:POINTER,POINTER
VOID:POINTER,POINTER,POINTER
+VOID:STRING,POINTER,POINTER,POINTER
VOID:POINTER,BOOL
VOID:STRING,INT
VOID:STRING,INT,INT
VOID:STRING,BOOL
VOID:STRING,STRING,BOOL
-
/* list my signals */
enum {
ACCOUNT_UPDATE_SIGNAL,
+ PASSWORD_REQUESTED_SIGNAL,
LAST_SIGNAL
};
MODEST_TYPE_TNY_ACCOUNT_STORE, \
ModestTnyAccountStorePrivate))
-static void on_password_requested (ModestTnyAccountStore *account_store,
- const gchar* account_name,
- gchar **password,
- gboolean *cancel,
- gboolean *remember);
-
/* globals */
static GObjectClass *parent_class = NULL;
g_type_class_add_private (gobject_class,
sizeof(ModestTnyAccountStorePrivate));
- signals[ACCOUNT_UPDATE_SIGNAL] =
+ signals[ACCOUNT_UPDATE_SIGNAL] =
g_signal_new ("account_update",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(ModestTnyAccountStoreClass, account_update),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ signals[PASSWORD_REQUESTED_SIGNAL] =
+ g_signal_new ("password_requested",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(ModestTnyAccountStoreClass, password_requested),
+ NULL, NULL,
+ modest_marshal_VOID__STRING_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER,
+ G_TYPE_POINTER);
}
"account_store"));
}
-
-static void
-on_password_requested (ModestTnyAccountStore *account_store,
- const gchar* account_name,
- gchar **password,
- gboolean *cancel,
- gboolean *remember)
-{
- gchar *txt;
- GtkWidget *dialog, *entry, *remember_pass_check;
-
- dialog = gtk_dialog_new_with_buttons (_("Password requested"),
- NULL,
- GTK_DIALOG_MODAL,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
-
- txt = g_strdup_printf (_("Please enter your password for %s"), account_name);
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_label_new(txt),
- FALSE, FALSE, 0);
- g_free (txt);
-
- entry = gtk_entry_new_with_max_length (40);
- gtk_entry_set_visibility (GTK_ENTRY(entry), FALSE);
- gtk_entry_set_invisible_char (GTK_ENTRY(entry), 0x2022); /* bullet unichar */
-
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry,
- TRUE, FALSE, 0);
-
- remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), remember_pass_check,
- TRUE, FALSE, 0);
-
- gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
-
- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- *password = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry)));
- *cancel = FALSE;
- } else {
- *password = NULL;
- *cancel = TRUE;
- }
-
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (remember_pass_check)))
- *remember = TRUE;
- else
- *remember = FALSE;
-
- gtk_widget_destroy (dialog);
-}
-
static gchar*
get_password (TnyAccount *account, const gchar *prompt, gboolean *cancel)
{
self = MODEST_TNY_ACCOUNT_STORE (account_store);
priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self);
+
+ g_warning ("prompt: %s", prompt);
/* is it in the hash? if it's already there, it must be wrong... */
pwd_ptr = (gpointer)&pwd; /* pwd_ptr so the compiler does not complained about
/* we don't have it yet. Get the password from the user */
const gchar* name = tny_account_get_name (account);
- gboolean remember;
+ gboolean remember = FALSE;
pwd = NULL;
-
- on_password_requested (self, name, &pwd, cancel, &remember);
-
+
+ g_signal_emit (G_OBJECT(self), signals[PASSWORD_REQUESTED_SIGNAL], 0,
+ name, &pwd, cancel, &remember);
+
if (!*cancel) {
if (remember)
- modest_account_mgr_set_string (priv->account_mgr,
- key, MODEST_ACCOUNT_PASSWORD,
- pwd,
- TRUE, NULL);
+ modest_account_mgr_set_string (priv->account_mgr,key,
+ MODEST_ACCOUNT_PASSWORD,
+ pwd, TRUE, NULL);
/* We need to dup the string even knowing that
it's already a dup of the contents of an
entry, because it if it's wrong, then camel
} else
*cancel = FALSE;
+ //g_warning ("pwd: '%s', cancel:%s", pwd, *cancel?"yes":"no");
+
return pwd;
}
struct _ModestTnyAccountStoreClass {
GObjectClass parent_class;
- void (*account_update) (ModestTnyAccountStore *self,
- const gchar *account_name,
- gpointer user_data);
+ void (*account_update) (ModestTnyAccountStore *self,
+ const gchar *account_name,
+ gpointer user_data);
+ void (*password_requested) (ModestTnyAccountStore *self,
+ const gchar *account_name,
+ gchar **password,
+ gboolean *remember,
+ gboolean *cancel,
+ gpointer user_data);
+
+
};
/**
static void
-modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove)
+modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove, GError **err)
{
g_warning (__FUNCTION__);
-
- TNY_CAMEL_SEND_QUEUE_CLASS(parent_class)->cancel_func (self, remove);
+
+ TNY_CAMEL_SEND_QUEUE_CLASS(parent_class)->cancel_func (self, remove, err); /* FIXME */
}
static void
-modest_tny_send_queue_add (TnySendQueue *self, TnyMsg *msg)
+modest_tny_send_queue_add (TnySendQueue *self, TnyMsg *msg, GError **err)
{
ModestTnySendQueuePrivate *priv;
/* FIXME: do something smart here... */
- TNY_CAMEL_SEND_QUEUE_CLASS(parent_class)->add_func (self, msg);
+ TNY_CAMEL_SEND_QUEUE_CLASS(parent_class)->add_func (self, msg, err); /* FIXME */
}
static TnyFolder*
#include "modest-tny-platform-factory.h"
#include <widgets/modest-main-window.h>
-#include "modest-account-view-window.h"
#include <widgets/modest-msg-view-window.h>
+#include <widgets/modest-account-view-window.h>
#include "modest-account-mgr-helpers.h"
#include "modest-mail-operation.h"
static void read_msg_func (gpointer data, gpointer user_data);
static void get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err,
gpointer user_data);
-
static void reply_forward (GtkWidget *widget, ReplyForwardAction action,
- ModestMainWindow *main_window);
-
+ ModestWindow *win);
static gchar* ask_for_folder_name (GtkWindow *parent_window, const gchar *title);
gtk_widget_destroy(about);
}
+
+static TnyList *
+get_selected_headers (ModestWindow *win)
+{
+ if (MODEST_IS_MAIN_WINDOW(win)) {
+ GtkWidget *header_view;
+
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ return modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
+
+ } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+ /* for MsgViewWindows, we simply return a list with one element */
+ TnyMsg *msg;
+ TnyList *list;
+
+ msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW(win));
+ list = tny_simple_list_new ();
+ tny_list_prepend (list, G_OBJECT(msg));
+
+ return list;
+ } else
+ return NULL;
+
+}
void
-modest_ui_actions_on_delete (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win)
{
TnyList *header_list;
TnyIterator *iter;
- GtkTreeModel *model;
+// GtkTreeModel *model;
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
- return;
-
- header_list = modest_header_view_get_selected_headers (main_window->header_view);
+ g_return_if_fail (MODEST_IS_WINDOW(win));
+
+ header_list = get_selected_headers (win);
if (header_list) {
iter = tny_list_create_iterator (header_list);
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (main_window->header_view));
- if (GTK_IS_TREE_MODEL_SORT (model))
- model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model));
+/* model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); */
+/* if (GTK_IS_TREE_MODEL_SORT (model)) */
+/* model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model)); */
do {
TnyHeader *header;
ModestMailOperation *mail_op;
modest_mail_operation_remove_msg (mail_op, header, TRUE);
/* Remove from tree model */
- if (modest_mail_operation_get_status (mail_op) ==
- MODEST_MAIL_OPERATION_STATUS_SUCCESS)
- tny_list_remove (TNY_LIST (model), G_OBJECT (header));
- else {
+ if (modest_mail_operation_get_status (mail_op) ==
+ MODEST_MAIL_OPERATION_STATUS_SUCCESS) {
+/* tny_list_remove (TNY_LIST (model), G_OBJECT (header)); */
+ } else {
/* TODO: error handling management */
const GError *error;
error = modest_mail_operation_get_error (mail_op);
* Common code for the reply and forward actions
*/
static void
-reply_forward (GtkWidget *widget, ReplyForwardAction action,
- ModestMainWindow *main_window)
+reply_forward (GtkWidget *widget, ReplyForwardAction action, ModestWindow *win)
{
TnyList *header_list;
guint reply_forward_type;
GetMsgAsyncHelper *helper;
ReplyForwardHelper *rf_helper;
- if (!main_window->header_view)
- return;
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- header_list = modest_header_view_get_selected_headers (main_window->header_view);
+ header_list = get_selected_headers (win);
if (!header_list)
return;
reply_forward_type = modest_conf_get_int (modest_runtime_get_conf (),
(action == ACTION_FORWARD) ? MODEST_CONF_FORWARD_TYPE : MODEST_CONF_REPLY_TYPE,
NULL);
+
/* We assume that we can only select messages of the
same folder and that we reply all of them from the
same account. In fact the interface currently only
allows single selection */
-
+
/* Fill helpers */
rf_helper = g_slice_new0 (ReplyForwardHelper);
rf_helper->reply_forward_type = reply_forward_type;
rf_helper->account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());;
helper = g_slice_new0 (GetMsgAsyncHelper);
- helper->main_window = main_window;
+ //helper->main_window = NULL;
helper->func = reply_forward_func;
helper->iter = tny_list_create_iterator (header_list);
helper->user_data = rf_helper;
}
void
-modest_ui_actions_on_reply (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_reply (GtkWidget *widget, ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_REPLY, main_window);
+ reply_forward (widget, ACTION_REPLY, win);
}
void
-modest_ui_actions_on_forward (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_forward (GtkWidget *widget, ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_FORWARD, main_window);
+ reply_forward (widget, ACTION_FORWARD, win);
}
void
-modest_ui_actions_on_reply_all (GtkWidget *widget,ModestMainWindow *main_window)
+modest_ui_actions_on_reply_all (GtkWidget *widget,ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_REPLY_TO_ALL, main_window);
+ reply_forward (widget, ACTION_REPLY_TO_ALL, win);
}
void
modest_ui_actions_on_next (GtkWidget *widget,
ModestMainWindow *main_window)
{
+ GtkWidget *header_view;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- if (main_window->header_view)
- modest_header_view_select_next (main_window->header_view);
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
+ modest_header_view_select_next (MODEST_HEADER_VIEW(header_view));
}
void
modest_ui_actions_on_prev (GtkWidget *widget,
ModestMainWindow *main_window)
{
+ GtkWidget *header_view;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- if (main_window->header_view)
- modest_header_view_select_prev (main_window->header_view);
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
+ modest_header_view_select_prev (MODEST_HEADER_VIEW(header_view));
}
modest_ui_actions_toggle_view (GtkWidget *widget, ModestMainWindow *main_window)
{
ModestConf *conf;
+ GtkWidget *header_view;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
+
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
return;
+
conf = modest_runtime_get_conf ();
/* what is saved/restored is depending on the style; thus; we save with
* old style, then update the style, and restore for this new style*/
- modest_widget_memory_save (conf, G_OBJECT(main_window->header_view), "header-view");
+ modest_widget_memory_save (conf, G_OBJECT(header_view), "header-view");
- if (modest_header_view_get_style (main_window->header_view) == MODEST_HEADER_VIEW_STYLE_DETAILS)
- modest_header_view_set_style (main_window->header_view,
+ if (modest_header_view_get_style
+ (MODEST_HEADER_VIEW(header_view)) == MODEST_HEADER_VIEW_STYLE_DETAILS)
+ modest_header_view_set_style (MODEST_HEADER_VIEW(header_view),
MODEST_HEADER_VIEW_STYLE_TWOLINES);
else
- modest_header_view_set_style (main_window->header_view,
+ modest_header_view_set_style (MODEST_HEADER_VIEW(header_view),
MODEST_HEADER_VIEW_STYLE_DETAILS);
- modest_widget_memory_restore (conf, G_OBJECT(main_window->header_view),
+ modest_widget_memory_restore (conf, G_OBJECT(header_view),
"header-view");
}
TnyHeader *header;
GetMsgAsyncHelper *helper;
TnyHeaderFlags header_flags;
-
+ GtkWidget *msg_preview;
+
msg = TNY_MSG (data);
helper = (GetMsgAsyncHelper *) user_data;
- if (!helper->main_window->msg_preview)
+ msg_preview = modest_main_window_get_child_widget (helper->main_window,
+ MODEST_WIDGET_TYPE_MSG_PREVIEW);
+ if (!msg_preview)
return;
/* mark message as seen; _set_flags crashes, bug in tinymail? */
g_object_unref (G_OBJECT (header));
/* Set message on msg view */
- modest_msg_view_set_message (helper->main_window->msg_preview,
- msg);
+ modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), msg);
}
/*
helper = (GetMsgAsyncHelper *) user_data;
if ((*err && ((*err)->code == TNY_FOLDER_ERROR_GET_MSG)) || !msg) {
- ModestHeaderView *header_view =
- helper->main_window->header_view;
+ GtkWidget *header_view =
+ modest_main_window_get_child_widget(helper->main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
if (header_view)
- modest_ui_actions_on_item_not_found (header_view,
+ modest_ui_actions_on_item_not_found (MODEST_HEADER_VIEW(header_view),
MODEST_ITEM_TYPE_MESSAGE,
MODEST_WINDOW(helper->main_window));
return;
}
void
-modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, TnyHeader *header,
+modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, TnyHeader *header,
ModestMainWindow *main_window)
{
+ GtkWidget *msg_preview;
TnyFolder *folder;
GetMsgAsyncHelper *helper;
TnyList *list;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->msg_preview)
+
+ msg_preview = modest_main_window_get_child_widget(main_window,
+ MODEST_WIDGET_TYPE_MSG_PREVIEW);
+ if (!msg_preview)
return;
/* when there's no header, clear the msgview */
if (!header) {
- modest_msg_view_set_message (main_window->msg_preview, NULL);
+ modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL);
return;
}
void
modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader *header,
- ModestMainWindow *main_window)
+ ModestMainWindow *main_window)
{
ModestWindow *win;
TnyFolder *folder = NULL;
// GtkLabel *folder_info_label;
gchar *txt;
ModestConf *conf;
-
+ GtkWidget *header_view;
+
/* folder_info_label = */
/* GTK_LABEL (modest_widget_factory_get_folder_info_label */
/* (modest_runtime_get_widget_factory())); */
/* } */
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
- return;
+ header_view = modest_main_window_get_child_widget(main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
conf = modest_runtime_get_conf ();
if (!selected) { /* the folder was unselected; save it's settings */
- modest_widget_memory_save (conf, G_OBJECT (main_window->header_view),
- "header-view");
+ modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view");
gtk_window_set_title (GTK_WINDOW(main_window), "Modest");
- modest_header_view_set_folder (main_window->header_view, NULL);
+ modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL);
} else { /* the folder was selected */
if (folder) { /* folder may be NULL */
guint num, unread;
//gtk_label_set_label (GTK_LABEL(folder_info_label), txt);
g_free (txt);
}
- modest_header_view_set_folder (main_window->header_view, folder);
- modest_widget_memory_restore (conf, G_OBJECT(main_window->header_view),
+ modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder);
+ modest_widget_memory_restore (conf, G_OBJECT(header_view),
"header-view");
}
}
if (!msg)
return;
- if (main_window->progress_bar) {
- gtk_widget_show (main_window->progress_bar);
- g_timeout_add (3000, (GSourceFunc)progress_bar_clean,
- main_window->progress_bar);
+ GtkWidget *progress_bar, *status_bar;
+
+ progress_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_PROGRESS_BAR);
+ status_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_STATUS_BAR);
+ if (progress_bar) {
+ gtk_widget_show (progress_bar);
+ g_timeout_add (3000, (GSourceFunc)progress_bar_clean, progress_bar);
}
- if (main_window->status_bar) {
- gtk_widget_show (main_window->status_bar);
- gtk_statusbar_push (GTK_STATUSBAR(main_window->status_bar), 0, msg);
- g_timeout_add (1500, (GSourceFunc)statusbar_clean, main_window->status_bar);
+ if (status_bar) {
+ gtk_widget_show (status_bar);
+ gtk_statusbar_push (GTK_STATUSBAR(status_bar), 0, msg);
+ g_timeout_add (1500, (GSourceFunc)statusbar_clean, status_bar);
}
}
item);
gtk_dialog_run (GTK_DIALOG(dialog));
} else {
-
dialog = gtk_dialog_new_with_buttons (_("Connection requested"),
GTK_WINDOW (win),
GTK_DIALOG_MODAL,
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
NULL);
-
txt = g_strdup_printf (_("This %s is not available in offline mode.\n"
"Do you want to get online?"), item);
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
gint total, ModestMainWindow *main_window)
{
char* txt;
+ GtkWidget *progress_bar;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->progress_bar)
- return;
+ progress_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_PROGRESS_BAR);
+ if (!progress_bar)
+ return;
+
if (total != 0)
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(main_window->progress_bar),
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(progress_bar),
(gdouble)num/(gdouble)total);
else
- gtk_progress_bar_pulse (GTK_PROGRESS_BAR(main_window->progress_bar));
+ gtk_progress_bar_pulse (GTK_PROGRESS_BAR(progress_bar));
txt = g_strdup_printf (_("Downloading %d of %d"), num, total);
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR(main_window->progress_bar), txt);
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR(progress_bar), txt);
g_free (txt);
statusbar_push (main_window, 0, msg);
return folder_name;
}
-
+
void
modest_ui_actions_on_new_folder (GtkWidget *widget, ModestMainWindow *main_window)
{
TnyFolder *parent_folder;
-
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ GtkWidget *folder_view;
- if (!main_window->folder_view)
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
return;
- parent_folder = modest_folder_view_get_selected (main_window->folder_view);
+ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
if (parent_folder) {
gchar *folder_name;
if (new_folder) {
/* TODO: tinymail should do this.
Update view */
- modest_folder_view_add_subfolder (main_window->folder_view, new_folder);
+ modest_folder_view_add_subfolder (MODEST_FOLDER_VIEW(folder_view),
+ new_folder);
/* Free new folder */
g_object_unref (new_folder);
ModestMainWindow *main_window)
{
TnyFolder *folder;
-
+ GtkWidget *folder_view;
+
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- if (!main_window->folder_view)
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
return;
- folder = modest_folder_view_get_selected (main_window->folder_view);
-
+ folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+
if (folder) {
gchar *folder_name;
-
folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
_("Please enter a new name for the folder"));
if (!error)
/* TODO: tinymail should do this.
Update view */
- modest_folder_view_rename (main_window->folder_view);
+ modest_folder_view_rename (MODEST_FOLDER_VIEW(folder_view));
/* TODO: else ? notify error ? */
{
TnyFolder *folder;
ModestMailOperation *mail_op;
+ GtkWidget *folder_view;
- if (!main_window->folder_view)
- return;
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- folder = modest_folder_view_get_selected (main_window->folder_view);
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
+ return;
+ folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+
mail_op = modest_mail_operation_new ();
modest_mail_operation_remove_folder (mail_op, folder, move_to_trash);
g_object_unref (mail_op);
g_object_unref (G_OBJECT (mail_op));
}
+
+
+
+void
+modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
+ const gchar* account_name,
+ gchar **password,
+ gboolean *cancel,
+ gboolean *remember,
+ ModestMainWindow *main_window)
+{
+ gchar *txt;
+ GtkWidget *dialog, *entry, *remember_pass_check;
+
+ dialog = gtk_dialog_new_with_buttons (_("Password requested"),
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(main_window));
+
+ txt = g_strdup_printf (_("Please enter your password for %s"), account_name);
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_label_new(txt),
+ FALSE, FALSE, 0);
+ g_free (txt);
+
+ entry = gtk_entry_new_with_max_length (40);
+ gtk_entry_set_visibility (GTK_ENTRY(entry), FALSE);
+ gtk_entry_set_invisible_char (GTK_ENTRY(entry), 0x2022); /* bullet unichar */
+
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry,
+ TRUE, FALSE, 0);
+
+ remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), remember_pass_check,
+ TRUE, FALSE, 0);
+
+ gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
+
+ if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ *password = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry)));
+ *cancel = FALSE;
+ } else {
+ *password = NULL;
+ *cancel = TRUE;
+ }
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (remember_pass_check)))
+ *remember = TRUE;
+ else
+ *remember = FALSE;
+
+ gtk_widget_destroy (dialog);
+}
/* Menu & toolbar actions */
void modest_ui_actions_on_about (GtkWidget *widget, ModestWindow *win);
-void modest_ui_actions_on_delete (GtkWidget *widget, ModestMainWindow *main_window);
+void modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win);
void modest_ui_actions_on_quit (GtkWidget *widget, ModestWindow *win);
void modest_ui_actions_on_open (GtkWidget *widget, ModestWindow *win);
-void modest_ui_actions_on_reply (GtkWidget *widget, ModestMainWindow *main_window);
+void modest_ui_actions_on_reply (GtkWidget *widget, ModestWindow *win);
-void modest_ui_actions_on_forward (GtkWidget *widget, ModestMainWindow *main_window);
+void modest_ui_actions_on_forward (GtkWidget *widget, ModestWindow *win);
-void modest_ui_actions_on_reply_all (GtkWidget *widget, ModestMainWindow *main_window);
+void modest_ui_actions_on_reply_all (GtkWidget *widget, ModestWindow *win);
void modest_ui_actions_on_next (GtkWidget *widget, ModestMainWindow *main_window);
TnyFolderStore *parent,
gboolean *done,
gpointer user_data);
+
+void modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
+ const gchar* account_name,
+ gchar **password, gboolean *cancel,
+ gboolean *remember, ModestMainWindow *main_window);
+
G_END_DECLS
#endif /* __MODEST_UI_ACTIONS_H__ */
#
# Makefile.am
-# Time-stamp: <2007-02-06 17:27:49 (djcb)>
+# Time-stamp: <2007-02-10 14:48:38 (djcb)>
INCLUDES=\
$(MODEST_GSTUFF_CFLAGS) \
noinst_LTLIBRARIES=\
libmodest-widgets.la
-libmodest_widgets_la_SOURCES= \
- modest-account-view.c \
- modest-account-view.h \
- modest-combo-box.c \
- modest-combo-box.h \
- modest-msg-edit-window.h \
- modest-msg-edit-window-ui.h \
- modest-msg-view-window.h \
- modest-folder-view.c \
- modest-folder-view.h \
- modest-header-view.c \
- modest-header-view.h \
- modest-header-view-priv.h \
- modest-header-view-render.c \
- modest-main-window.h \
- modest-msg-view.c \
- modest-msg-view.h \
- modest-tny-stream-gtkhtml.c \
- modest-tny-stream-gtkhtml.h \
- modest-window.c \
+libmodest_widgets_la_SOURCES= \
+ modest-account-view-window.h \
+ modest-account-view.c \
+ modest-account-view.h \
+ modest-combo-box.c \
+ modest-combo-box.h \
+ modest-folder-view.c \
+ modest-folder-view.h \
+ modest-header-view-priv.h \
+ modest-header-view-render.c \
+ modest-header-view.c \
+ modest-header-view.h \
+ modest-main-window.h \
+ modest-msg-edit-window-ui.h \
+ modest-msg-edit-window.h \
+ modest-msg-view-window.h \
+ modest-msg-view.c \
+ modest-msg-view.h \
+ modest-tny-stream-gtkhtml.c \
+ modest-tny-stream-gtkhtml.h \
+ modest-window.c \
modest-window.h
LDADD = \
--- /dev/null
+/* modest-account-view-window.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_ACCOUNT_VIEW_WINDOW_H__
+#define __MODEST_ACCOUNT_VIEW_WINDOW_H__
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_ACCOUNT_VIEW_WINDOW (modest_account_view_window_get_type())
+#define MODEST_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindow))
+#define MODEST_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,GtkWindow))
+#define MODEST_IS_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
+#define MODEST_IS_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW))
+#define MODEST_ACCOUNT_VIEW_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindowClass))
+
+typedef struct _ModestAccountViewWindow ModestAccountViewWindow;
+typedef struct _ModestAccountViewWindowClass ModestAccountViewWindowClass;
+
+struct _ModestAccountViewWindow {
+ GtkWindow parent;
+ /* insert public members, if any */
+};
+
+struct _ModestAccountViewWindowClass {
+ GtkWindowClass parent_class;
+ /* insert signal callback declarations, eg. */
+ /* void (* my_event) (ModestAccountViewWindow* obj); */
+};
+
+/* member functions */
+GType modest_account_view_window_get_type (void) G_GNUC_CONST;
+
+GtkWidget* modest_account_view_window_new (void);
+
+G_END_DECLS
+
+#endif /* __MODEST_ACCOUNT_VIEW_WINDOW_H__ */
+
#include <tny-gtk-folder-store-tree-model.h>
#include <tny-gtk-header-list-model.h>
#include <tny-folder.h>
+#include <tny-folder-monitor.h>
#include <tny-account-store.h>
#include <tny-account.h>
#include <tny-folder.h>
gpointer user_data);
/* DnD functions */
-static void drag_data_get_cb (GtkWidget *widget,
+static void on_drag_data_get (GtkWidget *widget,
GdkDragContext *context,
GtkSelectionData *selection_data,
guint info,
guint time,
gpointer data);
-static void drag_data_received_cb (GtkWidget *widget,
+static void on_drag_data_received (GtkWidget *widget,
GdkDragContext *context,
gint x,
gint y,
guint time,
gpointer data);
-static gboolean drag_motion_cb (GtkWidget *widget,
+static gboolean on_drag_motion (GtkWidget *widget,
GdkDragContext *context,
gint x,
gint y,
gulong sig1, sig2;
GMutex *lock;
+
GtkTreeSelection *cur_selection;
TnyFolderStoreQuery *query;
guint timer_expander;
+
+ TnyFolderMonitor *monitor;
};
-#define MODEST_FOLDER_VIEW_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), \
- MODEST_TYPE_FOLDER_VIEW, \
+#define MODEST_FOLDER_VIEW_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+ MODEST_TYPE_FOLDER_VIEW, \
ModestFolderViewPrivate))
/* globals */
static GObjectClass *parent_class = NULL;
priv->cur_folder = NULL;
priv->cur_row = NULL;
priv->query = NULL;
+ priv->monitor = NULL;
+
priv->lock = g_mutex_new ();
-
+
column = gtk_tree_view_column_new ();
gtk_tree_view_append_column (GTK_TREE_VIEW(obj),column);
g_return_val_if_fail (self, FALSE);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self);
+ g_mutex_lock (priv->lock);
+ {
+ if (priv->monitor) {
+ tny_folder_monitor_stop (priv->monitor);
+ g_object_unref(G_OBJECT(priv->monitor));
+ priv->monitor = NULL;
+ }
+ }
+ g_mutex_unlock (priv->lock);
+
g_signal_emit (G_OBJECT(self), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
NULL, TRUE);
return TRUE;
if (!gtk_tree_selection_get_selected (sel, &model_sort, &iter_sort)) {
priv->cur_folder = NULL; /* FIXME: need this? */
priv->cur_row = NULL; /* FIXME: need this? */
- return;
+ return;
}
model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model_sort));
* and one for the selection of the new on */
g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
priv->cur_folder, FALSE);
- g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
- folder, TRUE);
if (priv->cur_folder) {
tny_folder_sync (priv->cur_folder, TRUE, NULL); /* FIXME */
gtk_tree_row_reference_free (priv->cur_row);
}
-
priv->cur_folder = folder;
+ g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
+ folder, TRUE);
+
path = gtk_tree_model_get_path (model_sort, &iter_sort);
priv->cur_row = gtk_tree_row_reference_new (model_sort, path);
gtk_tree_path_free (path);
/* DRAG and DROP stuff */
/*****************************************************************************/
static void
-drag_data_get_cb (GtkWidget *widget,
+on_drag_data_get (GtkWidget *widget,
GdkDragContext *context,
GtkSelectionData *selection_data,
guint info,
}
static void
-drag_data_received_cb (GtkWidget *widget,
+on_drag_data_received (GtkWidget *widget,
GdkDragContext *context,
gint x,
gint y,
gtk_tree_row_reference_free (source_row_reference);
gtk_tree_path_free (child_dest_row);
- out:
+out:
/* Never delete the source, we do it manually */
gtk_drag_finish (context, success, FALSE, time);
static gint
expand_row_timeout (gpointer data)
{
- GtkTreeView *tree_view = data;
- GtkTreePath *dest_path = NULL;
- GtkTreeViewDropPosition pos;
- gboolean result = FALSE;
-
- GDK_THREADS_ENTER ();
-
- gtk_tree_view_get_drag_dest_row (tree_view,
- &dest_path,
- &pos);
-
- if (dest_path &&
- (pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER ||
- pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE)) {
- gtk_tree_view_expand_row (tree_view, dest_path, FALSE);
- gtk_tree_path_free (dest_path);
- }
- else {
- if (dest_path)
- gtk_tree_path_free (dest_path);
-
- result = TRUE;
- }
-
- GDK_THREADS_LEAVE ();
-
- return result;
+ GtkTreeView *tree_view = data;
+ GtkTreePath *dest_path = NULL;
+ GtkTreeViewDropPosition pos;
+ gboolean result = FALSE;
+
+ GDK_THREADS_ENTER ();
+
+ gtk_tree_view_get_drag_dest_row (tree_view,
+ &dest_path,
+ &pos);
+
+ if (dest_path &&
+ (pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER ||
+ pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE)) {
+ gtk_tree_view_expand_row (tree_view, dest_path, FALSE);
+ gtk_tree_path_free (dest_path);
+ }
+ else {
+ if (dest_path)
+ gtk_tree_path_free (dest_path);
+
+ result = TRUE;
+ }
+
+ GDK_THREADS_LEAVE ();
+
+ return result;
}
static gboolean
-drag_motion_cb (GtkWidget *widget,
+on_drag_motion (GtkWidget *widget,
GdkDragContext *context,
gint x,
gint y,
gtk_signal_connect(GTK_OBJECT (self),
"drag_data_received",
- GTK_SIGNAL_FUNC(drag_data_received_cb),
+ GTK_SIGNAL_FUNC(on_drag_data_received),
NULL);
gtk_signal_connect(GTK_OBJECT (self),
"drag_motion",
- GTK_SIGNAL_FUNC(drag_motion_cb),
+ GTK_SIGNAL_FUNC(on_drag_motion),
NULL);
gtk_signal_connect(GTK_OBJECT (self),
"drag_data_get",
- GTK_SIGNAL_FUNC(drag_data_get_cb),
+ GTK_SIGNAL_FUNC(on_drag_data_get),
NULL);
}
{
ModestHeaderView *self;
ModestHeaderViewPrivate *priv;
- GtkTreeSelection *sel;
self = MODEST_HEADER_VIEW(obj);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
if (priv->headers)
g_object_unref (G_OBJECT(priv->headers));
-
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
if (priv->lock) {
g_mutex_free (priv->lock);
tmp = list;
while (tmp) {
/* get header from selection */
- gtk_tree_model_get_iter (tree_model,
- &iter,
- (GtkTreePath *) (tmp->data));
-
+ gtk_tree_model_get_iter (tree_model, &iter, (GtkTreePath *) (tmp->data));
gtk_tree_model_get (tree_model, &iter,
TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
&header, -1);
-
/* Prepend to list */
tny_list_prepend (header_list, G_OBJECT (header));
tmp = g_list_next (tmp);
struct _ModestMainWindow {
ModestWindow parent;
-
- /* public members;
- * NOTE: these can be NULL as not all frontends
- * (gtk, maemo, ...) may use all of them.
- */
- ModestHeaderView *header_view;
- ModestFolderView *folder_view;
- ModestMsgView *msg_preview;
-
- GtkWidget *status_bar;
- GtkWidget *progress_bar;
};
struct _ModestMainWindowClass {
*/
ModestWindow* modest_main_window_new (void);
+/*
+ * we could use the GType instead, but that would require
+ * that there only on widget of a certain type; that is
+ * true now, but might not be. Therefore, these types
+ */
+typedef enum {
+ MODEST_WIDGET_TYPE_HEADER_VIEW,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW,
+ MODEST_WIDGET_TYPE_MSG_PREVIEW,
+ MODEST_WIDGET_TYPE_STATUS_BAR,
+ MODEST_WIDGET_TYPE_PROGRESS_BAR,
+
+ MODEST_WIDGET_TYPE_NUM,
+} ModestWidgetType;
+
+/**
+ * modest_main_window_get_child_widget
+ *
+ * get a child window for this window
+ *
+ * Returns: a child window or NULL
+ */
+GtkWidget* modest_main_window_get_child_widget (ModestMainWindow *self,
+ ModestWidgetType widget_type);
G_END_DECLS
*/
ModestWindow* modest_msg_view_window_new (TnyMsg *msg, const gchar *account);
+
+/**
+ * modest_msg_view_window_get_message:
+ * @msg: an #ModestMsgViewWindow instance
+ *
+ * get the message in this msg view
+ *
+ * Returns: a new #TnyMsg instance, or NULL in case of error
+ */
+TnyMsg* modest_msg_view_window_get_message (ModestMsgViewWindow *window);
+
G_END_DECLS
#endif /* __MODEST_MSG_VIEW_WINDOW_H__ */
typedef struct _ModestMsgViewPrivate ModestMsgViewPrivate;
struct _ModestMsgViewPrivate {
-
GtkWidget *gtkhtml;
TnyMsg *msg;
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(self),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
-
if (priv->gtkhtml)
gtk_container_add (GTK_CONTAINER(obj), priv->gtkhtml);
if (outgoing) {
if (tny_header_get_to(header))
- g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("To"), tny_header_get_to(header));
+ g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("To"),
+ tny_header_get_to(header));
} else {
if (tny_header_get_from (header))
- g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("From"), tny_header_get_from(header));
+ g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("From"),
+ tny_header_get_from(header));
}
if (tny_header_get_subject (header))
- g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("Subject"), tny_header_get_subject(header));
+ g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("Subject"),
+ tny_header_get_subject(header));
if (outgoing) {
g_free (sent);
} else {
gchar *received = modest_text_utils_get_display_date (tny_header_get_date_received (header));
- g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("Received"), received);
+ g_string_append_printf (str, "<tr><td><b>%s</b>:</td><td>%s</td></tr>\n", _("Received"),
+ received);
g_free (received);
}
-
g_string_append (str, "</table>\n<hr>\n");
g_object_unref (G_OBJECT(header));
g_free (header_info);
}
+
+
+TnyMsg*
+modest_msg_view_get_message (ModestMsgView *self)
+{
+ g_return_val_if_fail (self, NULL);
+
+ return MODEST_MSG_VIEW_GET_PRIVATE(self)->msg;
+}
* */
void modest_msg_view_set_message (ModestMsgView *self, TnyMsg *tny_msg);
+
+
+/**
+ * modest_msg_view_set_message
+ * @self: a ModestMsgView instance
+ *
+ * get the @tny_msg e-mail message.
+ *
+ * Returns: the message or NULL
+ */
+TnyMsg* modest_msg_view_get_message (ModestMsgView *self);
+
+
+
G_END_DECLS
#endif /* __MODEST_MSG_VIEW_H__ */