loleaflet/src/core/LOUtil.js |    7 +++++++
 loleaflet/src/core/Socket.js |   34 ++++++++++++++++++++++++++++------
 loleaflet/src/map/Map.js     |    8 +++++++-
 3 files changed, 42 insertions(+), 7 deletions(-)

New commits:
commit 7b16ab5f94083e688d623cffff085452727616cd
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Fri Mar 30 19:26:55 2018 +0530

    Ask to save unsaved changes to a new file
    
    ... when document is changed externally.
    
    Change-Id: Ieaad5f0ed5cd4ee3bf5385f2a5cd297b7758a43e

diff --git a/loleaflet/src/core/LOUtil.js b/loleaflet/src/core/LOUtil.js
index 286f2fa4e..fad8ad527 100644
--- a/loleaflet/src/core/LOUtil.js
+++ b/loleaflet/src/core/LOUtil.js
@@ -78,5 +78,12 @@ L.LOUtil = {
                        }
                }
                return rectangles;
+       },
+
+       /// oldFileName = Example.odt, suffix = new
+       /// returns: Example_new.odt
+       generateNewFileName: function(oldFileName, suffix) {
+               var idx = oldFileName.lastIndexOf('.');
+               return oldFileName.substring(0, idx) + suffix + 
oldFileName.substring(idx);
        }
 };
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index e45ba55ac..9604131f3 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -435,21 +435,41 @@ L.Socket = L.Class.extend({
                                        vex.close(id);
                                }
 
-                               vex.dialog.confirm({
-                                       message: _('Document has been changed 
in storage. Do you want to discard your changes, and load the document from the 
storage?'),
+                               vex.dialog.open({
+                                       message: _('Document has been changed 
in storage. What would you like to do with your unsaved changes?'),
                                        escapeButtonCloses: false,
                                        overlayClosesOnClick: false,
+                                       contentCSS: { width: '700px' },
                                        buttons: [
-                                               $.extend({}, 
vex.dialog.buttons.YES, { text: _('Discard changes') }),
-                                               $.extend({}, 
vex.dialog.buttons.NO, { text: _('Overwrite document') })
+                                               $.extend({}, 
vex.dialog.buttons.YES, { text: _('Discard'),
+                                                                               
      click: function($vexContent) {
+                                                                               
              $vexContent.data().vex.value = 'discard';
+                                                                               
              vex.close($vexContent.data().vex.id);
+                                                                               
      }}),
+                                               $.extend({}, 
vex.dialog.buttons.YES, { text: _('Overwrite'),
+                                                                               
      click: function($vexContent) {
+                                                                               
              $vexContent.data().vex.value = 'overwrite';
+                                                                               
              vex.close($vexContent.data().vex.id);
+                                                                               
      }}),
+                                               $.extend({}, 
vex.dialog.buttons.YES, { text: _('Save to new file'),
+                                                                               
      click: function($vexContent) {
+                                                                               
              $vexContent.data().vex.value = 'saveas';
+                                                                               
              vex.close($vexContent.data().vex.id);
+                                                                               
      }})
                                        ],
                                        callback: L.bind(function(value) {
-                                               if (value) {
+                                               if (value === 'discard') {
                                                        // They want to refresh 
the page and load document again for all
                                                        
this.sendMessage('closedocument');
-                                               } else {
+                                               } else if (value === 
'overwrite') {
                                                        // They want to 
overwrite
                                                        
this.sendMessage('savetostorage force=1');
+                                               } else if (value === 'saveas') {
+                                                       var filename = 
this._map['wopi'].BaseFileName;
+                                                       if (filename) {
+                                                               filename = 
L.LOUtil.generateNewFileName(filename, '_new');
+                                                               
this._map.saveAs(filename);
+                                                       }
                                                }
                                        }, this)
                                });
commit 49bc55e2a716288fb45f98af4f3c2644b5bfec5d
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Fri Mar 30 18:54:44 2018 +0530

    loleaflet: Don't close dialog on just getting the focus
    
    User should explicitly click on individual buttons to be able to close
    the dialog.
    
    Change-Id: Ie78e057a92677c392fd97c637248c1da5597ad84

diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 536774041..e45ba55ac 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -437,6 +437,8 @@ L.Socket = L.Class.extend({
 
                                vex.dialog.confirm({
                                        message: _('Document has been changed 
in storage. Do you want to discard your changes, and load the document from the 
storage?'),
+                                       escapeButtonCloses: false,
+                                       overlayClosesOnClick: false,
                                        buttons: [
                                                $.extend({}, 
vex.dialog.buttons.YES, { text: _('Discard changes') }),
                                                $.extend({}, 
vex.dialog.buttons.NO, { text: _('Overwrite document') })
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index b513b8138..36f1175a9 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -849,7 +849,7 @@ L.Map = L.Evented.extend({
 
        _activate: function () {
                if (this._serverRecycling || this._documentIdle) {
-                       return;
+                       return false;
                }
 
                console.debug('_activate:');
@@ -864,8 +864,14 @@ L.Map = L.Evented.extend({
                                if (this._docLayer) {
                                        
this._docLayer._onMessage('invalidatetiles: EMPTY', null);
                                }
+
                                if (vex.dialogID > 0) {
                                        var id = vex.dialogID;
+
+                                       var options = 
vex.getVexByID(id).data().vex;
+                                       if (!options.overlayClosesOnClick || 
!options.escapeButtonCloses)
+                                               return false;
+
                                        vex.dialogID = -1;
                                        this._startInactiveTimer();
                                        this.focus();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to