[anjal] Keybindings support



commit ec9c1d9e4d6b4bae5214491fc5293dee1d785f1d
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Thu Apr 2 14:05:08 2009 +0530

    Keybindings support
---
 src/mail-message-view.c |   53 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index 17a87ee..f237dc9 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -216,9 +216,46 @@ mmv_collapse (MailMessageView *mmv)
 		mmv_show (mmv);
 }
 
+static void
+mmv_delete (MailMessageView *mmv, gboolean del)
+{
+	 if (del) {
+		 camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED ); 
+	 	g_signal_emit (mmv, signals[MESSAGE_REMOVED], 0);
+	 } else
+		 camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_DELETED, 0 );
+}
+
+static void
+mmv_junk  (MailMessageView *mmv, gboolean junk)
+{
+	 if (junk)
+		  camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_JUNK_LEARN);	 
+	 else
+		  camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN, CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN);
+}
+
+static void
+mmv_read (MailMessageView *mmv, gboolean read)
+{
+	 if (read) {
+		  camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN);
+		  gtk_widget_set_sensitive (mmv->priv->unread_image, FALSE);
+		  gtk_label_set_markup (mmv->sub_details, mmv->priv->normal[0]);
+		  gtk_label_set_markup (mmv->date_details, mmv->priv->normal[1]);
+	} else {
+		  camel_message_info_set_flags(mmv->priv->info, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, 0);
+		  gtk_widget_set_sensitive (mmv->priv->unread_image, TRUE);
+		  gtk_label_set_markup (mmv->sub_details, mmv->priv->bold[0]);
+		  gtk_label_set_markup (mmv->date_details, mmv->priv->bold[1]);
+	}
+}
+
 static gboolean
 mmv_key_press (GtkWidget *w, GdkEventKey *event, MailMessageView *mmv)
 {
+	 gboolean shift = event->state & GDK_SHIFT_MASK ? TRUE : FALSE;
+
 	switch (event->keyval) {
 	case GDK_Return:	
 	case GDK_KP_Enter:
@@ -248,6 +285,21 @@ mmv_key_press (GtkWidget *w, GdkEventKey *event, MailMessageView *mmv)
 		if (GTK_WIDGET_VISIBLE(mmv->body))
 			mmv_hide(mmv);
 		break;
+	 case GDK_D:
+	 case GDK_d:		  
+		  if (!(event->state & GDK_CONTROL_MASK))
+			   return FALSE;
+	 case GDK_Delete:
+		  mmv_delete (mmv, !shift);
+		  break;
+	 case GDK_J:
+	 case GDK_j:
+		  mmv_junk (mmv, !shift);
+		  break;
+	 case GDK_M:
+	 case GDK_m:
+		  mmv_read(mmv, !shift);
+		
 	default:
 		return FALSE;
 	};
@@ -953,3 +1005,4 @@ mail_message_view_get_unread(MailMessageView *mmv)
 {
 	return !(camel_message_info_flags(mmv->priv->info) & CAMEL_MESSAGE_SEEN);
 }
+



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