[libpanel/wip/chergert/fix-14] save-delegate: add is-draft property
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libpanel/wip/chergert/fix-14] save-delegate: add is-draft property
- Date: Tue, 13 Sep 2022 15:00:38 +0000 (UTC)
commit e26abf002b9c368e8687e7b469545ff5aaae701d
Author: Christian Hergert <chergert redhat com>
Date: Tue Sep 13 06:58:42 2022 -0700
save-delegate: add is-draft property
This can be used to determine different layouts for the save dialog.
src/panel-save-delegate.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++
src/panel-save-delegate.h | 5 +++++
2 files changed, 55 insertions(+)
---
diff --git a/src/panel-save-delegate.c b/src/panel-save-delegate.c
index 8029732..8e4998d 100644
--- a/src/panel-save-delegate.c
+++ b/src/panel-save-delegate.c
@@ -30,6 +30,7 @@ typedef struct
char *icon_name;
GIcon *icon;
double progress;
+ guint is_draft : 1;
} PanelSaveDelegatePrivate;
G_DEFINE_TYPE_WITH_PRIVATE (PanelSaveDelegate, panel_save_delegate, G_TYPE_OBJECT)
@@ -38,6 +39,7 @@ enum {
PROP_0,
PROP_ICON,
PROP_ICON_NAME,
+ PROP_IS_DRAFT,
PROP_PROGRESS,
PROP_SUBTITLE,
PROP_TITLE,
@@ -141,6 +143,10 @@ panel_save_delegate_get_property (GObject *object,
g_value_set_string (value, panel_save_delegate_get_icon_name (self));
break;
+ case PROP_IS_DRAFT:
+ g_value_set_boolean (value, panel_save_delegate_get_is_draft (self));
+ break;
+
case PROP_PROGRESS:
g_value_set_double (value, panel_save_delegate_get_progress (self));
break;
@@ -176,6 +182,10 @@ panel_save_delegate_set_property (GObject *object,
panel_save_delegate_set_icon_name (self, g_value_get_string (value));
break;
+ case PROP_IS_DRAFT:
+ panel_save_delegate_set_is_draft (self, g_value_get_boolean (value));
+ break;
+
case PROP_PROGRESS:
panel_save_delegate_set_progress (self, g_value_get_double (value));
break;
@@ -240,6 +250,19 @@ panel_save_delegate_class_init (PanelSaveDelegateClass *klass)
NULL,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+ /**
+ * PanelSaveDelegate:is-draft:
+ *
+ * The "is-draft" property indicates that the document represented by the
+ * delegate is a draft and might be lost of not saved.
+ */
+ properties [PROP_IS_DRAFT] =
+ g_param_spec_boolean ("is-draft",
+ "Is Draft",
+ "If the delegate contents are ephemeral until saved",
+ FALSE,
+ (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
/**
* PanelSaveDelegate:progress:
*
@@ -522,3 +545,30 @@ panel_save_delegate_set_icon (PanelSaveDelegate *self,
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ICON_NAME]);
}
}
+
+gboolean
+panel_save_delegate_get_is_draft (PanelSaveDelegate *self)
+{
+ PanelSaveDelegatePrivate *priv = panel_save_delegate_get_instance_private (self);
+
+ g_return_val_if_fail (PANEL_IS_SAVE_DELEGATE (self), FALSE);
+
+ return priv->is_draft;
+}
+
+void
+panel_save_delegate_set_is_draft (PanelSaveDelegate *self,
+ gboolean is_draft)
+{
+ PanelSaveDelegatePrivate *priv = panel_save_delegate_get_instance_private (self);
+
+ g_return_if_fail (PANEL_IS_SAVE_DELEGATE (self));
+
+ is_draft = !!is_draft;
+
+ if (is_draft != priv->is_draft)
+ {
+ priv->is_draft = is_draft;
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_IS_DRAFT]);
+ }
+}
diff --git a/src/panel-save-delegate.h b/src/panel-save-delegate.h
index 98a079f..83b5cc7 100644
--- a/src/panel-save-delegate.h
+++ b/src/panel-save-delegate.h
@@ -52,6 +52,11 @@ struct _PanelSaveDelegateClass
PANEL_AVAILABLE_IN_ALL
PanelSaveDelegate *panel_save_delegate_new (void);
PANEL_AVAILABLE_IN_ALL
+gboolean panel_save_delegate_get_is_draft (PanelSaveDelegate *self);
+PANEL_AVAILABLE_IN_ALL
+void panel_save_delegate_set_is_draft (PanelSaveDelegate *self,
+ gboolean is_draft);
+PANEL_AVAILABLE_IN_ALL
const char *panel_save_delegate_get_icon_name (PanelSaveDelegate *self);
PANEL_AVAILABLE_IN_ALL
void panel_save_delegate_set_icon_name (PanelSaveDelegate *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]