[Xfce4-commits] <postler:master> Introduce AcountSetup class and add a 'New Account' button
Christian Dywan
noreply at xfce.org
Sun Jul 18 15:40:17 CEST 2010
Updating branch refs/heads/master
to 05a94279f92794b2ee843f31ef77ac5121e9e437 (commit)
from 8eed4867ba0b87fdd0586ca31d745bd388e80045 (commit)
commit 05a94279f92794b2ee843f31ef77ac5121e9e437
Author: Christian Dywan <christian at twotoasts.de>
Date: Sat Jul 17 16:34:52 2010 +0200
Introduce AcountSetup class and add a 'New Account' button
postler/postler-accountsetup.vala | 78 +++++++++++++++++++++++++++++++++++++
postler/postler-app.vala | 2 +
postler/postler-bureau.vala | 17 ++++++++-
3 files changed, 96 insertions(+), 1 deletions(-)
diff --git a/postler/postler-accountsetup.vala b/postler/postler-accountsetup.vala
new file mode 100644
index 0000000..9f00e76
--- /dev/null
+++ b/postler/postler-accountsetup.vala
@@ -0,0 +1,78 @@
+/*
+ Copyright (C) 2010 Christian Dywan <christian at twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ See the file COPYING for the full license text.
+*/
+
+public class Postler.AccountSetup : Gtk.Dialog {
+ Gtk.SizeGroup sizegroup;
+ Gtk.Box content_area;
+
+ Gtk.Entry realname;
+ Gtk.Entry address;
+ Gtk.Entry password;
+
+ AccountInfo info;
+
+ public signal void done (AccountInfo info);
+
+ private AccountSetup (AccountInfo info) {
+ this.info = info;
+
+ sizegroup = new Gtk.SizeGroup (Gtk.SizeGroupMode.HORIZONTAL);
+ content_area = get_content_area () as Gtk.Box;
+
+ realname = new Gtk.Entry ();
+ add_label_entry (_("Full Name"), realname);
+ address = new Gtk.Entry ();
+ add_label_entry (_("Electronic Mail Address"), address);
+ password = new Gtk.Entry ();
+ password.visibility = false;
+ add_label_entry (_("Password"), password);
+ content_area.show_all ();
+
+ add_buttons (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+ _("_Create Account"), Gtk.ResponseType.APPLY);
+ set_default_response (Gtk.ResponseType.APPLY);
+
+ response.connect (responded);
+ }
+
+ void add_label_entry (string text, Gtk.Entry entry) {
+ var hbox = new Gtk.HBox (false, 0);
+ content_area.pack_start (hbox, false, false, 4);
+ var label = new Gtk.Label.with_mnemonic (text);
+ label.xalign = 0;
+ sizegroup.add_widget (label);
+ hbox.pack_start (label, false, false, 4);
+ entry.activate.connect ((entry) => {
+ responded (Gtk.ResponseType.APPLY); });
+ hbox.pack_start (entry, false, false, 4);
+ }
+
+ void responded (int response) {
+ if (response == Gtk.ResponseType.APPLY) {
+ info.name = address.text;
+ info.realname = realname.text;
+ info.address = address.text;
+ info.password = password.text;
+ done (info);
+ }
+ destroy ();
+ }
+
+ public static AccountSetup new_account () {
+ var info = new AccountInfo ();
+ info.type = AccountType.IMAP;
+
+ var setup = new AccountSetup (info);
+ setup.show ();
+ return setup;
+ }
+}
+
diff --git a/postler/postler-app.vala b/postler/postler-app.vala
index b120249..1576aff 100644
--- a/postler/postler-app.vala
+++ b/postler/postler-app.vala
@@ -10,6 +10,7 @@
*/
namespace Postler {
+ const string STOCK_ACCOUNT_NEW = "contact-new";
const string STOCK_ADDRESSBOOK = "stock_addressbook";
const string STOCK_ARCHIVE = "gnome-mime-application-x-archive";
const string STOCK_EMBLEM_DRAFT = "emblem-draft";
@@ -46,6 +47,7 @@ public class Postler.App : Unique.App {
}
const Gtk.StockItem[] stock_items = {
+ { STOCK_ACCOUNT_NEW, N_("New _Account"), 0, 0, "list-add" },
{ STOCK_ADDRESSBOOK, N_("_Addressbook") },
{ STOCK_ARCHIVE, N_("Archi_ve") },
{ STOCK_EMBLEM_DRAFT },
diff --git a/postler/postler-bureau.vala b/postler/postler-bureau.vala
index cdb982c..a63a4f6 100644
--- a/postler/postler-bureau.vala
+++ b/postler/postler-bureau.vala
@@ -275,6 +275,13 @@ public class Postler.Bureau : Gtk.Window {
Postler.App.spawn_module ("source", content.last_location);
}
+ void action_account_new () {
+ AccountSetup.new_account ().done.connect ((setup, info) => {
+ accounts.add_info (info);
+ folders.populate ();
+ } );
+ }
+
void action_preferences () {
/* TODO */
}
@@ -332,6 +339,8 @@ public class Postler.Bureau : Gtk.Window {
N_("View the message in fullscreen"), action_fullscreen },
{ "ViewSource", null, N_("View _Source"), "<Ctrl><Alt>u",
N_("View the source of the message"), action_view_source },
+ { "AccountNew", STOCK_ACCOUNT_NEW, null, "",
+ N_("Setup a new account"), action_account_new },
{ "Preferences", Gtk.STOCK_PREFERENCES, null, "<Ctrl><Alt>p",
N_("Configure the application preferences"), action_preferences },
{ "Help", null, N_("_Help") },
@@ -479,10 +488,16 @@ public class Postler.Bureau : Gtk.Window {
actions.get_action ("ViewSource").sensitive = state;
});
- vpaned.pack2 (new Postler.Viewer (content), false, true);
+ var viewer = new Postler.Viewer (content);
+ vpaned.pack2 (viewer, false, true);
shelf.show_all ();
search_options.hide ();
+ var button = new Gtk.Button.from_stock (STOCK_ACCOUNT_NEW);
+ button.clicked.connect ((button) => { action_account_new (); } );
+ viewer.dashboard.pack_start (button, false, false, 0);
+ viewer.dashboard.show_all ();
+
folders.set_headers_visible (false);
messages.set_headers_visible (false);
vpaned.set_position ((int)(monitor.height / 1.7 / 3));
More information about the Xfce4-commits
mailing list