Replace usage of hildon check button in menu
authorJose Dapena Paz <jdapena@igalia.com>
Tue, 3 Nov 2009 13:19:03 +0000 (14:19 +0100)
committerJose Dapena Paz <jdapena@igalia.com>
Tue, 3 Nov 2009 15:58:51 +0000 (16:58 +0100)
src/hildon2/modest-hildon2-window.c
src/hildon2/modest-hildon2-window.h
src/hildon2/modest-msg-edit-window.c
src/widgets/modest-toolkit-factory.c
src/widgets/modest-toolkit-factory.h
src/widgets/modest-window.c
src/widgets/modest-window.h

index 3d15352..f068745 100644 (file)
@@ -68,6 +68,9 @@ static void modest_hildon2_window_add_to_menu (ModestWindow *window,
                                               const gchar *accelerator,
                                               ModestWindowMenuCallback callback,
                                               ModestDimmingCallback dimming_callback);
+static void modest_hildon2_window_add_item_to_menu (ModestWindow *window,
+                                                   GtkWidget *item,
+                                                   ModestDimmingCallback dimming_callback);
 static void modest_hildon2_window_set_title (ModestWindow *self,
                                             const gchar *title);
 static gboolean modest_hildon2_window_toggle_menu (HildonWindow *window,
@@ -173,6 +176,7 @@ modest_hildon2_window_class_init (gpointer klass, gpointer class_data)
        modest_window_class->show_toolbar_func = modest_hildon2_window_show_toolbar;
        modest_window_class->add_toolbar_func = modest_hildon2_window_add_toolbar;
        modest_window_class->add_to_menu_func = modest_hildon2_window_add_to_menu;
+       modest_window_class->add_item_to_menu_func = modest_hildon2_window_add_item_to_menu;
        modest_window_class->set_title_func = modest_hildon2_window_set_title;
        modest_window_class->show_progress_func = modest_hildon2_window_show_progress;
 
@@ -265,9 +269,9 @@ modest_hildon2_window_pack_toolbar (ModestHildon2Window *self,
 }
 
 void 
-modest_hildon2_window_add_button_to_menu (ModestHildon2Window *self,
-                                         GtkButton *button,
-                                         ModestDimmingCallback dimming_callback)
+modest_hildon2_window_add_item_to_menu (ModestWindow *self,
+                                       GtkWidget *button,
+                                       ModestDimmingCallback dimming_callback)
 {
        ModestHildon2WindowPrivate *priv;
 
@@ -316,7 +320,7 @@ modest_hildon2_window_add_to_menu (ModestWindow *self,
                                            accel_key, accel_mods, 0);
        }
 
-       modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (button), dimming_callback);
+       modest_window_add_item_to_menu (MODEST_WINDOW (self), GTK_WIDGET (button), dimming_callback);
 }
 
 static void setup_menu (ModestHildon2Window *self)
