Modified webpage: now tinymail repository is in gitorious.
[modest] / src / widgets / modest-window.h
index d3fa65d..64a68e8 100644 (file)
 #ifndef __MODEST_WINDOW_H__
 #define __MODEST_WINDOW_H__
 
-#include <glib-object.h>
-#include <tny-account-store.h>
-
-G_BEGIN_DECLS
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif /*HAVE_CONFIG_H*/
 
+#include <glib-object.h>
 #include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
 /* 
  * admittedly, the ifdefs for gtk and maemo are rather ugly; still
  * this way is probably the easiest to maintain
  */
-#ifdef MODEST_PLATFORM_GNOME
-#include <gtk/gtkwindow.h>
-typedef GtkWindow      ModestWindowParent;
-typedef GtkWindowClass ModestWindowParentClass;
-#endif /* MODEST_PLATFORM_GNOME */
-
-#ifdef MODEST_PLATFORM_MAEMO
-#ifdef MODEST_HAVE_HILDON0_WIDGETS
-#include <hildon-widgets/hildon-window.h>
+#ifdef MODEST_TOOLKIT_GTK
+typedef GtkVBox      ModestWindowParent;
+typedef GtkVBoxClass ModestWindowParentClass;
+#else
+#ifdef MODEST_TOOLKIT_HILDON2
+#include <hildon/hildon-stackable-window.h>
+typedef HildonStackableWindow      ModestWindowParent;
+typedef HildonStackableWindowClass ModestWindowParentClass;
 #else
 #include <hildon/hildon-window.h>
-#endif /*MODEST_HAVE_HILDON0_WIDGETS*/
 typedef HildonWindow      ModestWindowParent;
 typedef HildonWindowClass ModestWindowParentClass;
+#endif
 
 #ifndef GTK_STOCK_FULLSCREEN
 #define GTK_STOCK_FULLSCREEN ""
 #endif /*GTK_STOCK_FULLSCREEN*/
 
-#endif /*MODEST_PLATFORM_MAEMO */
+#endif /*!MODEST_TOOLKIT_GTK */
 
 /* Dimmed state variables */
 typedef struct _DimmedState {  
        guint    n_selected;
-       gboolean already_opened_msg;
+       guint    already_opened_msg;
        gboolean any_marked_as_deleted;
        gboolean all_marked_as_deleted;
        gboolean any_marked_as_seen;
@@ -93,6 +90,12 @@ typedef struct _DimmedState {
 typedef struct _ModestWindow      ModestWindow;
 typedef struct _ModestWindowClass ModestWindowClass;
 
+typedef void (*ModestWindowMenuCallback) (GObject *control, gpointer userdata);
+typedef gboolean (*ModestDimmingCallback) (ModestWindow *self, gpointer user_data);
+
+#define MODEST_WINDOW_MENU_CALLBACK(x) ((ModestWindowMenuCallback) (x))
+#define MODEST_DIMMING_CALLBACK(x) ((ModestDimmingCallback) (x))
 struct _ModestWindow {
         ModestWindowParent parent;
 };
@@ -108,8 +111,22 @@ struct _ModestWindowClass {
        void (*show_toolbar_func) (ModestWindow *self, gboolean show_toolbar);
        void (*save_state_func) (ModestWindow *self);
        void (*disconnect_signals_func) (ModestWindow *self);
+       void (*show_progress_func) (ModestWindow *self, gboolean show);
+       void (*add_toolbar_func) (ModestWindow *self, GtkToolbar *toolbar);
+       void (*set_title_func) (ModestWindow *self, const gchar *title);
+       void (*add_to_menu_func) (ModestWindow *self,
+                                 const gchar *label,
+                                 const gchar *accelerator,
+                                 ModestWindowMenuCallback callback,
+                                 ModestDimmingCallback dimming_callback);
+       void (*add_item_to_menu_func) (ModestWindow *self,
+                                      GtkWidget *widget,
+                                      ModestDimmingCallback dimming_callback);
+       void (*pack_toolbar_func) (ModestWindow *self, GtkPackType pack_type, GtkWidget *toolbar);
+       void (*edit_mode_changed) (ModestWindow *self, gint edit_mode, gboolean enabled);
 };
 
+
 /**
  * modest_window_get_type:
  *
@@ -137,12 +154,35 @@ const gchar* modest_window_get_active_account (ModestWindow *self);
  * @self: a modest window instance
  * @active_account: a new active account name for this window
  * 
- * set the active account for this window
+ * set the active account for this window.
+ * NOTE: this must be a valid, non-pseudo account.
  * 
  */    
 void modest_window_set_active_account (ModestWindow *self, const gchar *active_account);
 
 /**
+ * modest_window_get_active_mailbox:
+ * @self: a modest window instance
+ * 
+ * get the name of the active mailbox
+ * 
+ * Returns: the active mailbox as a constant string
+ */    
+const gchar* modest_window_get_active_mailbox (ModestWindow *self);
+
+
+
+/**
+ * modest_window_set_active_account:
+ * @self: a modest window instance
+ * @active_mailbox: a new active mailbox name for this window
+ * 
+ * set the active mailbox for this window.
+ * 
+ */    
+void modest_window_set_active_mailbox (ModestWindow *self, const gchar *active_mailbox);
+
+/**
  * modest_window_set_zoom:
  * @window: a #ModestWindow instance
  * @zoom: the zoom level (1.0 is no zoom)
@@ -296,6 +336,56 @@ void modest_window_disable_dimming (ModestWindow *self);
 
 void modest_window_disconnect_signals (ModestWindow *self);
 
+void modest_window_show_progress (ModestWindow *self, gboolean show_progress);
+
+void modest_window_add_toolbar (ModestWindow *self, GtkToolbar *toolbar);
+
+void modest_window_set_title (ModestWindow *self, const gchar *title);
+
+/**
+ * modest_window_add_to_menu:
+ * @self: a #ModestWindow
+ * @label: the label of the button added to menu
+ * @callback: a #ModestWindowMenuCallback
+ * @dimming_callback: a #ModestDimmingCallback or %NULL for no dimming rule
+ *
+ * creates a menu item in the window @self, with label @label.
+ * It will call @callback, and will configure @dimming_callback for
+ * dimming.
+ */
+void modest_window_add_to_menu (ModestWindow *self,
+                               const gchar *label,
+                               const gchar *accelerator,
+                               ModestWindowMenuCallback callback,
+                               ModestDimmingCallback dimming_callback);
+
+/**
+ * modest_window_add_item_to_menu:
+ * @self: a #ModestWindow
+ * @item: a #GtkWidget (a #GtkButton in hildon, a #GtkMenuItem in gtk)
+ * @dimming_callback: a #ModestDimmingCallback or %NULL for no dimming rule
+ *
+ * adds a previously configured item @item to the window menu.
+ * It will configure @dimming_callback for dimming. User should previously
+ * attach the proper signal handler for @button.
+ */
+void 
+modest_window_add_item_to_menu (ModestWindow *self,
+                               GtkWidget *item,
+                               ModestDimmingCallback dimming_callback);
+
+/**
+ * modest_window_pack_toolbar:
+ * @self: a #ModestWindow
+ * @pack_type: a #GtkPackType
+ * @toolbar: a toolbar widget
+ *
+ * packs a toolbar (widget @toolbar) in @self with @pack_type
+ */
+void modest_window_pack_toolbar (ModestWindow *self,
+                                GtkPackType pack_type,
+                                GtkWidget *toolbar);
+
 
 G_END_DECLS