* maemo/
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Thu, 8 Feb 2007 14:29:16 +0000 (14:29 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Thu, 8 Feb 2007 14:29:16 +0000 (14:29 +0000)
  - update for the framework changes

pmo-trunk-r802

17 files changed:
src/maemo/Makefile.am
src/maemo/modest-account-assistant.c
src/maemo/modest-account-assistant.h
src/maemo/modest-account-view-window.c
src/maemo/modest-account-view-window.h
src/maemo/modest-edit-msg-window.c [deleted file]
src/maemo/modest-main-window-ui.h
src/maemo/modest-main-window.c
src/maemo/modest-msg-edit-window.c [new file with mode: 0644]
src/maemo/modest-store-widget.c
src/maemo/modest-store-widget.h
src/maemo/modest-transport-widget.c
src/maemo/modest-transport-widget.h
src/maemo/ui/modest-edit-msg-window-ui.xml [deleted file]
src/maemo/ui/modest-main-window-ui.xml [new file with mode: 0644]
src/maemo/ui/modest-msg-edit-window-ui.xml [new file with mode: 0644]
src/maemo/ui/modest-ui.xml [deleted file]

index 54a5500..61898b7 100644 (file)
@@ -44,7 +44,6 @@ noinst_LTLIBRARIES=\
 libmodest_ui_la_SOURCES=              \
        modest-account-view-window.c  \
        modest-account-view-window.h  \
-       modest-edit-msg-window.c      \
        modest-icon-names.h           \
        modest-main-window.c          \
        modest-main-window-ui.h       \
@@ -52,7 +51,8 @@ libmodest_ui_la_SOURCES=              \
        modest-store-widget.h         \
        modest-transport-widget.c     \
        modest-transport-widget.h     \
-        modest-msg-view-window.c       
+        modest-msg-view-window.c      \
+       modest-msg-edit-window.c    
 
 
 LDADD = \
@@ -66,10 +66,10 @@ pixmapdir = $(datadir)/pixmaps/modest
 pixmap_DATA = $(PIXMAP_FILES)
 
 UI_FILES=\
-       ui/modest-ui.xml \
-       ui/modest-edit-msg-window-ui.xml \
+       ui/modest-main-window-ui.xml \
+       ui/modest-msg-edit-window-ui.xml \
        ui/modest-msg-view-window-ui.xml
-
+               
 uidir = $(datadir)/modest/ui
 ui_DATA = $(UI_FILES)
 
index f696bf6..41704e5 100644 (file)
  */
 
 #include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <camel/camel-url.h>
+#include <widgets/modest-combo-box.h>
 #include "modest-account-assistant.h"
 #include "modest-store-widget.h"
 #include "modest-transport-widget.h"
+#include "modest-text-utils.h"
+#include <modest-protocol-info.h>
 
 #include <string.h>
 
@@ -49,7 +54,6 @@ enum {
 typedef struct _ModestAccountAssistantPrivate ModestAccountAssistantPrivate;
 struct _ModestAccountAssistantPrivate {
 
-       ModestWidgetFactory *factory;
        ModestAccountMgr *account_mgr;
 
        GtkWidget *account_name;
@@ -61,15 +65,13 @@ struct _ModestAccountAssistantPrivate {
 
        GtkWidget *transport_holder;
        GtkWidget *store_holder;        
-
-       GtkWidget *notebook;
 };
 
 #define MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                       MODEST_TYPE_ACCOUNT_ASSISTANT, \
                                                       ModestAccountAssistantPrivate))
 /* globals */
-static HildonWizardDialogClass *parent_class = NULL;
+static GtkAssistantClass *parent_class = NULL;
 
 /* uncomment the following if you have defined any signals */
 /* static guint signals[LAST_SIGNAL] = {0}; */
@@ -91,7 +93,7 @@ modest_account_assistant_get_type (void)
                        (GInstanceInitFunc) modest_account_assistant_init,
                        NULL
                };
-               my_type = g_type_register_static (HILDON_TYPE_WIZARD_DIALOG,
+               my_type = g_type_register_static (GTK_TYPE_ASSISTANT,
                                                  "ModestAccountAssistant",
                                                  &my_info, 0);
        }
@@ -120,12 +122,9 @@ modest_account_assistant_class_init (ModestAccountAssistantClass *klass)
 
 
 static void
-add_intro_page (ModestAccountAssistant *self)
+add_intro_page (ModestAccountAssistant *assistant)
 {
        GtkWidget *page, *label;
-       ModestAccountAssistantPrivate *priv;
-       
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
        
        page = gtk_vbox_new (FALSE, 6);
        
@@ -135,18 +134,17 @@ add_intro_page (ModestAccountAssistant *self)
        gtk_box_pack_start (GTK_BOX(page), label, FALSE, FALSE, 6);
        gtk_widget_show_all (page);
        
-       gtk_notebook_append_page (GTK_NOTEBOOK(priv->notebook), page);
+       gtk_assistant_append_page (GTK_ASSISTANT(assistant), page);
                
-       //gtk_nootbook_set_page_title (GTK_ASSISTANT(assistant), page,
-       //                            _("Modest Account Assistant"));
-       //gtk_assistant_set_page_type (GTK_ASSISTANT(assistant), page,
-       //                           GTK_ASSISTANT_PAGE_INTRO);
-       //gtk_assistant_set_page_complete (GTK_ASSISTANT(assistant),
-       //                               page, TRUE);
+       gtk_assistant_set_page_title (GTK_ASSISTANT(assistant), page,
+                                     _("Modest Account Assistant"));
+       gtk_assistant_set_page_type (GTK_ASSISTANT(assistant), page,
+                                    GTK_ASSISTANT_PAGE_INTRO);
+       gtk_assistant_set_page_complete (GTK_ASSISTANT(assistant),
+                                        page, TRUE);
 }
 
 
-/*
 static void
 set_current_page_complete (ModestAccountAssistant *self, gboolean complete)
 {
@@ -154,14 +152,14 @@ set_current_page_complete (ModestAccountAssistant *self, gboolean complete)
        gint pageno;
 
        pageno = gtk_assistant_get_current_page (GTK_ASSISTANT(self));
-       page   = gtk_assistant_get_nth_page (GTK_ASSISTANT(self), pageno);
 
-       gtk_assistant_set_page_complete (GTK_ASSISTANT(self), page, complete);
+       if (pageno != -1) {
+               page   = gtk_assistant_get_nth_page (GTK_ASSISTANT(self), pageno);
+               gtk_assistant_set_page_complete (GTK_ASSISTANT(self), page, complete);
+       }
 }
-*/
 
 
-/*
 static void
 identity_page_update_completeness (GtkEditable *editable,
                                   ModestAccountAssistant *self)
@@ -177,14 +175,14 @@ identity_page_update_completeness (GtkEditable *editable,
                return;
        }
 
-       txt = gtk_entry_get_text (GTK_ENTRY(priv->email)); // regex scan email address
-       if (!txt || strlen(txt) == 0) {
+       /* FIXME: regexp check for email address */
+       txt = gtk_entry_get_text (GTK_ENTRY(priv->email));
+       if (!modest_text_utils_validate_email_address (txt))
                set_current_page_complete (self, FALSE);
-               return;
-       }
-       set_current_page_complete (self, TRUE);
+       else
+               set_current_page_complete (self, TRUE);
 }
-*/ 
+
 
 static void
 add_identity_page (ModestAccountAssistant *self)
@@ -221,33 +219,68 @@ add_identity_page (ModestAccountAssistant *self)
                          self);
        
        gtk_box_pack_start (GTK_BOX(page), table, FALSE, FALSE, 6);
-       
-       gtk_notebook_append_page (GTK_NOTEBOOK(priv->notebook), page);
        gtk_widget_show_all (page);
        
-/*     gtk_assistant_set_page_title (GTK_ASSISTANT(self), page, */
-/*                                   _("Identity")); */
-/*     gtk_assistant_set_page_type (GTK_ASSISTANT(self), page, */
-/*                                  GTK_ASSISTANT_PAGE_INTRO); */
-/*     gtk_assistant_set_page_complete (GTK_ASSISTANT(self), */
-/*                                      page, FALSE); */
+       gtk_assistant_append_page (GTK_ASSISTANT(self), page);
+       
+       gtk_assistant_set_page_title (GTK_ASSISTANT(self), page,
+                                     _("Identity"));
+       gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
+                                    GTK_ASSISTANT_PAGE_INTRO);
+       gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
+                                        page, FALSE);
 }      
 
 
 static void
+receiving_page_update_completeness (GtkEditable *editable,
+                                   ModestAccountAssistant *self)
+{
+       ModestAccountAssistantPrivate *priv;
+       const gchar *txt;
+
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+       txt = modest_store_widget_get_username (MODEST_STORE_WIDGET (priv->store_widget));
+       if (!txt || strlen(txt) == 0) {
+               set_current_page_complete (self, FALSE);
+               return;
+       }
+
+       txt = modest_store_widget_get_servername (MODEST_STORE_WIDGET (priv->store_widget));
+       if (!txt || strlen(txt) == 0) {
+               set_current_page_complete (self, FALSE);
+               return;
+       }
+       set_current_page_complete (self, TRUE);
+}
+
+static void
 on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
 {
        ModestAccountAssistantPrivate *priv;
        gchar *chosen;
+       ModestProtocol proto;
        
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
        chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
-
        if (priv->store_widget)
                gtk_container_remove (GTK_CONTAINER(priv->store_holder),
                                      priv->store_widget);
+
+       proto = modest_protocol_info_get_protocol (chosen);
        
-       priv->store_widget = modest_store_widget_new (priv->factory, chosen);
+       /* FIXME: we could have these widgets cached instead of
+          creating them every time */
+       priv->store_widget = modest_store_widget_new (proto);
+       if (proto == MODEST_PROTOCOL_STORE_POP || proto == MODEST_PROTOCOL_STORE_IMAP) {
+               g_signal_connect (priv->store_widget, 
+                                 "data_changed", 
+                                 G_CALLBACK (receiving_page_update_completeness), 
+                                 self);
+               set_current_page_complete (self, FALSE);
+       } else
+               set_current_page_complete (self, TRUE);
 
        gtk_container_add (GTK_CONTAINER(priv->store_holder),
                           priv->store_widget);
@@ -260,7 +293,7 @@ static void
 add_receiving_page (ModestAccountAssistant *self)
 {
        GtkWidget *page, *box, *combo;
-
+       ModestPairList *protos;
        ModestAccountAssistantPrivate *priv;
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);      
@@ -275,28 +308,33 @@ add_receiving_page (ModestAccountAssistant *self)
                            gtk_label_new(_("Server type")),
                            FALSE,FALSE,6);
 