index c7f1d7c..2233ccc 100644 (file)
@@ -77,21 +77,6 @@ GType modest_hildon2_window_get_type (void) G_GNUC_CONST;
 
 
 /**
- * modest_hildon2_window_add_button_to_menu:
- * @self: a #ModestHildon2Window
- * @button: a #GtkButton
- * @dimming_callback: a #ModestDimmingCallback or %NULL for no dimming rule
- *
- * adds a previously configured button @button to the window #HildonAppMenu.
- * It will configure @dimming_callback for dimming. User should previously
- * attach the proper signal handler for @button.
- */
-void 
-modest_hildon2_window_add_button_to_menu (ModestHildon2Window *self,
-                                         GtkButton *button,
-                                         ModestDimmingCallback dimming_callback);
-
-/**
  * modest_hildon2_window_pack_toolbar:
  * @self: a #ModestHildon2Window
  * @pack_type: a #GtkPackType
index fda6790..ac21257 100644 (file)
@@ -1371,7 +1371,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich)
                gtk_widget_hide (priv->cc_caption);
                field_view_set = FALSE;
        }
-       hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->cc_button), field_view_set);
+       modest_togglable_set_active (priv->cc_button, field_view_set);
 
        field_view_set = TRUE;
        if (bcc) {
@@ -1385,7 +1385,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich)
                gtk_widget_hide (priv->bcc_caption);
                field_view_set = FALSE;
        }
-       hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->bcc_button), field_view_set);
+       modest_togglable_set_active (priv->bcc_button, field_view_set);
 
 
        if (subject)
@@ -4298,23 +4298,23 @@ on_message_settings (GtkAction *action,
 }
 
 static void
-on_cc_button_toggled (HildonCheckButton *button,
+on_cc_button_toggled (GtkWidget *button,
                      ModestMsgEditWindow *window)
 {
        g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window));
 
        modest_msg_edit_window_show_cc (MODEST_MSG_EDIT_WINDOW (window),
-                                       hildon_check_button_get_active (button));
+                                       modest_togglable_get_active (button));
 }
 
 static void
-on_bcc_button_toggled (HildonCheckButton *button,
+on_bcc_button_toggled (GtkWidget *button,
                      ModestMsgEditWindow *window)
 {
        g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window));
 
        modest_msg_edit_window_show_bcc (MODEST_MSG_EDIT_WINDOW (window),
-                                       hildon_check_button_get_active (button));
+                                       modest_togglable_get_active (button));
 }
 
 static void 
@@ -4334,27 +4334,23 @@ setup_menu (ModestMsgEditWindow *self)
                                   MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_undo),
                                   MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_undo));
 
-       priv->cc_button = hildon_check_button_new (0);
-       gtk_button_set_label (GTK_BUTTON (priv->cc_button), _("mcen_me_editor_showcc"));
-       hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->cc_button),
-                                       FALSE);
-       modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->cc_button),
-                                                 NULL);
+       priv->cc_button = modest_toolkit_factory_create_check_menu (modest_runtime_get_toolkit_factory (),
+                                                                   _("mcen_me_editor_showcc"));
+       modest_togglable_set_active (priv->cc_button,
+                                    FALSE);
+       modest_window_add_item_to_menu (MODEST_WINDOW (self), priv->cc_button,
+                                       NULL);
        g_signal_connect (G_OBJECT (priv->cc_button), "toggled",
                          G_CALLBACK (on_cc_button_toggled), (gpointer) self);
-       gtk_button_set_alignment (GTK_BUTTON (priv->cc_button), 0.5, 0.5);
-       gtk_button_set_alignment (GTK_BUTTON (priv->cc_button), 0.5, 0.5);
-
-       priv->bcc_button = hildon_check_button_new (0);
-       gtk_button_set_label (GTK_BUTTON (priv->bcc_button), _("mcen_me_editor_showbcc"));
-       hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->bcc_button),
-                                       FALSE);
-       modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->bcc_button),
-                                                 NULL);
+
+       priv->bcc_button = modest_toolkit_factory_create_check_menu (modest_runtime_get_toolkit_factory (),
+                                                                    _("mcen_me_editor_showbcc"));
+       modest_togglable_set_active (priv->bcc_button,
+                                    FALSE);
+       modest_window_add_item_to_menu (MODEST_WINDOW (self), priv->bcc_button,
+                                       NULL);
        g_signal_connect (G_OBJECT (priv->bcc_button), "toggled",
                          G_CALLBACK (on_bcc_button_toggled), (gpointer) self);
-       gtk_button_set_alignment (GTK_BUTTON (priv->bcc_button), 0.5, 0.5);
-       gtk_button_set_alignment (GTK_BUTTON (priv->bcc_button), 0.5, 0.5);
 
        modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_editor_attach_inlineimage"), NULL,
                                   MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_insert_image),
index 40caf60..686355b 100644 (file)
@@ -30,6 +30,7 @@
 #include <glib/gi18n.h>
 #ifdef MODEST_TOOLKIT_HILDON2
 #include <modest-hildon-pannable-area-scrollable.h>
+#include <hildon/hildon.h>
 #else
 #include <modest-scrolled-window-scrollable.h>
 #endif
@@ -40,6 +41,8 @@ static void modest_toolkit_factory_init (ModestToolkitFactory *self);
 
 /* GObject interface */
 static GtkWidget * modest_toolkit_factory_create_scrollable_default (ModestToolkitFactory *self);
