[anjal] Extend the 'Show folder tree' arrow for composer, message view and
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Extend the 'Show folder tree' arrow for composer, message view and
- Date: Thu, 18 Jun 2009 14:14:56 -0400 (EDT)
commit 1445531ac50f019baa81145f45d7e697b74252ab
Author: Srinivasa Ragavan <sragavan novell com>
Date: Thu Jun 18 23:45:06 2009 +0530
Extend the 'Show folder tree' arrow for composer, message view and
folder view.
src/mail-composer-view.c | 15 +++++++++++++--
src/mail-composer-view.h | 1 +
src/mail-conv-view.c | 13 ++++++++++++-
src/mail-conv-view.h | 1 +
src/mail-folder-view.c | 13 +++++++++++--
src/mail-folder-view.h | 2 +-
src/mail-view.c | 22 +++++++++++++++-------
7 files changed, 54 insertions(+), 13 deletions(-)
---
diff --git a/src/mail-composer-view.c b/src/mail-composer-view.c
index e9afb1b..af3132d 100644
--- a/src/mail-composer-view.c
+++ b/src/mail-composer-view.c
@@ -36,6 +36,7 @@ struct _MailComposerViewPrivate {
};
enum {
+ MESSAGE_SHOWN,
VIEW_CLOSE,
LAST_SIGNAL
};
@@ -80,7 +81,15 @@ mail_composer_view_class_init (MailComposerViewClass *klass)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
-
+ signals[MESSAGE_SHOWN] =
+ g_signal_new ("message-shown",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (MailComposerViewClass , message_shown),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
mail_composer_view_parent_class = g_type_class_peek_parent (klass);
object_class->finalize = mail_composer_view_finalize;
};
@@ -175,7 +184,8 @@ mail_composer_view_replace_composer (MailComposerView *mcv, GtkWidget *composer)
gtk_widget_reparent (w, mcv->priv->box);
gtk_widget_show (w);
gtk_widget_show (mcv->priv->box);
-
+
+ g_signal_emit (mcv, signals[MESSAGE_SHOWN], 0);
g_signal_connect (mcv->priv->composer, "send", G_CALLBACK(composer_close_cb), mcv);
}
@@ -204,6 +214,7 @@ mail_composer_view_activate (MailComposerView *mfv, GtkWidget *folder_tree, GtkW
if (!folder_tree || !check_mail || !sort_by)
return;
gtk_widget_hide (folder_tree);
+ g_signal_emit (mfv, signals[MESSAGE_SHOWN], 0);
gtk_widget_set_sensitive (check_mail, act);
gtk_widget_set_sensitive (sort_by, act);
}
diff --git a/src/mail-composer-view.h b/src/mail-composer-view.h
index 8a2f707..b5c9e3e 100644
--- a/src/mail-composer-view.h
+++ b/src/mail-composer-view.h
@@ -52,6 +52,7 @@ typedef struct _MailComposerViewClass {
GtkVBoxClass parent_class;
/* Signals */
+ void (*message_shown) (MailComposerView *);
void (* view_close) (MailComposerView *);
} MailComposerViewClass;
diff --git a/src/mail-conv-view.c b/src/mail-conv-view.c
index 9a2cd5c..e567045 100644
--- a/src/mail-conv-view.c
+++ b/src/mail-conv-view.c
@@ -31,6 +31,7 @@
G_DEFINE_TYPE (MailConvView, mail_conv_view, GTK_TYPE_VBOX)
enum {
+ MESSAGE_SHOWN,
VIEW_CLOSE,
LAST_SIGNAL
};
@@ -176,6 +177,14 @@ mail_conv_view_class_init (MailConvViewClass *klass)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ signals[MESSAGE_SHOWN] =
+ g_signal_new ("message-shown",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (MailConvViewClass , message_shown),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
mail_conv_view_parent_class = g_type_class_peek_parent (klass);
object_class->finalize = mail_conv_view_finalize;
@@ -385,7 +394,8 @@ mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *ar
gtk_widget_grab_focus (unread);
} else
gtk_widget_grab_focus (mcv->priv->child->data);
-
+
+ g_signal_emit (mcv, signals[MESSAGE_SHOWN], 0);
}
static gboolean
@@ -450,6 +460,7 @@ mail_conv_view_activate (MailConvView *mcv, GtkWidget *tree, GtkWidget *folder_t
if (!folder_tree || !check_mail || !sort_by)
return;
gtk_widget_hide (folder_tree);
+ g_signal_emit (mcv, signals[MESSAGE_SHOWN], 0);
gtk_widget_set_sensitive (check_mail, act);
gtk_widget_set_sensitive (sort_by, act);
}
diff --git a/src/mail-conv-view.h b/src/mail-conv-view.h
index 78a69b9..301d235 100644
--- a/src/mail-conv-view.h
+++ b/src/mail-conv-view.h
@@ -56,6 +56,7 @@ typedef struct _MailConvView {
typedef struct _MailConvViewClass {
GtkVBoxClass parent_class;
+ void (*message_shown) (MailConvView *);
void (* view_close) (MailConvView *);
} MailConvViewClass;
diff --git a/src/mail-folder-view.c b/src/mail-folder-view.c
index 05803c1..b23ed91 100644
--- a/src/mail-folder-view.c
+++ b/src/mail-folder-view.c
@@ -50,6 +50,7 @@ struct _MailFolderViewPrivate {
guint light:1;
guint show_thread:1;
guint show_children:1;
+ guint message_shown:1;
GtkWidget *box;
GList *children;
char *expr;
@@ -223,6 +224,7 @@ mail_folder_view_init (MailFolderView *shell)
gtk_widget_set_size_request (tool, w+2, h+2);
shell->priv = g_new0(MailFolderViewPrivate, 1);
+ shell->priv->message_shown = 0;
shell->priv->light = g_getenv("ANJAL_LITE") != NULL; /*Very light mode, to be used in mobile phone and not netbooks. This need good implementation also. */
shell->priv->show_thread = g_getenv("ANJAL_THREAD") != NULL;
shell->priv->show_children = g_getenv("ANJAL_CHILDREN") != NULL;
@@ -846,6 +848,7 @@ draw_flags (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel
void
mail_folder_view_show_list (MailFolderView *mfv)
{
+ mfv->priv->message_shown = 0;
gtk_widget_show ((GtkWidget *)mfv->tree);
gtk_widget_show (mfv->priv->view_scroller);
gtk_widget_hide ((GtkWidget *)mfv->mail);
@@ -1088,6 +1091,7 @@ mfv_message_activated (GtkTreeView *tree_view, GtkTreePath *path, G
GtkTreeIter iter;
CamelMessageInfo *info = NULL;
+ shell->priv->message_shown = 1;
gtk_widget_hide ((GtkWidget *)shell->tree);
gtk_widget_hide (shell->priv->view_scroller);
gtk_widget_show ((GtkWidget *)shell->mail);
@@ -1582,11 +1586,16 @@ mail_folder_view_show_sort_popup (MailFolderView *mfv, GtkWidget *button)
}
void
-mail_folder_view_activate (MailFolderView *mfv, GtkWidget *tree, GtkWidget *folder_tree, GtkWidget *check_mail, GtkWidget *sort_by, gboolean act)
+mail_folder_view_activate (MailFolderView *mfv, GtkWidget *tree, GtkWidget *folder_tree, GtkWidget *check_mail, GtkWidget *sort_by, GtkWidget *slider, gboolean act)
{
if (!folder_tree || !check_mail || !sort_by)
return;
- gtk_widget_show(folder_tree);
+ if (mfv->priv->message_shown) {
+ g_signal_emit (mfv, signals[MESSAGE_SHOWN], 0);
+ } else {
+ gtk_widget_show(folder_tree);
+ gtk_widget_hide (slider);
+ }
gtk_widget_set_sensitive (folder_tree, act);
gtk_widget_set_sensitive (check_mail, act);
gtk_widget_set_sensitive (sort_by, act);
diff --git a/src/mail-folder-view.h b/src/mail-folder-view.h
index 47f60fd..3d2dab2 100644
--- a/src/mail-folder-view.h
+++ b/src/mail-folder-view.h
@@ -75,7 +75,7 @@ void mail_folder_view_set_folder_uri (MailFolderView *mfv, const char *uri);
void mail_folder_view_set_message (MailFolderView *mfv, const char *uid, gboolean nomarkseen);
void mail_folder_view_show_sort_popup (MailFolderView *, GtkWidget *);
void mail_folder_view_show_list (MailFolderView *mfv);
-void mail_folder_view_activate (MailFolderView *mfv, GtkWidget *tree, GtkWidget *folder_tree, GtkWidget *check_mail, GtkWidget *sort_by, gboolean act);
+void mail_folder_view_activate (MailFolderView *mfv, GtkWidget *tree, GtkWidget *folder_tree, GtkWidget *check_mail, GtkWidget *sort_by, GtkWidget *slider, gboolean act);
void mail_folder_view_check_mail (MailFolderView *mfv);
void mail_folder_view_save (MailFolderView *mfv);
void mail_folder_view_set_search (MailFolderView *mfv, const char *search);
diff --git a/src/mail-view.c b/src/mail-view.c
index 74545a2..bd9a7ac 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -118,8 +118,8 @@ mv_switch (GtkNotebook *notebook,GtkNotebookPage *page, guint page_num, gpoi
mail_composer_view_activate ((MailComposerView *)child, shell->folder_tree, shell->check_mail, shell->sort_by, TRUE);
else if (child->type == MAIL_VIEW_MESSAGE)
mail_conv_view_activate ((MailConvView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, FALSE);
- else if (child->type == MAIL_VIEW_FOLDER) /* For some reason, Im not able to get right type */ {
- mail_folder_view_activate ((MailFolderView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, TRUE);
+ else if (child->type == MAIL_VIEW_FOLDER) {
+ mail_folder_view_activate ((MailFolderView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, shell->slider, TRUE);
mail_search_set_state (shell->priv->search, ((MailFolderView *)child)->search_str, ((MailFolderView *)child)->search_state);
} else if (child->type == MAIL_VIEW_ACCOUNT)
@@ -204,7 +204,7 @@ mail_view_new ()
}
static void
-mv_message_shown (MailFolderView *mfv, MailView *mv)
+mv_message_shown (MailViewChild *mfv, MailView *mv)
{
GtkWidget *arr = g_object_get_data ((GObject *)mv->slider, "right-arrow");
gtk_widget_hide (mv->folder_tree);
@@ -266,7 +266,7 @@ mv_close_mcv (MailViewChild *mfv, MailView *mv)
else if (child->type == MAIL_VIEW_MESSAGE)
mail_conv_view_activate ((MailConvView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
else if (child->type == MAIL_VIEW_FOLDER) {
- mail_folder_view_activate ((MailFolderView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, TRUE);
+ mail_folder_view_activate ((MailFolderView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, mv->slider, TRUE);
mail_search_set_state (mv->priv->search, ((MailFolderView *)child)->search_str, ((MailFolderView *)child)->search_state);
} else if (child->type == MAIL_VIEW_ACCOUNT)
mail_account_view_activate ((MailAccountView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
@@ -314,7 +314,7 @@ mail_view_add_folder (MailView *mv, gpointer data, gboolean block)
g_signal_connect (mfv, "search-set", G_CALLBACK(mv_search_set), mv);
if (!block)
- mail_folder_view_activate (mfv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, TRUE);
+ mail_folder_view_activate (mfv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, mv->slider, TRUE);
return (MailViewChild *)mfv;
}
@@ -343,7 +343,9 @@ mail_view_add_composer (MailView *mv, gpointer data, gboolean block)
mail_composer_view_activate (mcv, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
g_signal_connect (mcv, "view-close", G_CALLBACK(mv_close_mcv), mv);
+ g_signal_connect (mcv, "message-shown", G_CALLBACK(mv_message_shown), mv);
+ mv_message_shown ((MailViewChild *)mcv, mv);
return (MailViewChild *)mcv;
}
@@ -368,7 +370,8 @@ mail_view_add_message (MailView *mv, gpointer data, gboolean block)
mail_conv_view_activate (mcv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
g_signal_connect (mcv, "view-close", G_CALLBACK(mv_close_mcv), mv);
-
+ g_signal_connect (mcv, "message-shown", G_CALLBACK(mv_message_shown), mv);
+
return (MailViewChild *)mcv;
}
@@ -534,7 +537,12 @@ mv_slider_clicked (GtkButton *slider, MailView *mv)
{
gtk_widget_hide (mv->slider);
gtk_widget_show (mv->folder_tree);
- mail_folder_view_show_list ((MailFolderView *)mv->priv->current_view);
+ if (mv->priv->current_view->type == MAIL_VIEW_FOLDER)
+ mail_folder_view_show_list ((MailFolderView *)mv->priv->current_view);
+ else {
+ gtk_widget_show (mv->folder_tree);
+ gtk_widget_hide ((GtkWidget *)slider);
+ }
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]