summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2016-03-28 11:14:36 +0100
committerRichard Hughes <richard@hughsie.com>2016-03-28 11:14:36 +0100
commitad0a71f4fe0799d5ed71db6e9cc917a0d0e1faf3 (patch)
tree7d9553e6ce64f73a4d4d66dbcfeee117570188b4
parente4195bff42f86534a638069b3fb34ac0589d3b02 (diff)
downloadappstream-glib-ad0a71f4fe0799d5ed71db6e9cc917a0d0e1faf3.tar.gz
Add as_app_has_compulsory_for_desktop()
-rw-r--r--libappstream-glib/as-app.c26
-rw-r--r--libappstream-glib/as-app.h2
-rw-r--r--libappstream-glib/as-self-test.c2
3 files changed, 30 insertions, 0 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c
index 6ea424f..3e913aa 100644
--- a/libappstream-glib/as-app.c
+++ b/libappstream-glib/as-app.c
@@ -615,6 +615,32 @@ as_app_get_compulsory_for_desktops (AsApp *app)
}
/**
+ * as_app_has_compulsory_for_desktop:
+ * @app: a #AsApp instance.
+ * @desktop: a desktop string, e.g. "GNOME"
+ *
+ * Searches the compulsory for desktop list for a specific item.
+ *
+ * Returns: %TRUE if the application is compulsory for a specific desktop
+ *
+ * Since: 0.5.12
+ */
+gboolean
+as_app_has_compulsory_for_desktop (AsApp *app, const gchar *desktop)
+{
+ AsAppPrivate *priv = GET_PRIVATE (app);
+ const gchar *tmp;
+ guint i;
+
+ for (i = 0; i < priv->compulsory_for_desktops->len; i++) {
+ tmp = g_ptr_array_index (priv->compulsory_for_desktops, i);
+ if (g_strcmp0 (tmp, desktop) == 0)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
* as_app_has_permission:
* @app: a #AsApp instance.
* @permission: a permission string, e.g. "Network"
diff --git a/libappstream-glib/as-app.h b/libappstream-glib/as-app.h
index 2075a8d..e003a77 100644
--- a/libappstream-glib/as-app.h
+++ b/libappstream-glib/as-app.h
@@ -337,6 +337,8 @@ gboolean as_app_has_kudo_kind (AsApp *app,
AsKudoKind kudo);
gboolean as_app_has_permission (AsApp *app,
const gchar *permission);
+gboolean as_app_has_compulsory_for_desktop (AsApp *app,
+ const gchar *permission);
gboolean as_app_has_quirk (AsApp *app,
AsAppQuirk quirk);
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index 08261c7..453884c 100644
--- a/libappstream-glib/as-self-test.c
+++ b/libappstream-glib/as-self-test.c
@@ -1502,6 +1502,8 @@ as_test_app_func (void)
g_assert (as_app_has_permission (app, "Network"));
g_assert (!as_app_has_kudo (app, "MagicValue"));
g_assert (!as_app_has_kudo_kind (app, AS_KUDO_KIND_USER_DOCS));
+ g_assert (as_app_has_compulsory_for_desktop (app, "GNOME"));
+ g_assert (!as_app_has_compulsory_for_desktop (app, "KDE"));
as_node_unref (root);
/* check newest release */