+static GtkWidget * modest_toolkit_factory_create_check_button_default (ModestToolkitFactory *self, const gchar *label);
+static GtkWidget * modest_toolkit_factory_create_check_menu_default (ModestToolkitFactory *self, const gchar *label);
 /* globals */
 static GObjectClass *parent_class = NULL;
 
@@ -61,6 +64,8 @@ modest_toolkit_factory_class_init (ModestToolkitFactoryClass *klass)
        parent_class = g_type_class_peek_parent (klass);
 
        klass->create_scrollable = modest_toolkit_factory_create_scrollable_default;
+       klass->create_check_button = modest_toolkit_factory_create_check_button_default;
+       klass->create_check_menu = modest_toolkit_factory_create_check_menu_default;
 }
 
 static void
@@ -83,3 +88,70 @@ modest_toolkit_factory_create_scrollable_default (ModestToolkitFactory *self)
        return modest_scrolled_window_scrollable_new ();
 #endif
 }
+
+GtkWidget *
+modest_toolkit_factory_create_check_button (ModestToolkitFactory *self, const gchar *label)
+{
+       return MODEST_TOOLKIT_FACTORY_GET_CLASS (self)->create_check_button (self, label);
+}
+
+static GtkWidget *
+modest_toolkit_factory_create_check_button_default (ModestToolkitFactory *self, const gchar *label)
+{
+       GtkWidget *result;
+#ifdef MODEST_TOOLKIT_HILDON2
+       result = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT);
+       gtk_button_set_label (GTK_BUTTON (result), label);
+       gtk_button_set_alignment (GTK_BUTTON (result), 0.0, 0.5);
+#else
+       result = gtk_check_button_new_with_label (label);
+#endif
+       return result;
+}
+GtkWidget *
+modest_toolkit_factory_create_check_menu (ModestToolkitFactory *self, const gchar *label)
+{
+       return MODEST_TOOLKIT_FACTORY_GET_CLASS (self)->create_check_menu (self, label);
+}
+
+static GtkWidget *
+modest_toolkit_factory_create_check_menu_default (ModestToolkitFactory *self, const gchar *label)
+{
+       GtkWidget *result;
+#ifdef MODEST_TOOLKIT_HILDON2
+       result = hildon_check_button_new (0);
+       gtk_button_set_label (GTK_BUTTON (result), label);
+       gtk_button_set_alignment (GTK_BUTTON (result), 0.5, 0.5);
+#else
+       result = gtk_check_menu_item_new_with_label (label);
+#endif
+       return result;
+}
+
+gboolean
+modest_togglable_get_active (GtkWidget *widget)
+{
+#ifdef MODEST_TOOLKIT_HILDON2
+       return hildon_check_button_get_active (HILDON_CHECK_BUTTON (widget));
+#else
+       if (GTK_IS_CHECK_MENU_ITEM (widget)) {
+               return gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
+       } else if (GTK_IS_TOGGLE_BUTTON (widget)) {
+               return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+       }
+#endif
+}
+
+void
+modest_togglable_set_active (GtkWidget *widget, gboolean active)
+{
+#ifdef MODEST_TOOLKIT_HILDON2
+       hildon_check_button_set_active (HILDON_CHECK_BUTTON (widget), active);
+#else
+       if (GTK_IS_CHECK_MENU_ITEM (widget)) {
+               gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), active);
+       } else if (GTK_IS_TOGGLE_BUTTON (widget)) {
+               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), active);
+       }
+#endif
+}
index abf0594..c6ed13e 100644 (file)
@@ -36,6 +36,8 @@ struct                                          _ModestToolkitFactoryClass
        GObjectClass parent_class;
 
        GtkWidget * (*create_scrollable) (ModestToolkitFactory *self);
