[gnome-software/wip/rancell/permissions] Replace gboolean with GsPermissionValue
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/permissions] Replace gboolean with GsPermissionValue
- Date: Tue, 15 Aug 2017 04:36:52 +0000 (UTC)
commit 01867779df37f872e0718c45c375eb7844298cba
Author: Robert Ancell <robert ancell canonical com>
Date: Tue Aug 15 16:36:25 2017 +1200
Replace gboolean with GsPermissionValue
lib/gs-app.c | 4 +-
lib/gs-permission.c | 88 ++++++++++++++++++++++++++++++-----------
lib/gs-permission.h | 29 ++++++++------
lib/gs-plugin-job-private.h | 2 +-
lib/gs-plugin-job.c | 25 ++++++-----
lib/gs-plugin-job.h | 5 +-
lib/gs-plugin-loader.c | 12 +++---
lib/gs-plugin-vfuncs.h | 12 +++---
lib/meson.build | 2 +
plugins/snap/gs-plugin-snap.c | 30 ++++++++++++--
src/gs-details-page.c | 2 +-
src/gs-page.c | 2 +-
src/gs-page.h | 10 ++--
src/gs-permission-dialog.c | 4 +-
src/gs-permission-switch.c | 9 +++-
15 files changed, 158 insertions(+), 78 deletions(-)
---
diff --git a/lib/gs-app.c b/lib/gs-app.c
index a57a9e9..d9a91ac 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -444,13 +444,15 @@ gs_app_to_string_append (GsApp *app, GString *str)
}
for (i = 0; i < priv->permissions->len; i++) {
GsPermission *permission;
+ GsPermissionValue *value;
g_autofree gchar *key = NULL;
permission = g_ptr_array_index (priv->permissions, i);
+ value = gs_permission_get_value (permission);
key = g_strdup_printf ("permission-%02u", i);
gs_app_kv_printf (str, key, "[%s] %s",
gs_permission_get_label (permission),
- gs_permission_get_enabled (permission) ? "true" : "false");
+ value ? gs_permission_value_get_label (value) : "(unset)");
}
if (priv->match_value != 0)
gs_app_kv_printf (str, "match-value", "%05x", priv->match_value);
diff --git a/lib/gs-permission.c b/lib/gs-permission.c
index 0ec7820..4ab5e37 100644
--- a/lib/gs-permission.c
+++ b/lib/gs-permission.c
@@ -30,7 +30,8 @@ struct _GsPermission
GObject parent_instance;
gchar *label;
- gboolean enabled;
+ GPtrArray *values;
+ GsPermissionValue *value;
GHashTable *metadata; /* utf8: utf8 */
};
@@ -38,7 +39,7 @@ G_DEFINE_TYPE (GsPermission, gs_permission, G_TYPE_OBJECT)
/**
* gs_permission_get_metadata_item:
- * @auth: a #GsPermission
+ * @permission: a #GsPermission
* @key: a string
*
* Gets some metadata from a permission object.
@@ -48,16 +49,16 @@ G_DEFINE_TYPE (GsPermission, gs_permission, G_TYPE_OBJECT)
* Returns: A string value, or %NULL for not found
*/
const gchar *
-gs_permission_get_metadata_item (GsPermission *auth, const gchar *key)
+gs_permission_get_metadata_item (GsPermission *permission, const gchar *key)
{
- g_return_val_if_fail (GS_IS_PERMISSION (auth), NULL);
+ g_return_val_if_fail (GS_IS_PERMISSION (permission), NULL);
g_return_val_if_fail (key != NULL, NULL);
- return g_hash_table_lookup (auth->metadata, key);
+ return g_hash_table_lookup (permission->metadata, key);
}
/**
* gs_permission_add_metadata:
- * @auth: a #GsPermission
+ * @permission: a #GsPermission
* @key: a string
* @value: a string
*
@@ -66,10 +67,10 @@ gs_permission_get_metadata_item (GsPermission *auth, const gchar *key)
* typical use would be to store an ID for this permission.
*/
void
-gs_permission_add_metadata (GsPermission *auth, const gchar *key, const gchar *value)
+gs_permission_add_metadata (GsPermission *permission, const gchar *key, const gchar *value)
{
- g_return_if_fail (GS_IS_PERMISSION (auth));
- g_hash_table_insert (auth->metadata, g_strdup (key), g_strdup (value));
+ g_return_if_fail (GS_IS_PERMISSION (permission));
+ g_hash_table_insert (permission->metadata, g_strdup (key), g_strdup (value));
}
/**
@@ -88,32 +89,72 @@ gs_permission_get_label (GsPermission *permission)
}
/**
- * gs_permission_get_enabled:
+ * gs_permission_add_value:
+ * @permission: a #GsPermission
+ * @value: a #GsPermissionValue
+ *
+ * Add a possible values for this permission.
+ */
+void
+gs_permission_add_value (GsPermission *permission, GsPermissionValue *value)
+{
+ g_return_if_fail (GS_IS_PERMISSION (permission));
+ g_ptr_array_add (permission->values, g_object_ref (value));
+}
+
+/**
+ * gs_permission_get_values:
+ * @permission: a #GsPermission
+ *
+ * Get the possible values for this permission.
+ *
+ * Returns: (element-type GsPermissionValue) (transfer none): a list
+ */
+GPtrArray *
+gs_permission_get_values (GsPermission *permission)
+{
+ g_return_val_if_fail (GS_IS_PERMISSION (permission), NULL);
+ return permission->values;
+}
+
+/**
+ * gs_permission_get_value:
* @permission: a #GsPermission
*
- * Get if this permission is enabled.
+ * Get the value for this permission.
*
- * Returns: %TRUE if enabled
+ * Returns: a %GsPermissionValue or %NULL.
*/
-gboolean
-gs_permission_get_enabled (GsPermission *permission)
+GsPermissionValue *
+gs_permission_get_value (GsPermission *permission)
{
- g_return_val_if_fail (GS_IS_PERMISSION (permission), 0);
- return permission->enabled;
+ g_return_val_if_fail (GS_IS_PERMISSION (permission), NULL);
+ return permission->value;
}
/**
- * gs_permission_set_enabled:
+ * gs_permission_set_value:
* @permission: a #GsPermission
- * @enabled: %TRUE if this permission is enabled.
+ * @value: a #GsPermissionValue to set for this permission
*
- * Set if this permission is enabled.
+ * Set the value of this permission.
*/
void
-gs_permission_set_enabled (GsPermission *permission, gboolean enabled)
+gs_permission_set_value (GsPermission *permission, GsPermissionValue *value)
{
g_return_if_fail (GS_IS_PERMISSION (permission));
- permission->enabled = enabled;
+ g_set_object (&permission->value, value);
+}
+
+static void
+gs_permission_dispose (GObject *object)
+{
+ GsPermission *permission = GS_PERMISSION (object);
+
+ g_clear_pointer (&permission->values, g_ptr_array_unref);
+ g_clear_object (&permission->value);
+
+ G_OBJECT_CLASS (gs_permission_parent_class)->dispose (object);
}
static void
@@ -131,6 +172,7 @@ static void
gs_permission_class_init (GsPermissionClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->dispose = gs_permission_dispose;
object_class->finalize = gs_permission_finalize;
}
@@ -139,15 +181,15 @@ gs_permission_init (GsPermission *permission)
{
permission->metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_free);
+ permission->values = g_ptr_array_new_with_free_func (g_object_unref);
}
GsPermission *
-gs_permission_new (const gchar *label, gboolean enabled)
+gs_permission_new (const gchar *label)
{
GsPermission *permission;
permission = g_object_new (GS_TYPE_PERMISSION, NULL);
permission->label = g_strdup (label);
- permission->enabled = enabled;
return GS_PERMISSION (permission);
}
diff --git a/lib/gs-permission.h b/lib/gs-permission.h
index 925e1be..08a2436 100644
--- a/lib/gs-permission.h
+++ b/lib/gs-permission.h
@@ -23,7 +23,8 @@
#define __GS_PERMISSION_H
#include <glib-object.h>
-#include <gdk/gdk.h>
+
+#include "gs-permission-value.h"
G_BEGIN_DECLS
@@ -31,19 +32,23 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GsPermission, gs_permission, GS, PERMISSION, GObject)
-GsPermission *gs_permission_new (const gchar *label,
- gboolean enabled);
+GsPermission *gs_permission_new (const gchar *label);
+
+const gchar *gs_permission_get_metadata_item (GsPermission *permission,
+ const gchar *key);
+void gs_permission_add_metadata (GsPermission *permission,
+ const gchar *key,
+ const gchar *value);
+
+const gchar *gs_permission_get_label (GsPermission *permission);
-const gchar *gs_permission_get_metadata_item (GsPermission *permission,
- const gchar *key);
-void gs_permission_add_metadata (GsPermission *permission,
- const gchar *key,
- const gchar *value);
+void gs_permission_add_value (GsPermission *permission,
+ GsPermissionValue *value);
+GPtrArray *gs_permission_get_values (GsPermission *permission);
-const gchar *gs_permission_get_label (GsPermission *permission);
-gboolean gs_permission_get_enabled (GsPermission *permission);
-void gs_permission_set_enabled (GsPermission *permission,
- gboolean enabled);
+GsPermissionValue *gs_permission_get_value (GsPermission *permission);
+void gs_permission_set_value (GsPermission *permission,
+ GsPermissionValue *value);
G_END_DECLS
diff --git a/lib/gs-plugin-job-private.h b/lib/gs-plugin-job-private.h
index f9f2cfd..7a1c467 100644
--- a/lib/gs-plugin-job-private.h
+++ b/lib/gs-plugin-job-private.h
@@ -53,7 +53,7 @@ GsCategory *gs_plugin_job_get_category (GsPluginJob *self);
AsReview *gs_plugin_job_get_review (GsPluginJob *self);
GsPrice *gs_plugin_job_get_price (GsPluginJob *self);
GsPermission *gs_plugin_job_get_permission (GsPluginJob *self);
-gboolean gs_plugin_job_get_permission_value (GsPluginJob *self);
+GsPermissionValue *gs_plugin_job_get_permission_value (GsPluginJob *self);
gchar *gs_plugin_job_to_string (GsPluginJob *self);
void gs_plugin_job_set_action (GsPluginJob *self,
GsPluginAction action);
diff --git a/lib/gs-plugin-job.c b/lib/gs-plugin-job.c
index 0973674..7d1081e 100644
--- a/lib/gs-plugin-job.c
+++ b/lib/gs-plugin-job.c
@@ -48,7 +48,7 @@ struct _GsPluginJob
AsReview *review;
GsPrice *price;
GsPermission *permission;
- gboolean permission_value;
+ GsPermissionValue *permission_value;
gint64 time_created;
};
@@ -133,7 +133,10 @@ gs_plugin_job_to_string (GsPluginJob *self)
g_string_append_printf (str, " with file=%s", path);
}
if (self->permission != NULL) {
- g_string_append_printf (str, " with permission=%s:%s", gs_permission_get_label
(self->permission), self->permission_value ? "true" : "false");
+ g_string_append_printf (str, " with permission=%s", gs_permission_get_label
(self->permission));
+ }
+ if (self->permission_value != NULL) {
+ g_string_append_printf (str, " with permission-value=%s", gs_permission_value_get_label
(self->permission_value));
}
if (self->plugin != NULL) {
g_string_append_printf (str, " on plugin=%s",
@@ -452,16 +455,16 @@ gs_plugin_job_get_permission (GsPluginJob *self)
}
void
-gs_plugin_job_set_permission_value (GsPluginJob *self, gboolean value)
+gs_plugin_job_set_permission_value (GsPluginJob *self, GsPermissionValue *value)
{
g_return_if_fail (GS_IS_PLUGIN_JOB (self));
- self->permission_value = value;
+ g_set_object (&self->permission_value, value);
}
-gboolean
+GsPermissionValue *
gs_plugin_job_get_permission_value (GsPluginJob *self)
{
- g_return_val_if_fail (GS_IS_PLUGIN_JOB (self), FALSE);
+ g_return_val_if_fail (GS_IS_PLUGIN_JOB (self), NULL);
return self->permission_value;
}
@@ -520,7 +523,7 @@ gs_plugin_job_get_property (GObject *obj, guint prop_id, GValue *value, GParamSp
g_value_set_object (value, self->permission);
break;
case PROP_PERMISSION_VALUE:
- g_value_set_boolean (value, self->permission_value);
+ g_value_set_object (value, self->permission_value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -583,7 +586,7 @@ gs_plugin_job_set_property (GObject *obj, guint prop_id, const GValue *value, GP
gs_plugin_job_set_permission (self, g_value_get_object (value));
break;
case PROP_PERMISSION_VALUE:
- gs_plugin_job_set_permission_value (self, g_value_get_boolean (value));
+ gs_plugin_job_set_permission_value (self, g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -699,9 +702,9 @@ gs_plugin_job_class_init (GsPluginJobClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_PERMISSION, pspec);
- pspec = g_param_spec_boolean ("permission-value", NULL, NULL,
- FALSE,
- G_PARAM_READWRITE);
+ pspec = g_param_spec_object ("permission-value", NULL, NULL,
+ GS_TYPE_PERMISSION_VALUE,
+ G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_PERMISSION_VALUE, pspec);
}
diff --git a/lib/gs-plugin-job.h b/lib/gs-plugin-job.h
index 36270fb..d05325b 100644
--- a/lib/gs-plugin-job.h
+++ b/lib/gs-plugin-job.h
@@ -30,6 +30,7 @@
#include "gs-plugin-types.h"
#include "gs-price.h"
#include "gs-permission.h"
+#include "gs-permission-value.h"
G_BEGIN_DECLS
@@ -73,8 +74,8 @@ void gs_plugin_job_set_price (GsPluginJob *self,
GsPrice *price);
void gs_plugin_job_set_permission (GsPluginJob *self,
GsPermission *permission);
-void gs_plugin_job_set_permission_value (GsPluginJob *self,
- gboolean value);
+void gs_plugin_job_set_permission_value (GsPluginJob *self,
+ GsPermissionValue *value);
#define gs_plugin_job_newv(a,...)
GS_PLUGIN_JOB(g_object_new(GS_TYPE_PLUGIN_JOB, "action", a, __VA_ARGS__))
diff --git a/lib/gs-plugin-loader.c b/lib/gs-plugin-loader.c
index f498300..9a85d51 100644
--- a/lib/gs-plugin-loader.c
+++ b/lib/gs-plugin-loader.c
@@ -128,12 +128,12 @@ typedef gboolean (*GsPluginPurchaseFunc) (GsPlugin *plugin,
GsPrice *price,
GCancellable *cancellable,
GError **error);
-typedef gboolean (*GsPluginSetPermissionFunc) (GsPlugin *plugin,
- GsApp *app,
- GsPermission *permission,
- gboolean value,
- GCancellable *cancellable,
- GError **error);
+typedef gboolean (*GsPluginSetPermissionFunc) (GsPlugin *plugin,
+ GsApp *app,
+ GsPermission *permission,
+ GsPermissionValue *value,
+ GCancellable *cancellable,
+ GError **error);
typedef gboolean (*GsPluginReviewFunc) (GsPlugin *plugin,
GsApp *app,
AsReview *review,
diff --git a/lib/gs-plugin-vfuncs.h b/lib/gs-plugin-vfuncs.h
index 8f0c623..dcef79b 100644
--- a/lib/gs-plugin-vfuncs.h
+++ b/lib/gs-plugin-vfuncs.h
@@ -741,12 +741,12 @@ gboolean gs_plugin_app_upgrade_trigger (GsPlugin *plugin,
*
* Returns: %TRUE for success or if not relevant
**/
-gboolean gs_plugin_app_set_permission (GsPlugin *plugin,
- GsApp *app,
- GsPermission *permission,
- gboolean value,
- GCancellable *cancellable,
- GError **error);
+gboolean gs_plugin_app_set_permission (GsPlugin *plugin,
+ GsApp *app,
+ GsPermission *permission,
+ GsPermissionValue *value,
+ GCancellable *cancellable,
+ GError **error);
/**
* gs_plugin_review_submit:
diff --git a/lib/meson.build b/lib/meson.build
index d55b73f..05d3ae8 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -44,6 +44,7 @@ install_headers([
'gs-category.h',
'gs-os-release.h',
'gs-permission.h',
+ 'gs-permission-value.h',
'gs-plugin.h',
'gs-plugin-event.h',
'gs-plugin-types.h',
@@ -80,6 +81,7 @@ libgnomesoftware = static_library(
'gs-debug.c',
'gs-os-release.c',
'gs-permission.c',
+ 'gs-permission-value.c',
'gs-plugin.c',
'gs-plugin-event.c',
'gs-plugin-job.c',
diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c
index 89347d5..a1b5f54 100644
--- a/plugins/snap/gs-plugin-snap.c
+++ b/plugins/snap/gs-plugin-snap.c
@@ -601,8 +601,9 @@ gs_plugin_refine_app (GsPlugin *plugin,
for (i = 0; i < plugs->len; i++) {
SnapdPlug *plug = plugs->pdata[i];
const gchar *name;
- gboolean is_connected;
+ SnapdConnection *connection = NULL;
g_autoptr(GsPermission) permission = NULL;
+ guint j;
/* skip if not relating to this snap */
if (g_strcmp0 (snapd_plug_get_snap (plug), gs_app_get_name (app)) != 0)
@@ -610,8 +611,27 @@ gs_plugin_refine_app (GsPlugin *plugin,
/* map interfaces to known permissions */
name = snapd_plug_get_name (plug);
- is_connected = snapd_plug_get_connections (plug)->len > 0;
- permission = gs_permission_new (name, is_connected);
+ if (snapd_plug_get_connections (plug)->len > 0)
+ connection = g_ptr_array_index (snapd_plug_get_connections (plug), 0);
+ permission = gs_permission_new (name);
+ for (j = 0; j < slots->len; j++) {
+ SnapdSlot *slot = slots->pdata[j];
+ g_autoptr(GsPermissionValue) value = NULL;
+ g_autofree gchar *label = NULL;
+
+ /* skip slots we can't connect to */
+ if (g_strcmp0 (snapd_plug_get_interface (plug), snapd_slot_get_interface
(slot)) != 0)
+ continue;
+
+ label = g_strdup_printf ("%s:%s", snapd_slot_get_snap (slot),
snapd_slot_get_name (slot));
+ value = gs_permission_value_new (label);
+ gs_permission_add_value (permission, value);
+
+ if (connection != NULL &&
+ g_strcmp0 (snapd_slot_get_snap (slot), snapd_connection_get_snap
(connection)) == 0 &&
+ g_strcmp0 (snapd_slot_get_name (slot), snapd_connection_get_name
(connection)) == 0)
+ gs_permission_set_value (permission, value);
+ }
gs_app_add_permission (app, permission);
}
}
@@ -761,7 +781,7 @@ gboolean
gs_plugin_app_set_permission (GsPlugin *plugin,
GsApp *app,
GsPermission *permission,
- gboolean value,
+ GsPermissionValue *value,
GCancellable *cancellable,
GError **error)
{
@@ -769,6 +789,8 @@ gs_plugin_app_set_permission (GsPlugin *plugin,
if (g_strcmp0 (gs_app_get_management_plugin (app), "snap") != 0)
return TRUE;
+ // FIXME
+ g_printerr ("PERMISSION %s=%s\n", gs_permission_get_label (permission), gs_permission_value_get_label
(value));
return TRUE;
}
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index 9add994..39cf4fc 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -1753,7 +1753,7 @@ gs_details_page_app_cancel_button_cb (GtkWidget *widget, GsDetailsPage *self)
}
static void
-gs_details_page_permission_changed_cb (GsPermissionDialog *dialog, GsPermission *permission, gboolean value,
GsDetailsPage *self)
+gs_details_page_permission_changed_cb (GsPermissionDialog *dialog, GsPermission *permission,
GsPermissionValue *value, GsDetailsPage *self)
{
g_autoptr(GCancellable) cancellable = g_cancellable_new ();
g_set_object (&self->cancellable, cancellable);
diff --git a/src/gs-page.c b/src/gs-page.c
index eaee346..9e9648b 100644
--- a/src/gs-page.c
+++ b/src/gs-page.c
@@ -747,7 +747,7 @@ gs_page_app_permission_set_cb (GObject *source,
}
void
-gs_page_set_app_permission (GsPage *page, GsApp *app, GsPermission *permission, gboolean value, GCancellable
*cancellable)
+gs_page_set_app_permission (GsPage *page, GsApp *app, GsPermission *permission, GsPermissionValue *value,
GCancellable *cancellable)
{
GsPagePrivate *priv = gs_page_get_instance_private (page);
g_autoptr(GsPluginJob) plugin_job = NULL;
diff --git a/src/gs-page.h b/src/gs-page.h
index df1b0ee..ab6f899 100644
--- a/src/gs-page.h
+++ b/src/gs-page.h
@@ -70,11 +70,11 @@ void gs_page_update_app (GsPage *page,
void gs_page_launch_app (GsPage *page,
GsApp *app,
GCancellable *cancellable);
-void gs_page_set_app_permission (GsPage *page,
- GsApp *app,
- GsPermission *permission,
- gboolean value,
- GCancellable *cancellable);
+void gs_page_set_app_permission (GsPage *page,
+ GsApp *app,
+ GsPermission *permission,
+ GsPermissionValue *value,
+ GCancellable *cancellable);
void gs_page_shortcut_add (GsPage *page,
GsApp *app,
GCancellable *cancellable);
diff --git a/src/gs-permission-dialog.c b/src/gs-permission-dialog.c
index 2740ca8..24e2127 100644
--- a/src/gs-permission-dialog.c
+++ b/src/gs-permission-dialog.c
@@ -80,7 +80,7 @@ gs_permission_dialog_class_init (GsPermissionDialogClass *klass)
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
0,
NULL, NULL, g_cclosure_marshal_generic,
- G_TYPE_NONE, 2, GS_TYPE_PERMISSION, G_TYPE_BOOLEAN);
+ G_TYPE_NONE, 2, GS_TYPE_PERMISSION, GS_TYPE_PERMISSION_VALUE);
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/Software/gs-permission-dialog.ui");
@@ -89,7 +89,7 @@ gs_permission_dialog_class_init (GsPermissionDialogClass *klass)
}
static void
-switch_changed_cb (GsPermissionSwitch *sw, gboolean value, GsPermissionDialog *dialog)
+switch_changed_cb (GsPermissionSwitch *sw, GsPermissionValue *value, GsPermissionDialog *dialog)
{
g_signal_emit (dialog, signals[SIGNAL_PERMISSION_CHANGED], 0,
gs_permission_switch_get_permission (sw),
diff --git a/src/gs-permission-switch.c b/src/gs-permission-switch.c
index 3ba85ac..ea41969 100644
--- a/src/gs-permission-switch.c
+++ b/src/gs-permission-switch.c
@@ -49,8 +49,11 @@ gs_permission_switch_get_permission (GsPermissionSwitch *sw)
static void
active_changed_cb (GsPermissionSwitch *sw)
{
+ GsPermissionValue *value;
+
+ value = g_ptr_array_index (gs_permission_get_values (sw->permission), 0);
g_signal_emit (sw, signals[SIGNAL_CHANGED], 0,
- gtk_switch_get_active (GTK_SWITCH (sw)));
+ gtk_switch_get_active (GTK_SWITCH (sw)) ? value : NULL);
}
static void
@@ -75,7 +78,7 @@ gs_permission_switch_class_init (GsPermissionSwitchClass *klass)
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
0,
NULL, NULL, g_cclosure_marshal_generic,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+ G_TYPE_NONE, 1, GS_TYPE_PERMISSION_VALUE);
}
static void
@@ -90,7 +93,7 @@ gs_permission_switch_new (GsPermission *permission)
sw = g_object_new (GS_TYPE_PERMISSION_SWITCH, NULL);
sw->permission = g_object_ref (permission);
- gtk_switch_set_active (GTK_SWITCH (sw), gs_permission_get_enabled (permission));
+ gtk_switch_set_active (GTK_SWITCH (sw), gs_permission_get_value (permission) != NULL);
g_signal_connect (sw, "notify::active", G_CALLBACK (active_changed_cb), NULL);
return sw;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]