[gnome-control-center/wip/jsparber/background: 1/15] background: add buttons at bottom of the gallery
- From: Julian Sparber <jsparber src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/wip/jsparber/background: 1/15] background: add buttons at bottom of the gallery
- Date: Sat, 17 Feb 2018 21:28:12 +0000 (UTC)
commit 8e074ae96734d3d6f726e8424fac8080028220b1
Author: Julian Sparber <julian sparber net>
Date: Sun Nov 5 13:30:41 2017 +0100
background: add buttons at bottom of the gallery
- Add buttons for "Photo" and "Files" at the bottom of the gallery
- Change the border on top of the gallery
- clean up and fix build warnings
https://bugzilla.gnome.org/show_bug.cgi?id=788515
panels/background/background.ui | 71 +++++++-
panels/background/bg-source.c | 12 +-
panels/background/bg-wallpapers-source.c | 4 +-
panels/background/bg-wallpapers-source.h | 2 +-
panels/background/cc-background-chooser-dialog.c | 2 +-
panels/background/cc-background-grid-item.c | 8 +-
panels/background/cc-background-grid-item.h | 8 +-
panels/background/cc-background-panel.c | 220 +++++++++++++----------
panels/background/cc-background-store.c | 57 +++++-
panels/background/cc-background-store.h | 3 +-
panels/background/data/background.css | 1 +
11 files changed, 274 insertions(+), 114 deletions(-)
---
diff --git a/panels/background/background.ui b/panels/background/background.ui
index aae1f6bb1..147b567f4 100644
--- a/panels/background/background.ui
+++ b/panels/background/background.ui
@@ -111,6 +111,9 @@
<object class="GtkBox" id="backgroud-gallery-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <style>
+ <class name="background-gallery"/>
+ </style>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
@@ -121,9 +124,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <style>
- <class name="background-gallery"/>
- </style>
<child>
<object class="GtkFlowBox" id="background-gallery">
<property name="visible">True</property>
@@ -137,9 +137,72 @@
<property name="valign">center</property>
<property name="margin">25</property>
<property name="margin_top">50</property>
+ <property name="margin_bottom">32</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">end</property>
+ <property name="margin">32</property>
+ <property name="margin_top">0</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Photos or Files can be used to set any
image as the background</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkButton" id="open-gnome-photos">
+ <property name="label" translatable="yes">Open Photos app</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="open-picture-folder">
+ <property name="label" translatable="yes">Open Pictures folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
</child>
-
</object>
</child>
</object>
diff --git a/panels/background/bg-source.c b/panels/background/bg-source.c
index 7d08dbd93..f1fac842f 100644
--- a/panels/background/bg-source.c
+++ b/panels/background/bg-source.c
@@ -52,12 +52,12 @@ bg_source_calculate_thumbnail_dimensions (BgSource *source)
priv->thumbnail_height = THUMBNAIL_HEIGHT;
priv->thumbnail_width = THUMBNAIL_WIDTH;
- //if (priv->window == NULL)
- // return;
+ if (priv->window == NULL)
+ return;
- //scale_factor = gtk_widget_get_scale_factor (priv->window);
- scale_factor = 1;
+ scale_factor = gtk_widget_get_scale_factor (priv->window);
+
if (scale_factor > 1)
{
priv->thumbnail_height *= scale_factor;
@@ -144,7 +144,7 @@ bg_source_class_init (BgSourceClass *klass)
pspec = g_param_spec_object ("window",
"Window",
"Toplevel window used to view the source",
- GTK_TYPE_WINDOW,
+ GTK_TYPE_WIDGET,
G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_WINDOW, pspec);
}
@@ -176,8 +176,6 @@ bg_source_get_scale_factor (BgSource *source)
priv = bg_source_get_instance_private (source);
- return 1;
- g_print("Error Here 2\n");
return gtk_widget_get_scale_factor (priv->window);
}
diff --git a/panels/background/bg-wallpapers-source.c b/panels/background/bg-wallpapers-source.c
index 40f8c1aff..1b891e55c 100644
--- a/panels/background/bg-wallpapers-source.c
+++ b/panels/background/bg-wallpapers-source.c
@@ -56,7 +56,7 @@ load_wallpapers (gchar *key,
if (deleted)
return;
-// gtk_list_store_append (store, &iter);
+ //gtk_list_store_append (store, &iter);
scale_factor = bg_source_get_scale_factor (BG_SOURCE (source));
thumbnail_height = bg_source_get_thumbnail_height (BG_SOURCE (source));
@@ -166,7 +166,7 @@ bg_wallpapers_source_class_init (BgWallpapersSourceClass *klass)
}
BgWallpapersSource *
-bg_wallpapers_source_new (GtkWindow *window)
+bg_wallpapers_source_new (GtkWidget *window)
{
return g_object_new (BG_TYPE_WALLPAPERS_SOURCE, "window", window, NULL);
}
diff --git a/panels/background/bg-wallpapers-source.h b/panels/background/bg-wallpapers-source.h
index 729266910..3d0d2e0f9 100644
--- a/panels/background/bg-wallpapers-source.h
+++ b/panels/background/bg-wallpapers-source.h
@@ -31,7 +31,7 @@ G_BEGIN_DECLS
#define BG_TYPE_WALLPAPERS_SOURCE (bg_wallpapers_source_get_type ())
G_DECLARE_FINAL_TYPE (BgWallpapersSource, bg_wallpapers_source, BG, WALLPAPERS_SOURCE, BgSource)
-BgWallpapersSource *bg_wallpapers_source_new (GtkWindow *);
+BgWallpapersSource *bg_wallpapers_source_new (GtkWidget *);
G_END_DECLS
diff --git a/panels/background/cc-background-chooser-dialog.c
b/panels/background/cc-background-chooser-dialog.c
index 47329cae0..b766b6e52 100644
--- a/panels/background/cc-background-chooser-dialog.c
+++ b/panels/background/cc-background-chooser-dialog.c
@@ -458,7 +458,7 @@ cc_background_chooser_dialog_init (CcBackgroundChooserDialog *chooser)
g_autofree gchar *pictures_dir_uri = NULL;
GtkTargetList *target_list;
- chooser->wallpapers_source = bg_wallpapers_source_new (GTK_WINDOW (chooser));
+ chooser->wallpapers_source = bg_wallpapers_source_new (GTK_WIDGET (chooser));
chooser->pictures_source = bg_pictures_source_new (GTK_WINDOW (chooser));
chooser->colors_source = bg_colors_source_new (GTK_WINDOW (chooser));
diff --git a/panels/background/cc-background-grid-item.c b/panels/background/cc-background-grid-item.c
index 991267b06..c2341cc76 100644
--- a/panels/background/cc-background-grid-item.c
+++ b/panels/background/cc-background-grid-item.c
@@ -48,13 +48,15 @@ cc_background_grid_item_new (CcBackgroundItem *item)
NULL);
}
-CcBackgroundItem * cc_background_grid_item_get_ref (CcBackgroundGridItem *self)
+CcBackgroundItem * cc_background_grid_item_get_ref (GtkWidget *widget)
{
+ CcBackgroundGridItem *self = (CcBackgroundGridItem *) widget;
return self->item;
}
void
-cc_background_grid_item_set_ref (CcBackgroundGridItem *self, CcBackgroundItem *item)
+cc_background_grid_item_set_ref (GtkWidget *widget, CcBackgroundItem *item)
{
+ CcBackgroundGridItem *self = (CcBackgroundGridItem *) widget;
self->item = item;
}
@@ -119,7 +121,7 @@ static void
cc_background_grid_item_class_init (CcBackgroundGridItemClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ //GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = cc_background_grid_item_finalize;
object_class->dispose = cc_background_grid_item_dispose;
diff --git a/panels/background/cc-background-grid-item.h b/panels/background/cc-background-grid-item.h
index 025a56fab..2c0a19772 100644
--- a/panels/background/cc-background-grid-item.h
+++ b/panels/background/cc-background-grid-item.h
@@ -28,10 +28,10 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (CcBackgroundGridItem, cc_background_grid_item, CC, BACKGROUND_GRID_LIST,
GtkFlowBoxChild)
-GtkWidget* cc_background_grid_item_new (CcBackgroundItem *);
-
-void cc_background_grid_item_set_ref (CcBackgroundGridItem *self, CcBackgroundItem *item);
-CcBackgroundItem * cc_background_grid_item_get_ref (CcBackgroundGridItem *self);
+GtkWidget * cc_background_grid_item_new (CcBackgroundItem *);
+void cc_background_grid_item_set_ref (GtkWidget *,
+ CcBackgroundItem *);
+CcBackgroundItem * cc_background_grid_item_get_ref (GtkWidget *);
G_END_DECLS
diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c
index afc822943..0216a9ed8 100644
--- a/panels/background/cc-background-panel.c
+++ b/panels/background/cc-background-panel.c
@@ -24,13 +24,14 @@
#include <glib.h>
#include <glib/gi18n-lib.h>
#include <glib/gstdio.h>
+#include <gio/gdesktopappinfo.h>
#include <gdesktop-enums.h>
#include "cc-background-panel.h"
-#include "bg-wallpapers-source.h"
#include "cc-background-item.h"
+#include "cc-background-store.h"
#include "cc-background-grid-item.h"
#include "cc-background-resources.h"
#include "cc-background-xml.h"
@@ -55,8 +56,7 @@ struct _CcBackgroundPanel
GnomeDesktopThumbnailFactory *thumb_factory;
CcBackgroundItem *current_background;
-
- BgWallpapersSource *wallpapers_source;
+ CcBackgroundStore *store;
GCancellable *copy_cancellable;
@@ -102,6 +102,8 @@ cc_background_panel_finalize (GObject *object)
CcBackgroundPanel *panel = CC_BACKGROUND_PANEL (object);
g_clear_object (&panel->current_background);
+ g_clear_object (&panel->store);
+ g_clear_object (&panel->settings);
G_OBJECT_CLASS (cc_background_panel_parent_class)->finalize (object);
}
@@ -427,6 +429,7 @@ set_background (CcBackgroundPanel *panel,
g_settings_set_string (settings, WP_URI_KEY, uri);
}
+
/* Also set the placement if we have a URI and the previous value was none */
if (flags & CC_BACKGROUND_ITEM_HAS_PLACEMENT)
{
@@ -458,6 +461,7 @@ set_background (CcBackgroundPanel *panel,
if (create_save_dir ())
cc_background_xml_save (panel->current_background, filename);
}
+
}
static void
@@ -469,43 +473,12 @@ on_settings_changed (GSettings *settings,
update_preview (self, settings, NULL);
}
-static GtkWidget *
-create_view (GtkWidget *parent, GtkTreeModel *model)
-{
- GtkCellRenderer *renderer;
- GtkWidget *icon_view;
- GtkWidget *sw;
-
- sw = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_widget_set_hexpand (sw, TRUE);
- gtk_widget_set_vexpand (sw, TRUE);
-
- icon_view = gtk_icon_view_new ();
- gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), model);
- gtk_widget_set_hexpand (icon_view, TRUE);
- gtk_container_add (GTK_CONTAINER (sw), icon_view);
-
- gtk_icon_view_set_columns (GTK_ICON_VIEW (icon_view), 3);
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view),
- renderer,
- FALSE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
- renderer,
- "surface", 0,
- NULL);
-
- return sw;
-}
-
static void
on_background_select (GtkFlowBox *box,
GtkFlowBoxChild *child,
gpointer user_data)
{
- CcBackgroundGridItem *selected = (CcBackgroundGridItem *) child;
+ GtkWidget *selected = GTK_WIDGET (child);
CcBackgroundPanel *panel = user_data;
CcBackgroundItem *item;
item = cc_background_grid_item_get_ref (selected);
@@ -513,26 +486,106 @@ on_background_select (GtkFlowBox *box,
set_background (panel, panel->settings, item);
}
-gboolean
-do_foreach_background_item (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data)
+static void
+on_open_gnome_photos (GtkWidget *widget,
+ gpointer user_data)
+{
+ GAppLaunchContext *context;
+ GDesktopAppInfo *appInfo;
+ GError **error = NULL;
+
+ context = G_APP_LAUNCH_CONTEXT (gdk_display_get_app_launch_context (gdk_display_get_default ()));
+ appInfo = g_desktop_app_info_new("org.gnome.Photos.desktop");
+
+ if (appInfo == NULL) {
+ g_debug ("Gnome Photos is not installed.");
+ }
+ else {
+ g_app_info_launch (G_APP_INFO (appInfo), NULL, context, error);
+ g_prefix_error (error, "Problem opening Gnome Photos: ");
+
+ g_object_unref (appInfo);
+ }
+ g_object_unref (context);
+}
+
+static void
+on_open_picture_folder (GtkWidget *widget,
+ gpointer user_data)
{
- CcBackgroundPanel *panel = data;
- CcBackgroundGridItem *flow;
+ GDBusProxy *proxy;
+ GVariant *retval;
+ GVariantBuilder *builder;
+ const gchar *uri;
+ GError **error = NULL;
+ const gchar *path;
+
+ path = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES);
+
+ uri = g_filename_to_uri (path, NULL, error);
+
+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ "org.freedesktop.FileManager1",
+ "/org/freedesktop/FileManager1",
+ "org.freedesktop.FileManager1",
+ NULL, error);
+
+ if (!proxy) {
+ g_prefix_error (error,
+ ("Connecting to org.freedesktop.FileManager1 failed: "));
+ }
+ else {
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_variant_builder_add (builder, "s", uri);
+
+ retval = g_dbus_proxy_call_sync (proxy,
+ "ShowFolders",
+ g_variant_new ("(ass)",
+ builder,
+ ""),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, NULL, error);
+
+ g_variant_builder_unref (builder);
+ g_object_unref (proxy);
+
+ if (!retval)
+ {
+ g_prefix_error (error, ("Calling ShowFolders failed: "));
+ }
+ else
+ g_variant_unref (retval);
+ }
+}
+
+static gboolean
+is_gnome_photos_installed ()
+{
+ if (g_desktop_app_info_new("org.gnome.Photos.desktop") == NULL) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static GtkWidget *
+create_gallery_item (gpointer item,
+ gpointer user_data)
+{
+ CcBackgroundPanel *panel = user_data;
+ GtkWidget *flow;
GtkWidget *widget;
GdkPixbuf *pixbuf;
- CcBackgroundItem *item;
+ CcBackgroundItem *self = item;
gint scale_factor;
const gint preview_width = 309;
const gint preview_height = 168;
- gtk_tree_model_get (model, iter, 1, &item, -1);
-
- scale_factor = gtk_widget_get_scale_factor (panel);
+ scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (panel));
- pixbuf = cc_background_item_get_frame_thumbnail (item,
+ pixbuf = cc_background_item_get_frame_thumbnail (self,
panel->thumb_factory,
preview_width,
preview_height,
@@ -541,45 +594,13 @@ do_foreach_background_item (GtkTreeModel *model,
widget = gtk_image_new_from_pixbuf (pixbuf);
- flow = cc_background_grid_item_new(item);
- cc_background_grid_item_set_ref (flow, item);
+ flow = cc_background_grid_item_new(self);
+ cc_background_grid_item_set_ref (flow, self);
gtk_widget_show (flow);
gtk_widget_show (widget);
- gtk_container_add (flow, widget);
-
- gtk_flow_box_insert (GTK_FLOW_BOX (WID("background-gallery")), flow, -1);
- return TRUE;
-}
+ gtk_container_add (GTK_CONTAINER (flow), widget);
-static void
-on_source_added_cb (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer user_data)
-{
- //gtk_tree_model_foreach (model, foreach_background_item, user_data);
- do_foreach_background_item (model, path, iter, user_data);
-}
-
-static void
-load_wallpapers (CcBackgroundPanel *panel, GtkWidget *parent)
-{
- GtkListStore *model;
- GtkTreeIter iter;
- GtkTreePath *path;
- GValue *value = NULL;
- gint scale_factor;
-
- scale_factor = gtk_widget_get_scale_factor (panel);
-
- panel->wallpapers_source = bg_wallpapers_source_new (GTK_WINDOW (NULL));
- model = bg_source_get_liststore (BG_SOURCE (panel->wallpapers_source));
-
- gtk_tree_model_foreach (model, do_foreach_background_item, panel);
-
- g_signal_connect (model, "row-inserted", G_CALLBACK (on_source_added_cb), panel);
- //g_signal_connect (model, "row-deleted", G_CALLBACK (on_source_removed_cb), chooser);
- //g_signal_connect (model, "row-changed", G_CALLBACK (on_source_modified_cb), chooser);
+ return flow;
}
static void
@@ -587,10 +608,12 @@ cc_background_panel_init (CcBackgroundPanel *panel)
{
gchar *objects[] = {"background-panel", NULL };
g_autoptr(GError) err = NULL;
- GtkCssProvider *provider;
- GtkStyleContext *context;
+ GtkStyleProvider *provider;
GtkWidget *widget;
+ /* Create wallpapers store */
+ panel->store = cc_background_store_new ();
+
panel->connection = g_application_get_dbus_connection (g_application_get_default ());
g_resources_register (cc_background_get_resource ());
@@ -616,12 +639,11 @@ cc_background_panel_init (CcBackgroundPanel *panel)
/* add style */
widget = WID ("background-preview-top");
- provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
+ provider = gtk_css_provider_new ();
gtk_css_provider_load_from_resource (provider,
"org/gnome/control-center/background/background.css");
- context = gtk_widget_get_style_context (widget);
gtk_style_context_add_provider_for_screen (gdk_screen_get_default(),
- provider,
+ GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
@@ -633,18 +655,36 @@ cc_background_panel_init (CcBackgroundPanel *panel)
panel->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
+ /* add button handler */
+ widget = WID ("open-gnome-photos");
+ g_signal_connect (G_OBJECT (widget), "clicked",
+ G_CALLBACK (on_open_gnome_photos), panel);
+
+ if (!is_gnome_photos_installed ()) {
+ gtk_widget_hide (widget);
+ }
+
+ widget = WID ("open-picture-folder");
+ g_signal_connect (G_OBJECT (widget), "clicked",
+ G_CALLBACK (on_open_picture_folder), panel);
+
/* add the gallery widget */
widget = WID ("background-gallery");
g_signal_connect (G_OBJECT (widget), "child-activated",
G_CALLBACK (on_background_select), panel);
- load_wallpapers (panel, widget);
-
/* Load the backgrounds */
reload_current_bg (panel, panel->settings);
update_preview (panel, panel->settings, NULL);
+ /* Bind liststore to flowbox */
+ gtk_flow_box_bind_model (GTK_FLOW_BOX (WID("background-gallery")),
+ G_LIST_MODEL (cc_background_store_get_liststore (panel->store)),
+ create_gallery_item,
+ panel,
+ NULL);
+
/* Background settings */
g_signal_connect (panel->settings, "changed", G_CALLBACK (on_settings_changed), panel);
}
diff --git a/panels/background/cc-background-store.c b/panels/background/cc-background-store.c
index 33c190049..05eb09c27 100644
--- a/panels/background/cc-background-store.c
+++ b/panels/background/cc-background-store.c
@@ -21,12 +21,14 @@
#include <gio/gio.h>
#include "cc-background-store.h"
#include "cc-background-item.h"
+#include "cc-background-xml.h"
struct _CcBackgroundStore
{
GObject parent_instance;
/* Other members, including private data. */
+ //CcBackgroundStorePrivate *priv;
};
/* Private structure definition. */
@@ -34,7 +36,8 @@ typedef struct _CcBackgroundStorePrivate CcBackgroundStorePrivate;
struct _CcBackgroundStorePrivate
{
- GListStore * model;
+ GListStore *model;
+ CcBackgroundXml *xml;
};
G_DEFINE_TYPE_WITH_PRIVATE (CcBackgroundStore, cc_background_store, G_TYPE_OBJECT)
@@ -56,6 +59,7 @@ cc_background_store_dispose (GObject *gobject)
* NULL; g_clear_object() does this for us.
*/
g_clear_object (&priv->model);
+ g_clear_object (&priv->xml);
/* Always chain up to the parent class; there is no need to check if
* the parent class implements the dispose() virtual function: it is
@@ -77,12 +81,50 @@ cc_background_store_finalize (GObject *gobject)
G_OBJECT_CLASS (cc_background_store_parent_class)->finalize (gobject);
}
+
+static void
+item_added (CcBackgroundXml *xml,
+ CcBackgroundItem *item,
+ CcBackgroundStore *self)
+{
+ CcBackgroundStorePrivate *priv = cc_background_store_get_instance_private (self);
+ g_list_store_append (priv->model, item);
+}
+
+static void
+list_load_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ cc_background_xml_load_list_finish (res);
+}
+
+static void
+cc_background_store_constructed (GObject *object)
+{
+ CcBackgroundStore *self = CC_BACKGROUND_STORE (object);
+ CcBackgroundStorePrivate *priv = cc_background_store_get_instance_private (self);
+
+ G_OBJECT_CLASS (cc_background_store_parent_class)->constructed (object);
+
+ g_signal_connect (G_OBJECT (priv->xml), "added",
+ G_CALLBACK (item_added), self);
+
+ /* Try adding the default background first */
+ //load_default_bg (self);
+
+ cc_background_xml_load_list_async (priv->xml, NULL, list_load_cb, self);
+}
+
+
+
static void
cc_background_store_class_init (CcBackgroundStoreClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = cc_background_store_dispose;
+ object_class->constructed = cc_background_store_constructed;
object_class->finalize = cc_background_store_finalize;
}
@@ -91,4 +133,17 @@ cc_background_store_init (CcBackgroundStore *self)
{
CcBackgroundStorePrivate *priv = cc_background_store_get_instance_private (self);
priv->model = g_list_store_new (cc_background_item_get_type());
+ priv->xml = cc_background_xml_new ();
+}
+
+GListStore *
+cc_background_store_get_liststore (CcBackgroundStore *self) {
+ CcBackgroundStorePrivate *priv = cc_background_store_get_instance_private (self);
+ return priv->model;
+}
+
+CcBackgroundStore *
+cc_background_store_new ()
+{
+ return g_object_new (CC_TYPE_BACKGROUND_STORE, NULL);
}
diff --git a/panels/background/cc-background-store.h b/panels/background/cc-background-store.h
index 40da76d8b..faec58006 100644
--- a/panels/background/cc-background-store.h
+++ b/panels/background/cc-background-store.h
@@ -37,7 +37,8 @@ G_DECLARE_FINAL_TYPE (CcBackgroundStore, cc_background_store, CC, BACKGROUND_STO
/*
* Method definitions.
*/
-CcBackgroundStore *cc_backgroud_store_new (void);
+CcBackgroundStore *cc_background_store_new (void);
+GListStore *cc_background_store_get_liststore (CcBackgroundStore *);
G_END_DECLS
diff --git a/panels/background/data/background.css b/panels/background/data/background.css
index c2874a6bd..04695ed40 100644
--- a/panels/background/data/background.css
+++ b/panels/background/data/background.css
@@ -1,5 +1,6 @@
.background-gallery {
background: #fff;
+ border-top: 1px solid #b6b6b3;
}
.black-border {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]