-       combo = modest_widget_factory_get_combo_box (priv->factory,
-                                                    MODEST_COMBO_BOX_TYPE_STORE_PROTOS);
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_STORE);
+       combo = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
+       
        g_signal_connect (G_OBJECT(combo), "changed",
                          G_CALLBACK(on_receiving_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(page), gtk_hseparator_new(), FALSE, FALSE, 0);
 
        priv->store_holder = gtk_hbox_new (FALSE, 0);
        gtk_box_pack_start (GTK_BOX(page), priv->store_holder,
                            TRUE, TRUE, 0);
+
+       /* Force the selection */
+       on_receiving_combo_box_changed (GTK_COMBO_BOX (combo), self);
        
-       gtk_notebook_append_page (GTK_NOTEBOOK(priv->notebook), page);
+       gtk_assistant_append_page (GTK_ASSISTANT(self), page);
                
-/*     gtk_assistant_set_page_title (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_assistant_set_page_title (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, FALSE);
        gtk_widget_show_all (page);
 }
 
@@ -316,9 +354,8 @@ on_sending_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
        if (priv->transport_widget)
                gtk_container_remove (GTK_CONTAINER(priv->transport_holder),
                                      priv->transport_widget);
-       
-       priv->transport_widget = modest_transport_widget_new (priv->factory,
-                                                             chosen);
+       priv->transport_widget =
+               modest_transport_widget_new (modest_protocol_info_get_protocol(chosen));
 
        gtk_container_add (GTK_CONTAINER(priv->transport_holder),
                           priv->transport_widget);
@@ -332,7 +369,7 @@ static void
 add_sending_page (ModestAccountAssistant *self)
 {
        GtkWidget *page, *box, *combo;
-
+       ModestPairList *protos;
        ModestAccountAssistantPrivate *priv;
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
@@ -346,29 +383,34 @@ add_sending_page (ModestAccountAssistant *self)
        gtk_box_pack_start (GTK_BOX(box),
                            gtk_label_new(_("Server type")),
                            FALSE,FALSE,0);
+       
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_TRANSPORT);
+       combo = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
 
-       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,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->transport_holder = gtk_hbox_new (FALSE, 0);
        gtk_box_pack_start (GTK_BOX(page), priv->transport_holder,
                            FALSE, FALSE, 0);
-       
-       gtk_notebook_append_page (GTK_NOTEBOOK(priv->notebook), page);
-       
-/*     gtk_assistant_set_page_title (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); */
+
+       /* Force the selection */
+       on_sending_combo_box_changed (GTK_COMBO_BOX (combo), self);
+
+       gtk_assistant_append_page (GTK_ASSISTANT(self), page);
+               
+       gtk_assistant_set_page_title (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);
 }
 
@@ -398,33 +440,29 @@ add_final_page (ModestAccountAssistant *self)
        
        gtk_box_pack_start (GTK_BOX(page), box, FALSE, FALSE, 6);
        
-       gtk_notebook_append_page (GTK_NOTEBOOK(priv->notebook), page);
+       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_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_assistant_set_page_complete (GTK_ASSISTANT(self),
+                                        page, TRUE);
        gtk_widget_show_all (page);
 }
-       
-
 
 
 static void
 modest_account_assistant_init (ModestAccountAssistant *obj)
 {      
-       ModestAccountAssistantPrivate *priv;
-               
+       ModestAccountAssistantPrivate *priv;    
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);       
-       priv->factory           = NULL;
+
        priv->account_mgr       = NULL;
 
        priv->store_widget      = NULL;
        priv->transport_widget  = NULL;
-       priv->notebook          = gtk_notebook_new ();
 }
 
 static void
@@ -433,11 +471,6 @@ modest_account_assistant_finalize (GObject *obj)
        ModestAccountAssistantPrivate *priv;
                
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);
-
-       if (priv->factory) {
-               g_object_unref (G_OBJECT(priv->factory));
-               priv->factory = NULL;
-       }
        
        if (priv->account_mgr) {
                g_object_unref (G_OBJECT(priv->account_mgr));
@@ -477,7 +510,7 @@ on_cancel (ModestAccountAssistant *self, gpointer user_data)
        switch (response) {
        case GTK_RESPONSE_ACCEPT:
                /* close the assistant */
-               gtk_widget_destroy (GTK_WIDGET(self));
+               gtk_widget_hide (GTK_WIDGET(self));
                break;
        case GTK_RESPONSE_CANCEL:
                /* don't do anything */
@@ -517,39 +550,110 @@ get_email (ModestAccountAssistant *self)
 }
 
 
+static void
+on_close (ModestAccountAssistant *self, gpointer user_data)
+{
+       gtk_widget_hide (GTK_WIDGET (self));
+}
+
+
+/*
+ * FIXME: hmmmm this a Camel internal thing, should move this
+ * somewhere else
+ */
+static gchar*
+get_account_uri (ModestProtocol proto, const gchar* path)
+{
+       CamelURL *url;
+       gchar *uri;
+       
+       switch (proto) {
+       case MODEST_PROTOCOL_STORE_MBOX:
+               url = camel_url_new ("mbox:", NULL); break;
+       case MODEST_PROTOCOL_STORE_MAILDIR:
+               url = camel_url_new ("maildir:", NULL); break;
+       default:
+               g_return_val_if_reached (NULL);
+       }
+       camel_url_set_path (url, path);
+       uri = camel_url_to_string (url, 0);
+       camel_url_free (url);
+
+       return uri;     
+}
+
+static gchar*
+get_new_server_account_name (ModestAccountMgr* acc_mgr, ModestProtocol proto,
+                            const gchar* username, const gchar *servername)
+{
+       gchar *name;
+       gint  i = 0;
+       
+       while (TRUE) {
+               name = g_strdup_printf ("%s:%d",
+                                       modest_protocol_info_get_protocol_name(proto), i++);
+               if (modest_account_mgr_account_exists (acc_mgr, name, TRUE, NULL))
+                       g_free (name);
+               else
+                       break;
+       }
+       return name;
+}
+
 
 static void
 on_apply (ModestAccountAssistant *self, gpointer user_data)
 {
        ModestAccountAssistantPrivate *priv;
-       gchar *store_name;
-       const gchar *account_name;
+       ModestProtocol proto;
+       gchar *store_name, *transport_name;
+       const gchar *account_name, *username, *servername, *path;
        ModestStoreWidget *store;
+       ModestTransportWidget *transport;
 
        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));
+       proto    = modest_store_widget_get_proto (store);
+       username = modest_store_widget_get_username (store);
+       servername = modest_store_widget_get_servername (store);
+       path       = modest_store_widget_get_path (store);
+       store_name = get_new_server_account_name (priv->account_mgr, proto,username, servername);
+
+       if (proto == MODEST_PROTOCOL_STORE_MAILDIR ||
+           proto == MODEST_PROTOCOL_STORE_MBOX) {
+               gchar *uri = get_account_uri (proto, path);
+               modest_account_mgr_add_server_account_uri (priv->account_mgr, store_name, proto, uri);
+               g_free (uri);
+       } else
+               modest_account_mgr_add_server_account (priv->account_mgr, store_name, servername,
+                                                      username, NULL, proto);
+               
+       /* create server account -> transport */
+       transport = MODEST_TRANSPORT_WIDGET(priv->transport_widget);
+       proto = modest_transport_widget_get_proto (transport);
+       username   = NULL;
+       servername = NULL;
+       if (proto == MODEST_PROTOCOL_TRANSPORT_SMTP) {
+               servername = modest_transport_widget_get_servername (transport);
+               if (modest_transport_widget_get_requires_auth (transport))
+                       username = modest_transport_widget_get_username (transport);
+       }
        
+       transport_name = get_new_server_account_name (priv->account_mgr, proto,username, servername);
        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));
+                                               transport_name, servername,
+                                               username, NULL,
+                                               proto);
 
-       /* create server account -> transport */
+       /* create account */
        account_name = get_account_name (self);
        modest_account_mgr_add_account (priv->account_mgr,
                                        account_name,
                                        store_name,
-                                       NULL, NULL);
+                                       transport_name,
+                                       NULL);
        modest_account_mgr_set_string (priv->account_mgr,
                                       account_name,
                                       MODEST_ACCOUNT_FULLNAME,
@@ -558,43 +662,38 @@ on_apply (ModestAccountAssistant *self, gpointer user_data)
                                       account_name,
                                       MODEST_ACCOUNT_EMAIL,
                                       get_email(self), FALSE, NULL);
-       
+
+       /* Frees */     
        g_free (store_name);
+       g_free (transport_name);
 }
 
 
 
 GtkWidget*
-modest_account_assistant_new (GtkWidget *parent,
-                             ModestAccountMgr *account_mgr,
-                             ModestWidgetFactory *factory)
+modest_account_assistant_new (ModestAccountMgr *account_mgr)
 {
        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_final_page (self);
-       
-       
-       //gtk_assistant_set_current_page (GTK_ASSISTANT(self), 0);
+
+       gtk_assistant_set_current_page (GTK_ASSISTANT(self), 0);
        gtk_window_set_title (GTK_WINDOW(self),
                              _("Modest Account Wizard"));
        gtk_window_set_resizable (GTK_WINDOW(self), TRUE);      
@@ -606,6 +705,8 @@ modest_account_assistant_new (GtkWidget *parent,
                          G_CALLBACK(on_apply), NULL);
        g_signal_connect (G_OBJECT(self), "cancel",
                          G_CALLBACK(on_cancel), NULL);
+       g_signal_connect (G_OBJECT(self), "close",
+                         G_CALLBACK(on_close), NULL);
 
        return GTK_WIDGET(self);
 }
index 498c1ec..4d098af 100644 (file)
@@ -31,7 +31,6 @@
 #define __MODEST_ACCOUNT_ASSISTANT_H__
 
 #include <gtk/gtk.h>
-#include <modest-widget-factory.h>
 #include <modest-account-mgr.h>
 #include <hildon-widgets/hildon-wizard-dialog.h>
 
@@ -62,8 +61,7 @@ struct _ModestAccountAssistantClass {
 /* member functions */
 GType        modest_account_assistant_get_type    (void) G_GNUC_CONST;
 
-GtkWidget*    modest_account_assistant_new        (ModestAccountMgr* account_mgr,
-                                                  ModestWidgetFactory *factory);
+GtkWidget*    modest_account_assistant_new        (ModestAccountMgr* account_mgr);
 
 
 G_END_DECLS
index b103f31..95d7b2f 100644 (file)
  */
 
 #include <glib/gi18n.h>
+#include <gtk/gtk.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-account-assistant.h"
 #include "modest-tny-platform-factory.h"
 
 /* 'private'/'protected' functions */
@@ -44,11 +49,13 @@ enum {
        LAST_SIGNAL
 };
 
-
 typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate;
 struct _ModestAccountViewWindowPrivate {
-       ModestWidgetFactory *widget_factory;
-       GtkWidget           *edit_button, *remove_button;
+       GtkWidget           *add_button;
+       GtkWidget           *edit_button;
+       GtkWidget           *remove_button;
+       GtkWidget           *default_button;
+       ModestAccountView   *account_view;
 };
 #define MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                         MODEST_TYPE_ACCOUNT_VIEW_WINDOW, \
@@ -105,25 +112,12 @@ modest_account_view_window_class_init (ModestAccountViewWindowClass *klass)
 static void
 modest_account_view_window_init (ModestAccountViewWindow *obj)
 {
-       ModestAccountViewWindowPrivate *priv;
-               
-       priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
-
-       priv->widget_factory = NULL;
+       /* empty */
 }
 
 static void
 modest_account_view_window_finalize (GObject *obj)
 {
-       ModestAccountViewWindowPrivate *priv;
-               
-       priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
-
-       if (priv->widget_factory) {
-               g_object_unref (G_OBJECT(priv->widget_factory));
-               priv->widget_factory = NULL;
-       }
-
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -135,7 +129,9 @@ on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self)
        GtkTreeModel                   *model;
        GtkTreeIter                    iter;
        gboolean                       has_selection;
-
+       const gchar                   *account_name;
+       gchar                         *default_account_name;
+       
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
 
        has_selection =
@@ -143,14 +139,65 @@ on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self)
 
        gtk_widget_set_sensitive (priv->edit_button, has_selection);
        gtk_widget_set_sensitive (priv->remove_button, has_selection);  
-}
-
 
