[gnome-notes] settings-dialog: Show online account details



commit aa33a91877b0f9e1c92507f8f3802b7345cb647b
Author: Julius Härtl <jus bitgrid net>
Date:   Fri Jul 20 23:29:23 2018 -0300

    settings-dialog: Show online account details
    
    This commit adds a label to all NextCloud accounts in the settings
    dialog so that users can distinquish between different accounts. The
    label shows "user nextcloud-url com".

 src/bjb-settings-dialog.c                      | 29 +++++++++++++++++++++++---
 src/libbiji/provider/biji-own-cloud-provider.c | 14 +++++++++++++
 2 files changed, 40 insertions(+), 3 deletions(-)
---
diff --git a/src/bjb-settings-dialog.c b/src/bjb-settings-dialog.c
index 2dd001c..855d06e 100644
--- a/src/bjb-settings-dialog.c
+++ b/src/bjb-settings-dialog.c
@@ -85,6 +85,8 @@ typedef struct
 
   const gchar    *id;
   const char     *name;
+  const char     *user;
+  const char     *domain;
   GtkWidget      *icon;
 
   gboolean       selected;
@@ -228,7 +230,8 @@ add_child (gpointer provider_info, gpointer user_data)
   BjbSettingsDialog           *self;
   const BijiProviderInfo      *info;
   ProviderChild               *child;
-  GtkWidget                   *box, *w;
+  GtkWidget                   *box, *w, *hbox;
+  g_autofree char             *identity = NULL;
 
   self = BJB_SETTINGS_DIALOG (user_data);
   info = (const BijiProviderInfo*) provider_info;
@@ -237,6 +240,11 @@ add_child (gpointer provider_info, gpointer user_data)
   child->id = info->unique_id;
   child->icon = info->icon;
   child->name = info->name;
+  child->user = info->user;
+  child->domain = info->domain;
+
+  if (child->user && info->domain)
+    identity = g_strconcat(child->user, "@", child->domain, NULL);
 
   /* Is the provider the primary ? */
   if (g_strcmp0 (child->id, bjb_settings_get_default_location (self->settings)) ==0)
@@ -257,10 +265,25 @@ add_child (gpointer provider_info, gpointer user_data)
   w = child->icon;
   gtk_container_add (GTK_CONTAINER (box), w);
 
+  hbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+  gtk_container_add (GTK_CONTAINER (box), hbox);
+
   w = gtk_label_new (child->name);
-  gtk_label_set_xalign (GTK_LABEL (w), 0.0);
+  gtk_widget_set_halign (w, GTK_ALIGN_START);
+  gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
   gtk_widget_set_hexpand (w, TRUE);
-  gtk_container_add (GTK_CONTAINER (box), w);
+  gtk_widget_set_vexpand (w, TRUE);
+  gtk_container_add (GTK_CONTAINER (hbox), w);
+
+  if (identity)
+    {
+      w = gtk_label_new (identity);
+      gtk_widget_set_opacity (w, 0.5);
+      gtk_widget_set_halign (w, GTK_ALIGN_START);
+      gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
+      gtk_widget_set_hexpand (w, TRUE);
+      gtk_container_add (GTK_CONTAINER (hbox), w);
+    }
 
   self->children = g_list_prepend (self->children, child);
   gtk_widget_show_all (box);
diff --git a/src/libbiji/provider/biji-own-cloud-provider.c b/src/libbiji/provider/biji-own-cloud-provider.c
index f2eea33..e4b6d91 100644
--- a/src/libbiji/provider/biji-own-cloud-provider.c
+++ b/src/libbiji/provider/biji-own-cloud-provider.c
@@ -139,6 +139,8 @@ biji_own_cloud_provider_finalize (GObject *object)
 
   g_clear_pointer (&self->info.name, g_free);
   g_clear_pointer (&self->info.datasource, g_free);
+  g_clear_pointer (&self->info.user, g_free);
+  g_clear_pointer (&self->info.domain, g_free);
 
   g_queue_free_full (self->queue, g_object_unref);
   g_hash_table_unref (self->notes);
@@ -754,6 +756,7 @@ biji_own_cloud_provider_constructed (GObject *obj)
   BijiOwnCloudProvider *self;
   GError *error;
   GIcon *icon;
+  gchar** identity;
   gchar *owncloudclient;
   GFile *client;
 
@@ -777,6 +780,17 @@ biji_own_cloud_provider_constructed (GObject *obj)
                                              self->info.unique_id);
     self->info.name = g_strdup (goa_account_get_provider_name (self->account));
 
+    identity = g_strsplit (goa_account_get_presentation_identity (self->account),
+                           "@", 2);
+    if (identity)
+      {
+        self->info.user = g_strdup (identity[0]);
+        if (identity[1])
+          self->info.domain = g_strdup (identity[1]);
+
+        g_strfreev(identity);
+      }
+
     error = NULL;
     icon = g_icon_new_for_string (goa_account_get_provider_icon (self->account),
                                   &error);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]