[gnome-maps/wip/osm-edit: 7/10] osmEdit: Invoke the account dialog if trying to edit while not signed in



commit bd309e13f8a4642faad814221e5f92c9ab1a0672
Author: Marcus Lundblad <ml update uu se>
Date:   Wed Dec 2 23:48:19 2015 +0100

    osmEdit: Invoke the account dialog if trying to edit while not signed in
    
    https://bugzilla.gnome.org/show_bug.cgi?id=726628

 src/application.js      |    2 +-
 src/osmAccountDialog.js |   24 ++++++++++++++++++------
 src/osmEdit.js          |    6 ++++--
 src/placeBubble.js      |   10 ++++++++++
 4 files changed, 33 insertions(+), 9 deletions(-)
---
diff --git a/src/application.js b/src/application.js
index 552d60b..99bb426 100644
--- a/src/application.js
+++ b/src/application.js
@@ -150,7 +150,7 @@ const Application = new Lang.Class({
     },
 
     _onOsmAccountSetupActivate: function() {
-        osmEdit.showAccountDialog(this._mainWindow);
+        osmEdit.showAccountDialog(this._mainWindow, false);
     },
 
     _addContacts: function() {
diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js
index 1a97867..b1a323d 100644
--- a/src/osmAccountDialog.js
+++ b/src/osmAccountDialog.js
@@ -27,6 +27,10 @@ const WebKit = imports.gi.WebKit;
 
 const Application = imports.application;
 
+const Response = {
+    SIGNED_IN: 0
+};
+
 const OSMAccountDialog = new Lang.Class({
     Name: 'OSMAccountDialog',
     Extends: Gtk.Dialog,
@@ -50,6 +54,9 @@ const OSMAccountDialog = new Lang.Class({
         params.use_header_bar = true;
         GObject.type_ensure(WebKit.WebView);
 
+        this._closeOnSignIn = params.closeOnSignIn;
+        delete params.closeOnSignIn;
+
         this.parent(params);
 
         this._emailEntry.connect('changed',
@@ -142,12 +149,17 @@ const OSMAccountDialog = new Lang.Class({
         if (success) {
             /* update the username label */
             this._signedInUserLabel.label = Application.osmEdit.username;
-            /* switch to the logged in view and reset the state in case
-               the user signs out and start over again */
-            this._resetPasswordLabel.visible = false;
-            this._verificationFailedLabel = false;
-            this._signUpLinkButton.visible = true;
-            this._stack.visible_child_name = 'logged-in';
+
+            if (this._closeOnSignIn) {
+                this.response(Response.SIGNED_IN);
+            } else {
+                /* switch to the logged in view and reset the state in case
+                   the user signs out and start over again */
+                this._resetPasswordLabel.visible = false;
+                this._verificationFailedLabel = false;
+                this._signUpLinkButton.visible = true;
+                this._stack.visible_child_name = 'logged-in';
+            }
         } else {
             /* switch back to the sign-in view, and show a label indicating
                that verification failed */
diff --git a/src/osmEdit.js b/src/osmEdit.js
index f4a9d60..cca0197 100644
--- a/src/osmEdit.js
+++ b/src/osmEdit.js
@@ -52,8 +52,10 @@ const OSMEdit = new Lang.Class({
         return response;
     },
 
-    showAccountDialog: function(parentWindow) {
-        let dialog = new OSMAccountDialog.OSMAccountDialog({transient_for: parentWindow });
+    showAccountDialog: function(parentWindow, closeOnSignIn) {
+        let dialog =
+            new OSMAccountDialog.OSMAccountDialog({transient_for: parentWindow,
+                                                   closeOnSignIn: closeOnSignIn});
         let response = dialog.run();
         dialog.destroy();
         return response;
diff --git a/src/placeBubble.js b/src/placeBubble.js
index eb53bb9..0637f85 100644
--- a/src/placeBubble.js
+++ b/src/placeBubble.js
@@ -26,6 +26,7 @@ const Lang = imports.lang;
 const Application = imports.application;
 const ContactPlace = imports.contactPlace;
 const MapBubble = imports.mapBubble;
+const OSMAccountDialog = imports.osmAccountDialog;
 const OSMEditDialog = imports.osmEditDialog;
 const OSMUtils = imports.osmUtils;
 const Overpass = imports.overpass;
@@ -161,6 +162,15 @@ const PlaceBubble = new Lang.Class({
     },
 
     _onEditClicked: function() {
+        /* if the user is not alread signed in, show the account dialog */
+        if (!Application.osmEdit.isSignedIn) {
+            let response =
+                Application.osmEdit.showAccountDialog(this.get_toplevel(),
+                                                      true);
+            if (!response === OSMAccountDialog.Response.SIGNED_IN)
+                return;
+        }
+
         let response =
             Application.osmEdit.showEditDialog(this.get_toplevel(), this._place);
 


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