[maemo-commits] [maemo-commits] r9356 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Jan 25 19:36:40 EET 2007
- Previous message: [maemo-commits] r9355 - projects/haf/branches/hildon-fm/1.x/hildon-fm
- Next message: [maemo-commits] r9357 - projects/haf/branches/maemo-af-desktop/hildon-desktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-01-25 19:36:39 +0200 (Thu, 25 Jan 2007) New Revision: 9356 Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/statusbar-item.c projects/haf/branches/maemo-af-desktop/hildon-desktop/src/Makefile.am projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-config.h projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-plugin-loader-legacy.c Log: 2007-01-25 Johan Bilien <johan.bilien at nokia.com> * libhildondesktop/statusbar-item.c: Made non-abstract * src/hd-plugin-loader-legacy.c: Added support for legacy statusbar plugins (not tested nor fully functional). Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-25 16:58:40 UTC (rev 9355) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-25 17:36:39 UTC (rev 9356) @@ -1,3 +1,9 @@ +2007-01-25 Johan Bilien <johan.bilien at nokia.com> + + * libhildondesktop/statusbar-item.c: Made non-abstract + * src/hd-plugin-loader-legacy.c: Added support for + legacy statusbar plugins (not tested nor fully functional). + 2007-01-24 Moises Martinez <moises.martinez at nokia.com> * libhildondesktop/hildon-desktop-panel-window-dialog.c: Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/statusbar-item.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/statusbar-item.c 2007-01-25 16:58:40 UTC (rev 9355) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/statusbar-item.c 2007-01-25 17:36:39 UTC (rev 9356) @@ -72,7 +72,7 @@ item_type = g_type_register_static ( HILDON_DESKTOP_TYPE_PANEL_ITEM, "StatusbarItem", &item_info, - G_TYPE_FLAG_ABSTRACT ); + 0); } return item_type; Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/Makefile.am =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/Makefile.am 2007-01-25 16:58:40 UTC (rev 9355) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/Makefile.am 2007-01-25 17:36:39 UTC (rev 9356) @@ -22,6 +22,7 @@ -DHD_DESKTOP_BACKGROUNDS_PATH=\"$(hildondesktopbackgroundsdir)\" \ -DHD_PLUGIN_LOADER_MODULES_PATH=\"$(hildonpluginloaderlibdir)\" \ -DHD_PLUGIN_LOADER_LEGACY_HOME_MODULE_PATH=\"$(hildonhomelibdir)\" \ + -DHD_PLUGIN_LOADER_LEGACY_STATUSBAR_MODULE_PATH=\"$(hildonstatusbarlibdir)\" \ -DHD_PLUGIN_LOADER_LEGACY_NAVIGATOR_MODULE_PATH=\"$(hildonnavigatorlibdir)\" hildon_desktop_LDFLAGS = \ Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-config.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-config.h 2007-01-25 16:58:40 UTC (rev 9355) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-config.h 2007-01-25 17:36:39 UTC (rev 9356) @@ -37,6 +37,7 @@ #define HD_CONTAINER_TYPE_HOME "home" #define HD_CONTAINER_TYPE_PANEL_FIXED "panel_fixed" #define HD_CONTAINER_TYPE_PANEL_BOX "panel_box" +#define HD_CONTAINER_TYPE_PANEL_SLIDER "panel_slider" #define HD_WINDOW_ORIENTATION_TOP "top" #define HD_WINDOW_ORIENTATION_BOTTOM "bottom" @@ -55,4 +56,6 @@ #define HD_PLUGIN_CONFIG_KEY_TN "X-task-navigator-plugin" +#define HD_PLUGIN_CONFIG_KEY_SB "X-status-bar-plugin" + #endif /* __HD_CONFIG_FILES_H__ */ Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-plugin-loader-legacy.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-plugin-loader-legacy.c 2007-01-25 16:58:40 UTC (rev 9355) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-plugin-loader-legacy.c 2007-01-25 17:36:39 UTC (rev 9356) @@ -47,7 +47,7 @@ { HD_PLUGIN_LOADER_LEGACY_TYPE_UNKNOWN = 0, HD_PLUGIN_LOADER_LEGACY_TYPE_HOME, - HD_PLUGIN_LOADER_LEGACY_TYPE_STATUS_BAR, + HD_PLUGIN_LOADER_LEGACY_TYPE_STATUSBAR, HD_PLUGIN_LOADER_LEGACY_TYPE_NAVIGATOR } HDPluginLoaderLegacyType; @@ -123,6 +123,10 @@ static GtkWidget * hd_plugin_loader_legacy_navigator_init (HDPluginLoaderLegacy *loader, GError **error); + +static GtkWidget * +hd_plugin_loader_legacy_status_bar_init (HDPluginLoaderLegacy *loader, + GError **error); static void hd_plugin_loader_legacy_connect_signals (HDPluginLoaderLegacy *loader, @@ -199,6 +203,13 @@ priv->library_key = HD_PLUGIN_CONFIG_KEY_TN; priv->module_dir = HD_PLUGIN_LOADER_LEGACY_NAVIGATOR_MODULE_PATH; break; + + case HD_PLUGIN_LOADER_LEGACY_TYPE_STATUSBAR: + priv->symbol_mapping = NULL; + priv->init_func = hd_plugin_loader_legacy_status_bar_init; + priv->library_key = HD_PLUGIN_CONFIG_KEY_SB; + priv->module_dir = HD_PLUGIN_LOADER_LEGACY_STATUSBAR_MODULE_PATH; + break; default: g_set_error (error, @@ -219,9 +230,10 @@ if (local_error) goto error; /* Now connect all the callbacks to the proper signals */ - hd_plugin_loader_legacy_connect_signals (HD_PLUGIN_LOADER_LEGACY (loader), - item, - &local_error); + if (priv->symbol_mapping) + hd_plugin_loader_legacy_connect_signals (HD_PLUGIN_LOADER_LEGACY (loader), + item, + &local_error); if (local_error) goto error; return g_list_append (NULL, item); @@ -317,8 +329,6 @@ g_module_symbol (priv->module, mapping->symbol_name, &symbol); - fprintf (stderr, "Found symbol %s, connecting to %s\n", mapping->symbol_name, mapping->signal ); - if (symbol) g_signal_connect_swapped (G_OBJECT (item), mapping->signal, @@ -368,6 +378,19 @@ g_free (value); return; } + + /* Check for the X-task-navigator-plugin = field */ + value = g_key_file_get_string (keyfile, + HD_PLUGIN_CONFIG_GROUP, + HD_PLUGIN_CONFIG_KEY_SB, + NULL); + + if (value) + { + priv->plugin_type = HD_PLUGIN_LOADER_LEGACY_TYPE_STATUSBAR; + g_free (value); + return; + } } static GtkWidget * @@ -555,3 +578,110 @@ return item; } + +static GtkWidget * +hd_plugin_loader_legacy_status_bar_init (HDPluginLoaderLegacy *loader, + GError **error) +{ + typedef void *(*SBInitialize) (GtkWidget *item, + GtkWidget **button); + typedef void (*SBDestroy) (void *data); + typedef void (*SBUpdate) (void *data, + gint value1, + gint value2, + const gchar *str); + + typedef int (*SBGetPriority) (void *data); + typedef void (*SBSetConditional) (void *data, gboolean cond); + + struct SBSymbols + { + SBInitialize initialize; + SBDestroy destroy; + SBUpdate update; + SBGetPriority get_priority; + SBSetConditional set_conditional; + }; + + typedef void (*SBEntry) (struct SBSymbols *symbols); + + HDPluginLoaderLegacyPrivate *priv; + GtkWidget *item; + gpointer symbol = NULL; + gchar *lib_name; + gchar *stripped; + gchar *entry_name; + GKeyFile *keyfile; + struct SBSymbols symbols; + gpointer module_data; + GtkWidget *module_widget; + GError *local_error = NULL; + + priv = HD_PLUGIN_LOADER_LEGACY_GET_PRIVATE (loader); + + + keyfile = hd_plugin_loader_get_key_file (HD_PLUGIN_LOADER (loader)); + + lib_name = g_key_file_get_string (keyfile, + HD_PLUGIN_CONFIG_GROUP, + priv->library_key, + &local_error); + + if (local_error) + { + g_propagate_error (error, local_error); + return NULL; + } + + /* Derive the plugin name from it's library file ... */ + stripped = g_strndup (lib_name + 3, strlen (lib_name) - 6); + entry_name = g_strdup_printf ("%s_entry", stripped); + + g_module_symbol (priv->module, entry_name, &symbol); + + g_free (lib_name); + g_free (stripped); + g_free (entry_name); + + if (!symbol) + { + g_set_error (error, + hd_plugin_loader_error_quark (), + HD_PLUGIN_LOADER_ERROR_SYMBOL, + g_module_error ()); + return NULL; + } + + ((SBEntry)symbol) (&symbols); + + if (!symbols.initialize || !symbols.destroy) + { + g_set_error (error, + hd_plugin_loader_error_quark (), + HD_PLUGIN_LOADER_ERROR_SYMBOL, + "Initialize or Destroy symbols are missing"); + return NULL; + } + + item = g_object_new (STATUSBAR_TYPE_ITEM, NULL); + + module_data = symbols.initialize (item, &module_widget); + + if (module_widget) + { + /* FIXME */ + gtk_widget_set_size_request (module_widget, 40, 40); + gtk_widget_show_all (module_widget); + + gtk_container_add (GTK_CONTAINER (item), module_widget); + } + + g_signal_connect_swapped (item, "destroy", + G_CALLBACK (symbols.destroy), + module_data); + + + + return item; + +}
- Previous message: [maemo-commits] r9355 - projects/haf/branches/hildon-fm/1.x/hildon-fm
- Next message: [maemo-commits] r9357 - projects/haf/branches/maemo-af-desktop/hildon-desktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]