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 \
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 = \
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)
*/
#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>
typedef struct _ModestAccountAssistantPrivate ModestAccountAssistantPrivate;
struct _ModestAccountAssistantPrivate {
- ModestWidgetFactory *factory;
ModestAccountMgr *account_mgr;
GtkWidget *account_name;
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}; */
(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);
}
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);
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)
{
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)
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)
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);
add_receiving_page (ModestAccountAssistant *self)
{
GtkWidget *page, *box, *combo;
-
+ ModestPairList *protos;
ModestAccountAssistantPrivate *priv;
priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(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);
}
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);
add_sending_page (ModestAccountAssistant *self)
{
GtkWidget *page, *box, *combo;
-
+ ModestPairList *protos;
ModestAccountAssistantPrivate *priv;
priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(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);
}
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
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));
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 */
}
+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,
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);
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);
}
#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>
/* 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
*/
#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 */
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, \
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);
}
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 =
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
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));
{
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;
}
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),
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);
#define __MODEST_ACCOUNT_VIEW_WINDOW_H__
#include <gtk/gtk.h>
-#include <modest-widget-factory.h>
G_BEGIN_DECLS
/* 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
+++ /dev/null
-/* Copyright (c) 2006, Nokia Corporation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the Nokia Corporation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <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);
-}
{ "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 },
/* 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 */
/* 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) },
};
#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"
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);
typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate;
struct _ModestMainWindowPrivate {
-
GtkWidget *msg_paned;
GtkWidget *main_paned;
-
- ModestHeaderView *header_view;
- ModestFolderView *folder_view;
- ModestMsgView *msg_preview;
};
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
}
-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)
"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");
}
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*
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 ();
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");
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);
}
/* 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);
}
--- /dev/null
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <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);
+}
*/
#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
#include "modest-store-widget.h"
#include <string.h>
GtkWidget *remember_pwd;
ModestProtocol proto;
- ModestWidgetFactory *factory;
};
#define MODEST_STORE_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MODEST_TYPE_STORE_WIDGET, \
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);
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:"));
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,
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;
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)
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)
{
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*
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;
}
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;
+}
#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
/* 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
/* 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);
typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate;
struct _ModestTransportWidgetPrivate {
ModestProtocol proto;
- ModestWidgetFactory *factory;
-
GtkWidget *servername;
GtkWidget *username;
GtkWidget *auth;
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);
}
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);
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,
GtkWidget*
-modest_transport_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
+modest_transport_widget_new (ModestProtocol proto)
{
GObject *obj;
GtkWidget *w;
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)
#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))
/* 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);
+++ /dev/null
-<!--
- * Copyright (c) 2006, Nokia Corporation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the Nokia Corporation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<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>
--- /dev/null
+<!--
+ * Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<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>
--- /dev/null
+<!--
+ * Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<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>
+++ /dev/null
-<!--
- * Copyright (c) 2006, Nokia Corporation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the Nokia Corporation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<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>