[maemo-commits] [maemo-commits] r8888 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . background-manager src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Dec 29 14:53:08 EET 2006
- Previous message: [maemo-commits] r8887 - projects/haf/branches/maemo-af-desktop/python-hildon-desktop
- Next message: [maemo-commits] r8889 - projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2006-12-29 14:53:07 +0200 (Fri, 29 Dec 2006) New Revision: 8888 Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.h Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/background-manager/Makefile.am projects/haf/branches/maemo-af-desktop/hildon-desktop/configure.ac Log: 2006-12-29 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-background-dialog.[ch]: - added - import and large rewrite from maemo-af-desktop * background-manager/Makefile.am: Add object remote object definition to the exported header Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-29 09:35:38 UTC (rev 8887) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-29 12:53:07 UTC (rev 8888) @@ -1,3 +1,11 @@ +2006-12-29 Johan Bilien <johan.bilien at nokia.com> + + * src/hd-home-background-dialog.[ch]: + - added + - import and large rewrite from maemo-af-desktop + * background-manager/Makefile.am: Add object remote + object definition to the exported header + 2006-12-21 Johan Bilien <johan.bilien at nokia.com> * background-manager/main.c: Added gnome-vfs initialization Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/background-manager/Makefile.am =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/background-manager/Makefile.am 2006-12-29 09:35:38 UTC (rev 8887) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/background-manager/Makefile.am 2006-12-29 12:53:07 UTC (rev 8888) @@ -15,28 +15,30 @@ hildon-background-manager.h: background-manager.xml background-manager-dbus.h $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=background_manager \ - --mode=glib-client --output=hildon-background-manager-tmp.h \ + --mode=glib-client --output=hildon-background-manager-tmp.h \ background-manager.xml - cat background-manager-dbus.h hildon-background-manager-tmp.h > hildon-background-manager.h + cat background-manager.h background-manager-dbus.h hildon-background-manager-tmp.h > hildon-background-manager.h pkgincludedir = $(includedir)/libhildondesktop/libhildondesktop pkginclude_HEADERS = hildon-background-manager.h hildon_background_manager_CPPFLAGS = @GNOME_VFS_CFLAGS@ \ - @GCONF_CFLAGS@ \ - @DBUS_GLIB_CFLAGS@ \ - @OSSO_CFLAGS@ \ - @GTK_CFLAGS@ + @GCONF_CFLAGS@ \ + @DBUS_GLIB_CFLAGS@ \ + @OSSO_CFLAGS@ \ + @GTK_CFLAGS@ + + hildon_background_manager_LDFLAGS = @GNOME_VFS_LIBS@ \ - @GCONF_LIBS@ \ - @DBUS_GLIB_LIBS@ \ - @OSSO_LIBS@ \ - @GTK_LIBS@ + @GCONF_LIBS@ \ + @DBUS_GLIB_LIBS@ \ + @OSSO_LIBS@ \ + @GTK_LIBS@ hildon_background_manager_SOURCES = $(BUILT_SOURCES) \ - background-manager.c \ - background-manager.h \ - main.c + background-manager.c \ + background-manager.h \ + main.c hildon_background_manager_servicedir = $(datadir)/dbus-1/services hildon_background_manager_service_DATA = hildon-background-manager.service Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/configure.ac =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/configure.ac 2006-12-29 09:35:38 UTC (rev 8887) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/configure.ac 2006-12-29 12:53:07 UTC (rev 8888) @@ -142,6 +142,9 @@ AC_SUBST(hildonstatusbardesktopentrydir) AC_SUBST(hildonstatusbarlibdir) +hildondesktopbackgroundsdir=${datadir}/backgrounds +AC_SUBST(hildondesktopbackgroundsdir) + hildoncpdesktopentrydir=${datadir}/applications/hildon-control-panel AC_SUBST(hildoncpdesktopentrydir) Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c 2006-12-29 09:35:38 UTC (rev 8887) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c 2006-12-29 12:53:07 UTC (rev 8888) @@ -0,0 +1,678 @@ +/* -*- mode:C; c-file-style:"gnu"; -*- */ +/* + * This file is part of hildon-desktop + * + * Copyright (C) 2006 Nokia Corporation. + * + * Author: Johan Bilien <johan.bilien at nokia.com> + * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include "hd-home-background-dialog.h" +#include <libosso.h> +#include <osso-helplib.h> +#include <hildon-widgets/hildon-file-chooser-dialog.h> +#include <hildon-widgets/hildon-color-button.h> +#include <hildon-widgets/hildon-caption.h> + +#include <libhildondesktop/hildon-home-l10n.h> + +#include "background-manager/hildon-background-manager.h" + +#include <string.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <gtk/gtktreemodel.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcelllayout.h> + +#define BG_DESKTOP_GROUP "Desktop Entry" +#define BG_DESKTOP_IMAGE_NAME "Name" +#define BG_DESKTOP_IMAGE_FILENAME "File" +#define BG_DESKTOP_IMAGE_PRIORITY "X-Order" +#define BG_IMG_INFO_FILE_TYPE "desktop" +#define HOME_BG_IMG_DEFAULT_PRIORITY 15327 /* this is a random number */ + +#define HILDON_HOME_HC_USER_IMAGE_DIR "MyDocs/.images" + +#define HILDON_HOME_FILE_CHOOSER_ACTION_PROP "action" +#define HILDON_HOME_FILE_CHOOSER_TITLE_PROP "title" +#define HILDON_HOME_FILE_CHOOSER_TITLE _("home_ti_select_image") +#define HILDON_HOME_FILE_CHOOSER_SELECT_PROP "open-button-text" +#define HILDON_HOME_FILE_CHOOSER_SELECT _("home_bd_select_image") +#define HILDON_HOME_FILE_CHOOSER_EMPTY_PROP "empty-text" +#define HILDON_HOME_FILE_CHOOSER_EMPTY _("home_li_no_images") + +#define HILDON_HOME_SET_BG_RESPONSE_IMAGE GTK_RESPONSE_YES +#define HILDON_HOME_SET_BG_RESPONSE_PREVIEW GTK_RESPONSE_APPLY + + +#define HILDON_HOME_BACKGROUND_NO_IMAGE "no_image" + +enum { + BG_IMAGE_NAME, + BG_IMAGE_FILENAME, + BG_IMAGE_PRIORITY +}; + +enum { + PROP_BACKGROUND_DIR = 1, +}; + +typedef struct +{ + gchar *background_dir; + GtkListStore *combobox_contents; + GtkTreeIter active_iter; + + GtkWidget *color_button, *img_combo, *mode_combo; + +} HDHomeBackgroundDialogPrivate; + +static void +hd_home_background_dialog_set_property (GObject *gobject, + guint prop_id, + const GValue *value, + GParamSpec *pspec); + +static void +hd_home_background_dialog_get_property (GObject *gobject, + guint prop_id, + GValue *value, + GParamSpec *pspec); + + +static void +hd_home_background_dialog_response (GtkDialog *dialog, + gint arg); +static void +hd_home_background_dialog_set_background_dir (HDHomeBackgroundDialog *dialog, + const gchar *dir); + +static void +hd_home_background_dialog_background_dir_changed + (HDHomeBackgroundDialog *dialog); + + +G_DEFINE_TYPE (HDHomeBackgroundDialog, hd_home_background_dialog, GTK_TYPE_DIALOG); + +#define HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), HD_TYPE_HOME_BACKGROUND_DIALOG, HDHomeBackgroundDialogPrivate)) + + +static void +hd_home_background_dialog_class_init (HDHomeBackgroundDialogClass *klass) +{ + GParamSpec *pspec; + GObjectClass *object_class; + GtkDialogClass *dialog_class; + + object_class = G_OBJECT_CLASS (klass); + dialog_class = GTK_DIALOG_CLASS (klass); + + object_class->set_property = hd_home_background_dialog_set_property; + object_class->get_property = hd_home_background_dialog_get_property; + + dialog_class->response = hd_home_background_dialog_response; + + klass->background_dir_changed = hd_home_background_dialog_background_dir_changed; + + g_signal_new ("background-dir-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (HDHomeBackgroundDialogClass, + background_dir_changed), + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + pspec = g_param_spec_string ("background-dir", + "Background directory", + "Directory where to look for default backgrounds", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + g_object_class_install_property (object_class, + PROP_BACKGROUND_DIR, + pspec); + + g_type_class_add_private (klass, sizeof (HDHomeBackgroundDialogPrivate)); + +} + +static void +hd_home_background_dialog_init (HDHomeBackgroundDialog *dialog) +{ + HDHomeBackgroundDialogPrivate *priv; + GtkWidget *hbox_color; + GtkWidget *hbox_image; + GtkWidget *hbox_mode; + GtkWidget *color_caption; + GtkWidget *image_caption; + GtkWidget *mode_caption; + GtkCellRenderer *renderer; + GtkSizeGroup *group; + const gchar *image_modes[] = { + HH_SET_BG_MODE_CENTERED, + HH_SET_BG_MODE_SCALED, + HH_SET_BG_MODE_STRETCHED, + HH_SET_BG_MODE_TILED + }; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + gtk_dialog_add_buttons (GTK_DIALOG (dialog), + HH_SET_BG_OK, + GTK_RESPONSE_OK, + HH_SET_BG_PREVIEW, + HILDON_HOME_SET_BG_RESPONSE_PREVIEW, + HH_SET_BG_IMAGE, + HILDON_HOME_SET_BG_RESPONSE_IMAGE, + HH_SET_BG_CANCEL, + GTK_RESPONSE_CANCEL, + NULL); + + gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); + gtk_window_set_title (GTK_WINDOW (dialog), HH_SET_BG_TITLE); + +#if 0 + /* Add help button */ + ossohelp_dialog_help_enable (GTK_DIALOG (dialog), + HH_HELP_SET_BACKGROUND, + home_get_osso_context ()); +#endif + + /* Hildon Caption HBoxes */ + hbox_color = gtk_hbox_new (FALSE, 10); + hbox_image = gtk_hbox_new (FALSE, 10); + hbox_mode = gtk_hbox_new (FALSE, 10); + +#if 0 + /* Widgets for Hildon Captions in Set Background Image dialog */ + background_manager_get_color (bm, ¤t_color); + priv->color_button = hildon_color_button_new_with_color (¤t_color); +#endif + + priv->color_button = hildon_color_button_new (); + + priv->img_combo = + gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->combobox_contents)); + +#if 0 + if(!background_manager_get_image_uri (bm) || + g_str_equal(background_manager_get_image_uri (bm), + HILDON_HOME_BACKGROUND_NO_IMAGE)) +#endif + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->img_combo), + renderer, + TRUE); + + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->img_combo), + renderer, "text", + BG_IMAGE_NAME, NULL); + + priv->mode_combo = gtk_combo_box_new_text (); + + gtk_combo_box_append_text (GTK_COMBO_BOX (priv->mode_combo), + image_modes[BACKGROUND_CENTERED]); + gtk_combo_box_append_text (GTK_COMBO_BOX (priv->mode_combo), + image_modes[BACKGROUND_SCALED]); + gtk_combo_box_append_text (GTK_COMBO_BOX (priv->mode_combo), + image_modes[BACKGROUND_STRETCHED]); + gtk_combo_box_append_text (GTK_COMBO_BOX (priv->mode_combo), + image_modes[BACKGROUND_TILED]); + +#if 0 + /* Centered is a default scaling value */ + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox_mode_select), + background_manager_get_mode (bm)); +#endif + + /* Hildon captions in Set Background Image dialog */ + group = GTK_SIZE_GROUP (gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL)); + color_caption = + hildon_caption_new (group, + HH_SET_BG_COLOR_TITLE, + priv->color_button, + NULL, + HILDON_CAPTION_OPTIONAL); + image_caption = + hildon_caption_new (group, + HH_SET_BG_IMAGE_TITLE, + priv->img_combo, + NULL, + HILDON_CAPTION_OPTIONAL); + mode_caption = + hildon_caption_new (group, + HH_SET_BG_MODE_TITLE, + priv->mode_combo, + NULL, + HILDON_CAPTION_OPTIONAL); + + gtk_box_pack_start (GTK_BOX (hbox_color), color_caption, + FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox_image), image_caption, + TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox_mode), mode_caption, + TRUE, TRUE, 0); + + gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 10); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox_color); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox_image); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox_mode); + + hildon_caption_set_child_expand (HILDON_CAPTION (image_caption), TRUE); + hildon_caption_set_child_expand (HILDON_CAPTION (mode_caption), TRUE); + + /* Let the WM take care of the positioning */ + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_NONE); +} + +static void +hd_home_background_dialog_set_property (GObject *gobject, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) + { + case PROP_BACKGROUND_DIR: + hd_home_background_dialog_set_background_dir ( + HD_HOME_BACKGROUND_DIALOG (gobject), + g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + break; + } +} + +static void +hd_home_background_dialog_get_property (GObject *gobject, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + HDHomeBackgroundDialogPrivate *priv; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (gobject); + + switch (prop_id) + { + case PROP_BACKGROUND_DIR: + g_value_set_string (value, priv->background_dir); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + break; + } +} + +#if 0 +static gboolean +home_bgd_select_file_dialog (GtkWidget * parent, + GtkComboBox * box, + gboolean built_in) +{ + GtkTreeModel *tree = gtk_combo_box_get_model (box); + GtkWidget *dialog; + GtkFileFilter *mime_type_filter; + gint response; + gchar *name_str, *dot; + gchar *chooser_name; + gchar *image_dir; + + dialog = + hildon_file_chooser_dialog_new_with_properties( + GTK_WINDOW(parent), + HILDON_HOME_FILE_CHOOSER_ACTION_PROP, + GTK_FILE_CHOOSER_ACTION_OPEN, + HILDON_HOME_FILE_CHOOSER_TITLE_PROP, + HILDON_HOME_FILE_CHOOSER_TITLE, + HILDON_HOME_FILE_CHOOSER_SELECT_PROP, + HILDON_HOME_FILE_CHOOSER_SELECT, + HILDON_HOME_FILE_CHOOSER_EMPTY_PROP, + HILDON_HOME_FILE_CHOOSER_EMPTY, + NULL); + +#if 0 + /* Add help button */ + ossohelp_dialog_help_enable(GTK_DIALOG(dialog), + HILDON_HOME_SELECT_IMAGE_HELP_TOPIC, + home_get_osso_context ()); +#endif + + mime_type_filter = gtk_file_filter_new(); + gtk_file_filter_add_mime_type (mime_type_filter, "image/jpeg"); + gtk_file_filter_add_mime_type (mime_type_filter, "image/gif"); + gtk_file_filter_add_mime_type (mime_type_filter, "image/png"); + gtk_file_filter_add_mime_type (mime_type_filter, "image/bmp"); + gtk_file_filter_add_mime_type (mime_type_filter, "image/tiff"); + gtk_file_filter_add_mime_type (mime_type_filter, "sketch/png"); + + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), + mime_type_filter); + + image_dir = g_build_path("/", + g_getenv ("HOME"), + HILDON_HOME_HC_USER_IMAGE_DIR, + NULL); + + if(!gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (dialog), + image_dir)) + g_warning ("Couldn't set default image dir for dialog %s", + image_dir); + + g_free (image_dir); + + response = gtk_dialog_run (GTK_DIALOG (dialog)); + + if (response == GTK_RESPONSE_OK) + { + + chooser_name = + gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); + + name_str = g_filename_from_uri (chooser_name, NULL, NULL); + if (!name_str) + name_str = g_strdup (chooser_name); + + /* remove extension */ + if ((dot = g_strrstr (name_str, ".")) && dot != name_str) + *dot = '\0'; + + if (name_str && *name_str) + { + GtkTreeIter iter; + GtkTreePath *path; + gint priority = 0; + gtk_list_store_append (GTK_LIST_STORE (tree), &iter); + + gtk_list_store_set (GTK_LIST_STORE (tree), + &iter, + BG_IMAGE_NAME, name_str, + BG_IMAGE_FILENAME, chooser_name, + BG_IMAGE_PRIORITY, G_MAXINT, -1); + + gtk_combo_box_set_active_iter (box, &iter); + + path = gtk_tree_model_get_path (tree, &iter); + gtk_tree_path_next (path); + + if (gtk_tree_model_get_iter (tree, &iter, path)) + { + priority = home_bgd_get_priority (tree, &iter); + if (priority == G_MAXINT) + { + gtk_list_store_remove(GTK_LIST_STORE(tree), &iter); + + } + } + gtk_tree_path_free(path); + } + + /* Clean up */ + g_free(name_str); + gtk_widget_destroy(dialog); + + return TRUE; + } + + gtk_widget_destroy(dialog); + + return FALSE; +} +#endif + +static void +hd_home_background_dialog_response (GtkDialog *dialog, + gint arg) +{ + HDHomeBackgroundDialogPrivate *priv; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + +#if 0 + g_debug ("response_data = {\n" + " img_combo .= %s\n" + " mode_combo .= %s\n" + " color_button .= %s\n" + " applied .= %s\n" + " built_in .= %s\n" + " has_preview .= %s\n" + "}", + g_type_name (G_OBJECT_TYPE (d->img_combo)), + g_type_name (G_OBJECT_TYPE (d->mode_combo)), + g_type_name (G_OBJECT_TYPE (d->color_button)), + d->applied ? "<true>" : "<false>", + d->built_in ? "<true>" : "<false>", + d->has_preview ? "<true>" : "<false>"); +#endif + + switch (arg) + { + case HILDON_HOME_SET_BG_RESPONSE_IMAGE: + /* home_bgd_select_file_dialog (dialog, img_combo, d->built_in);*/ + break; + case HILDON_HOME_SET_BG_RESPONSE_PREVIEW: + break; + case GTK_RESPONSE_OK: + gtk_widget_hide (GTK_WIDGET(dialog)); + break; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + gtk_widget_hide (GTK_WIDGET (dialog)); + break; + default: + break; + } + +} + + +static void +hd_home_background_dialog_background_dir_changed + (HDHomeBackgroundDialog *dialog) +{ + HDHomeBackgroundDialogPrivate *priv; + GDir *dir = NULL; + GError *error = NULL; + GtkTreeIter iterator; + const gchar *image_desc_file = NULL; + GKeyFile *kfile; + + g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog) && dir); + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (priv->combobox_contents) + gtk_list_store_clear (priv->combobox_contents); + else + priv->combobox_contents = + gtk_list_store_new (3, + G_TYPE_STRING, /*localised descriptive name */ + G_TYPE_STRING, /* image file path & name */ + G_TYPE_INT /* image priority */); + + if (!priv->background_dir) + return; + + dir = g_dir_open (priv->background_dir, + 0, + &error); + + if (error) + { + g_warning ("Could not open background directory %s: %s", + priv->background_dir, + error->message); + g_error_free (error); + return; + } + + + /* No background file option */ + gtk_list_store_append (priv->combobox_contents, &iterator); + gtk_list_store_set (priv->combobox_contents, + &iterator, + BG_IMAGE_NAME, HH_SET_BG_IMAGE_NONE, + BG_IMAGE_FILENAME, NULL, + BG_IMAGE_PRIORITY, 0, -1); + + kfile = g_key_file_new (); + + while ((image_desc_file = g_dir_read_name (dir))) + { + gchar *image_name = NULL; + gchar *image_path = NULL; + gchar *filename = NULL; + gint image_order = 0; + + if (!g_str_has_suffix (image_desc_file, BG_IMG_INFO_FILE_TYPE)) + continue; + + error = NULL; + + filename = g_build_filename (priv->background_dir, + image_desc_file, + NULL); + + if (!g_key_file_load_from_file (kfile, + filename, + G_KEY_FILE_NONE, + &error)) + goto end_of_loop; + + + image_name = g_key_file_get_string (kfile, + BG_DESKTOP_GROUP, + BG_DESKTOP_IMAGE_NAME, + &error); + + if (!image_name || error) goto end_of_loop; + + image_path = g_key_file_get_string (kfile, + BG_DESKTOP_GROUP, + BG_DESKTOP_IMAGE_FILENAME, + &error); + + if (!image_path || error) goto end_of_loop; + + image_order = g_key_file_get_integer (kfile, + BG_DESKTOP_GROUP, + BG_DESKTOP_IMAGE_PRIORITY, + &error); + + if (error) goto end_of_loop; + +#if 0 + current_uri = background_manager_get_image_uri (bm); + + if (current_uri) + { + gchar *current_path; + GError *error = NULL; + + current_path = g_filename_from_uri (current_uri, NULL, &error); + if (error) + { + g_warning ("Unable to get the filename from uri `%s': %s", + current_uri, + error->message); + + g_error_free (error); + + /* we let the background manager deal with it */ + current_path = g_strdup (current_uri); + } + + g_debug ("current filename [%s], processing [%s]", + current_path, image_path); + + if (image_path && + g_str_equal(image_path, current_path)) + { + g_debug ("current BG uses built in image"); + resp_data->built_in = TRUE; + } + + g_free (current_path); + } +#endif + + gtk_list_store_append (priv->combobox_contents, &iterator); + + gtk_list_store_set (priv->combobox_contents, + &iterator, + BG_IMAGE_NAME, + /* work around a strange behavior of gettext for + * empty strings */ + ((image_name && *image_name) ? _(image_name) : image_path), + BG_IMAGE_FILENAME, image_path, + BG_IMAGE_PRIORITY, image_order, + -1); + +end_of_loop: + if (error) + g_warning ("Error when reading background descriptions: %s", + error->message); + g_clear_error (&error); + + g_free (filename); + g_free (image_name); + g_free (image_path); + } + + if (dir) + g_dir_close (dir); + + g_key_file_free (kfile); + + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->combobox_contents), + BG_IMAGE_PRIORITY, + GTK_SORT_ASCENDING); +} + +static void +hd_home_background_dialog_set_background_dir (HDHomeBackgroundDialog *dialog, + const gchar *dir) +{ + HDHomeBackgroundDialogPrivate *priv; + + g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog) && dir); + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (!priv->background_dir + || !g_str_equal (dir, priv->background_dir)) + { + g_free (priv->background_dir); + + priv->background_dir = g_strdup (dir); + g_object_notify (G_OBJECT (dialog), "background-dir"); + g_signal_emit_by_name (dialog, "background-dir-changed"); + } +} + Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.h 2006-12-29 09:35:38 UTC (rev 8887) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.h 2006-12-29 12:53:07 UTC (rev 8888) @@ -0,0 +1,61 @@ +/* -*- mode:C; c-file-style:"gnu"; -*- */ +/* + * This file is part of hildon-desktop + * + * Copyright (C) 2006 Nokia Corporation. + * + * Author: Johan Bilien <johan.bilien at nokia.com> + * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifndef __HD_BACKGROUND_DIALOG_H__ +#define __HD_BACKGROUND_DIALOG_H__ + +#include <gtk/gtkdialog.h> + +G_BEGIN_DECLS + +typedef struct _HDHomeBackgroundDialog HDHomeBackgroundDialog; +typedef struct _HDHomeBackgroundDialogClass HDHomeBackgroundDialogClass; + +#define HD_TYPE_HOME_BACKGROUND_DIALOG (hd_home_background_dialog_get_type ()) +#define HD_HOME_BACKGROUND_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), HD_TYPE_HOME_BACKGROUND_DIALOG, HDHomeBackgroundDialog)) +#define HD_HOME_BACKGROUND_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HD_TYPE_HOME_BACKGROUND_DIALOG, HDHomeBackgroundDialogClass)) +#define HD_IS_HOME_BACKGROUND_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HD_TYPE_HOME_BACKGROUND_DIALOG)) +#define HD_IS_HOME_BACKGROUND_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HD_TYPE_HOME_BACKGROUND_DIALOG)) +#define HD_HOME_BACKGROUND_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HD_TYPE_HOME_BACKGROUND_DIALOG, HDHomeBackgroundDialogClass)) + +struct _HDHomeBackgroundDialog +{ + GtkDialog parent; + +}; + +struct _HDHomeBackgroundDialogClass +{ + GtkDialogClass parent_class; + + void (* background_dir_changed) (HDHomeBackgroundDialog *dialog); + +}; + +GType hd_home_background_dialog_get_type (void); + +G_END_DECLS + +#endif
- Previous message: [maemo-commits] r8887 - projects/haf/branches/maemo-af-desktop/python-hildon-desktop
- Next message: [maemo-commits] r8889 - projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]