[gnome-todo/wip/lists] storage-selector: add GtdStorageSelector::show-stub-rows property
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo/wip/lists] storage-selector: add GtdStorageSelector::show-stub-rows property
- Date: Mon, 15 Jun 2015 14:14:39 +0000 (UTC)
commit bad1c73926d5393d872b9dc1c0d23f28f8b39b47
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Mon Jun 15 11:13:20 2015 -0300
storage-selector: add GtdStorageSelector::show-stub-rows property
src/gtd-storage-selector.c | 112 ++++++++++++++++++++++++++++++++++++++++++++
src/gtd-storage-selector.h | 5 ++
2 files changed, 117 insertions(+), 0 deletions(-)
---
diff --git a/src/gtd-storage-selector.c b/src/gtd-storage-selector.c
index cfca7a9..b3f0cd6 100644
--- a/src/gtd-storage-selector.c
+++ b/src/gtd-storage-selector.c
@@ -39,6 +39,7 @@ typedef struct
gint select_default : 1;
gint show_local_storage : 1;
+ gint show_stub_rows : 1;
} GtdStorageSelectorPrivate;
struct _GtdStorageSelector
@@ -56,6 +57,7 @@ enum {
PROP_MANAGER,
PROP_SELECT_DEFAULT,
PROP_SHOW_LOCAL,
+ PROP_SHOW_STUB_ROWS,
LAST_PROP
};
@@ -382,6 +384,10 @@ gtd_storage_selector_get_property (GObject *object,
g_value_set_boolean (value, self->priv->show_local_storage);
break;
+ case PROP_SHOW_STUB_ROWS:
+ g_value_set_boolean (value, self->priv->show_stub_rows);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -426,6 +432,9 @@ gtd_storage_selector_set_property (GObject *object,
gtd_storage_selector_show_local (self, g_value_get_boolean (value));
break;
+ case PROP_SHOW_STUB_ROWS:
+ gtd_storage_selector_set_show_stub_rows (self, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -488,6 +497,20 @@ gtd_storage_selector_class_init (GtdStorageSelectorClass *klass)
G_PARAM_READWRITE));
/**
+ * GtdStorageSelector::show-stub-rows:
+ *
+ * Whether it should show stub rows for non-added accounts.
+ */
+ g_object_class_install_property (
+ object_class,
+ PROP_SHOW_STUB_ROWS,
+ g_param_spec_boolean ("show-stub-rows",
+ _("Show stub rows"),
+ _("Whether should show stub rows for non-added accounts"),
+ TRUE,
+ G_PARAM_READWRITE));
+
+ /**
* GtdStorageSelector::select-default:
*
* Whether it should auto selects the default storage location row.
@@ -517,6 +540,7 @@ static void
gtd_storage_selector_init (GtdStorageSelector *self)
{
self->priv = gtd_storage_selector_get_instance_private (self);
+ self->priv->show_stub_rows = TRUE;
gtk_widget_init_template (GTK_WIDGET (self));
}
@@ -701,3 +725,91 @@ gtd_storage_selector_set_selected_storage (GtdStorageSelector *selector,
g_list_free (children);
}
+
+/**
+ * gtd_storage_selector_get_show_stub_rows:
+ * @selector: a #GtdStorageSelector
+ *
+ * Retrieves the ::show-stub-rows property.
+ *
+ * Returns: %TRUE if it shows stub rows, %FALSE if it hides them.
+ */
+gboolean
+gtd_storage_selector_get_show_stub_rows (GtdStorageSelector *selector)
+{
+ g_return_val_if_fail (GTD_IS_STORAGE_SELECTOR (selector), FALSE);
+
+ return selector->priv->show_stub_rows;
+}
+
+/**
+ * gtd_storage_selector_set_show_stub_rows:
+ * @selector: a #GtdStorageSelector
+ * @show_stub_rows: %TRUE to show stub rows, %FALSE to hide them.
+ *
+ * Sets the #GtdStorageSelector::show-stub-rows property.
+ *
+ * Returns:
+ */
+void
+gtd_storage_selector_set_show_stub_rows (GtdStorageSelector *selector,
+ gboolean show_stub_rows)
+{
+ GtdStorageSelectorPrivate *priv;
+
+ g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector));
+
+ priv = selector->priv;
+
+ if (priv->show_stub_rows != show_stub_rows)
+ {
+ priv->show_stub_rows = show_stub_rows;
+
+ /*
+ * If we're showing the stub rows, it must check which ones should be shown.
+ * We don't want to show stub rows for
+ */
+ if (show_stub_rows)
+ {
+ GList *children;
+ GList *l;
+ gint google_counter;
+ gint exchange_counter;
+ gint owncloud_counter;
+
+ children = gtk_container_get_children (GTK_CONTAINER (priv->listbox));
+ google_counter = 0;
+ exchange_counter = 0;
+ owncloud_counter = 0;
+
+ for (l = children; l != NULL; l = l->next)
+ {
+ if (GTD_IS_STORAGE_ROW (l->data))
+ {
+ GtdStorage *storage = gtd_storage_row_get_storage (l->data);
+
+ if (g_strcmp0 (gtd_storage_get_provider (storage), "google") == 0)
+ google_counter++;
+ else if (g_strcmp0 (gtd_storage_get_provider (storage), "exchange") == 0)
+ exchange_counter++;
+ else if (g_strcmp0 (gtd_storage_get_provider (storage), "owncloud") == 0)
+ owncloud_counter++;
+ }
+ }
+
+ gtk_widget_set_visible (priv->google_stub_row, google_counter == 0);
+ gtk_widget_set_visible (priv->exchange_stub_row, exchange_counter == 0);
+ gtk_widget_set_visible (priv->owncloud_stub_row, owncloud_counter == 0);
+
+ g_list_free (children);
+ }
+ else
+ {
+ gtk_widget_hide (priv->exchange_stub_row);
+ gtk_widget_hide (priv->google_stub_row);
+ gtk_widget_hide (priv->owncloud_stub_row);
+ }
+
+ g_object_notify (G_OBJECT (selector), "show-stub-rows");
+ }
+}
diff --git a/src/gtd-storage-selector.h b/src/gtd-storage-selector.h
index 4031981..be34f60 100644
--- a/src/gtd-storage-selector.h
+++ b/src/gtd-storage-selector.h
@@ -45,6 +45,11 @@ GtdStorage* gtd_storage_selector_get_selected_storage (GtdStorageSele
void gtd_storage_selector_set_selected_storage (GtdStorageSelector *selector,
GtdStorage *storage);
+gboolean gtd_storage_selector_get_show_stub_rows (GtdStorageSelector *selector);
+
+void gtd_storage_selector_set_show_stub_rows (GtdStorageSelector *selector,
+ gboolean show_stub_rows);
+
G_END_DECLS
#endif /* GTD_STORAGE_SELECTOR_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]