+       account_name = modest_account_view_get_selected_account (priv->account_view);
+       default_account_name = modest_account_mgr_get_default_account(
+               modest_runtime_get_account_mgr());
+       gtk_widget_set_sensitive (priv->default_button,
+                                 default_account_name == NULL || account_name == NULL ||
+                                 strcmp (default_account_name, account_name) != 0);
+       g_free (default_account_name);
+}
 
 static void
 on_remove_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 {
-       g_message (__FUNCTION__);
+       ModestAccountViewWindowPrivate *priv;
+       ModestAccountMgr *account_mgr;
+       const gchar *account_name;
+       
+       priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
+
+       account_mgr = modest_runtime_get_account_mgr(); 
+       account_name = modest_account_view_get_selected_account (priv->account_view);
+
+       if (account_name) {
+               gboolean removed;
+               GError *err = NULL;
+               GtkWidget *dialog;
+               gchar *txt;
+
+               dialog = gtk_dialog_new_with_buttons (_("Confirmation dialog"),
+                                                     GTK_WINDOW (self),
+                                                     GTK_DIALOG_MODAL,
+                                                     GTK_STOCK_CANCEL,
+                                                     GTK_RESPONSE_REJECT,
+                                                     GTK_STOCK_OK,
+                                                     GTK_RESPONSE_ACCEPT,
+                                                     NULL);
+               txt = g_strdup_printf (_("Do you really want to delete the account %s?"), account_name);
+               gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), 
+                                   gtk_label_new (txt), FALSE, FALSE, 0);
+               gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
+               g_free (txt);
+
+               if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+                       /* Remove account. If succeeded it removes also 
+                          the account from the ModestAccountView */
+                       removed = modest_account_mgr_remove_account (account_mgr,
+                                                                    account_name,
+                                                                    FALSE,
+                                                                    &err);
+                       if (removed) {
+                               /* Show confirmation dialog ??? */
+                       } else {
+                               /* Show error dialog ??? */
+                               if (err)
+                                       g_error_free (err);
+                       }
+               }
+               gtk_widget_destroy (dialog);
+       }
 }
 
 static void
@@ -162,11 +209,38 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 static void
 on_add_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 {
-       g_message (__FUNCTION__);
+       GtkWidget *assistant;
+       ModestAccountViewWindowPrivate *priv;
+       
+       priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
+       /* FIXME */
+       g_warning (__FUNCTION__);
+       //assistant = modest_account_assistant_new (modest_runtime_get_account_mgr());
+       gtk_window_set_transient_for (GTK_WINDOW(assistant),
+                                     GTK_WINDOW(self));
+       
+       gtk_widget_show (GTK_WIDGET(assistant));
 }
 
 
 static void
