Parcourir la source

Implement connect_finish func

Matthias Vogelgesang il y a 7 ans
Parent
commit
4083a91a65
3 fichiers modifiés avec 31 ajouts et 15 suppressions
  1. 9 1
      src/iridium-standard-file.c
  2. 4 1
      src/iridium-standard-file.h
  3. 18 13
      src/iridium-window.c

+ 9 - 1
src/iridium-standard-file.c

@@ -537,6 +537,15 @@ iridium_standard_file_load_async (IridiumStandardFile *client,
 }
 
 gboolean
+iridium_standard_file_connect_finish (GObject *object,
+                                      GAsyncResult *result,
+                                      GError **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, object), FALSE);
+  return g_task_propagate_boolean (G_TASK (result), error);
+}
+
+void
 iridium_standard_file_connect_async (IridiumStandardFile *client,
                                      const gchar *server,
                                      const gchar *email,
@@ -571,7 +580,6 @@ iridium_standard_file_connect_async (IridiumStandardFile *client,
 
   g_object_unref (msg);
   soup_uri_free (uri);
-  return TRUE;
 }
 
 static void

+ 4 - 1
src/iridium-standard-file.h

@@ -33,13 +33,16 @@ const SecretSchema *standard_file_get_schema (void) G_GNUC_CONST;
 G_DECLARE_FINAL_TYPE (IridiumStandardFile, iridium_standard_file, IRIDIUM, STANDARD_FILE, GObject);
 
 IridiumStandardFile *iridium_standard_file_new              (void);
-gboolean             iridium_standard_file_connect_async    (IridiumStandardFile    *client,
+void                 iridium_standard_file_connect_async    (IridiumStandardFile    *client,
                                                              const gchar            *server,
                                                              const gchar            *email,
                                                              const gchar            *password,
                                                              GCancellable           *cancellable,
                                                              GAsyncReadyCallback     callback,
                                                              gpointer                user_data);
+gboolean             iridium_standard_file_connect_finish   (GObject                *object,
+                                                             GAsyncResult           *result,
+                                                             GError                **error);
 gboolean             iridium_standard_file_load_async       (IridiumStandardFile    *client,
                                                              GCancellable           *cancellable,
                                                              GAsyncReadyCallback     callback,

+ 18 - 13
src/iridium-window.c

@@ -170,28 +170,33 @@ on_standard_file_connected (GObject *object,
   IridiumWindow *self;
   GList *notes;
   IridiumTag *tag_all;
+  GError *error = NULL;
 
   self = IRIDIUM_WINDOW (user_data);
   tag_all = iridium_tag_new ("All");
 
-  /* TODO: implement iridium_standard_file_connect_finish */
-  notes = iridium_standard_file_load (self->client, "sn.json");
+  if (iridium_standard_file_connect_finish (object, result, &error)) {
+    notes = iridium_standard_file_load (self->client, "sn.json");
 
-  for (GList *it = g_list_first (notes); it != NULL; it = g_list_next (it)) {
-    IridiumNote *note;
+    for (GList *it = g_list_first (notes); it != NULL; it = g_list_next (it)) {
+      IridiumNote *note;
 
-    note = IRIDIUM_NOTE (it->data);
-    iridium_note_add_tag (note, tag_all);
-    gtk_list_box_insert (self->note_list, iridium_note_row_new (note), -1);
-  }
+      note = IRIDIUM_NOTE (it->data);
+      iridium_note_add_tag (note, tag_all);
+      gtk_list_box_insert (self->note_list, iridium_note_row_new (note), -1);
+    }
 
-  gtk_list_box_insert (self->tag_list, iridium_tag_row_new (tag_all), -1);
-  g_list_free (notes);
+    gtk_list_box_insert (self->tag_list, iridium_tag_row_new (tag_all), -1);
+    g_list_free (notes);
 
-  gtk_widget_show_all (GTK_WIDGET (self->note_list));
-  gtk_widget_show_all (GTK_WIDGET (self->tag_list));
+    gtk_widget_show_all (GTK_WIDGET (self->note_list));
+    gtk_widget_show_all (GTK_WIDGET (self->tag_list));
 
-  gtk_revealer_set_reveal_child (self->notification_revealer, FALSE);
+    gtk_revealer_set_reveal_child (self->notification_revealer, FALSE);
+  }
+  else {
+    /* TODO: show message */
+  }
 }
 
 static void