[gnome-software] Use AsScreenshot from libappstream-glib in the main binary
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Use AsScreenshot from libappstream-glib in the main binary
- Date: Tue, 1 Jul 2014 09:48:23 +0000 (UTC)
commit 2cd0b3f62d17efaf279b727e9d4b6478fbddfd85
Author: Richard Hughes <richard hughsie com>
Date: Tue Jul 1 10:27:13 2014 +0100
Use AsScreenshot from libappstream-glib in the main binary
There's no point duplicating this to maintain isolation when there's no one
interested in a libappstore plugin. GNOME Software already depends on lots of
functionality in libappstream-glib which any replacement would also have to
provide.
The libappstream (not to be confused with libappstream-glib) also has an
AsScreenshot class which could be used in place.
src/Makefile.am | 8 +-
src/gs-app.c | 14 ++-
src/gs-app.h | 5 +-
src/gs-screenshot-image.c | 28 +++--
src/gs-screenshot-image.h | 7 +-
src/gs-screenshot.c | 228 -------------------------------------
src/gs-screenshot.h | 79 -------------
src/gs-shell-details.c | 18 ++--
src/plugins/gs-plugin-appstream.c | 24 +----
9 files changed, 43 insertions(+), 368 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 34e8091..3f263ad 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,6 +2,7 @@ SUBDIRS = \
plugins
AM_CPPFLAGS = \
+ $(APPSTREAM_CFLAGS) \
$(GLIB_CFLAGS) \
$(GTK_CFLAGS) \
$(SOUP_CFLAGS) \
@@ -70,12 +71,12 @@ gnome_software_cmd_SOURCES = \
gs-utils.c \
gs-plugin-loader.c \
gs-plugin-loader-sync.c \
- gs-screenshot.c \
gs-category.c \
gs-plugin.c \
gs-profile.c
gnome_software_cmd_LDADD = \
+ $(APPSTREAM_LIBS) \
$(GLIB_LIBS) \
$(GTK_LIBS)
@@ -122,8 +123,6 @@ gnome_software_SOURCES = \
gs-profile.h \
gs-screenshot-image.c \
gs-screenshot-image.h \
- gs-screenshot.c \
- gs-screenshot.h \
gs-shell.c \
gs-shell.h \
gs-markdown.c \
@@ -167,6 +166,7 @@ gnome_software_SOURCES = \
gs-main.c
gnome_software_LDADD = \
+ $(APPSTREAM_LIBS) \
$(GLIB_LIBS) \
$(GTK_LIBS) \
$(SOUP_LIBS) \
@@ -213,11 +213,11 @@ gs_self_test_SOURCES = \
gs-plugin-loader.c \
gs-plugin.c \
gs-profile.c \
- gs-screenshot.c \
gs-utils.c \
gs-self-test.c
gs_self_test_LDADD = \
+ $(APPSTREAM_LIBS) \
$(GLIB_LIBS) \
$(GTK_LIBS)
diff --git a/src/gs-app.c b/src/gs-app.c
index 3b3a5f2..fb8618f 100644
--- a/src/gs-app.c
+++ b/src/gs-app.c
@@ -207,11 +207,12 @@ gs_app_id_kind_to_string (GsAppIdKind id_kind)
gchar *
gs_app_to_string (GsApp *app)
{
+ AsImage *im;
+ AsScreenshot *ss;
GList *keys;
GList *l;
GString *str;
GsAppPrivate *priv = app->priv;
- GsScreenshot *ss;
const gchar *tmp;
guint i;
@@ -276,11 +277,12 @@ gs_app_to_string (GsApp *app)
g_string_append_printf (str, "\tdescription:\t%s\n", priv->description);
for (i = 0; i < priv->screenshots->len; i++) {
ss = g_ptr_array_index (priv->screenshots, i);
- tmp = gs_screenshot_get_caption (ss);
+ tmp = as_screenshot_get_caption (ss, NULL);
+ im = as_screenshot_get_image (ss, 0, 0);
+ if (im == NULL)
+ continue;
g_string_append_printf (str, "\tscreenshot-%02i:\t%s [%s]\n",
- i, gs_screenshot_get_url (ss,
- G_MAXUINT,
- G_MAXUINT),
+ i, as_image_get_url (im),
tmp != NULL ? tmp : "<none>");
}
for (i = 0; i < priv->sources->len; i++) {
@@ -1242,7 +1244,7 @@ gs_app_set_origin (GsApp *app, const gchar *origin)
* gs_app_add_screenshot:
*/
void
-gs_app_add_screenshot (GsApp *app, GsScreenshot *screenshot)
+gs_app_add_screenshot (GsApp *app, AsScreenshot *screenshot)
{
g_return_if_fail (GS_IS_APP (app));
g_ptr_array_add (app->priv->screenshots, g_object_ref (screenshot));
diff --git a/src/gs-app.h b/src/gs-app.h
index fe73838..6ebebb2 100644
--- a/src/gs-app.h
+++ b/src/gs-app.h
@@ -24,8 +24,7 @@
#include <glib-object.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "gs-screenshot.h"
+#include <appstream-glib.h>
G_BEGIN_DECLS
@@ -208,7 +207,7 @@ void gs_app_set_origin (GsApp *app,
const gchar *origin);
GPtrArray *gs_app_get_screenshots (GsApp *app);
void gs_app_add_screenshot (GsApp *app,
- GsScreenshot *screenshot);
+ AsScreenshot *screenshot);
const gchar *gs_app_get_update_version (GsApp *app);
const gchar *gs_app_get_update_version_ui (GsApp *app);
void gs_app_set_update_version (GsApp *app,
diff --git a/src/gs-screenshot-image.c b/src/gs-screenshot-image.c
index c095588..1eeaaf5 100644
--- a/src/gs-screenshot-image.c
+++ b/src/gs-screenshot-image.c
@@ -29,7 +29,7 @@
struct _GsScreenshotImagePrivate
{
- GsScreenshot *screenshot;
+ AsScreenshot *screenshot;
GtkWidget *stack;
GtkWidget *box_error;
GtkWidget *image1;
@@ -48,7 +48,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (GsScreenshotImage, gs_screenshot_image, GTK_TYPE_BIN
/**
* gs_screenshot_image_get_screenshot:
**/
-GsScreenshot *
+AsScreenshot *
gs_screenshot_image_get_screenshot (GsScreenshotImage *ssimg)
{
GsScreenshotImagePrivate *priv;
@@ -90,10 +90,10 @@ gs_screenshot_image_set_error (GsScreenshotImage *ssimg, const gchar *message)
}
/**
- * gs_screenshot_show_image:
+ * as_screenshot_show_image:
**/
static void
-gs_screenshot_show_image (GsScreenshotImage *ssimg)
+as_screenshot_show_image (GsScreenshotImage *ssimg)
{
GdkPixbuf *pixbuf;
GsScreenshotImagePrivate *priv;
@@ -162,7 +162,7 @@ gs_screenshot_image_complete_cb (SoupSession *session,
}
/* got image, so show */
- gs_screenshot_show_image (ssimg);
+ as_screenshot_show_image (ssimg);
out:
g_object_unref (ssimg);
}
@@ -184,12 +184,12 @@ gs_screenshot_image_set_cachedir (GsScreenshotImage *ssimg, const gchar *cachedi
**/
void
gs_screenshot_image_set_screenshot (GsScreenshotImage *ssimg,
- GsScreenshot *screenshot)
+ AsScreenshot *screenshot)
{
GsScreenshotImagePrivate *priv;
g_return_if_fail (GS_IS_SCREENSHOT_IMAGE (ssimg));
- g_return_if_fail (GS_IS_SCREENSHOT (screenshot));
+ g_return_if_fail (AS_IS_SCREENSHOT (screenshot));
priv = gs_screenshot_image_get_instance_private (ssimg);
@@ -226,6 +226,7 @@ void
gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
GCancellable *cancellable)
{
+ AsImage *im;
GsScreenshotImagePrivate *priv;
SoupMessage *msg = NULL;
SoupURI *base_uri = NULL;
@@ -239,20 +240,21 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
priv = gs_screenshot_image_get_instance_private (ssimg);
- g_return_if_fail (GS_IS_SCREENSHOT (priv->screenshot));
+ g_return_if_fail (AS_IS_SCREENSHOT (priv->screenshot));
g_return_if_fail (priv->width != 0);
g_return_if_fail (priv->height != 0);
/* test if size specific cachdir exists */
- url = gs_screenshot_get_url (priv->screenshot,
- priv->width,
- priv->height);
- if (url == NULL) {
+ im = as_screenshot_get_image (priv->screenshot,
+ priv->width,
+ priv->height);
+ if (im == NULL) {
/* TRANSLATORS: this is when we request a screenshot size that
* the generator did not create or the parser did not add */
gs_screenshot_image_set_error (ssimg, _("Screenshot size not found"));
goto out;
}
+ url = as_image_get_url (im);
basename = g_path_get_basename (url);
sizedir = g_strdup_printf ("%ux%u", priv->width, priv->height);
cachedir = g_build_filename (priv->cachedir,
@@ -271,7 +273,7 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
/* does local file already exist */
priv->filename = g_build_filename (cachedir, basename, NULL);
if (g_file_test (priv->filename, G_FILE_TEST_EXISTS)) {
- gs_screenshot_show_image (ssimg);
+ as_screenshot_show_image (ssimg);
goto out;
}
diff --git a/src/gs-screenshot-image.h b/src/gs-screenshot-image.h
index d99bf17..b41175f 100644
--- a/src/gs-screenshot-image.h
+++ b/src/gs-screenshot-image.h
@@ -25,8 +25,7 @@
#include <gtk/gtk.h>
#include <libsoup/soup.h>
-
-#include "gs-screenshot.h"
+#include <appstream-glib.h>
#define GS_TYPE_SCREENSHOT_IMAGE (gs_screenshot_image_get_type())
#define GS_SCREENSHOT_IMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GS_TYPE_SCREENSHOT_IMAGE,
GsScreenshotImage))
@@ -55,9 +54,9 @@ struct _GsScreenshotImageClass
GType gs_screenshot_image_get_type (void);
GtkWidget *gs_screenshot_image_new (SoupSession *session);
-GsScreenshot *gs_screenshot_image_get_screenshot (GsScreenshotImage *ssimg);
+AsScreenshot *gs_screenshot_image_get_screenshot (GsScreenshotImage *ssimg);
void gs_screenshot_image_set_screenshot (GsScreenshotImage *ssimg,
- GsScreenshot *screenshot);
+ AsScreenshot *screenshot);
const gchar *gs_screenshot_image_get_cachedir (GsScreenshotImage *ssimg);
void gs_screenshot_image_set_cachedir (GsScreenshotImage *ssimg,
const gchar *cachedir);
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 3c8d184..3137f57 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -300,7 +300,7 @@ gs_shell_details_screenshot_selected_cb (GtkListBox *list,
GsShellDetailsPrivate *priv = shell_details->priv;
GsScreenshotImage *ssmain;
GsScreenshotImage *ssthumb;
- GsScreenshot *ss;
+ AsScreenshot *ss;
GList *children;
if (row == NULL)
@@ -323,7 +323,7 @@ static void
gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
{
GPtrArray *screenshots;
- GsScreenshot *ss;
+ AsScreenshot *ss;
GsShellDetailsPrivate *priv = shell_details->priv;
GtkWidget *label;
GtkWidget *list;
@@ -339,7 +339,7 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
ss = g_ptr_array_index (screenshots, i);
/* set caption */
- label = gtk_label_new (gs_screenshot_get_caption (ss));
+ label = gtk_label_new (as_screenshot_get_caption (ss, NULL));
g_object_set (label,
"xalign", 0.0,
NULL);
@@ -381,12 +381,12 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
/* use a slightly larger screenshot if it's the only screenshot */
if (screenshots->len == 1) {
gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
- GS_SCREENSHOT_SIZE_MAIN_ONLY_WIDTH,
- GS_SCREENSHOT_SIZE_MAIN_ONLY_HEIGHT);
+ AS_IMAGE_LARGE_WIDTH,
+ AS_IMAGE_LARGE_HEIGHT);
} else {
gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
- GS_SCREENSHOT_SIZE_MAIN_WIDTH,
- GS_SCREENSHOT_SIZE_MAIN_HEIGHT);
+ AS_IMAGE_NORMAL_WIDTH,
+ AS_IMAGE_NORMAL_HEIGHT);
}
gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), NULL);
gtk_box_pack_start (GTK_BOX (priv->box_details_screenshot_main), ssimg, FALSE, FALSE, 0);
@@ -408,8 +408,8 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
g_get_user_cache_dir ());
gs_screenshot_image_set_screenshot (GS_SCREENSHOT_IMAGE (ssimg), ss);
gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
- GS_SCREENSHOT_SIZE_THUMBNAIL_WIDTH,
- GS_SCREENSHOT_SIZE_THUMBNAIL_HEIGHT);
+ AS_IMAGE_THUMBNAIL_WIDTH,
+ AS_IMAGE_THUMBNAIL_HEIGHT);
gtk_style_context_add_class (gtk_widget_get_style_context (ssimg),
"screenshot-image-thumb");
gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), NULL);
diff --git a/src/plugins/gs-plugin-appstream.c b/src/plugins/gs-plugin-appstream.c
index ae66a65..1278cbb 100644
--- a/src/plugins/gs-plugin-appstream.c
+++ b/src/plugins/gs-plugin-appstream.c
@@ -322,14 +322,10 @@ gs_plugin_refine_add_addons (GsPlugin *plugin, GsApp *app, AsApp *item)
static void
gs_plugin_refine_add_screenshots (GsApp *app, AsApp *item)
{
- AsImage *im;
AsScreenshot *ss;
- AsScreenshotKind ss_kind;
GPtrArray *images_as;
GPtrArray *screenshots_as;
- GsScreenshot *screenshot;
guint i;
- guint j;
/* do we have any to add */
screenshots_as = as_app_get_screenshots (item);
@@ -348,25 +344,9 @@ gs_plugin_refine_add_screenshots (GsApp *app, AsApp *item)
images_as = as_screenshot_get_images (ss);
if (images_as->len == 0)
continue;
- ss_kind = as_screenshot_get_kind (ss);
- if (ss_kind == AS_SCREENSHOT_KIND_UNKNOWN)
+ if (as_screenshot_get_kind (ss) == AS_SCREENSHOT_KIND_UNKNOWN)
continue;
-
- /* create a new application screenshot and add each image */
- screenshot = gs_screenshot_new ();
- gs_screenshot_set_is_default (screenshot,
- ss_kind == AS_SCREENSHOT_KIND_DEFAULT);
- gs_screenshot_set_caption (screenshot,
- as_screenshot_get_caption (ss, NULL));
- for (j = 0; j < images_as->len; j++) {
- im = g_ptr_array_index (images_as, j);
- gs_screenshot_add_image (screenshot,
- as_image_get_url (im),
- as_image_get_width (im),
- as_image_get_height (im));
- }
- gs_app_add_screenshot (app, screenshot);
- g_object_unref (screenshot);
+ gs_app_add_screenshot (app, ss);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]