+on_default_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
+{
+       ModestAccountViewWindowPrivate *priv;
+       ModestAccountMgr *account_mgr;
+       const gchar *account_name;
+       
+       priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
+
+       account_mgr = modest_runtime_get_account_mgr(); 
+       account_name = modest_account_view_get_selected_account (priv->account_view);
+
+       modest_account_mgr_set_default_account (account_mgr, account_name);
+}
+
+
+
+static void
 on_close_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 {
        gtk_widget_destroy (GTK_WIDGET(self));
@@ -179,38 +253,41 @@ button_box_new (ModestAccountViewWindow *self)
 {
 
        GtkWidget *button_box;
-       GtkWidget *add_button, *remove_button, *edit_button;
        ModestAccountViewWindowPrivate *priv;
        
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
        
        button_box   = gtk_vbutton_box_new ();
-
-       add_button    = gtk_button_new_from_stock(GTK_STOCK_ADD);
-       remove_button = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
-       edit_button   = gtk_button_new_from_stock(GTK_STOCK_EDIT);
-
-       g_signal_connect (G_OBJECT(add_button), "clicked",
+       gtk_button_box_set_spacing (GTK_BUTTON_BOX (button_box), 6);
+       gtk_button_box_set_layout (GTK_BUTTON_BOX (button_box), 
+                                  GTK_BUTTONBOX_START);
+       
+       priv->add_button     = gtk_button_new_from_stock(GTK_STOCK_ADD);
+       priv->default_button = gtk_button_new_with_label(_("Make default"));
+       priv->remove_button  = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
+       priv->edit_button    = gtk_button_new_from_stock(GTK_STOCK_EDIT);
+       
+       g_signal_connect (G_OBJECT(priv->add_button), "clicked",
                          G_CALLBACK(on_add_button_clicked),
                          self);
-       g_signal_connect (G_OBJECT(remove_button), "clicked",
+       g_signal_connect (G_OBJECT(priv->remove_button), "clicked",
                          G_CALLBACK(on_remove_button_clicked),
                          self);
-       g_signal_connect (G_OBJECT(edit_button), "clicked",
+       g_signal_connect (G_OBJECT(priv->edit_button), "clicked",
                          G_CALLBACK(on_edit_button_clicked),
                          self);
-
-       gtk_box_pack_start (GTK_BOX(button_box), add_button, FALSE, FALSE,2);
-       gtk_box_pack_start (GTK_BOX(button_box), remove_button, FALSE, FALSE,2);
-       gtk_box_pack_start (GTK_BOX(button_box), edit_button, FALSE, FALSE,2);
-
-       gtk_widget_set_sensitive (edit_button, FALSE);
-       gtk_widget_set_sensitive (remove_button, FALSE);        
-
-       /* remember these, so we can deactivate them when nothing is
-        * selected */
-       priv->remove_button = remove_button;
-       priv->edit_button   = edit_button;
+       g_signal_connect (G_OBJECT(priv->default_button), "clicked",
+                         G_CALLBACK(on_default_button_clicked),
+                         self);
+       
+       gtk_box_pack_start (GTK_BOX(button_box), priv->add_button, FALSE, FALSE,2);
+       gtk_box_pack_start (GTK_BOX(button_box), priv->default_button, FALSE, FALSE,2);
+       gtk_box_pack_start (GTK_BOX(button_box), priv->remove_button, FALSE, FALSE,2);
+       gtk_box_pack_start (GTK_BOX(button_box), priv->edit_button, FALSE, FALSE,2);
+
+       gtk_widget_set_sensitive (priv->edit_button, FALSE);
+       gtk_widget_set_sensitive (priv->remove_button, FALSE);  
+       gtk_widget_set_sensitive (priv->default_button, FALSE);
        
        return button_box;
 }
@@ -224,28 +301,26 @@ window_vbox_new (ModestAccountViewWindow *self)
        GtkWidget *main_hbox, *main_vbox, *button_box;
        GtkWidget *close_button;
        GtkWidget *close_hbox;
-       ModestAccountView *account_view;
 
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
 
        main_vbox     = gtk_vbox_new (FALSE, 6);
        main_hbox     = gtk_hbox_new (FALSE, 6);
        
-       account_view = modest_widget_factory_get_account_view (priv->widget_factory);
-       gtk_widget_set_size_request (GTK_WIDGET(account_view), 300, 400);
+       priv->account_view = modest_account_view_new (modest_runtime_get_account_mgr());
+       gtk_widget_set_size_request (GTK_WIDGET(priv->account_view), 300, 400);
 
-       sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(account_view));
+       sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(priv->account_view));
        g_signal_connect (G_OBJECT(sel), "changed",  G_CALLBACK(on_selection_changed),
                          self);
        
        button_box = button_box_new (self);
        
-       gtk_box_pack_start (GTK_BOX(main_hbox), GTK_WIDGET(account_view), TRUE, TRUE, 2);
+       gtk_box_pack_start (GTK_BOX(main_hbox), GTK_WIDGET(priv->account_view), TRUE, TRUE, 2);
        gtk_box_pack_start (GTK_BOX(main_hbox), button_box, FALSE, FALSE,2);
 
        gtk_box_pack_start (GTK_BOX(main_vbox), main_hbox, TRUE, TRUE, 2);
 
-
        close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
        g_signal_connect (G_OBJECT(close_button), "clicked",
                          G_CALLBACK(on_close_button_clicked),
@@ -262,21 +337,15 @@ window_vbox_new (ModestAccountViewWindow *self)
 
 
 GtkWidget*
-modest_account_view_window_new (ModestWidgetFactory *factory)
+modest_account_view_window_new (void)
 {
        GObject *obj;
        ModestAccountViewWindowPrivate *priv;
-
-       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(factory));
-       priv->widget_factory = factory;
-
        gtk_window_set_resizable (GTK_WINDOW(obj), FALSE);
-
        gtk_window_set_title (GTK_WINDOW(obj), _("Accounts"));
        gtk_window_set_type_hint (GTK_WINDOW(obj), GDK_WINDOW_TYPE_HINT_DIALOG);
        
index 1545c6f..332fad5 100644 (file)
@@ -5,7 +5,6 @@
 #define __MODEST_ACCOUNT_VIEW_WINDOW_H__
 
 #include <gtk/gtk.h>
-#include <modest-widget-factory.h>
 
 G_BEGIN_DECLS
 
@@ -34,7 +33,7 @@ struct _ModestAccountViewWindowClass {
 /* member functions */
 GType        modest_account_view_window_get_type    (void) G_GNUC_CONST;
 
-GtkWidget*   modest_account_view_window_new         (ModestWidgetFactory *factory);
+GtkWidget*   modest_account_view_window_new         (void);
 
 G_END_DECLS
 
diff --git a/src/maemo/modest-edit-msg-window.c b/src/maemo/modest-edit-msg-window.c
deleted file mode 100644 (file)
index 35d24d0..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/* 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 <glib/gi18n.h>
-#include <tny-account-store.h>
-
-#include <modest-account-mgr.h>
-#include <modest-account-mgr-helpers.h>
-
-#include <widgets/modest-edit-msg-window.h>
-#include <modest-runtime.h>
-
-#include "modest-edit-msg-window-ui.h"
-#include "modest-icon-names.h"
-#include "modest-widget-memory.h"
-#include "modest-window-priv.h"
-#include "modest-mail-operation.h"
-#include "modest-tny-platform-factory.h"
-#include "modest-tny-msg.h"
-#include <tny-simple-list.h>
-
-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 {
-       /* MY_SIGNAL_1, */
-       /* MY_SIGNAL_2, */
-       LAST_SIGNAL
-};
-
-typedef struct _ModestEditMsgWindowPrivate ModestEditMsgWindowPrivate;
-struct _ModestEditMsgWindowPrivate {
-       GtkWidget   *msg_body;
-       GtkWidget   *from_field;
-       GtkWidget   *to_field;
-       GtkWidget   *cc_field;
-       GtkWidget   *bcc_field;
-       GtkWidget   *subject_field;
-};
-
-#define MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
-                                                    MODEST_TYPE_EDIT_MSG_WINDOW, \
-                                                    ModestEditMsgWindowPrivate))
-/* globals */
-static GtkWindowClass *parent_class = NULL;
-
-/* uncomment the following if you have defined any signals */
-/* static guint signals[LAST_SIGNAL] = {0}; */
-
-GType
-modest_edit_msg_window_get_type (void)
-{
-       static GType my_type = 0;
-       if (!my_type) {
-               static const GTypeInfo my_info = {
-                       sizeof(ModestEditMsgWindowClass),
-                       NULL,           /* base init */
-                       NULL,           /* base finalize */
-                       (GClassInitFunc) modest_edit_msg_window_class_init,
-                       NULL,           /* class finalize */
-                       NULL,           /* class data */
-                       sizeof(ModestEditMsgWindow),
-                       1,              /* n_preallocs */
-                       (GInstanceInitFunc) modest_edit_msg_window_init,
-                       NULL
-               };
-               my_type = g_type_register_static (MODEST_TYPE_WINDOW,
-                                                 "ModestEditMsgWindow",
-                                                 &my_info, 0);
-       }
-       return my_type;
-}
-
-static void
-modest_edit_msg_window_class_init (ModestEditMsgWindowClass *klass)
-{
-       GObjectClass *gobject_class;
-       gobject_class = (GObjectClass*) klass;
-
-       parent_class            = g_type_class_peek_parent (klass);
-       gobject_class->finalize = modest_edit_msg_window_finalize;
-
-       g_type_class_add_private (gobject_class, sizeof(ModestEditMsgWindowPrivate));
-}
-
-static void
-modest_edit_msg_window_init (ModestEditMsgWindow *obj)
-{
-       ModestEditMsgWindowPrivate *priv;
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj);
-
-       priv->msg_body      = NULL;
-       priv->from_field    = NULL;
-       priv->to_field      = NULL;
-       priv->cc_field      = NULL;
-       priv->bcc_field     = NULL;
-       priv->subject_field = NULL;
-}
-
-
-
-static void
-save_settings (ModestEditMsgWindow *self)
-{
-       modest_widget_memory_save (modest_runtime_get_conf(),
-                                  G_OBJECT(self), "modest-edit-msg-window");
-}
-
-
-static void
-restore_settings (ModestEditMsgWindow *self)
-{
-
-       modest_widget_memory_restore (modest_runtime_get_conf(),
-                                     G_OBJECT(self), "modest-edit-msg-window");
-}
-
-
-static void
-init_window (ModestEditMsgWindow *obj)
-{
-       GtkWidget *to_button, *cc_button, *bcc_button; 
-       GtkWidget *header_table;
-       GtkWidget *main_vbox;
-       ModestEditMsgWindowPrivate *priv;
-
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj);
-
-       to_button     = gtk_button_new_with_label (_("To..."));
-       cc_button     = gtk_button_new_with_label (_("Cc..."));
-       bcc_button    = gtk_button_new_with_label (_("Bcc..."));
-
-       priv->from_field    = modest_widget_factory_get_combo_box (modest_runtime_get_widget_factory(),
-                                                                  MODEST_COMBO_BOX_TYPE_TRANSPORTS);
-       priv->to_field      = gtk_entry_new_with_max_length (80);
-       priv->cc_field      = gtk_entry_new_with_max_length (80);
-       priv->bcc_field     = gtk_entry_new_with_max_length (80);
-       priv->subject_field = gtk_entry_new_with_max_length (80);
-       
-       header_table = gtk_table_new (5,2, FALSE);
-       
-       gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("From:")),
-                         0,1,0,1, GTK_SHRINK, 0, 0, 0);
-       gtk_table_attach (GTK_TABLE(header_table), to_button,     0,1,1,2, GTK_SHRINK, 0, 0, 0);
-       gtk_table_attach (GTK_TABLE(header_table), cc_button,     0,1,2,3, GTK_SHRINK, 0, 0, 0);
-       gtk_table_attach (GTK_TABLE(header_table), bcc_button,    0,1,3,4, GTK_SHRINK, 0, 0, 0);
-       gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("Subject:")),
-                         0,1,4,5, GTK_SHRINK, 0, 0, 0);
-
-       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->from_field,   1,2,0,1);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->to_field,     1,2,1,2);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->cc_field,     1,2,2,3);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->bcc_field,    1,2,3,4);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->subject_field,1,2,4,5);
-
-       priv->msg_body = gtk_text_view_new ();
-       
-       main_vbox = gtk_vbox_new  (FALSE, 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));
-       gtk_container_add (GTK_CONTAINER(obj), main_vbox);
-}
-       
-
-
-static void
-modest_edit_msg_window_finalize (GObject *obj)
-{
-       G_OBJECT_CLASS(parent_class)->finalize (obj);
-}
-
-
-
-static gboolean
-on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self)
-{
-       save_settings (self);
-       return FALSE;
-}
-
-static GtkWidget *
-menubar_to_menu (GtkUIManager *ui_manager)
-{
-       GtkWidget *main_menu;
-       GtkWidget *menubar;
-       GList *iter;
-
-       /* Create new main menu */
-       main_menu = gtk_menu_new();
-
-       /* Get the menubar from the UI manager */
-       menubar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
-
-       iter = gtk_container_get_children (GTK_CONTAINER (menubar));
-       while (iter) {
-               GtkWidget *menu;
-
-               menu = GTK_WIDGET (iter->data);
-               gtk_widget_reparent(menu, main_menu);
-
-               iter = g_list_next (iter);
-       }
-       return main_menu;
-}
-
-ModestWindow*
-modest_edit_msg_window_new (ModestEditType type)
-{
-       GObject *obj;
-       ModestWindowPrivate *parent_priv;
-       ModestEditMsgWindowPrivate *priv;
-       GtkActionGroup *action_group;
-       GError *error = NULL;
-
-       g_return_val_if_fail (type < MODEST_EDIT_TYPE_NUM, NULL);
-       
-       obj = g_object_new(MODEST_TYPE_EDIT_MSG_WINDOW, NULL);
-
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE (obj);
-       parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
-
-       parent_priv->ui_manager = gtk_ui_manager_new();
-       action_group = gtk_action_group_new ("ModestEditMsgWindowActions");
-
-       /* Add common actions */
-       gtk_action_group_add_actions (action_group,
-                                     modest_edit_msg_action_entries,
-                                     G_N_ELEMENTS (modest_edit_msg_action_entries),
-                                     obj);
-       gtk_action_group_add_toggle_actions (action_group,
-                                            modest_edit_msg_toggle_action_entries,
-                                            G_N_ELEMENTS (modest_edit_msg_toggle_action_entries),
-                                            obj);
-       gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
-       g_object_unref (action_group);
-
-       /* Load the UI definition */
-       gtk_ui_manager_add_ui_from_file (parent_priv->ui_manager, MODEST_UIDIR "modest-edit-msg-window-ui.xml", &error);
-       if (error != NULL) {
-               g_warning ("Could not merge modest-edit-msg-window-ui.xml: %s", error->message);
-               g_error_free (error);
-               error = NULL;
-       }
-
-       /* Add accelerators */
-       gtk_window_add_accel_group (GTK_WINDOW (obj), 
-                                   gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
-
-
-       /* Toolbar */
-       parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
-       hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (parent_priv->toolbar));
-
-       /* Menubar */
-       parent_priv->menubar = menubar_to_menu (parent_priv->ui_manager);
-       hildon_window_set_menu (HILDON_WINDOW (obj), GTK_MENU (parent_priv->menubar));
-
-       /* Init window */
-       init_window (MODEST_EDIT_MSG_WINDOW(obj));
-
-       restore_settings (MODEST_EDIT_MSG_WINDOW(obj));
-       
-       gtk_window_set_title (GTK_WINDOW(obj), "Modest");
-       gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
-
-       g_signal_connect (G_OBJECT(obj), "delete-event",
-                         G_CALLBACK(on_delete_event), obj);
-
-       return (ModestWindow*)obj;
-}
-
-void
-modest_edit_msg_window_set_msg (ModestEditMsgWindow *self, TnyMsg *msg)
-{
-       TnyHeader *header;
-       GtkTextBuffer *buf;
-       const gchar *to, *cc, *bcc, *subject;
-       ModestEditMsgWindowPrivate *priv;
-
-       g_return_if_fail (MODEST_IS_EDIT_MSG_WINDOW (self));
-       g_return_if_fail (TNY_IS_MSG (msg));
-
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE (self);
-
-       header = tny_msg_get_header (msg);
-       to      = tny_header_get_to (header);
-       cc      = tny_header_get_cc (header);
-       bcc     = tny_header_get_bcc (header);
-       subject = tny_header_get_subject (header);
-
-       if (to)
-               gtk_entry_set_text (GTK_ENTRY(priv->to_field),  to);
-       if (cc)
-               gtk_entry_set_text (GTK_ENTRY(priv->cc_field),  cc);
-       if (bcc)
-               gtk_entry_set_text (GTK_ENTRY(priv->bcc_field), bcc);
-       if (subject)
-               gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);   
-       
-       buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body));
-       gtk_text_buffer_set_text (buf,
-                                 (const gchar *) modest_tny_msg_get_body (msg, FALSE),
-                                 -1);
-
-       /* TODO: lower priority, select in the From: combo to the
-          value that comes from msg <- not sure, should it be
-          allowed? */
-       
-       /* TODO: set attachments */
-}
-
-MsgData * 
-modest_edit_msg_window_get_msg_data (ModestEditMsgWindow *edit_window)
-{
-       MsgData *data;
-       ModestAccountData *account_data;
-       GtkTextBuffer *buf;
-       GtkTextIter b, e;
-       ModestEditMsgWindowPrivate *priv;
-       
-       g_return_val_if_fail (MODEST_IS_EDIT_MSG_WINDOW (edit_window), NULL);
-
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE (edit_window);
-                                                                       
-       account_data = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
-       buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->msg_body));        
-       gtk_text_buffer_get_bounds (buf, &b, &e);
-
-       /* don't free these (except from) */
-       data = g_slice_new0 (MsgData);
-       data->from    =  g_strdup_printf ("%s <%s>", account_data->fullname, account_data->email) ;
-       data->to      =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->to_field));
-       data->cc      =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->cc_field));
-       data->bcc     =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->bcc_field));
-       data->subject =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->subject_field));  
-       data->body    =  gtk_text_buffer_get_text (buf, &b, &e, FALSE);
-
-       return data;
-}
-
-void 
-modest_edit_msg_window_free_msg_data (ModestEditMsgWindow *edit_window,
-                                                     MsgData *data)
-{
-       g_return_if_fail (MODEST_IS_EDIT_MSG_WINDOW (edit_window));
-
-       g_free (data->from);
-       g_free (data->body);
-       g_slice_free (MsgData, data);
-}
index fd3c7c6..46e309e 100644 (file)
@@ -50,14 +50,14 @@ static const GtkActionEntry modest_action_entries [] = {
        { "Close",   NULL, N_("Close") },
 
        /* Message */
-       { "MessageNew",         NULL,  N_("_New message"),      "<CTRL>N", NULL,   G_CALLBACK (_modest_ui_actions_on_new_msg) },
+       { "MessageNew",         NULL,  N_("_New message"),      "<CTRL>N", NULL,   G_CALLBACK (modest_ui_actions_on_new_msg) },
        { "MessageOpen",        NULL,  N_("_Open"),             "<CTRL>O", NULL,   NULL },
        { "MessageCancelSending",  NULL,  N_("Cancel sending"), NULL,      NULL,   NULL },
        { "MessageSend",        NULL,  N_("Send"),              NULL,      NULL,   NULL },
-       { "MessageReply",       NULL,  N_("_Reply"),            NULL,      NULL,   G_CALLBACK (_modest_ui_actions_on_reply) },
-       { "MessageReplyAll",    NULL,  N_("Reply to all"),      NULL,      NULL,   G_CALLBACK (_modest_ui_actions_on_reply_all) },
-       { "MessageForward",     NULL,  N_("_Forward"),          NULL,      NULL,   G_CALLBACK (_modest_ui_actions_on_forward) },
-       { "MessageDelete",      NULL,  N_("Delete message"),    NULL,      NULL,   G_CALLBACK (_modest_ui_actions_on_delete) },
+       { "MessageReply",       NULL,  N_("_Reply"),            NULL,      NULL,   G_CALLBACK (modest_ui_actions_on_reply) },
+       { "MessageReplyAll",    NULL,  N_("Reply to all"),      NULL,      NULL,   G_CALLBACK (modest_ui_actions_on_reply_all) },
+       { "MessageForward",     NULL,  N_("_Forward"),          NULL,      NULL,   G_CALLBACK (modest_ui_actions_on_forward) },
+       { "MessageDelete",      NULL,  N_("Delete message"),    NULL,      NULL,   G_CALLBACK (modest_ui_actions_on_delete) },
        { "MessageSendReceive", NULL,  N_("Send and receive"),  NULL,      NULL,   NULL },
        { "MessageContents",    NULL,  N_("Retrieve contents"), NULL,      NULL,   NULL },
        { "MessageDetails",     NULL,  N_("Details..."),        NULL,      NULL,   NULL },
@@ -83,17 +83,17 @@ static const GtkActionEntry modest_action_entries [] = {
 
                
        /* Folders */
-       { "FoldersNew",          NULL,       N_("New folder"),       NULL, NULL, G_CALLBACK (_modest_ui_actions_on_new_folder) },
+       { "FoldersNew",          NULL,       N_("New folder"),       NULL, NULL, G_CALLBACK (modest_ui_actions_on_new_folder) },
        { "FoldersManage",       NULL,       N_("Manage..."),        NULL, NULL, NULL },
        { "FoldersDetails",      NULL,       N_("Details..."),       NULL, NULL, NULL },
-       { "FoldersDelete",       NULL,       N_("Delete"),           NULL, NULL, G_CALLBACK (_modest_ui_actions_on_delete_folder) },
-       { "FoldersRename",       NULL,       N_("Rename"),           NULL, NULL, G_CALLBACK (_modest_ui_actions_on_rename_folder) },
-       { "FoldersMoveToTrash",  NULL,       N_("Move to trash"),    NULL, NULL, G_CALLBACK (_modest_ui_actions_on_move_to_trash_folder) },
+       { "FoldersDelete",       NULL,       N_("Delete"),           NULL, NULL, G_CALLBACK (modest_ui_actions_on_delete_folder) },
+       { "FoldersRename",       NULL,       N_("Rename"),           NULL, NULL, G_CALLBACK (modest_ui_actions_on_rename_folder) },
+       { "FoldersMoveToTrash",  NULL,       N_("Move to trash"),    NULL, NULL, G_CALLBACK (modest_ui_actions_on_move_folder_to_trash_folder) },
 
        
        /* Accounts */
        { "AccountsNew",          NULL,    N_("_New account..."),             NULL, NULL,  NULL },
-       { "AccountsManage",        NULL,    N_("Manage..."),                  NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_accounts) },
+       { "AccountsManage",        NULL,    N_("Manage..."),                  NULL, NULL,  G_CALLBACK (modest_ui_actions_on_accounts) },
        { "AccountsConfigureSMTP", NULL,    N_("Configure SMTP servers..."),  NULL, NULL,  NULL },
        
        /* Tools */
@@ -105,20 +105,20 @@ static const GtkActionEntry modest_action_entries [] = {
 
        /* Close */
        { "CloseWindow",          NULL,     N_("Close window"),               NULL, NULL,  NULL },
-       { "CloseAllWindows",      NULL,     N_("Close all windows"),          NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_quit) },
+       { "CloseAllWindows",      NULL,     N_("Close all windows"),          NULL, NULL,  G_CALLBACK (modest_ui_actions_on_quit) },
 
 
        /* Toolbar items; they is some overlap with the menu items,
         * but we need to specificy them differently, they have icons for example
         */
        /* Headers Toolbar */
-       { "ToolbarMessageNew",        MODEST_STOCK_NEW_MAIL,     N_("Compose a new message"), NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_new_msg) },
-       { "ToolbarMessageReply",      MODEST_STOCK_REPLY,     N_("Reply a message"),       NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_reply) },
-       { "ToolbarMessageReplyAll",   MODEST_STOCK_REPLY_ALL,     N_("Reply to all"),          NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_reply_all) },
-       { "ToolbarMessageForward",    MODEST_STOCK_FORWARD,     N_("Forward a message"),     NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_forward) },
-       { "ToolbarSendReceive",       MODEST_STOCK_SEND_RECEIVE,   N_("Send & receive"),        NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_forward) },
-       { "ToolbarToggleView",        GTK_STOCK_CDROM,      N_("Toggle view"),           NULL, NULL,  G_CALLBACK (_modest_ui_actions_toggle_view) },
-       { "ToolbarDeleteMessage",     GTK_STOCK_DELETE,     N_("Delete message"),        NULL, NULL,  G_CALLBACK (_modest_ui_actions_on_delete) },
+       { "ToolbarMessageNew",        MODEST_STOCK_NEW_MAIL,     N_("Compose a new message"), NULL, NULL,  G_CALLBACK (modest_ui_actions_on_new_msg) },
+       { "ToolbarMessageReply",      MODEST_STOCK_REPLY,     N_("Reply a message"),       NULL, NULL,  G_CALLBACK (modest_ui_actions_on_reply) },
+       { "ToolbarMessageReplyAll",   MODEST_STOCK_REPLY_ALL,     N_("Reply to all"),          NULL, NULL,  G_CALLBACK (modest_ui_actions_on_reply_all) },
+       { "ToolbarMessageForward",    MODEST_STOCK_FORWARD,     N_("Forward a message"),     NULL, NULL,  G_CALLBACK (modest_ui_actions_on_forward) },
+       { "ToolbarSendReceive",       MODEST_STOCK_SEND_RECEIVE,   N_("Send & receive"),        NULL, NULL,  G_CALLBACK (modest_ui_actions_on_forward) },
+       { "ToolbarToggleView",        GTK_STOCK_CDROM,      N_("Toggle view"),           NULL, NULL,  G_CALLBACK (modest_ui_actions_toggle_view) },
+       { "ToolbarDeleteMessage",     GTK_STOCK_DELETE,     N_("Delete message"),        NULL, NULL,  G_CALLBACK (modest_ui_actions_on_delete) },
 };
 
 
