going to modest-store-widget and modest-transport widget.
* got assistant to work, still quite crude though
* various other updates
pmo-trunk-r432
#
# Makefile.am
-# Time-stamp: <2006-07-25 08:52:20 (djcb)>
+# Time-stamp: <2006-07-29 20:47:31 (djcb)>
#
#
# use Automake 'trick' ==> convenience static libraries, which
modest-account-assistant.c \
modest-account-assistant.h \
modest-edit-msg-window.c \
- modest-edit-msg-window.h
+ modest-edit-msg-window.h \
+ modest-transport-widget.c \
+ modest-transport-widget.h \
+ modest-store-widget.c \
+ modest-store-widget.h
LDADD = \
$(MODEST_GSTUFF_LIBS) \
*/
#include "modest-account-assistant.h"
+#include "modest-store-widget.h"
+#include "modest-transport-widget.h"
+
#include <string.h>
/* 'private'/'protected' functions */
typedef struct _ModestAccountAssistantPrivate ModestAccountAssistantPrivate;
struct _ModestAccountAssistantPrivate {
+
ModestWidgetFactory *factory;
-
+ ModestAccountMgr *account_mgr;
+
+ GtkWidget *account_name;
GtkWidget *fullname;
GtkWidget *email;
+
+ GtkWidget *store_widget;
+ GtkWidget *transport_widget;
- /* sending */
- GtkWidget *servertype_s;
- GtkWidget *servername_s;
- GtkWidget *username_s;
- GtkWidget *server_type_s;
-
- /* receiving */
- GtkWidget *servertype_r;
- GtkWidget *servername_r;
- GtkWidget *username_r;
- GtkWidget *server_type_r;
-
- GtkWidget *remember_pwd;
- GtkWidget *maildir_chooser;
- GtkWidget *mbox_chooser;
-
- GtkWidget *maildir_config;
- GtkWidget *mbox_config;
- GtkWidget *imap_pop_config;
- GtkWidget *smtp_config;
-
- GtkWidget *receiving_subwidget;
- GtkWidget *sending_subwidget;
- GtkWidget *receiving_child;
- GtkWidget *sending_child;
+ GtkWidget *transport_holder;
+ GtkWidget *store_holder;
};
#define MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
static void
add_intro_page (ModestAccountAssistant *assistant)
{
- GtkWidget *page;
- GtkWidget *label;
+ GtkWidget *page, *label;
page = gtk_vbox_new (FALSE, 6);
static void
add_identity_page (ModestAccountAssistant *self)
{
- GtkWidget *page;
- GtkWidget *label;
- GtkWidget *table;
-
+ GtkWidget *page, *label, *table;
ModestAccountAssistantPrivate *priv;
priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
}
-
-static GtkWidget *
-maildir_configuration (ModestAccountAssistant *self)
-{
- ModestAccountAssistantPrivate *priv;
- GtkWidget *label, *box, *hbox;
-
- priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
- box = gtk_vbox_new (FALSE, 6);
-
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),
- _("<b>Maildir configuration</b>"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),
- _("Please select the path to your Maildir below"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
- label = gtk_label_new (_("Path:"));
-
- priv->maildir_chooser =
- gtk_file_chooser_button_new (_("(none)"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
-
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(hbox), priv->maildir_chooser, FALSE, FALSE, 6);
-
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);
-
- return box;
-}
-
-
-static GtkWidget*
-mbox_configuration (ModestAccountAssistant *self)
-{
- ModestAccountAssistantPrivate *priv;
- GtkWidget *label, *box, *hbox;
-
- priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
- box = gtk_vbox_new (FALSE, 6);
-
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),
- _("<b>Mbox configuration</b>"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),
- _("Please select your mbox file below"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
- label = gtk_label_new (_("mbox:"));
-
- priv->mbox_chooser =
- gtk_file_chooser_button_new (_("(none)"),
- GTK_FILE_CHOOSER_ACTION_OPEN);
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(hbox), priv->mbox_chooser, FALSE, FALSE, 6);
-
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);
-
- return box;
-}
-
-
-static GtkWidget*
-imap_pop_configuration (ModestAccountAssistant *self)
-{
- ModestAccountAssistantPrivate *priv;
- GtkWidget *label, *box, *hbox;
-
- priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
- box = gtk_vbox_new (FALSE, 6);
-
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),_("<b>Server configuration</b>"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
- hbox = gtk_hbox_new (FALSE, 6);
- label = gtk_label_new (_("Username:"));
- if (!priv->username_r)
- priv->username_r = gtk_entry_new_with_max_length (40);
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX(hbox), priv->username_r,FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 6);
- label = gtk_label_new (_("Server:"));
- if (!priv->servername_r)
- priv->servername_r = gtk_entry_new_with_max_length (40);
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX(hbox), priv->servername_r,FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-
- label = gtk_label_new(NULL);
- gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 6);
- label = gtk_label_new(NULL);
- gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
- (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
- FALSE, FALSE,0);
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 6);
- label = gtk_label_new(NULL);
-
- gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
- (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
- FALSE, FALSE, 0);
-
- priv->remember_pwd =
- gtk_check_button_new_with_label (_("Remember password"));
- gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
- FALSE, FALSE, 0);
-
-
- gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-
- return box;
-}
-
-
-
static void
on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
{
priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
- if (priv->receiving_child)
- gtk_container_remove (GTK_CONTAINER(priv->receiving_subwidget),
- priv->receiving_child);
+ if (priv->store_widget)
+ gtk_container_remove (GTK_CONTAINER(priv->store_holder),
+ priv->store_widget);
- if (strcmp (chosen, MODEST_PROTO_POP) == 0 ||
- strcmp (chosen, MODEST_PROTO_IMAP) == 0) {
- if (!priv->imap_pop_config)
- priv->imap_pop_config = imap_pop_configuration (self);
- g_object_ref (G_OBJECT(priv->imap_pop_config));
- priv->receiving_child = priv->imap_pop_config;
-
- } else if (strcmp (chosen, MODEST_PROTO_MAILDIR) == 0) {
-
- if (!priv->maildir_config)
- priv->maildir_config = maildir_configuration (self);
- g_object_ref (G_OBJECT(priv->maildir_config));
- priv->receiving_child = priv->maildir_config;
-
- } else if (strcmp (chosen, MODEST_PROTO_MBOX) == 0) {
- if (!priv->mbox_config)
- priv->mbox_config = mbox_configuration (self);
- g_object_ref (G_OBJECT(priv->mbox_config));
- priv->receiving_child = priv->mbox_config;
- } else
- priv->receiving_child = gtk_label_new (NULL);
+ priv->store_widget = modest_store_widget_new (priv->factory, chosen);
+ gtk_container_add (GTK_CONTAINER(priv->store_holder),
+ priv->store_widget);
- gtk_container_add (GTK_CONTAINER(priv->receiving_subwidget),
- priv->receiving_child);
-
- gtk_widget_show_all (priv->receiving_subwidget);
+ gtk_widget_show_all (priv->store_holder);
}
gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0);
- priv->receiving_subwidget = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX(page), priv->receiving_subwidget,
+ priv->store_holder = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(page), priv->store_holder,
TRUE, TRUE, 0);
gtk_assistant_append_page (GTK_ASSISTANT(self), page);
_("Receiving mail"));
gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
GTK_ASSISTANT_PAGE_INTRO);
-
gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
page, TRUE);
gtk_widget_show_all (page);
}
-static GtkWidget*
-smtp_configuration (ModestAccountAssistant *self)
-{
- ModestAccountAssistantPrivate *priv;
- GtkWidget *label, *box;
-
- priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
- box = gtk_vbox_new (FALSE, 6);
-
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL(label),
- _("<b>SMTP configuration</b>"));
- gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
- return box;
-}
static void
chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
- if (priv->sending_child)
- gtk_container_remove (GTK_CONTAINER(priv->sending_subwidget),
- priv->sending_child);
+ if (priv->transport_widget)
+ gtk_container_remove (GTK_CONTAINER(priv->transport_holder),
+ priv->transport_widget);
- if (strcmp (chosen, MODEST_PROTO_SENDMAIL) == 0) {
- priv->sending_child = gtk_label_new (NULL);
+ priv->transport_widget = modest_transport_widget_new (priv->factory,
+ chosen);
- } else if (strcmp (chosen, MODEST_PROTO_SMTP) == 0) {
- if (!priv->smtp_config)
- priv->smtp_config = smtp_configuration (self);
- g_object_ref (G_OBJECT(priv->smtp_config));
- priv->sending_child = priv->smtp_config;
- } else
- g_assert_not_reached ();
-
- gtk_container_add (GTK_CONTAINER(priv->sending_subwidget),
- priv->sending_child);
- gtk_widget_show_all (priv->sending_subwidget);
+ gtk_container_add (GTK_CONTAINER(priv->transport_holder),
+ priv->transport_widget);
+
+ gtk_widget_show_all (priv->transport_holder);
}
gtk_box_pack_start (GTK_BOX(page),
gtk_label_new (
_("Please select among the following options")),
- FALSE, FALSE, 6);
- box = gtk_hbox_new (FALSE, 6);
+ FALSE, FALSE, 0);
+ box = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX(box),
gtk_label_new(_("Server type")),
- FALSE,FALSE,6);
+ FALSE,FALSE,0);
combo = modest_widget_factory_get_combo_box (priv->factory,
MODEST_COMBO_BOX_TYPE_TRANSPORT_PROTOS);
g_signal_connect (G_OBJECT(combo), "changed",
G_CALLBACK(on_sending_combo_box_changed), self);
- gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,6);
- gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,0);
+ gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 0);
gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0);
- priv->sending_subwidget = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX(page), priv->sending_subwidget,
- TRUE, TRUE, 0);
+ priv->transport_holder = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(page), priv->transport_holder,
+ FALSE, FALSE, 0);
gtk_assistant_append_page (GTK_ASSISTANT(self), page);
_("Sending mail"));
gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
GTK_ASSISTANT_PAGE_INTRO);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
+ page, TRUE);
+ gtk_widget_show_all (page);
+}
+
+
+
+static void
+add_final_page (ModestAccountAssistant *self)
+{
+ GtkWidget *page, *box;
+ ModestAccountAssistantPrivate *priv;
+
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+ page = gtk_vbox_new (FALSE, 6);
+
+ gtk_box_pack_start (GTK_BOX(page),
+ gtk_label_new (
+ _("We're almost done. Press 'Apply' to store this new account")),
+ FALSE, FALSE, 6);
+ box = gtk_hbox_new (FALSE, 6);
+ priv->account_name =
+ gtk_entry_new_with_max_length (40);
+ gtk_entry_set_text (GTK_ENTRY(priv->account_name),
+ gtk_entry_get_text(GTK_ENTRY(priv->email)));
+ gtk_box_pack_start (GTK_BOX(box),gtk_label_new(_("Account name:")),
+ FALSE,FALSE,6);
+ gtk_box_pack_start (GTK_BOX(box),priv->account_name , FALSE,FALSE,6);
+
+ gtk_box_pack_start (GTK_BOX(page), box, FALSE, FALSE, 6);
+
+ gtk_assistant_append_page (GTK_ASSISTANT(self), page);
+
+ gtk_assistant_set_page_title (GTK_ASSISTANT(self), page,
+ _("Account Management"));
+ gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
+ GTK_ASSISTANT_PAGE_CONFIRM);
gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
page, TRUE);
gtk_widget_show_all (page);
}
+
+
static void
{
ModestAccountAssistantPrivate *priv;
- priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);
-
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);
priv->factory = NULL;
+ priv->account_mgr = NULL;
- priv->maildir_config = NULL;
- priv->mbox_config = NULL;
- priv->imap_pop_config = NULL;
- priv->smtp_config = NULL;
-
- priv->receiving_child = NULL;
- priv->sending_child = NULL;
+ priv->store_widget = NULL;
+ priv->transport_widget = NULL;
}
static void
g_object_unref (G_OBJECT(priv->factory));
priv->factory = NULL;
}
+
+ if (priv->account_mgr) {
+ g_object_unref (G_OBJECT(priv->account_mgr));
+ priv->account_mgr = NULL;
+ }
+
+
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
break;
default: g_assert_not_reached ();
- };
-
+ };
+}
+
+static const gchar*
+get_account_name (ModestAccountAssistant *self)
+{
+ ModestAccountAssistantPrivate *priv;
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->account_name));
+}
+
+static const gchar*
+get_fullname (ModestAccountAssistant *self)
+{
+ ModestAccountAssistantPrivate *priv;
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->fullname));
+}
+
+
+
+static const gchar*
+get_email (ModestAccountAssistant *self)
+{
+ ModestAccountAssistantPrivate *priv;
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->email));
}
+
+static void
+on_apply (ModestAccountAssistant *self, gpointer user_data)
+{
+ ModestAccountAssistantPrivate *priv;
+ gchar *store_name;
+ const gchar *account_name;
+ ModestStoreWidget *store;
+
+ priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+ /* create account */
+
+ /* create server account -> store */
+ store = MODEST_STORE_WIDGET(priv->store_widget);
+ store_name = g_strdup_printf ("%s:%s@%s",
+ modest_store_widget_get_proto (store),
+ modest_store_widget_get_username (store),
+ modest_store_widget_get_servername (store));
+
+ modest_account_mgr_add_server_account (priv->account_mgr,
+ store_name,
+ modest_store_widget_get_servername (store),
+ modest_store_widget_get_username (store),
+ NULL,
+ modest_store_widget_get_proto (store));
+
+ /* create server account -> transport */
+ account_name = get_account_name (self);
+ modest_account_mgr_add_account (priv->account_mgr,
+ account_name,
+ store_name,
+ NULL, NULL);
+ modest_account_mgr_set_string (priv->account_mgr,
+ account_name,
+ MODEST_ACCOUNT_FULLNAME,
+ get_fullname(self), FALSE, NULL);
+ modest_account_mgr_set_string (priv->account_mgr,
+ account_name,
+ MODEST_ACCOUNT_EMAIL,
+ get_email(self), FALSE, NULL);
+
+ g_free (store_name);
+}
+
+
+
GtkWidget*
-modest_account_assistant_new (ModestWidgetFactory *factory)
+modest_account_assistant_new (ModestAccountMgr *account_mgr, ModestWidgetFactory *factory)
{
GObject *obj;
ModestAccountAssistant *self;
ModestAccountAssistantPrivate *priv;
g_return_val_if_fail (factory, NULL);
+ g_return_val_if_fail (account_mgr, NULL);
obj = g_object_new(MODEST_TYPE_ACCOUNT_ASSISTANT, NULL);
self = MODEST_ACCOUNT_ASSISTANT(obj);
priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
g_object_ref (factory);
priv->factory = factory;
+ g_object_ref (account_mgr);
+ priv->account_mgr = account_mgr;
+
add_intro_page (self);
add_identity_page (self);
add_receiving_page (self);
- add_sending_page (self);
+ add_sending_page (self);
+ add_final_page (self);
gtk_assistant_set_current_page (GTK_ASSISTANT(self), 0);
gtk_window_set_title (GTK_WINDOW(self),
gtk_window_set_modal (GTK_WINDOW(self), TRUE);
+ g_signal_connect (G_OBJECT(self), "apply",
+ G_CALLBACK(on_apply), NULL);
g_signal_connect (G_OBJECT(self), "cancel",
G_CALLBACK(on_cancel), NULL);
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <modest-widget-factory.h>
+#include <modest-account-mgr.h>
G_BEGIN_DECLS
/* member functions */
GType modest_account_assistant_get_type (void) G_GNUC_CONST;
-GtkWidget* modest_account_assistant_new (ModestWidgetFactory *factory);
+GtkWidget* modest_account_assistant_new (ModestAccountMgr* account_mgr,
+ ModestWidgetFactory *factory);
G_END_DECLS
typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate;
struct _ModestAccountViewWindowPrivate {
- ModestConf *conf;
+ ModestAccountMgr *account_mgr;
ModestWidgetFactory *widget_factory;
GtkWidget *edit_button, *remove_button;
};
priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
- priv->conf = NULL;
+ priv->account_mgr = NULL;
priv->widget_factory = NULL;
}
priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
- if (priv->conf) {
- g_object_unref (G_OBJECT(priv->conf));
- priv->conf = NULL;
+ if (priv->account_mgr) {
+ g_object_unref (G_OBJECT(priv->account_mgr));
+ priv->account_mgr = NULL;
}
if (priv->widget_factory) {
priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
- assistant = modest_account_assistant_new (priv->widget_factory);
+ assistant = modest_account_assistant_new (priv->account_mgr,
+ priv->widget_factory);
gtk_window_set_transient_for (GTK_WINDOW(assistant),
GTK_WINDOW(self));
gtk_widget_set_sensitive (edit_button, FALSE);
gtk_widget_set_sensitive (remove_button, FALSE);
- /* remember these, so we can deactivate them when nothing i
+ /* remember these, so we can deactivate them when nothing is
* selected */
priv->remove_button = remove_button;
priv->edit_button = edit_button;
GtkWidget*
-modest_account_view_window_new (ModestConf *conf, ModestWidgetFactory *factory)
+modest_account_view_window_new (ModestAccountMgr *account_mgr, ModestWidgetFactory *factory)
{
GObject *obj;
ModestAccountViewWindowPrivate *priv;
- g_return_val_if_fail (conf, NULL);
+ g_return_val_if_fail (account_mgr, NULL);
g_return_val_if_fail (factory, NULL);
obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW_WINDOW, NULL);
priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
- g_object_ref (G_OBJECT(conf));
- priv->conf = conf;
+ g_object_ref (G_OBJECT(account_mgr));
+ priv->account_mgr = account_mgr;
g_object_ref (G_OBJECT(factory));
priv->widget_factory = factory;
/* member functions */
GType modest_account_view_window_get_type (void) G_GNUC_CONST;
-
-GtkWidget* modest_account_view_window_new (ModestConf *conf,
+GtkWidget* modest_account_view_window_new (ModestAccountMgr *account_mgr,
ModestWidgetFactory *factory);
G_END_DECLS
#include <modest-widget-memory.h>
/* 'private'/'protected' functions */
-static void modest_edit_msg_window_class_init (ModestEditMsgWindowClass *klass);
-static void modest_edit_msg_window_init (ModestEditMsgWindow *obj);
-static void modest_edit_msg_window_finalize (GObject *obj);
+static void modest_edit_msg_window_class_init (ModestEditMsgWindowClass *klass);
+static void modest_edit_msg_window_init (ModestEditMsgWindow *obj);
+static void modest_edit_msg_window_finalize (GObject *obj);
/* list my signals */
enum {
priv->subject_field = gtk_entry_new_with_max_length (40);
header_table = gtk_table_new (4,2, FALSE);
- gtk_table_attach_defaults (GTK_TABLE(header_table), to_button, 0,1,0,1);
- gtk_table_attach_defaults (GTK_TABLE(header_table), cc_button, 0,1,1,2);
- gtk_table_attach_defaults (GTK_TABLE(header_table), bcc_button, 0,1,2,3);
- gtk_table_attach_defaults (GTK_TABLE(header_table), subject_label, 0,1,3,4);
+ gtk_table_attach (GTK_TABLE(header_table), to_button, 0,1,0,1,
+ GTK_SHRINK, 0, 0, 0);
+ gtk_table_attach (GTK_TABLE(header_table), cc_button, 0,1,1,2,
+ GTK_SHRINK, 0, 0, 0);
+ gtk_table_attach (GTK_TABLE(header_table), bcc_button, 0,1,2,3,
+ GTK_SHRINK, 0, 0, 0);
+ gtk_table_attach (GTK_TABLE(header_table), subject_label, 0,1,3,4,
+ GTK_SHRINK, 0, 0, 0);
gtk_table_attach_defaults (GTK_TABLE(header_table), priv->to_field, 1,2,0,1);
gtk_table_attach_defaults (GTK_TABLE(header_table), priv->cc_field, 1,2,1,2);
main_vbox = gtk_vbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX(main_vbox), header_table, TRUE, TRUE, 6);
+ gtk_box_pack_start (GTK_BOX(main_vbox), header_table, FALSE, FALSE, 6);
gtk_box_pack_start (GTK_BOX(main_vbox), priv->msg_body, TRUE, TRUE, 6);
gtk_widget_show_all (GTK_WIDGET(main_vbox));
}
+static gboolean
+on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self)
+{
+ ModestEditMsgWindowPrivate *priv;
+ priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self);
+
+ modest_widget_memory_save_settings (priv->conf,
+ GTK_WIDGET(priv->msg_body),
+ "modest-edit-msg-body");
+ gtk_widget_destroy (GTK_WIDGET(self));
+ return TRUE;
+}
+
+
+
GtkWidget*
modest_edit_msg_window_new (ModestConf *conf, ModestEditType type,
modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(priv->msg_body),
"modest-edit-msg-body");
+
+ g_signal_connect (G_OBJECT(obj), "delete-event",
+ G_CALLBACK(on_delete_event), obj);
+
return GTK_WIDGET (obj);
}
ModestWidgetFactory *widget_factory;
ModestConf *conf;
+ ModestAccountMgr *account_mgr;
ModestHeaderView *header_view;
ModestFolderView *folder_view;
sizeof(ModestMainWindow),
1, /* n_preallocs */
(GInstanceInitFunc) modest_main_window_init,
+ NULL
};
my_type = g_type_register_static (GTK_TYPE_WINDOW,
"ModestMainWindow",
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
priv->widget_factory = NULL;
+ priv->conf = NULL;
+ priv->account_mgr = NULL;
}
static void
g_object_unref (G_OBJECT(priv->widget_factory));
priv->widget_factory = NULL;
}
- if (priv->conf) {
+ if (priv->conf) {
g_object_unref (G_OBJECT(priv->conf));
priv->conf = NULL;
}
+
+ if (priv->account_mgr) {
+ g_object_unref (G_OBJECT(priv->account_mgr));
+ priv->account_mgr = NULL;
+ }
+
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
on_menu_about (GtkWidget *widget, gpointer data)
{
GtkWidget *about;
-
+ const gchar *authors[] = {
+ "Dirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>",
+ NULL
+ };
about = gtk_about_dialog_new ();
gtk_about_dialog_set_name (GTK_ABOUT_DIALOG(about), PACKAGE_NAME);
gtk_about_dialog_set_version (GTK_ABOUT_DIALOG(about),PACKAGE_VERSION);
_("Copyright (c) 2006, Nokia Corporation\n"
"All rights reserved."));
gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG(about),
- _("a modest e-mail client"));
+ _("a modest e-mail client\n\n"
+ "design and implementation: Dirk-Jan C. Binnema\n"
+ "contributions from the fine people at KernelConcepts\n\n"
+ "uses the tinymail email framework written by Philip van Hoof"));
+ gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG(about), authors);
+ gtk_about_dialog_set_website (GTK_ABOUT_DIALOG(about), "http://modest.garage.maemo.org");
+
gtk_dialog_run (GTK_DIALOG (about));
gtk_widget_destroy(about);
}
g_return_if_fail (self);
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
- account_win = modest_account_view_window_new (priv->conf,
+ account_win = modest_account_view_window_new (priv->account_mgr,
priv->widget_factory);
gtk_window_set_transient_for (GTK_WINDOW(account_win),
GtkWidget *msg_win;
ModestMainWindowPrivate *priv;
-
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
msg_win = modest_edit_msg_window_new (priv->conf,
ModestHeaderViewColumn cols[] = {
MODEST_HEADER_VIEW_COLUMN_MSGTYPE,
MODEST_HEADER_VIEW_COLUMN_ATTACH,
- MODEST_HEADER_VIEW_COLUMN_FROM,
- MODEST_HEADER_VIEW_COLUMN_SUBJECT,
- MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER
};
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMainWindow *self)
{
save_sizes (self);
+ gtk_widget_destroy (GTK_WIDGET(self));
+
return TRUE;
}
GtkWidget*
-modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
+modest_main_window_new (ModestConf *conf, ModestAccountMgr *account_mgr,
+ ModestWidgetFactory *factory)
{
GObject *obj;
ModestMainWindowPrivate *priv;
g_object_ref (conf);
priv->conf = conf;
+
+ g_object_ref (account_mgr);
+ priv->account_mgr = account_mgr;
+
/* widgets from factory */
priv->folder_view = modest_widget_factory_get_folder_view (factory);
gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview));
gtk_widget_show (GTK_WIDGET(priv->header_view));
-
+ gtk_tree_view_columns_autosize (GTK_TREE_VIEW(priv->header_view));
+
+
/* status bar / progress */
- status_hbox = gtk_hbox_new (TRUE, 6);
+ status_hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX(status_hbox),
modest_widget_factory_get_status_bar(factory),
- TRUE, TRUE, 6);
+ TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX(status_hbox),
modest_widget_factory_get_progress_bar(factory),
- TRUE, FALSE, 6);
- gtk_box_pack_end (GTK_BOX(status_hbox),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(status_hbox),
modest_widget_factory_get_online_toggle(factory),
- FALSE, FALSE, 6);
+ FALSE, FALSE, 0);
/* putting it all together... */
main_vbox = gtk_vbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 6);
- gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE, 6);
- gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE,0);
+ gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 0);
gtk_container_add (GTK_CONTAINER(obj), main_vbox);
restore_sizes (MODEST_MAIN_WINDOW(obj));
+ gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+
gtk_widget_show_all (main_vbox);
+
g_signal_connect (G_OBJECT(obj), "delete-event",
G_CALLBACK(on_delete_event), obj);
-
return GTK_WIDGET(obj);
}
#include <gtk/gtkwindow.h>
#include <glib/gi18n.h>
#include <modest-widget-factory.h>
+#include <modest-conf.h>
+#include <modest-account-mgr.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
GType modest_main_window_get_type (void) G_GNUC_CONST;
-GtkWidget* modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf);
+GtkWidget* modest_main_window_new (ModestConf *conf, ModestAccountMgr *account_mgr,
+ ModestWidgetFactory *factory);
G_END_DECLS
--- /dev/null
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "modest-store-widget.h"
+#include <string.h>
+
+/* 'private'/'protected' functions */
+static void modest_store_widget_class_init (ModestStoreWidgetClass *klass);
+static void modest_store_widget_init (ModestStoreWidget *obj);
+static void modest_store_widget_finalize (GObject *obj);
+/* list my signals */
+enum {
+ /* MY_SIGNAL_1, */
+ /* MY_SIGNAL_2, */
+ LAST_SIGNAL
+};
+
+typedef struct _ModestStoreWidgetPrivate ModestStoreWidgetPrivate;
+struct _ModestStoreWidgetPrivate {
+
+ gchar* proto;
+
+ GtkWidget *servername;
+ GtkWidget *username;
+ GtkWidget *security;
+ GtkWidget *auth;
+ GtkWidget *chooser;
+ GtkWidget *remember_pwd;
+
+ ModestWidgetFactory *factory;
+};
+#define MODEST_STORE_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+ MODEST_TYPE_STORE_WIDGET, \
+ ModestStoreWidgetPrivate))
+/* globals */
+static GtkContainerClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_store_widget_get_type (void)
+{
+ static GType my_type = 0;
+ if (!my_type) {
+ static const GTypeInfo my_info = {
+ sizeof(ModestStoreWidgetClass),
+ NULL, /* base init */
+ NULL, /* base finalize */
+ (GClassInitFunc) modest_store_widget_class_init,
+ NULL, /* class finalize */
+ NULL, /* class data */
+ sizeof(ModestStoreWidget),
+ 1, /* n_preallocs */
+ (GInstanceInitFunc) modest_store_widget_init,
+ NULL
+ };
+ my_type = g_type_register_static (GTK_TYPE_VBOX,
+ "ModestStoreWidget",
+ &my_info, 0);
+ }
+ return my_type;
+}
+
+static void
+modest_store_widget_class_init (ModestStoreWidgetClass *klass)
+{
+ GObjectClass *gobject_class;
+ gobject_class = (GObjectClass*) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = modest_store_widget_finalize;
+
+ g_type_class_add_private (gobject_class, sizeof(ModestStoreWidgetPrivate));
+
+ /* signal definitions go here, e.g.: */
+/* signals[MY_SIGNAL_1] = */
+/* g_signal_new ("my_signal_1",....); */
+/* signals[MY_SIGNAL_2] = */
+/* g_signal_new ("my_signal_2",....); */
+/* etc. */
+}
+
+static void
+modest_store_widget_init (ModestStoreWidget *obj)
+{
+ ModestStoreWidgetPrivate *priv;
+
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+
+ priv->proto = NULL;
+}
+
+
+
+static GtkWidget *
+maildir_configuration (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+ GtkWidget *label, *box, *hbox;
+
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+ box = gtk_vbox_new (FALSE, 6);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),
+ _("<b>Maildir configuration</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),
+ _("Please select the path to your Maildir below"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+
+ label = gtk_label_new (_("Path:"));
+
+ priv->chooser =
+ gtk_file_chooser_button_new (_("(none)"),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6);
+
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);
+
+ return box;
+}
+
+
+static GtkWidget*
+mbox_configuration (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+ GtkWidget *label, *box, *hbox;
+
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+ box = gtk_vbox_new (FALSE, 6);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),
+ _("<b>Mbox configuration</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),
+ _("Please select your mbox file below"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+
+ label = gtk_label_new (_("mbox:"));
+
+ priv->chooser =
+ gtk_file_chooser_button_new (_("(none)"),
+ GTK_FILE_CHOOSER_ACTION_OPEN);
+ hbox = gtk_hbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6);
+
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);
+
+ return box;
+}
+
+
+static GtkWidget*
+imap_pop_configuration (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+ GtkWidget *label, *box, *hbox;
+
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+ box = gtk_vbox_new (FALSE, 6);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),_("<b>Server configuration</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new (_("Username:"));
+ if (!priv->username)
+ priv->username = gtk_entry_new_with_max_length (40);
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(hbox), priv->username,FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new (_("Server:"));
+ if (!priv->servername)
+ priv->servername = gtk_entry_new_with_max_length (40);
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(hbox), priv->servername,FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+ label = gtk_label_new(NULL);
+ gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new(NULL);
+ gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
+ (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
+ FALSE, FALSE,0);
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new(NULL);
+
+ gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
+ (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
+ FALSE, FALSE, 0);
+
+ priv->remember_pwd =
+ gtk_check_button_new_with_label (_("Remember password"));
+ gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
+ FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+ return box;
+}
+
+
+static void
+modest_store_widget_finalize (GObject *obj)
+{
+ ModestStoreWidgetPrivate *priv;
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+
+ if (priv->factory) {
+ g_object_unref (priv->factory);
+ priv->factory = NULL;
+ }
+
+ if (priv->proto) {
+ g_free (priv->proto);
+ priv->proto = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+
+GtkWidget*
+modest_store_widget_new (ModestWidgetFactory *factory, const gchar *proto)
+{
+ GObject *obj;
+ GtkWidget *w;
+ ModestStoreWidget *self;
+ ModestStoreWidgetPrivate *priv;
+
+ g_return_val_if_fail (proto, NULL);
+ g_return_val_if_fail (factory, NULL);
+
+ obj = g_object_new(MODEST_TYPE_STORE_WIDGET, NULL);
+ self = MODEST_STORE_WIDGET(obj);
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+ g_object_ref (factory);
+ priv->factory = factory;
+
+ priv->proto = g_strdup (proto);
+
+ if (strcmp (proto, MODEST_PROTO_POP) == 0 ||
+ strcmp (proto, MODEST_PROTO_IMAP) == 0) {
+ w = imap_pop_configuration (self);
+ } else if (strcmp (proto, MODEST_PROTO_MAILDIR) == 0) {
+ w = maildir_configuration (self);
+ } else if (strcmp (proto, MODEST_PROTO_MBOX) == 0) {
+ w = mbox_configuration (self);
+ } else
+ w = gtk_label_new ("");
+
+ gtk_widget_show_all (w);
+ gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2);
+
+ return GTK_WIDGET(self);
+}
+
+
+gboolean
+modest_store_widget_get_remember_password (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, FALSE);
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+}
+
+
+const gchar*
+modest_store_widget_get_username (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, NULL);
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->username));
+}
+
+const gchar*
+modest_store_widget_get_servername (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, NULL);
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+}
+
+
+const gchar*
+modest_store_widget_get_proto (ModestStoreWidget *self)
+{
+ ModestStoreWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, FALSE);
+ priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+ return priv->proto;
+}
+
--- /dev/null
+/* modest-store-widget.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_STORE_WIDGET_H__
+#define __MODEST_STORE_WIDGET_H__
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <modest-widget-factory.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_STORE_WIDGET (modest_store_widget_get_type())
+#define MODEST_STORE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidget))
+#define MODEST_STORE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_STORE_WIDGET,GtkContainer))
+#define MODEST_IS_STORE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_STORE_WIDGET))
+#define MODEST_IS_STORE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_STORE_WIDGET))
+#define MODEST_STORE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidgetClass))
+
+typedef struct _ModestStoreWidget ModestStoreWidget;
+typedef struct _ModestStoreWidgetClass ModestStoreWidgetClass;
+
+struct _ModestStoreWidget {
+ GtkVBox parent;
+ /* insert public members, if any */
+};
+
+struct _ModestStoreWidgetClass {
+ GtkVBoxClass parent_class;
+ /* insert signal callback declarations, eg. */
+ /* void (* my_event) (ModestStoreWidget* obj); */
+};
+
+/* member functions */
+GType modest_store_widget_get_type (void) G_GNUC_CONST;
+
+GtkWidget* modest_store_widget_new (ModestWidgetFactory *factory,
+ const gchar* proto);
+
+gboolean modest_store_widget_get_remember_password (ModestStoreWidget *self);
+const gchar* modest_store_widget_get_username (ModestStoreWidget *self);
+const gchar* modest_store_widget_get_servername (ModestStoreWidget *self);
+const gchar* modest_store_widget_get_proto (ModestStoreWidget *self);
+
+
+
+
+
+G_END_DECLS
+
+#endif /* __MODEST_STORE_WIDGET_H__ */
+
--- /dev/null
+/* modest-transport-widget.c */
+
+/* insert (c)/licensing information) */
+
+#include "modest-transport-widget.h"
+#include <string.h>
+
+/* 'private'/'protected' functions */
+static void modest_transport_widget_class_init (ModestTransportWidgetClass *klass);
+static void modest_transport_widget_init (ModestTransportWidget *obj);
+static void modest_transport_widget_finalize (GObject *obj);
+/* list my signals */
+enum {
+ /* MY_SIGNAL_1, */
+ /* MY_SIGNAL_2, */
+ LAST_SIGNAL
+};
+
+typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate;
+struct _ModestTransportWidgetPrivate {
+
+ gchar *proto;
+ ModestWidgetFactory *factory;
+
+ GtkWidget *servername;
+ GtkWidget *username;
+ GtkWidget *auth;
+ GtkWidget *remember_pwd;
+
+};
+#define MODEST_TRANSPORT_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+ MODEST_TYPE_TRANSPORT_WIDGET, \
+ ModestTransportWidgetPrivate))
+/* globals */
+static GtkContainerClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_transport_widget_get_type (void)
+{
+ static GType my_type = 0;
+ if (!my_type) {
+ static const GTypeInfo my_info = {
+ sizeof(ModestTransportWidgetClass),
+ NULL, /* base init */
+ NULL, /* base finalize */
+ (GClassInitFunc) modest_transport_widget_class_init,
+ NULL, /* class finalize */
+ NULL, /* class data */
+ sizeof(ModestTransportWidget),
+ 1, /* n_preallocs */
+ (GInstanceInitFunc) modest_transport_widget_init,
+ };
+ my_type = g_type_register_static (GTK_TYPE_VBOX,
+ "ModestTransportWidget",
+ &my_info, 0);
+ }
+ return my_type;
+}
+
+static void
+modest_transport_widget_class_init (ModestTransportWidgetClass *klass)
+{
+ GObjectClass *gobject_class;
+ gobject_class = (GObjectClass*) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = modest_transport_widget_finalize;
+
+ g_type_class_add_private (gobject_class, sizeof(ModestTransportWidgetPrivate));
+
+ /* signal definitions go here, e.g.: */
+/* signals[MY_SIGNAL_1] = */
+/* g_signal_new ("my_signal_1",....); */
+/* signals[MY_SIGNAL_2] = */
+/* g_signal_new ("my_signal_2",....); */
+/* etc. */
+}
+
+static void
+modest_transport_widget_init (ModestTransportWidget *obj)
+{
+ ModestTransportWidgetPrivate *priv;
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj);
+
+ priv->proto = NULL;
+}
+
+static void
+modest_transport_widget_finalize (GObject *obj)
+{
+ ModestTransportWidgetPrivate *priv;
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj);
+
+ if (priv->factory) {
+ g_object_unref (priv->factory);
+ priv->factory = NULL;
+ }
+
+ if (priv->proto) {
+ g_free (priv->proto);
+ priv->proto = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+static GtkWidget*
+smtp_configuration (ModestTransportWidget *self)
+{
+ ModestTransportWidgetPrivate *priv;
+ GtkWidget *label, *box, *hbox;
+
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+ box = gtk_vbox_new (FALSE, 6);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL(label),
+ _("<b>SMTP configuration</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+
+ priv->servername = gtk_entry_new_with_max_length (40);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new (_("Servername: ")),
+ FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), priv->servername,
+ TRUE, TRUE, 6);
+ gtk_box_pack_start (GTK_BOX(box), hbox, TRUE, TRUE, 6);
+
+ priv->auth = gtk_check_button_new_with_label (_("Requires authentication"));
+ gtk_box_pack_start (GTK_BOX(box), priv->auth, TRUE, FALSE, 6);
+
+ label = gtk_label_new(NULL);
+ gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
+ gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new(NULL);
+ gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
+ (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
+ FALSE, FALSE,0);
+ gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ label = gtk_label_new(NULL);
+
+ gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box
+ (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
+ FALSE, FALSE, 0);
+ priv->remember_pwd =
+ gtk_check_button_new_with_label (_("Remember password"));
+ gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
+ FALSE, FALSE, 0);
+ return box;
+}
+
+
+
+GtkWidget*
+modest_transport_widget_new (ModestWidgetFactory *factory, const gchar* proto)
+{
+ GObject *obj;
+ GtkWidget *w;
+ ModestTransportWidget *self;
+ ModestTransportWidgetPrivate *priv;
+
+ g_return_val_if_fail (proto, NULL);
+ g_return_val_if_fail (factory, NULL);
+
+ obj = g_object_new(MODEST_TYPE_TRANSPORT_WIDGET, NULL);
+ self = MODEST_TRANSPORT_WIDGET(obj);
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+ g_object_ref (factory);
+ priv->factory = factory;
+
+ priv->proto = g_strdup (proto);
+
+ if (strcmp (proto, MODEST_PROTO_SMTP) == 0) {
+ w = smtp_configuration (self);
+ } else
+ w = gtk_label_new ("");
+
+ gtk_widget_show_all (w);
+ gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2);
+
+ return GTK_WIDGET(self);
+}
+
+
+gboolean
+modest_transport_widget_get_remember_password (ModestTransportWidget *self)
+{
+ ModestTransportWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, FALSE);
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+}
+
+
+const gchar*
+modest_transport_widget_get_username (ModestTransportWidget *self)
+{
+ ModestTransportWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, NULL);
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->username));
+}
+
+const gchar*
+modest_transport_widget_get_servername (ModestTransportWidget *self)
+{
+ ModestTransportWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, NULL);
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+ return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+}
+
+
+const gchar*
+modest_transport_widget_get_proto (ModestTransportWidget *self)
+{
+ ModestTransportWidgetPrivate *priv;
+
+ g_return_val_if_fail (self, FALSE);
+ priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+ return priv->proto;
+}
+
--- /dev/null
+/* modest-transport-widget.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_TRANSPORT_WIDGET_H__
+#define __MODEST_TRANSPORT_WIDGET_H__
+
+#include <gtk/gtk.h>
+#include <modest-widget-factory.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_TRANSPORT_WIDGET (modest_transport_widget_get_type())
+#define MODEST_TRANSPORT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidget))
+#define MODEST_TRANSPORT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_TRANSPORT_WIDGET,GtkContainer))
+#define MODEST_IS_TRANSPORT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_TRANSPORT_WIDGET))
+#define MODEST_IS_TRANSPORT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_TRANSPORT_WIDGET))
+#define MODEST_TRANSPORT_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidgetClass))
+
+typedef struct _ModestTransportWidget ModestTransportWidget;
+typedef struct _ModestTransportWidgetClass ModestTransportWidgetClass;
+
+struct _ModestTransportWidget {
+ GtkVBox parent;
+ /* insert public members, if any */
+};
+
+struct _ModestTransportWidgetClass {
+ GtkVBoxClass parent_class;
+ /* insert signal callback declarations, eg. */
+ /* void (* my_event) (ModestTransportWidget* obj); */
+};
+
+/* member functions */
+GType modest_transport_widget_get_type (void) G_GNUC_CONST;
+
+GtkWidget* modest_transport_widget_new (ModestWidgetFactory *factory, const gchar *proto);
+
+gboolean modest_transport_widget_get_remember_password (ModestTransportWidget *self);
+const gchar* modest_transport_widget_get_username (ModestTransportWidget *self);
+const gchar* modest_transport_widget_get_servername (ModestTransportWidget *self);
+const gchar* modest_transport_widget_get_proto (ModestTransportWidget *self);
+
+G_END_DECLS
+
+#endif /* __MODEST_TRANSPORT_WIDGET_H__ */
+
sizeof(ModestUI),
1, /* n_preallocs */
(GInstanceInitFunc) modest_ui_init,
+ NULL
};
my_type = g_type_register_static (G_TYPE_OBJECT,
"ModestUI",
g_return_val_if_fail (modest_ui, NULL);
priv = MODEST_UI_GET_PRIVATE(modest_ui);
- win = modest_main_window_new (priv->widget_factory, priv->conf);
+ win = modest_main_window_new (priv->conf, priv->account_mgr,
+ priv->widget_factory);
if (!win)
g_printerr ("modest: could not create main window\n");
return win;
}
+
+