X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwidgets%2Fmodest-window.c;h=3eda53e02927382db68f55c52ba451db2cf72686;hb=2da007966ea445b3574320d9c914c7475df64c59;hp=daa61b02ab6f2bf902288d59fa3b54a7cb3d6a01;hpb=2ded5c8d7b2fc0b7fad127294e997939fe8d6a8e;p=modest diff --git a/src/widgets/modest-window.c b/src/widgets/modest-window.c index daa61b0..3eda53e 100644 --- a/src/widgets/modest-window.c +++ b/src/widgets/modest-window.c @@ -35,6 +35,15 @@ static void modest_window_class_init (ModestWindowClass *klass); static void modest_window_init (ModestWindow *obj); static void modest_window_finalize (GObject *obj); + +static void modest_window_set_zoom_default (ModestWindow *window, + gdouble zoom); +static gdouble modest_window_get_zoom_default (ModestWindow *window); +static gboolean modest_window_zoom_plus_default (ModestWindow *window); +static gboolean modest_window_zoom_minus_default (ModestWindow *window); +static void modest_window_show_toolbar_default (ModestWindow *window, + gboolean show_toolbar); + /* list my signals */ enum { LAST_SIGNAL @@ -64,11 +73,11 @@ modest_window_get_type (void) (GInstanceInitFunc) modest_window_init, NULL }; -#if MODEST_PLATFORM_ID==1 /* gtk */ - parent_type = GTK_TYPE_WINDOW; -#elif MODEST_PLATFORM_ID==2 /* hildon (maemo) */ +#ifdef MODEST_PLATFORM_MAEMO parent_type = HILDON_TYPE_WINDOW; -#endif +#else + parent_type = GTK_TYPE_WINDOW; +#endif my_type = g_type_register_static (parent_type, "ModestWindow", &my_info, @@ -86,6 +95,12 @@ modest_window_class_init (ModestWindowClass *klass) parent_class = g_type_class_peek_parent (klass); gobject_class->finalize = modest_window_finalize; + klass->set_zoom_func = modest_window_set_zoom_default; + klass->get_zoom_func = modest_window_get_zoom_default; + klass->zoom_plus_func = modest_window_zoom_plus_default; + klass->zoom_minus_func = modest_window_zoom_minus_default; + klass->show_toolbar_func = modest_window_show_toolbar_default; + g_type_class_add_private (gobject_class, sizeof(ModestWindowPrivate)); } @@ -96,12 +111,12 @@ modest_window_init (ModestWindow *obj) priv = MODEST_WINDOW_GET_PRIVATE(obj); - priv->plat_factory = modest_tny_platform_factory_get_instance (); - priv->ui_manager = NULL; - priv->account_store = NULL; + priv->ui_manager = NULL; + priv->ui_dimming_manager = NULL; + priv->toolbar = NULL; + priv->menubar = NULL; - priv->toolbar = NULL; - priv->menubar = NULL; + priv->active_account = NULL; } static void @@ -115,34 +130,143 @@ modest_window_finalize (GObject *obj) g_object_unref (G_OBJECT(priv->ui_manager)); priv->ui_manager = NULL; } - if (priv->account_store) { - g_object_unref (G_OBJECT(priv->account_store)); - priv->account_store = NULL; + if (priv->ui_dimming_manager) { + g_object_unref (G_OBJECT(priv->ui_dimming_manager)); + priv->ui_dimming_manager = NULL; } + g_free (priv->active_account); + G_OBJECT_CLASS(parent_class)->finalize (obj); } -TnyAccountStore * -modest_window_get_account_store (ModestWindow *window) + + +const gchar* +modest_window_get_active_account (ModestWindow *self) +{ + g_return_val_if_fail (self, NULL); + + return MODEST_WINDOW_GET_PRIVATE(self)->active_account; +} + +void +modest_window_set_active_account (ModestWindow *self, const gchar *active_account) { - ModestWindowPrivate *priv; - - g_return_val_if_fail (MODEST_IS_WINDOW (window), NULL); + ModestWindowPrivate *priv; - priv = MODEST_WINDOW_GET_PRIVATE (window); + priv = MODEST_WINDOW_GET_PRIVATE(self); - return g_object_ref (priv->account_store); + if (active_account == priv->active_account) + return; + else { + g_free (priv->active_account); + priv->active_account = NULL; + if (active_account) + priv->active_account = g_strdup (active_account); + } } -ModestWidgetFactory * -modest_window_get_widget_factory (ModestWindow *window) +void +modest_window_check_dimming_rules (ModestWindow *self) { - ModestWindowPrivate *priv; - - g_return_val_if_fail (MODEST_IS_WINDOW (window), NULL); + ModestWindowPrivate *priv; + + priv = MODEST_WINDOW_GET_PRIVATE(self); + modest_ui_dimming_manager_process_dimming_rules (priv->ui_dimming_manager); +} + +GtkAction * +modest_window_get_action (ModestWindow *window, + const gchar *action_path) +{ + GtkAction *action = NULL; + ModestWindowPrivate *priv; + + priv = MODEST_WINDOW_GET_PRIVATE(window); + + action = gtk_ui_manager_get_action (priv->ui_manager, action_path); + + return action; +} + +void +modest_window_set_zoom (ModestWindow *window, + gdouble zoom) +{ + MODEST_WINDOW_GET_CLASS (window)->set_zoom_func (window, zoom); + return; +} - priv = MODEST_WINDOW_GET_PRIVATE (window); +gdouble +modest_window_get_zoom (ModestWindow *window) +{ + return MODEST_WINDOW_GET_CLASS (window)->get_zoom_func (window); +} + +gboolean +modest_window_zoom_plus (ModestWindow *window) +{ + return MODEST_WINDOW_GET_CLASS (window)->zoom_plus_func (window); +} + +gboolean +modest_window_zoom_minus (ModestWindow *window) +{ + return MODEST_WINDOW_GET_CLASS (window)->zoom_minus_func (window); +} + +void +modest_window_show_toolbar (ModestWindow *window, + gboolean show_toolbar) +{ + MODEST_WINDOW_GET_CLASS (window)->show_toolbar_func (window, + show_toolbar); +} + + +/* Default implementations */ + +static void +modest_window_set_zoom_default (ModestWindow *window, + gdouble zoom) +{ + g_warning ("modest: You should implement %s", __FUNCTION__); - return g_object_ref (priv->widget_factory); +} + +static gdouble +modest_window_get_zoom_default (ModestWindow *window) +{ + g_warning ("modest: You should implement %s", __FUNCTION__); + return 1.0; +} + +static gboolean +modest_window_zoom_plus_default (ModestWindow *window) +{ + g_warning ("modest: You should implement %s", __FUNCTION__); + return FALSE; +} + +static gboolean +modest_window_zoom_minus_default (ModestWindow *window) +{ + g_warning ("modest: You should implement %s", __FUNCTION__); + return FALSE; +} + +static void +modest_window_show_toolbar_default (ModestWindow *window, + gboolean show_toolbar) +{ + g_warning ("modest: You should implement %s", __FUNCTION__); +} + +void +modest_window_save_state (ModestWindow *window) +{ + ModestWindowClass *klass = MODEST_WINDOW_GET_CLASS (window); + if (klass->save_state_func) + klass->save_state_func (window); }