index 2bc9de2..7bb8742 100644 (file)
 #include <glib/gi18n.h>
 #include <gtk/gtktreeviewcolumn.h>
 #include <modest-runtime.h>
+
 #include <widgets/modest-main-window.h>
-#include <widgets/modest-edit-msg-window.h>
-#include <modest-widget-factory.h>
+#include <widgets/modest-msg-edit-window.h>
+
 #include "modest-widget-memory.h"
 #include "modest-window-priv.h"
-#include "modest-ui.h"
 #include "modest-main-window-ui.h"
 #include "modest-account-view-window.h"
 #include "modest-account-mgr.h"
@@ -53,6 +53,7 @@ static void modest_main_window_class_init    (ModestMainWindowClass *klass);
 static void modest_main_window_init          (ModestMainWindow *obj);
 static void modest_main_window_finalize      (GObject *obj);
 
+static void connect_signals (ModestMainWindow *self);
 static void restore_sizes (ModestMainWindow *self);
 static void save_sizes (ModestMainWindow *self);
 
@@ -65,13 +66,8 @@ enum {
 
 typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate;
 struct _ModestMainWindowPrivate {
-
        GtkWidget *msg_paned;
        GtkWidget *main_paned;
-       
-       ModestHeaderView *header_view;
-       ModestFolderView *folder_view;
-       ModestMsgView    *msg_preview;
 };
 
 
@@ -139,9 +135,14 @@ modest_main_window_init (ModestMainWindow *obj)
 
        priv->msg_paned    = NULL;
        priv->main_paned   = NULL;      
-       priv->header_view  = NULL;
-       priv->folder_view  = NULL;
-       priv->msg_preview  = NULL;      
+       obj->header_view  = NULL;
+       obj->folder_view  = NULL;
+
+       /* 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),
+                                       PANGO_ELLIPSIZE_END);
 }
 
 static void
@@ -151,18 +152,6 @@ modest_main_window_finalize (GObject *obj)
 }
 
 
-static ModestHeaderView*
-header_view_new (ModestMainWindow *self)
-{
-       ModestHeaderView *header_view;
-       
-       header_view = modest_widget_factory_get_header_view
-               (modest_runtime_get_widget_factory());
-       modest_header_view_set_style (header_view, 0); /* don't show headers */
-                                                            
-       return header_view;
-}
-
 
 static void
 restore_sizes (ModestMainWindow *self)
@@ -178,7 +167,7 @@ restore_sizes (ModestMainWindow *self)
                                      "modest-main-window");
        modest_widget_memory_restore (conf, G_OBJECT(priv->main_paned),
                                      "modest-main-paned");
-       modest_widget_memory_restore (conf, G_OBJECT(priv->header_view),
+       modest_widget_memory_restore (conf, G_OBJECT(self->header_view),
                                      "header-view");
 }
 
@@ -195,7 +184,7 @@ save_sizes (ModestMainWindow *self)
        modest_widget_memory_save (conf,G_OBJECT(self), "modest-main-window");
        modest_widget_memory_save (conf, G_OBJECT(priv->main_paned),
                                   "modest-main-paned");
-       modest_widget_memory_save (conf, G_OBJECT(priv->header_view), "header-view");
+       modest_widget_memory_save (conf, G_OBJECT(self->header_view), "header-view");
 }
 
 static GtkWidget*
@@ -254,26 +243,22 @@ menubar_to_menu (GtkUIManager *ui_manager)
 static GtkWidget*
 get_toolbar (ModestMainWindow *self)
 {
-       GtkWidget   *progress_bar,
-                   *toolbar, *progress_box, *progress_alignment;
+       GtkWidget   *toolbar, *progress_box, *progress_alignment;
        GtkToolItem *progress_item;
        ModestWindowPrivate *parent_priv;
-       ModestWidgetFactory *widget_factory;
        GtkWidget   *stop_icon;
        
        parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
-       widget_factory = modest_runtime_get_widget_factory();
        
        /* Toolbar */
-       progress_bar  = modest_widget_factory_get_progress_bar(widget_factory);
        toolbar       = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
 
-       gtk_progress_bar_set_text (GTK_PROGRESS_BAR(progress_bar), "Connecting...");
+       gtk_progress_bar_set_text (GTK_PROGRESS_BAR(self->progress_bar), "Connecting...");
 
        progress_box        = gtk_hbox_new (FALSE, HILDON_MARGIN_DEFAULT);
        progress_alignment  = gtk_alignment_new (0.5, 0.5, 1, 0);
        
-       gtk_container_add  (GTK_CONTAINER(progress_alignment), progress_bar);
+       gtk_container_add  (GTK_CONTAINER(progress_alignment), self->progress_bar);
        gtk_box_pack_start (GTK_BOX(progress_box), progress_alignment, TRUE, TRUE, 0);
        
        progress_item  = gtk_tool_item_new ();
@@ -292,26 +277,80 @@ get_toolbar (ModestMainWindow *self)
        gtk_widget_show_all (toolbar);
        return toolbar;
 }
