[evolution-mapi/foldersize] EPlugin : Added UI for folder size in account editor.



commit 695d873afe10ebb4a4eb26697467601678ae2221
Author: Johnny Jacob <jjohnny novell com>
Date:   Tue Jul 14 12:28:31 2009 +0530

    EPlugin : Added UI for folder size in account editor.

 src/account-setup-eplugin/ChangeLog                |    5 ++
 .../exchange-mapi-account-settings.c               |   76 +++++++++++++++++++-
 2 files changed, 78 insertions(+), 3 deletions(-)
---
diff --git a/src/account-setup-eplugin/ChangeLog b/src/account-setup-eplugin/ChangeLog
index 7a6a609..8e76842 100644
--- a/src/account-setup-eplugin/ChangeLog
+++ b/src/account-setup-eplugin/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-14  Johnny Jacob  <jjohnny novell com>
+
+	* exchange-mapi-account-settings.c (mapi_settings_run_folder_size_dialog): Added.
+	(org_gnome_exchange_mapi_settings): Add 'Folder size' in the account editor dialog.
+
 2009-07-09  Johnny Jacob  <jjohnny novell com>
 
 	* exchange-mapi-account-settings.c (org_gnome_exchange_mapi_settings): Added. Factory
diff --git a/src/account-setup-eplugin/exchange-mapi-account-settings.c b/src/account-setup-eplugin/exchange-mapi-account-settings.c
index bf18b3a..24ccae1 100644
--- a/src/account-setup-eplugin/exchange-mapi-account-settings.c
+++ b/src/account-setup-eplugin/exchange-mapi-account-settings.c
@@ -37,11 +37,78 @@
 #include <libedataserver/e-account.h>
 #include <e-util/e-dialog-utils.h>
 
+#include <exchange-mapi-folder.h>
+#include <exchange-mapi-connection.h>
+#include <exchange-mapi-utils.h>
+
 #include "mail/em-config.h"
+#include "exchange-mapi-account-listener.h"
+
+enum {
+	COL_FOLDERSIZE_NAME = 0,
+	COL_FOLDERSIZE_SIZE,
+	COL_FOLDERSIZE_MAX
+};
+
+static void
+mapi_settings_run_folder_size_dialog ()
+{
+	GtkDialog *dialog; 
+	GtkBox *content_area;
+	/* TreeView */
+	GtkTreeView *view;
+	GtkCellRenderer *renderer;
+	GtkListStore *store;
+	GtkTreeIter iter;
+
+	/* TODO :This should be in a thread. If the folder list is not cached, we would be blocking UI. */
+	GSList *folder_list = exchange_mapi_account_listener_peek_folder_list ();
+	
+	dialog = (GtkDialog *)gtk_dialog_new_with_buttons (_("Folder Size"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
+							   GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
+	content_area = gtk_dialog_get_content_area (dialog);
+
+	/*Tree View */
+	view = gtk_tree_view_new ();
+	renderer = gtk_cell_renderer_text_new ();
+	gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),-1, 
+						     _("Folder"), renderer, "text", COL_FOLDERSIZE_NAME,
+						     NULL);
+
+	renderer = gtk_cell_renderer_text_new ();
+	gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),-1, 
+						     _("Size"), renderer, "text", COL_FOLDERSIZE_SIZE,
+						     NULL);
+	/* Model for TreeView */
+	store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+	gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
+
+	while (folder_list) {
+		  ExchangeMAPIFolder *folder = (ExchangeMAPIFolder *) folder_list->data;
+		  gchar *folder_size = g_format_size_for_display (folder->size);
+
+		  gtk_list_store_append (store, &iter);
+		  gtk_list_store_set (store, &iter, 
+				      COL_FOLDERSIZE_NAME, folder->folder_name,
+				      COL_FOLDERSIZE_SIZE, folder_size,
+				      -1);
+		  folder_list = g_slist_next (folder_list);
+		  g_free (folder_size);
+	}
+
+	/* Pack the TreeView into dialog's content area */
+	gtk_box_pack_start (content_area, view, TRUE, TRUE, 6);
+
+	gtk_widget_show_all (dialog);
+
+	gtk_dialog_run (dialog);
+	gtk_widget_destroy (dialog);
+}
 
 static void
 folder_size_clicked (GtkButton *button, gpointer data)
 {
+	mapi_settings_run_folder_size_dialog ();
 }
 
 /* only used in editor */
@@ -87,18 +154,21 @@ org_gnome_exchange_mapi_settings (EPlugin *epl, EConfigHookItemFactoryData *data
 					     "column-spacing", 6, NULL);
 
 	/* Folder Size */
-	lbl_fsize = (GtkLabel*) g_object_new (GTK_TYPE_LABEL, "label", _("View the size of all Exchange folders"), NULL);
+	lbl_fsize = (GtkLabel*) g_object_new (GTK_TYPE_LABEL, "label",
+					      _("View the size of all Exchange folders"), NULL);
 	gtk_misc_set_alignment (GTK_MISC (lbl_fsize), 0, 0.5);
 	btn_fsize = (GtkButton*) g_object_new (GTK_TYPE_BUTTON, "label", _("Folders Size"), NULL);
 	g_signal_connect (btn_fsize, "clicked", G_CALLBACK (folder_size_clicked), NULL);
 	gtk_table_attach_defaults (tbl_misc, GTK_WIDGET (lbl_fsize), 0, 1, 0, 1);
 	gtk_table_attach (tbl_misc, GTK_WIDGET (btn_fsize), 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-	gtk_box_pack_start (GTK_BOX (vbox_misc), GTK_WIDGET (tbl_misc), FALSE, FALSE, 0);
 
+	/*Note : Reason for placing this UI is because we try to be like outlook. */
+	gtk_box_pack_start (GTK_BOX (vbox_misc), GTK_WIDGET (tbl_misc), FALSE, FALSE, 0);
 	gtk_widget_show_all (GTK_WIDGET (settings));
 
 	/*Insert the page*/
-	gtk_notebook_insert_page (GTK_NOTEBOOK (data->parent), GTK_WIDGET (settings), gtk_label_new(_("Exchange Settings")), 4);
+	gtk_notebook_insert_page (GTK_NOTEBOOK (data->parent), GTK_WIDGET (settings),
+				  gtk_label_new(_("Exchange Settings")), 4);
 
 	return GTK_WIDGET (settings);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]