Просмотр исходного кода

Don't connect if no credentials are known

Matthias Vogelgesang 7 лет назад
Родитель
Сommit
643164993a
3 измененных файлов с 28 добавлено и 19 удалено
  1. 3 3
      src/iridium-signin-dialog.c
  2. 5 4
      src/iridium-signin-dialog.h
  3. 20 12
      src/iridium-window.c

+ 3 - 3
src/iridium-signin-dialog.c

@@ -74,8 +74,8 @@ email_entry_valid (IridiumSigninDialog *dialog)
   return g_regex_match (dialog->email_regex, gtk_entry_get_text (dialog->email_entry), 0, NULL);
   return g_regex_match (dialog->email_regex, gtk_entry_get_text (dialog->email_entry), 0, NULL);
 }
 }
 
 
-static gboolean
-entries_valid (IridiumSigninDialog *dialog)
+gboolean
+iridium_signin_dialog_entries_valid (IridiumSigninDialog *dialog)
 {
 {
   return server_entry_valid (dialog) &&
   return server_entry_valid (dialog) &&
          email_entry_valid (dialog) &&
          email_entry_valid (dialog) &&
@@ -85,7 +85,7 @@ entries_valid (IridiumSigninDialog *dialog)
 static void
 static void
 set_sign_in_button_sensitivity (IridiumSigninDialog *dialog)
 set_sign_in_button_sensitivity (IridiumSigninDialog *dialog)
 {
 {
-  gtk_widget_set_sensitive (dialog->sign_in_button, entries_valid (dialog));
+  gtk_widget_set_sensitive (dialog->sign_in_button, iridium_signin_dialog_entries_valid (dialog));
 }
 }
 
 
 static void
 static void

+ 5 - 4
src/iridium-signin-dialog.h

@@ -8,10 +8,11 @@ G_BEGIN_DECLS
 
 
 G_DECLARE_FINAL_TYPE (IridiumSigninDialog, iridium_signin_dialog, IRIDIUM, SIGNIN_DIALOG, GtkDialog)
 G_DECLARE_FINAL_TYPE (IridiumSigninDialog, iridium_signin_dialog, IRIDIUM, SIGNIN_DIALOG, GtkDialog)
 
 
-GtkDialog   *iridium_signin_dialog_new          (void);
-const gchar *iridium_signin_dialog_get_server   (IridiumSigninDialog *dialog);
-const gchar *iridium_signin_dialog_get_email    (IridiumSigninDialog *dialog);
-const gchar *iridium_signin_dialog_get_password (IridiumSigninDialog *dialog);
+GtkDialog   *iridium_signin_dialog_new              (void);
+const gchar *iridium_signin_dialog_get_server       (IridiumSigninDialog *dialog);
+const gchar *iridium_signin_dialog_get_email        (IridiumSigninDialog *dialog);
+const gchar *iridium_signin_dialog_get_password     (IridiumSigninDialog *dialog);
+gboolean     iridium_signin_dialog_entries_valid    (IridiumSigninDialog *dialog);
 
 
 G_END_DECLS
 G_END_DECLS
 
 

+ 20 - 12
src/iridium-window.c

@@ -280,6 +280,7 @@ on_show (IridiumWindow *self, gpointer user_data)
   gchar *server;
   gchar *server;
   gchar *email;
   gchar *email;
   gchar *password = NULL;
   gchar *password = NULL;
+  gboolean valid = TRUE;
 
 
   server = g_settings_get_string (self->settings, "server");
   server = g_settings_get_string (self->settings, "server");
   email = g_settings_get_string (self->settings, "email");
   email = g_settings_get_string (self->settings, "email");
@@ -295,23 +296,30 @@ on_show (IridiumWindow *self, gpointer user_data)
     dialog = iridium_signin_dialog_new ();
     dialog = iridium_signin_dialog_new ();
     gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (self));
     gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (self));
     gtk_dialog_run (dialog);
     gtk_dialog_run (dialog);
-    server = g_strdup (iridium_signin_dialog_get_server (IRIDIUM_SIGNIN_DIALOG (dialog)));
-    email = g_strdup (iridium_signin_dialog_get_email (IRIDIUM_SIGNIN_DIALOG (dialog)));
-    password = g_strdup (iridium_signin_dialog_get_password (IRIDIUM_SIGNIN_DIALOG (dialog)));
 
 
-    secret_password_store_sync (STANDARD_FILE_SCHEMA, NULL,
-        "Iridium", password, NULL, NULL,
-        "email", email, "server", server, NULL);
-    g_settings_set_string (self->settings, "server", server);
-    g_settings_set_string (self->settings, "email", email);
+    if (iridium_signin_dialog_entries_valid (IRIDIUM_SIGNIN_DIALOG (dialog))) {
+      server = g_strdup (iridium_signin_dialog_get_server (IRIDIUM_SIGNIN_DIALOG (dialog)));
+      email = g_strdup (iridium_signin_dialog_get_email (IRIDIUM_SIGNIN_DIALOG (dialog)));
+      password = g_strdup (iridium_signin_dialog_get_password (IRIDIUM_SIGNIN_DIALOG (dialog)));
+
+      secret_password_store_sync (STANDARD_FILE_SCHEMA, NULL,
+          "Iridium", password, NULL, NULL,
+          "email", email, "server", server, NULL);
+      g_settings_set_string (self->settings, "server", server);
+      g_settings_set_string (self->settings, "email", email);
+    }
+    else {
+      valid = FALSE;
+    }
 
 
     gtk_widget_destroy (GTK_WIDGET (dialog));
     gtk_widget_destroy (GTK_WIDGET (dialog));
   }
   }
 
 
-  gtk_revealer_set_reveal_child (self->notification_revealer, TRUE);
-
-  iridium_standard_file_connect_async (self->client, server, email, password, NULL,
-      on_standard_file_connected, self);
+  if (valid) {
+    gtk_revealer_set_reveal_child (self->notification_revealer, TRUE);
+    iridium_standard_file_connect_async (self->client, server, email, password, NULL,
+                                         on_standard_file_connected, self);
+  }
 
 
   secret_password_free (password);
   secret_password_free (password);
   g_free (server);
   g_free (server);