+
+
+static void
+on_destroy (GtkWidget *widget, GdkEvent  *event, ModestMainWindow *self)
+{
+       gtk_main_quit();
+}
+
+static void
+connect_signals (ModestMainWindow *self)
+{      
+       ModestWindowPrivate *parent_priv;
+       ModestMainWindowPrivate *priv;
+       TnyDevice *device;
+       ModestTnyAccountStore *account_store;
+       
+       priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+
+       account_store = modest_runtime_get_account_store ();
+       device        = tny_account_store_get_device(TNY_ACCOUNT_STORE(account_store));
        
+       /* folder view */
+       g_signal_connect (G_OBJECT(self->folder_view), "folder_selection_changed",
+                         G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
+       g_signal_connect (G_OBJECT(self->folder_view), "folder_moved",
+                         G_CALLBACK(modest_ui_actions_on_folder_moved), NULL);
+//     g_signal_connect (G_OBJECT(self->folder_view), "button-press-event",
+//                       G_CALLBACK (on_folder_view_button_press_event),self);
+//     g_signal_connect (self->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_CALLBACK(modest_ui_actions_on_header_status_update), self);
+       g_signal_connect (G_OBJECT(self->header_view), "header_selected",
+                         G_CALLBACK(modest_ui_actions_on_header_selected), self);
+       g_signal_connect (G_OBJECT(self->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_CALLBACK(modest_ui_actions_on_item_not_found), self);
+//     g_signal_connect (G_OBJECT(self->header_view), "button-press-event",
+//                       G_CALLBACK (on_header_view_button_press_event), self);
+//     g_signal_connect (G_OBJECT(self->header_view),"popup-menu",0
+//                       G_CALLBACK (on_header_view_button_press_event), self);
+
+       /* Account store */
+       g_signal_connect (G_OBJECT (modest_runtime_get_account_store()), "accounts_reloaded",
+                         G_CALLBACK (modest_ui_actions_on_accounts_reloaded), self);
+       
+       
+       /* window */
+       g_signal_connect (G_OBJECT(self), "destroy", G_CALLBACK(on_destroy), NULL);
+       g_signal_connect (G_OBJECT(self), "delete-event", G_CALLBACK(on_delete_event), self);
+}
+
+
+
 ModestWindow*
 modest_main_window_new (void)
 {
-       GObject *obj;
+       ModestMainWindow *self; 
        ModestMainWindowPrivate *priv;
-       ModestWidgetFactory *widget_factory;
        ModestWindowPrivate *parent_priv;
        GtkWidget *main_vbox;
        GtkWidget *header_win, *folder_win;
        GtkActionGroup *action_group;
        GError *error = NULL;
+       TnyFolderStoreQuery     *query;
 
-       obj  = g_object_new(MODEST_TYPE_MAIN_WINDOW, NULL);
-
-       priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
-       parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
+       self  = MODEST_MAIN_WINDOW(g_object_new(MODEST_TYPE_MAIN_WINDOW, NULL));
+       priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
 
-       widget_factory = modest_runtime_get_widget_factory ();
-       
        parent_priv->ui_manager = gtk_ui_manager_new();
        action_group = gtk_action_group_new ("ModestMainWindowActions");
 
@@ -319,8 +358,8 @@ modest_main_window_new (void)
        gtk_action_group_add_actions (action_group,
                                      modest_action_entries,
                                      G_N_ELEMENTS (modest_action_entries),
-                                     obj);
-
+                                     self);
+       
        gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
        g_object_unref (action_group);
 
@@ -333,50 +372,60 @@ modest_main_window_new (void)
        }
 
        /* Add accelerators */
-       gtk_window_add_accel_group (GTK_WINDOW (obj), 
+       gtk_window_add_accel_group (GTK_WINDOW (self), 
                                    gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
 
        /* add the toolbar */
-       parent_priv->toolbar = get_toolbar(MODEST_MAIN_WINDOW(obj));
-       hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (parent_priv->toolbar));
+       parent_priv->toolbar = get_toolbar(self);
+       hildon_window_add_toolbar (HILDON_WINDOW (self), GTK_TOOLBAR (parent_priv->toolbar));
 
        /* Menubar */
        parent_priv->menubar = menubar_to_menu (parent_priv->ui_manager);
-       hildon_window_set_menu (HILDON_WINDOW (obj), GTK_MENU (parent_priv->menubar));
-
-
-       /* widgets from factory */
-       priv->folder_view = modest_widget_factory_get_folder_view (widget_factory);
-       priv->header_view = header_view_new (MODEST_MAIN_WINDOW(obj));
-       priv->msg_preview = modest_widget_factory_get_msg_preview (widget_factory);
+       hildon_window_set_menu (HILDON_WINDOW (self), GTK_MENU (parent_priv->menubar));
+
+       /* folder view */
+       query = tny_folder_store_query_new ();
+       tny_folder_store_query_add_item (query, NULL,
+                                        TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
+       self->folder_view =
+               MODEST_FOLDER_VIEW(modest_folder_view_new (modest_runtime_get_account_store(),
+                                                          query));
+       if (!self->folder_view)
+               g_printerr ("modest: cannot instantiate folder view\n");        
+       g_object_unref (G_OBJECT (query));
        
-       folder_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->folder_view),
-                                                FALSE);
-       header_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->header_view),
-                                                FALSE);                           
+       /* header view */
+       self->header_view  =
+               MODEST_HEADER_VIEW(modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_DETAILS));
+       if (!self->header_view)
+               g_printerr ("modest: cannot instantiate header view\n");
+       
+       
+       folder_win = wrapped_in_scrolled_window (GTK_WIDGET(self->folder_view), FALSE);
+       header_win = wrapped_in_scrolled_window (GTK_WIDGET(self->header_view), FALSE);                    
 
        /* paned */
        priv->main_paned = gtk_hpaned_new ();
        gtk_paned_add1 (GTK_PANED(priv->main_paned), folder_win);
        gtk_paned_add2 (GTK_PANED(priv->main_paned), header_win);
-       gtk_widget_show (GTK_WIDGET(priv->header_view));
-       
-       gtk_tree_view_columns_autosize (GTK_TREE_VIEW(priv->header_view));
+       gtk_widget_show (GTK_WIDGET(self->header_view));
+       gtk_tree_view_columns_autosize (GTK_TREE_VIEW(self->header_view));
 
        /* putting it all together... */
        main_vbox = gtk_vbox_new (FALSE, 6);
        gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE,0);
 
-       gtk_container_add (GTK_CONTAINER(obj), main_vbox);
-       restore_sizes (MODEST_MAIN_WINDOW(obj));        
+       gtk_container_add (GTK_CONTAINER(self), main_vbox);
+       restore_sizes (MODEST_MAIN_WINDOW(self));       
 
-       gtk_window_set_title (GTK_WINDOW(obj), _("Modest"));
-       gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
+       gtk_window_set_title (GTK_WINDOW(self), _("Modest"));
+       gtk_window_set_icon_from_file (GTK_WINDOW(self), MODEST_APP_ICON, NULL);
        
        gtk_widget_show_all (main_vbox);
 
-       g_signal_connect (G_OBJECT(obj), "delete-event",
-                         G_CALLBACK(on_delete_event), obj);
-       
-       return (ModestWindow *) obj;
+       g_signal_connect (G_OBJECT(self), "delete-event",
+                         G_CALLBACK(on_delete_event), self);
+
+       connect_signals (self);
+       return MODEST_WINDOW(self);
 }
diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c
new file mode 100644 (file)
index 0000000..7026096
--- /dev/null
@@ -0,0 +1,419 @@
+/* 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 <glib/gi18n.h>
+#include <tny-account-store.h>
+
+#include <gtk/gtk.h>
+#include <modest-account-mgr.h>
+#include <modest-account-mgr-helpers.h>
+
+#include <widgets/modest-msg-edit-window.h>
+#include <widgets/modest-combo-box.h>
+
+#include <modest-runtime.h>
+
+#include <widgets/modest-msg-edit-window-ui.h>
+#include "modest-icon-names.h"
+#include "modest-widget-memory.h"
+#include "modest-window-priv.h"
+#include "modest-mail-operation.h"
+#include "modest-tny-platform-factory.h"
+#include "modest-tny-msg.h"
+#include <tny-simple-list.h>
+
+static void  modest_msg_edit_window_class_init   (ModestMsgEditWindowClass *klass);
+static void  modest_msg_edit_window_init         (ModestMsgEditWindow *obj);
+static void  modest_msg_edit_window_finalize     (GObject *obj);
+
+/* list my signals */
+enum {
+       /* MY_SIGNAL_1, */
+       /* MY_SIGNAL_2, */
+       LAST_SIGNAL
+};
+
+typedef struct _ModestMsgEditWindowPrivate ModestMsgEditWindowPrivate;
+struct _ModestMsgEditWindowPrivate {
+       GtkWidget   *msg_body;
+       GtkWidget   *from_field;
+       GtkWidget   *to_field;
+       GtkWidget   *cc_field;
+       GtkWidget   *bcc_field;
+       GtkWidget   *subject_field;
+};
+
+#define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+                                                    MODEST_TYPE_MSG_EDIT_WINDOW, \
+                                                    ModestMsgEditWindowPrivate))
+/* globals */
+static GtkWindowClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_msg_edit_window_get_type (void)
+{
+       static GType my_type = 0;
+       if (!my_type) {
+               static const GTypeInfo my_info = {
+                       sizeof(ModestMsgEditWindowClass),
+                       NULL,           /* base init */
+                       NULL,           /* base finalize */
+                       (GClassInitFunc) modest_msg_edit_window_class_init,
+                       NULL,           /* class finalize */
+                       NULL,           /* class data */
+                       sizeof(ModestMsgEditWindow),
+                       1,              /* n_preallocs */
+                       (GInstanceInitFunc) modest_msg_edit_window_init,
+                       NULL
+               };
+               my_type = g_type_register_static (MODEST_TYPE_WINDOW,
+                                                 "ModestMsgEditWindow",
+                                                 &my_info, 0);
+       }
+       return my_type;
+}
+
+static void
+modest_msg_edit_window_class_init (ModestMsgEditWindowClass *klass)
+{
+       GObjectClass *gobject_class;
+       gobject_class = (GObjectClass*) klass;
+
+       parent_class            = g_type_class_peek_parent (klass);
+       gobject_class->finalize = modest_msg_edit_window_finalize;
+
+       g_type_class_add_private (gobject_class, sizeof(ModestMsgEditWindowPrivate));
+}
+
+static void
+modest_msg_edit_window_init (ModestMsgEditWindow *obj)
+{
+       ModestMsgEditWindowPrivate *priv;
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
+
+       priv->msg_body      = NULL;
+       priv->from_field    = NULL;
+       priv->to_field      = NULL;
+       priv->cc_field      = NULL;
+       priv->bcc_field     = NULL;
+       priv->subject_field = NULL;
+}
+
+
+
+static void
+save_settings (ModestMsgEditWindow *self)
+{
+       modest_widget_memory_save (modest_runtime_get_conf(),
+                                  G_OBJECT(self), "modest-edit-msg-window");
+}
+
+
+static void
+restore_settings (ModestMsgEditWindow *self)
+{
+
+       modest_widget_memory_restore (modest_runtime_get_conf(),
+                                     G_OBJECT(self), "modest-edit-msg-window");
+}
+
+
+/* FIXME: this is a dup from the one in gtk/ */
+static ModestPairList*
+get_transports (void)
+{
+       ModestAccountMgr *account_mgr;
+       GSList *transports = NULL;
+       GSList *cursor, *accounts;
+       
+       account_mgr = modest_runtime_get_account_mgr();
+       cursor = accounts = modest_account_mgr_account_names (account_mgr, NULL);
+       while (cursor) {
+               gchar *account_name = (gchar*)cursor->data;
+               gchar *from_string  = modest_account_mgr_get_from_string (account_mgr,
+                                                                         account_name);
+               if (!from_string)  {
+                       /* something went wrong: ignore this one */
+                       g_free (account_name);
+                       cursor->data = NULL;
+               } else {
+                       ModestPair *pair;
+                       pair = modest_pair_new ((gpointer) account_name,
+                                               (gpointer) from_string , TRUE);
+                       transports = g_slist_prepend (transports, pair);
+               } /* don't free account name; it's freed when the transports list is freed */
+               cursor = cursor->next;
+       }
+       g_slist_free (accounts);
+       return transports;
+}
+
+
+
+static void
+init_window (ModestMsgEditWindow *obj)
+{
+       GtkWidget *to_button, *cc_button, *bcc_button; 
+       GtkWidget *header_table;
+       GtkWidget *main_vbox;
+       ModestMsgEditWindowPrivate *priv;
+       ModestPairList *protos;
+       
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
+
+       to_button     = gtk_button_new_with_label (_("To..."));
+       cc_button     = gtk_button_new_with_label (_("Cc..."));
+       bcc_button    = gtk_button_new_with_label (_("Bcc..."));
+
+               
+       protos = get_transports ();
+       priv->from_field    = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
+
+       priv->to_field      = gtk_entry_new_with_max_length (80);
+       priv->cc_field      = gtk_entry_new_with_max_length (80);
+       priv->bcc_field     = gtk_entry_new_with_max_length (80);
+       priv->subject_field = gtk_entry_new_with_max_length (80);
+       
+       header_table = gtk_table_new (5,2, FALSE);
+       
+       gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("From:")),
+                         0,1,0,1, GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), to_button,     0,1,1,2, GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), cc_button,     0,1,2,3, GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), bcc_button,    0,1,3,4, GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("Subject:")),
+                         0,1,4,5, GTK_SHRINK, 0, 0, 0);
+
+       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->from_field,   1,2,0,1);
+       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->to_field,     1,2,1,2);
+       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->cc_field,     1,2,2,3);
+       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->bcc_field,    1,2,3,4);
+       gtk_table_attach_defaults (GTK_TABLE(header_table), priv->subject_field,1,2,4,5);
+
+       priv->msg_body = gtk_text_view_new ();
+       
+       main_vbox = gtk_vbox_new  (FALSE, 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));
+       gtk_container_add (GTK_CONTAINER(obj), main_vbox);
+}
+       
+
+
+static void
+modest_msg_edit_window_finalize (GObject *obj)
+{
+       G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+
+static gboolean
+on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgEditWindow *self)
+{
+       save_settings (self);
+       return FALSE;
+}
+
+static GtkWidget *
+menubar_to_menu (GtkUIManager *ui_manager)
+{
+       GtkWidget *main_menu;
+       GtkWidget *menubar;
+       GList *iter;
+
+       /* Create new main menu */
+       main_menu = gtk_menu_new();
+
+       /* Get the menubar from the UI manager */
+       menubar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+
+       iter = gtk_container_get_children (GTK_CONTAINER (menubar));
+       while (iter) {
+               GtkWidget *menu;
+
+               menu = GTK_WIDGET (iter->data);
+               gtk_widget_reparent(menu, main_menu);
+
+               iter = g_list_next (iter);
+       }
+       return main_menu;
+}
+
+ModestWindow*
+modest_msg_edit_window_new (ModestEditType type)
+{
+       GObject *obj;
+       ModestWindowPrivate *parent_priv;
+       ModestMsgEditWindowPrivate *priv;
+       GtkActionGroup *action_group;
+       GError *error = NULL;
+
+       g_return_val_if_fail (type < MODEST_EDIT_TYPE_NUM, NULL);
+       
+       obj = g_object_new(MODEST_TYPE_MSG_EDIT_WINDOW, NULL);
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (obj);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
+
+       parent_priv->ui_manager = gtk_ui_manager_new();
+       action_group = gtk_action_group_new ("ModestMsgEditWindowActions");
+
+       /* Add common actions */
+       gtk_action_group_add_actions (action_group,
+                                     modest_msg_edit_action_entries,
+                                     G_N_ELEMENTS (modest_msg_edit_action_entries),
+                                     obj);
+       gtk_action_group_add_toggle_actions (action_group,
+                                            modest_msg_edit_toggle_action_entries,
+                                            G_N_ELEMENTS (modest_msg_edit_toggle_action_entries),
+                                            obj);
+       gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
+       g_object_unref (action_group);
+
+       /* Load the UI definition */
+       gtk_ui_manager_add_ui_from_file (parent_priv->ui_manager, MODEST_UIDIR "modest-edit-msg-window-ui.xml", &error);
+       if (error != NULL) {
+               g_warning ("Could not merge modest-edit-msg-window-ui.xml: %s", error->message);
+               g_error_free (error);
+               error = NULL;
+       }
+
+       /* Add accelerators */
+       gtk_window_add_accel_group (GTK_WINDOW (obj), 
+                                   gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
+
+
+       /* Toolbar */
+       parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
+       hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (parent_priv->toolbar));
+
+       /* Menubar */
+       parent_priv->menubar = menubar_to_menu (parent_priv->ui_manager);
+       hildon_window_set_menu (HILDON_WINDOW (obj), GTK_MENU (parent_priv->menubar));
+
+       /* Init window */
+       init_window (MODEST_MSG_EDIT_WINDOW(obj));
+
+       restore_settings (MODEST_MSG_EDIT_WINDOW(obj));
+       
+       gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+       gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
+
+       g_signal_connect (G_OBJECT(obj), "delete-event",
+                         G_CALLBACK(on_delete_event), obj);
+
+       return (ModestWindow*)obj;
+}
+
+void
+modest_msg_edit_window_set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
+{
+       TnyHeader *header;
+       GtkTextBuffer *buf;
+       const gchar *to, *cc, *bcc, *subject;
+       ModestMsgEditWindowPrivate *priv;
+
+       g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
+       g_return_if_fail (TNY_IS_MSG (msg));
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+
+       header = tny_msg_get_header (msg);
+       to      = tny_header_get_to (header);
+       cc      = tny_header_get_cc (header);
+       bcc     = tny_header_get_bcc (header);
+       subject = tny_header_get_subject (header);
+
+       if (to)
+               gtk_entry_set_text (GTK_ENTRY(priv->to_field),  to);
+       if (cc)
+               gtk_entry_set_text (GTK_ENTRY(priv->cc_field),  cc);
+       if (bcc)
+               gtk_entry_set_text (GTK_ENTRY(priv->bcc_field), bcc);
+       if (subject)
+               gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);   
+       
+       buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body));
+       gtk_text_buffer_set_text (buf,
+                                 (const gchar *) modest_tny_msg_get_body (msg, FALSE),
+                                 -1);
+
+       /* TODO: lower priority, select in the From: combo to the
+          value that comes from msg <- not sure, should it be
+          allowed? */
+       
+       /* TODO: set attachments */
+}
+
+MsgData * 
+modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window)
+{
+       MsgData *data;
+       ModestAccountData *account_data;
+       GtkTextBuffer *buf;
+       GtkTextIter b, e;
+       ModestMsgEditWindowPrivate *priv;
+       
+       g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (edit_window), NULL);
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (edit_window);
+                                                                       
+       account_data = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
+       buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->msg_body));        
+       gtk_text_buffer_get_bounds (buf, &b, &e);
+
+       /* don't free these (except from) */
+       data = g_slice_new0 (MsgData);
+       data->from    =  g_strdup_printf ("%s <%s>", account_data->fullname, account_data->email) ;
+       data->to      =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->to_field));
+       data->cc      =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->cc_field));
+       data->bcc     =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->bcc_field));
+       data->subject =  (gchar*) gtk_entry_get_text (GTK_ENTRY(priv->subject_field));  
+       data->body    =  gtk_text_buffer_get_text (buf, &b, &e, FALSE);
+
+       return data;
+}
+
+void 
+modest_msg_edit_window_free_msg_data (ModestMsgEditWindow *edit_window,
+                                                     MsgData *data)
+{
+       g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (edit_window));
+
+       g_free (data->from);
+       g_free (data->body);
+       g_slice_free (MsgData, data);
+}
index 85986c4..dc97264 100644 (file)
@@ -28,6 +28,8 @@
  */
 
 #include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
 #include "modest-store-widget.h"
 #include <string.h>
 