+       GtkWidget * (*create_check_button) (ModestToolkitFactory *self, const gchar *label);
+       GtkWidget * (*create_check_menu) (ModestToolkitFactory *self, const gchar *label);
 };
 
 struct                                          _ModestToolkitFactory
@@ -53,6 +55,18 @@ modest_toolkit_factory_get_instance                            (void);
 GtkWidget *
 modest_toolkit_factory_create_scrollable              (ModestToolkitFactory *self);
 
+GtkWidget *
+modest_toolkit_factory_create_check_button (ModestToolkitFactory *self, const gchar *label);
+
+GtkWidget *
+modest_toolkit_factory_create_check_menu (ModestToolkitFactory *self, const gchar *label);
+
+gboolean
+modest_togglable_get_active (GtkWidget *widget);
+
+void
+modest_togglable_set_active (GtkWidget *widget, gboolean active);
+
 G_END_DECLS
 
 #endif /* __MODEST_WP_TEXT_VIEW_H__ */
index e79aba0..c17e501 100644 (file)
@@ -74,6 +74,10 @@ static void     modest_window_add_to_menu_default       (ModestWindow *self,
                                                         ModestWindowMenuCallback callback,
                                                         ModestDimmingCallback dimming_callback);
 
+static void     modest_window_add_item_to_menu_default  (ModestWindow *self,
+                                                        GtkWidget *item,
+                                                        ModestDimmingCallback dimming_callback);
+
 static void     modest_window_set_title_default       (ModestWindow *window,
                                                       const gchar *title);
 
@@ -149,6 +153,7 @@ modest_window_class_init (ModestWindowClass *klass)
        klass->show_toolbar_func = modest_window_show_toolbar_default;
        klass->add_toolbar_func = modest_window_add_toolbar_default;
        klass->add_to_menu_func = modest_window_add_to_menu_default;
+       klass->add_item_to_menu_func = modest_window_add_item_to_menu_default;
        klass->set_title_func = modest_window_set_title_default;
        klass->disconnect_signals_func = modest_window_disconnect_signals_default;
        klass->show_progress_func = modest_window_show_progress_default;
@@ -451,6 +456,16 @@ modest_window_add_to_menu (ModestWindow *window,
 }
 
 void 
+modest_window_add_item_to_menu (ModestWindow *window,
+                               GtkWidget *item,
+                               ModestDimmingCallback dimming_callback)
+{
+       MODEST_WINDOW_GET_CLASS (window)->add_item_to_menu_func (window,
+                                                                item,
+                                                                dimming_callback);
+}
+
+void 
 modest_window_set_title (ModestWindow *window,
                         const gchar *title)
 {
@@ -527,6 +542,14 @@ modest_window_add_to_menu_default (ModestWindow *window,
 }
 
 static void 
+modest_window_add_item_to_menu_default (ModestWindow *window,
+                                       GtkWidget *item,
+                                       ModestDimmingCallback dimming_callback)
+{
+       g_warning ("modest: You should implement %s", __FUNCTION__);
+}
+
+static void 
 modest_window_set_title_default (ModestWindow *window,
                                 const gchar *title)
 {
index 8d3a2c5..0f7521e 100644 (file)
@@ -119,6 +119,9 @@ struct _ModestWindowClass {
                                  const gchar *accelerator,
                                  ModestWindowMenuCallback callback,
                                  ModestDimmingCallback dimming_callback);
+       void (*add_item_to_menu_func) (ModestWindow *self,
+                                      GtkWidget *widget,
+                                      ModestDimmingCallback dimming_callback);
 };
 
 /**
@@ -352,8 +355,21 @@ void modest_window_add_to_menu (ModestWindow *self,
                                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);
 
 G_END_DECLS