[gnome-builder] libide/tweaks: add sort key to item
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide/tweaks: add sort key to item
- Date: Sat, 30 Jul 2022 02:04:34 +0000 (UTC)
commit 2bf7ef5df6ef97b46510601f42e4330a734d8f24
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 29 19:04:27 2022 -0700
libide/tweaks: add sort key to item
We can use this to reorder things lexicographically.
src/libide/tweaks/ide-tweaks-item.c | 38 +++++++++++++++++++++++++++++++++++++
src/libide/tweaks/ide-tweaks-item.h | 5 +++++
2 files changed, 43 insertions(+)
---
diff --git a/src/libide/tweaks/ide-tweaks-item.c b/src/libide/tweaks/ide-tweaks-item.c
index c1cfa55fc..efa66f468 100644
--- a/src/libide/tweaks/ide-tweaks-item.c
+++ b/src/libide/tweaks/ide-tweaks-item.c
@@ -27,11 +27,13 @@
typedef struct
{
char **keywords;
+ char *sort_key;
} IdeTweaksItemPrivate;
enum {
PROP_0,
PROP_KEYWORDS,
+ PROP_SORT_KEY,
N_PROPS
};
@@ -46,6 +48,7 @@ ide_tweaks_item_finalize (GObject *object)
IdeTweaksItemPrivate *priv = ide_tweaks_item_get_instance_private (self);
g_clear_pointer (&priv->keywords, g_strfreev);
+ g_clear_pointer (&priv->sort_key, g_free);
G_OBJECT_CLASS (ide_tweaks_item_parent_class)->finalize (object);
}
@@ -64,6 +67,10 @@ ide_tweaks_item_get_property (GObject *object,
g_value_set_boxed (value, ide_tweaks_item_get_keywords (self));
break;
+ case PROP_SORT_KEY:
+ g_value_set_string (value, ide_tweaks_item_get_sort_key (self));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -83,6 +90,10 @@ ide_tweaks_item_set_property (GObject *object,
ide_tweaks_item_set_keywords (self, g_value_get_boxed (value));
break;
+ case PROP_SORT_KEY:
+ ide_tweaks_item_set_sort_key (self, g_value_get_string (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -102,6 +113,11 @@ ide_tweaks_item_class_init (IdeTweaksItemClass *klass)
G_TYPE_STRV,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+ properties [PROP_SORT_KEY] =
+ g_param_spec_string ("sort_key", NULL, NULL,
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_properties (object_class, N_PROPS, properties);
}
@@ -135,3 +151,25 @@ ide_tweaks_item_set_keywords (IdeTweaksItem *self,
priv->keywords = g_strdupv ((char **)keywords);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_KEYWORDS]);
}
+
+const char *
+ide_tweaks_item_get_sort_key (IdeTweaksItem *self)
+{
+ IdeTweaksItemPrivate *priv = ide_tweaks_item_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_TWEAKS_ITEM (self), NULL);
+
+ return priv->sort_key;
+}
+
+void
+ide_tweaks_item_set_sort_key (IdeTweaksItem *self,
+ const char *sort_key)
+{
+ IdeTweaksItemPrivate *priv = ide_tweaks_item_get_instance_private (self);
+
+ g_return_if_fail (IDE_IS_TWEAKS_ITEM (self));
+
+ if (ide_set_string (&priv->sort_key, sort_key))
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SORT_KEY]);
+}
diff --git a/src/libide/tweaks/ide-tweaks-item.h b/src/libide/tweaks/ide-tweaks-item.h
index 88ba5cb3e..274652461 100644
--- a/src/libide/tweaks/ide-tweaks-item.h
+++ b/src/libide/tweaks/ide-tweaks-item.h
@@ -43,5 +43,10 @@ const char * const *ide_tweaks_item_get_keywords (IdeTweaksItem *self);
IDE_AVAILABLE_IN_ALL
void ide_tweaks_item_set_keywords (IdeTweaksItem *self,
const char * const *keywords);
+IDE_AVAILABLE_IN_ALL
+const char *ide_tweaks_item_get_sort_key (IdeTweaksItem *self);
+IDE_AVAILABLE_IN_ALL
+void ide_tweaks_item_set_sort_key (IdeTweaksItem *self,
+ const char *sort_key);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]