@@ -52,7 +54,6 @@ struct _ModestStoreWidgetPrivate {
        GtkWidget *remember_pwd;
 
        ModestProtocol proto;
-       ModestWidgetFactory *factory;
 };
 #define MODEST_STORE_WIDGET_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                  MODEST_TYPE_STORE_WIDGET, \
@@ -195,9 +196,11 @@ on_entry_changed (GtkEntry *entry, gpointer user_data)
 static GtkWidget*
 imap_pop_configuration (ModestStoreWidget *self)
 {
+       ModestPairList *protos;
        ModestStoreWidgetPrivate *priv;
        GtkWidget *label, *box, *hbox;
-
+       GtkWidget *combo;
+       
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
        box = gtk_vbox_new (FALSE, 6);
        
@@ -225,8 +228,10 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
 
-       priv->security = modest_widget_factory_get_combo_box (priv->factory, 
-                                                             MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS);
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_SECURITY);
+       priv->security = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
+       
        hbox = gtk_hbox_new (FALSE, 6);
        label = gtk_label_new(NULL);
        gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
@@ -239,10 +244,12 @@ imap_pop_configuration (ModestStoreWidget *self)
 
        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);
+       
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
+       combo =  modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
 
+       gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);
        priv->remember_pwd =
                gtk_check_button_new_with_label (_("Remember password"));
        gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
@@ -261,21 +268,13 @@ imap_pop_configuration (ModestStoreWidget *self)
 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;
-       }
-
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
 
 
 GtkWidget*
-modest_store_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
+modest_store_widget_new (ModestProtocol proto)
 {
        GObject *obj;
        GtkWidget *w;
@@ -283,15 +282,11 @@ modest_store_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
        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 = proto;
        
        if (proto == MODEST_PROTOCOL_STORE_POP || proto == MODEST_PROTOCOL_STORE_IMAP)
@@ -317,10 +312,12 @@ modest_store_widget_get_remember_password (ModestStoreWidget *self)
        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));
+       if (GTK_IS_TOGGLE_BUTTON(priv->remember_pwd)) 
+               return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+       else
+               return FALSE;
 }
 
-
 const gchar*
 modest_store_widget_get_username (ModestStoreWidget *self)
 {
@@ -328,8 +325,11 @@ modest_store_widget_get_username (ModestStoreWidget *self)
 
        g_return_val_if_fail (self, NULL);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
-       
-       return gtk_entry_get_text (GTK_ENTRY(priv->username));
+
+       if (GTK_IS_ENTRY(priv->username)) 
+               return gtk_entry_get_text (GTK_ENTRY(priv->username));
+       else
+               return NULL;
 }
 
 const gchar*
@@ -340,7 +340,10 @@ modest_store_widget_get_servername (ModestStoreWidget *self)
        g_return_val_if_fail (self, NULL);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
        
-       return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+       if (GTK_IS_ENTRY(priv->servername)) 
+               return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+       else
+               return NULL;
 }
 
 
@@ -354,3 +357,18 @@ modest_store_widget_get_proto (ModestStoreWidget *self)
 
        return priv->proto;
 }
+
+
+gchar *
+modest_store_widget_get_path (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+       
+       g_return_val_if_fail (self, MODEST_PROTOCOL_UNKNOWN);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+       if (GTK_IS_FILE_CHOOSER(priv->chooser))
+               return gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(priv->chooser));
+       else
+               return NULL;
+}
index 15a0d2b..b17d2f6 100644 (file)
@@ -4,7 +4,8 @@
 #ifndef __MODEST_STORE_WIDGET_H__
 #define __MODEST_STORE_WIDGET_H__
 
-#include <modest-widget-factory.h>
+#include <gtk/gtkvbox.h>
+#include <modest-protocol-info.h>
 
 G_BEGIN_DECLS
 
