[gnome-todo/wip/lists] manager: use GtdStorage as function param
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo/wip/lists] manager: use GtdStorage as function param
- Date: Sun, 21 Jun 2015 02:35:40 +0000 (UTC)
commit b9257322bc9298e0764b3dfec579b2f991c72610
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sat Jun 20 23:34:32 2015 -0300
manager: use GtdStorage as function param
src/gtd-initial-setup-window.c | 2 +-
src/gtd-manager.c | 71 ++++++++++++++++++++++++++++++++++------
src/gtd-manager.h | 4 +-
src/gtd-storage-selector.c | 46 +++++++++++++++++++++++++-
4 files changed, 109 insertions(+), 14 deletions(-)
---
diff --git a/src/gtd-initial-setup-window.c b/src/gtd-initial-setup-window.c
index 286ede1..9ab26ce 100644
--- a/src/gtd-initial-setup-window.c
+++ b/src/gtd-initial-setup-window.c
@@ -70,7 +70,7 @@ gtd_initial_setup_window__location_selected (GtdInitialSetupWindow *window,
gtk_widget_set_sensitive (priv->done_button, storage != NULL);
if (storage)
- gtd_manager_set_default_storage (priv->manager, gtd_storage_get_id (storage));
+ gtd_manager_set_default_storage (priv->manager, storage);
}
static void
diff --git a/src/gtd-manager.c b/src/gtd-manager.c
index 5dad4dd..318ed40 100644
--- a/src/gtd-manager.c
+++ b/src/gtd-manager.c
@@ -66,6 +66,7 @@ const gchar *supported_providers[] = {
enum
{
+ DEFAULT_STORAGE_CHANGED,
LIST_ADDED,
LIST_CHANGED,
LIST_REMOVED,
@@ -128,7 +129,7 @@ gtd_manager__setup_url (GtdManager *manager,
/* Found an ESourceGoa with the same uid of storage */
if (g_strcmp0 (e_source_goa_get_account_id (goa_ext), gtd_storage_get_id (storage)) == 0)
{
- gtd_storage_set_url (storage, e_source_goa_get_calendar_url (goa_ext));
+ gtd_storage_set_parent (storage, e_source_get_uid (source));
break;
}
}
@@ -955,6 +956,25 @@ gtd_manager_class_init (GtdManagerClass *klass)
G_PARAM_READABLE));
/**
+ * GtdManager::default-storage-changed:
+ *
+ * The ::default-storage-changed signal is emmited when a new #GtdStorage
+ * is set as default.
+ */
+ signals[DEFAULT_STORAGE_CHANGED] =
+ g_signal_new ("default-storage-changed",
+ GTD_TYPE_MANAGER,
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 2,
+ GTD_TYPE_STORAGE,
+ GTD_TYPE_STORAGE);
+
+ /**
* GtdManager::list-added:
*
* The ::list-added signal is emmited after a #GtdTaskList
@@ -1311,16 +1331,27 @@ gtd_manager_get_storage_locations (GtdManager *manager)
* gtd_manager_get_default_storage:
* @manager: a #GtdManager
*
- * Retrieves the default storage location id. Default is "local".
+ * Retrieves the default storage location. Default is "local".
*
- * Returns: (transfer full): the default storage id. Free with @g_free after use.
+ * Returns: (transfer none): the default storage.
*/
-gchar*
+GtdStorage*
gtd_manager_get_default_storage (GtdManager *manager)
{
+ GtdManagerPrivate *priv;
+ GtdStorage *storage;
+ GList *l;
+ gchar *storage_id;
+
g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL);
- return g_settings_get_string (manager->priv->settings, "srotage-location");
+ priv = manager->priv;
+ storage = NULL;
+ storage_id = g_settings_get_string (priv->settings, "storage-location");
+
+ g_free (storage_id);
+
+ return storage;
}
/**
@@ -1333,14 +1364,34 @@ gtd_manager_get_default_storage (GtdManager *manager)
* Returns:
*/
void
-gtd_manager_set_default_storage (GtdManager *manager,
- const gchar *default_storage)
+gtd_manager_set_default_storage (GtdManager *manager,
+ GtdStorage *default_storage)
{
g_return_if_fail (GTD_IS_MANAGER (manager));
- g_settings_set_string (manager->priv->settings,
- "storage-location",
- default_storage);
+ if (!gtd_storage_get_is_default (default_storage))
+ {
+ GtdStorage *previus_default = NULL;
+ GList *l;
+
+ g_settings_set_string (manager->priv->settings,
+ "storage-location",
+ gtd_storage_get_id (default_storage));
+
+ for (l = manager->priv->storage_locations; l != NULL; l = l->next)
+ {
+ if (gtd_storage_get_is_default (l->data))
+ previus_default = l->data;
+
+ gtd_storage_set_is_default (l->data, l->data == default_storage);
+ }
+
+ g_signal_emit (manager,
+ signals[DEFAULT_STORAGE_CHANGED],
+ 0,
+ default_storage,
+ previus_default);
+ }
}
/**
diff --git a/src/gtd-manager.h b/src/gtd-manager.h
index 41e5058..70ab3d5 100644
--- a/src/gtd-manager.h
+++ b/src/gtd-manager.h
@@ -63,10 +63,10 @@ GoaClient* gtd_manager_get_goa_client (GtdManager
gboolean gtd_manager_is_goa_client_ready (GtdManager *manager);
/* Settings */
-gchar* gtd_manager_get_default_storage (GtdManager *manager);
+GtdStorage* gtd_manager_get_default_storage (GtdManager *manager);
void gtd_manager_set_default_storage (GtdManager *manager,
- const gchar *default_storage);
+ GtdStorage *default_storage);
gboolean gtd_manager_get_is_first_run (GtdManager *manager);
diff --git a/src/gtd-storage-selector.c b/src/gtd-storage-selector.c
index b3f0cd6..fddefaf 100644
--- a/src/gtd-storage-selector.c
+++ b/src/gtd-storage-selector.c
@@ -98,6 +98,43 @@ display_header_func (GtkListBoxRow *row,
}
static void
+gtd_storage_selector__default_storage_changed (GtdStorageSelector *selector,
+ GtdStorage *current,
+ GtdStorage *previous)
+{
+ GtdStorageSelectorPrivate *priv;
+ GList *children;
+ GList *l;
+
+ g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector));
+ g_return_if_fail (GTD_IS_STORAGE (previous));
+ g_return_if_fail (GTD_IS_STORAGE (current));
+
+ priv = selector->priv;
+
+ if (!priv->select_default)
+ return;
+
+ children = gtk_container_get_children (GTK_CONTAINER (priv->listbox));
+
+ for (l = children; l != NULL; l = l->next)
+ {
+ GtdStorage *storage;
+
+ if (!GTD_IS_STORAGE_ROW (l->data))
+ continue;
+
+ storage = gtd_storage_row_get_storage (l->data);
+
+ gtd_storage_row_set_selected (l->data, storage == current);
+ }
+
+ g_list_free (children);
+
+ g_signal_emit (selector, signals[STORAGE_SELECTED], 0, current);
+}
+
+static void
gtd_storage_selector__listbox_row_activated (GtdStorageSelector *selector,
GtkWidget *row)
{
@@ -412,6 +449,11 @@ gtd_storage_selector_set_property (GObject *object,
gtd_storage_selector__fill_accounts (self);
g_signal_connect_swapped (self->priv->manager,
+ "default-storage-changed",
+ G_CALLBACK (gtd_storage_selector__default_storage_changed),
+ object);
+
+ g_signal_connect_swapped (self->priv->manager,
"storage-added",
G_CALLBACK (gtd_storage_selector__add_storage),
object);
@@ -580,7 +622,9 @@ gtd_storage_selector_show_local (GtdStorageSelector *selector,
priv->show_local_storage = show;
gtk_widget_set_visible (priv->local_check, !show);
- gtk_widget_set_visible (priv->local_row, show);
+
+ if (priv->local_row)
+ gtk_widget_set_visible (priv->local_row, show);
g_object_notify (G_OBJECT (selector), "show-local");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]