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,
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;
}
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;
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)
/**
- * 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
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) {
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)
}
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
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),
#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
/* 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;
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
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
+}
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
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__ */
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);
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;
}
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)
{
}
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)
{
const gchar *accelerator,
ModestWindowMenuCallback callback,
ModestDimmingCallback dimming_callback);
+ void (*add_item_to_menu_func) (ModestWindow *self,
+ GtkWidget *widget,
+ ModestDimmingCallback dimming_callback);
};
/**
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