@@ -33,13 +34,14 @@ struct _ModestStoreWidgetClass {
 /* member functions */
 GType        modest_store_widget_get_type    (void) G_GNUC_CONST;
 
-GtkWidget*   modest_store_widget_new         (ModestWidgetFactory *factory,
-                                             ModestProtocol proto);
+GtkWidget*   modest_store_widget_new         (ModestProtocol 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);
 ModestProtocol  modest_store_widget_get_proto             (ModestStoreWidget *self);
+gchar *         modest_store_widget_get_path              (ModestStoreWidget *self);
+
 
 G_END_DECLS
 
index ed1ce8b..b9cc626 100644 (file)
@@ -3,9 +3,14 @@
 /* insert (c)/licensing information) */
 
 #include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
+#include <modest-protocol-info.h>
 #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);
@@ -20,8 +25,6 @@ enum {
 typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate;
 struct _ModestTransportWidgetPrivate {
        ModestProtocol proto;
-       ModestWidgetFactory *factory;
-
        GtkWidget *servername;
        GtkWidget *username;
        GtkWidget *auth;
@@ -91,14 +94,6 @@ modest_transport_widget_init (ModestTransportWidget *obj)
 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;
-       }
-
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -120,7 +115,8 @@ static GtkWidget*
 smtp_configuration (ModestTransportWidget *self)
 {
        ModestTransportWidgetPrivate *priv;
-       GtkWidget *label, *box, *hbox;
+       GtkWidget *label, *box, *hbox, *combo;
+       ModestPairList *protos;
        
        priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
        box = gtk_vbox_new (FALSE, 6);
@@ -163,20 +159,25 @@ smtp_configuration (ModestTransportWidget *self)
        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);
 
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
+       combo  = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
        
+       gtk_box_pack_start (GTK_BOX(hbox), combo, 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);
+
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
+       combo  = modest_combo_box_new (protos);
+       modest_pair_list_free (protos);
+       
+       gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);
        priv->remember_pwd =
                gtk_check_button_new_with_label (_("Remember password"));
        gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
@@ -186,7 +187,7 @@ smtp_configuration (ModestTransportWidget *self)
 
 
 GtkWidget*
-modest_transport_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
+modest_transport_widget_new (ModestProtocol proto)
 {
        GObject *obj;
        GtkWidget *w;
@@ -194,15 +195,11 @@ modest_transport_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
        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 = proto;
        
        if (proto == MODEST_PROTOCOL_TRANSPORT_SMTP) 
index 5a8b318..73417ee 100644 (file)
@@ -4,10 +4,10 @@
 #ifndef __MODEST_TRANSPORT_WIDGET_H__
 #define __MODEST_TRANSPORT_WIDGET_H__
 
-#include <modest-widget-factory.h>
-
 G_BEGIN_DECLS
 
+#include <gtk/gtkvbox.h>
+
 /* 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))
@@ -33,7 +33,7 @@ struct _ModestTransportWidgetClass {
 /* member functions */
 GType        modest_transport_widget_get_type    (void) G_GNUC_CONST;
 
-GtkWidget*   modest_transport_widget_new         (ModestWidgetFactory *factory, ModestProtocol proto);
+GtkWidget*   modest_transport_widget_new         (ModestProtocol proto);
 
 gboolean        modest_transport_widget_get_remember_password (ModestTransportWidget *self);
 gboolean        modest_transport_widget_get_requires_auth     (ModestTransportWidget *self);
diff --git a/src/maemo/ui/modest-edit-msg-window-ui.xml b/src/maemo/ui/modest-edit-msg-window-ui.xml
deleted file mode 100644 (file)
index 040fdaa..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
- * 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.
--->
-
-<ui>
-
-  <menubar name="MenuBar">
-
-    <menu name="ViewMenu" action="View">
-      <menuitem name="ViewToFieldMenu" action="ViewToField"/>
-      <menuitem name="ViewCcFieldMenu" action="ViewCcField"/>
-      <menuitem name="ViewBccFieldMenu" action="ViewBccField"/>
-    </menu>
-
-  </menubar>
-
-  <toolbar name="ToolBar">
-    <toolitem action="ActionsSend"/>
-  </toolbar>
-
-</ui>
diff --git a/src/maemo/ui/modest-main-window-ui.xml b/src/maemo/ui/modest-main-window-ui.xml
new file mode 100644 (file)
index 0000000..83fa0b9
--- /dev/null
@@ -0,0 +1,130 @@
+<!--
+ * 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.
+-->
+
+<ui>
+
+  <menubar name="MenuBar">
+    
+    <menu name="MessageMenu" action="Message">
+      <menuitem name="MessageNewMenu"  action="MessageNew"/>
+      <menuitem name="MessageOpenMenu" action="MessageOpen"/>
+      <separator/>
+      <menuitem name="MessageCancelSendingMenu"  action="MessageCancelSending"/>
+      <menuitem name="MessageSendMenu" action="MessageSend"/>
+      <separator/>
+      <menuitem name="MessageDeleteMenu" action="MessageDelete"/>
+      <separator/>
+      <menuitem name="MessageSendReceiveMenu"  action="MessageSendReceive"/>
+      <menuitem name="MessageContentsMenu"     action="MessageContents"/>
+      <menuitem name="MessageDetailsMenu"      action="MessageDetails"/>
+    </menu>
+    
+    <menu name="EditMenu" action="Edit">
+      <menuitem name="EditUndoMenu" action="EditUndo"/>
+      <separator/>
+      <menuitem name="EditCutMenu" action="EditCut"/>
+      <menuitem name="EditCopyMenu" action="EditCopy"/>
+      <menuitem name="EditPasteMenu" action="EditPaste"/>
+      <separator/>
+      <menuitem name="EditSelectMenu" action="EditSelect"/>
+      <menuitem name="EditMoveToMenu" action="EditMoveTo"/>
+    </menu> 
+
+    <menu name="ViewMenu" action="View">
+      <menuitem name="ViewSortMenu" action="ViewSort"/>
+      <separator/>
+      <menuitem name="ViewFoldersMenu" action="ViewFolders"/>
+      <menuitem name="ViewFullscreenMenu" action="ViewFullscreen"/>
+      <separator/>
+      <menuitem name="ViewThumbnailsMenu" action="ViewThumbnails"/>
+      <menuitem name="ViewDetailsMenu" action="ViewDetails"/>
+      <separator/>
+      <menuitem name="ViewShowToolbarMenu" action="ViewShowToolbar"/>
+   </menu>
+
+    <menu name="FoldersMenu" action="Folders">
+      <menuitem name="FoldersNewMenu"    action="FoldersNew"/>
+      <menuitem name="FoldersManageMenu" action="FoldersManage"/>
+      <separator/>
+      <menuitem name="FoldersDetailsMenu" action="FoldersDetails"/>
+      <separator/>
+    </menu>
+    
+    <menu name="AccountsMenu" action="Accounts">
+      <menuitem name="AccountsNewMenu"    action="AccountsNew"/>
+      <separator/>
+      <menuitem name="AccountsManageMenu" action="AccountsManage"/>
+      <menuitem name="AccountsConfigureSMTPMenu" action="AccountsConfigureSMTP"/>
+    </menu>
+    
+    <menu name="ToolsMenu" action="Tools">
+      <menuitem name="ToolsSettingsMenu" action="ToolsSettings"/>
+      <separator/>
+      <menuitem name="ToolsContactsMenu" action="ToolsContacts"/>
+      <menuitem name="ToolsFontSettingsMenu" action="ToolsFontSettings"/>
+      <separator/>
+      <menuitem name="ToolsSearchMessagesMenu" action="ToolsSearchMessages"/>
+      <separator/>
+      <menuitem name="ToolsHelpMenu" action="ToolsHelp"/>
+    </menu>
+    
+    <menu name="CloseMenu" action="Close">
+      <menuitem name="CloseWindowMenu"     action="CloseWindow"/>
+      <menuitem name="CloseAllWindowsMenu" action="CloseAllWindows"/>
+    </menu>
+  </menubar>
+
+  <toolbar name="ToolBar">
+    <toolitem action="ToolbarMessageNew"/> 
+    <separator/>
+    <toolitem action="ToolbarMessageReply"/> 
+    <toolitem action="ToolbarMessageReplyAll"/>
+    <toolitem action="ToolbarMessageForward"/> 
+    <separator/>
+    <toolitem action="ToolbarSendReceive"/>
+    <toolitem  action="ToolbarToggleView"/>
+    <separator/>
+    <toolitem action="ToolbarDeleteMessage"/>
+    <separator/>
+  </toolbar>
+
+  <popup name="HeaderViewContextMenu">
+    <menuitem action="MessageReply"/>
+    <menuitem action="MessageForward"/>
+  </popup>
+  
+  <popup name="FolderViewContextMenu">
+    <menuitem action="FoldersNew"/>
+    <menuitem action="FoldersDelete"/>
+    <menuitem action="FoldersRename"/>
+    <menuitem action="FoldersMoveToTrash"/>
+  </popup>
+
+</ui>
diff --git a/src/maemo/ui/modest-msg-edit-window-ui.xml b/src/maemo/ui/modest-msg-edit-window-ui.xml
new file mode 100644 (file)
index 0000000..040fdaa
--- /dev/null
@@ -0,0 +1,47 @@
+<!--
+ * 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.
+-->
+
+<ui>
+
+  <menubar name="MenuBar">
+
+    <menu name="ViewMenu" action="View">
+      <menuitem name="ViewToFieldMenu" action="ViewToField"/>
+      <menuitem name="ViewCcFieldMenu" action="ViewCcField"/>
+      <menuitem name="ViewBccFieldMenu" action="ViewBccField"/>
+    </menu>
+
+  </menubar>
+
+  <toolbar name="ToolBar">
+    <toolitem action="ActionsSend"/>
+  </toolbar>
+
+</ui>
diff --git a/src/maemo/ui/modest-ui.xml b/src/maemo/ui/modest-ui.xml
deleted file mode 100644 (file)
index 83fa0b9..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<!--
- * 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.
--->
-
-<ui>
-
-  <menubar name="MenuBar">
-    
-    <menu name="MessageMenu" action="Message">
-      <menuitem name="MessageNewMenu"  action="MessageNew"/>
-      <menuitem name="MessageOpenMenu" action="MessageOpen"/>
-      <separator/>
-      <menuitem name="MessageCancelSendingMenu"  action="MessageCancelSending"/>
-      <menuitem name="MessageSendMenu" action="MessageSend"/>
-      <separator/>
-      <menuitem name="MessageDeleteMenu" action="MessageDelete"/>
-      <separator/>
-      <menuitem name="MessageSendReceiveMenu"  action="MessageSendReceive"/>
-      <menuitem name="MessageContentsMenu"     action="MessageContents"/>
-      <menuitem name="MessageDetailsMenu"      action="MessageDetails"/>
-    </menu>
-    
-    <menu name="EditMenu" action="Edit">
-      <menuitem name="EditUndoMenu" action="EditUndo"/>
-      <separator/>
-      <menuitem name="EditCutMenu" action="EditCut"/>
-      <menuitem name="EditCopyMenu" action="EditCopy"/>
-      <menuitem name="EditPasteMenu" action="EditPaste"/>
-      <separator/>
-      <menuitem name="EditSelectMenu" action="EditSelect"/>
-      <menuitem name="EditMoveToMenu" action="EditMoveTo"/>
-    </menu> 
-
-    <menu name="ViewMenu" action="View">
-      <menuitem name="ViewSortMenu" action="ViewSort"/>
-      <separator/>
-      <menuitem name="ViewFoldersMenu" action="ViewFolders"/>
-      <menuitem name="ViewFullscreenMenu" action="ViewFullscreen"/>
-      <separator/>
-      <menuitem name="ViewThumbnailsMenu" action="ViewThumbnails"/>
-      <menuitem name="ViewDetailsMenu" action="ViewDetails"/>
-      <separator/>
-      <menuitem name="ViewShowToolbarMenu" action="ViewShowToolbar"/>
-   </menu>
-
-    <menu name="FoldersMenu" action="Folders">
-      <menuitem name="FoldersNewMenu"    action="FoldersNew"/>
-      <menuitem name="FoldersManageMenu" action="FoldersManage"/>
-      <separator/>
-      <menuitem name="FoldersDetailsMenu" action="FoldersDetails"/>
-      <separator/>
-    </menu>
-    
-    <menu name="AccountsMenu" action="Accounts">
-      <menuitem name="AccountsNewMenu"    action="AccountsNew"/>
-      <separator/>
-      <menuitem name="AccountsManageMenu" action="AccountsManage"/>
-      <menuitem name="AccountsConfigureSMTPMenu" action="AccountsConfigureSMTP"/>
-    </menu>
-    
-    <menu name="ToolsMenu" action="Tools">
-      <menuitem name="ToolsSettingsMenu" action="ToolsSettings"/>
-      <separator/>
-      <menuitem name="ToolsContactsMenu" action="ToolsContacts"/>
-      <menuitem name="ToolsFontSettingsMenu" action="ToolsFontSettings"/>
-      <separator/>
-      <menuitem name="ToolsSearchMessagesMenu" action="ToolsSearchMessages"/>
-      <separator/>
-      <menuitem name="ToolsHelpMenu" action="ToolsHelp"/>
-    </menu>
-    
-    <menu name="CloseMenu" action="Close">
-      <menuitem name="CloseWindowMenu"     action="CloseWindow"/>
-      <menuitem name="CloseAllWindowsMenu" action="CloseAllWindows"/>
-    </menu>
-  </menubar>
-
-  <toolbar name="ToolBar">
-    <toolitem action="ToolbarMessageNew"/> 
-    <separator/>
-    <toolitem action="ToolbarMessageReply"/> 
-    <toolitem action="ToolbarMessageReplyAll"/>
-    <toolitem action="ToolbarMessageForward"/> 
-    <separator/>
-    <toolitem action="ToolbarSendReceive"/>
-    <toolitem  action="ToolbarToggleView"/>
-    <separator/>
-    <toolitem action="ToolbarDeleteMessage"/>
-    <separator/>
-  </toolbar>
-
-  <popup name="HeaderViewContextMenu">
-    <menuitem action="MessageReply"/>
-    <menuitem action="MessageForward"/>
-  </popup>
-  
-  <popup name="FolderViewContextMenu">
-    <menuitem action="FoldersNew"/>
-    <menuitem action="FoldersDelete"/>
-    <menuitem action="FoldersRename"/>
-    <menuitem action="FoldersMoveToTrash"/>
-  </popup>
-
-</ui>