Skip to content

Commit 50cee5d

Browse files
committed
this fixes gorhill#790
1 parent b013011 commit 50cee5d

4 files changed

Lines changed: 52 additions & 29 deletions

File tree

src/_locales/en/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,10 @@
627627
"message": "Import from cloud storage",
628628
"description": "tooltip"
629629
},
630+
"cloudPullAndMerge": {
631+
"message": "Import from cloud storage and merge with current settings",
632+
"description": "tooltip"
633+
},
630634
"cloudNoData": {
631635
"message": "...\n...",
632636
"description": ""

src/css/cloud-ui.css

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,32 @@
99
display: none;
1010
}
1111
#cloudWidget > button {
12-
font-size: 160%;
13-
padding: 0.1em 0.2em;
14-
}
15-
#cloudPull[disabled] {
16-
visibility: hidden;
17-
}
18-
#cloudPush:after ,
19-
#cloudPull:before {
12+
display: inline-block;
2013
font-family: FontAwesome;
14+
font-size: 160%;
2115
font-style: normal;
2216
font-weight: normal;
2317
line-height: 1;
18+
padding: 0.2em 0.25em 0.1em 0.25em;
19+
position: relative;
2420
vertical-align: baseline;
25-
display: inline-block;
2621
}
27-
body[dir="ltr"] #cloudPush:after {
28-
content: '\f0ee';
22+
#cloudWidget > button[disabled] {
23+
visibility: hidden;
2924
}
30-
body[dir="rtl"] #cloudPush:after {
25+
#cloudPush:after {
3126
content: '\f0ee';
3227
}
33-
body[dir="ltr"] #cloudPull:before {
34-
content: '\f0ed';
35-
}
36-
body[dir="rtl"] #cloudPull:before {
28+
#cloudPull:before,
29+
#cloudPullAndMerge:before {
3730
content: '\f0ed';
31+
}
32+
#cloudPullAndMerge:after {
33+
content: '\f067';
34+
font-size: 50%;
35+
position: absolute;
36+
right: 0;
37+
top: 10%;
3838
}
3939
#cloudWidget > span {
4040
color: gray;

src/js/3p-filters.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ var renderExternalLists = function() {
501501

502502
var externalListsChangeHandler = function() {
503503
uDom.nodeFromId('externalListsApply').disabled =
504-
uDom.nodeFromId('externalLists').value.trim() === externalLists;
504+
uDom.nodeFromId('externalLists').value.trim() === externalLists.trim();
505505
};
506506

507507
/******************************************************************************/
@@ -551,27 +551,35 @@ var getCloudData = function() {
551551
return bin;
552552
};
553553

554-
var setCloudData = function(data) {
554+
var setCloudData = function(data, append) {
555555
if ( typeof data !== 'object' || data === null ) {
556556
return;
557557
}
558558

559-
var checked = data.parseCosmeticFilters === true;
560-
uDom.nodeFromId('parseCosmeticFilters').checked = checked;
561-
listDetails.cosmetic = checked;
559+
var elem, checked;
562560

563-
var lis = uDom('#lists .listEntry'), li, input, listKey;
561+
elem = uDom.nodeFromId('parseCosmeticFilters');
562+
checked = data.parseCosmeticFilters === true ||
563+
append && elem.checked;
564+
elem.checked = listDetails.cosmetic = checked;
565+
566+
var lis = uDom('#lists .listEntry'), li, listKey;
564567
var i = lis.length;
565568
while ( i-- ) {
566569
li = lis.at(i);
567-
input = li.descendants('input');
570+
elem = li.descendants('input');
568571
listKey = li.descendants('a').attr('data-listkey');
569-
checked = data.selectedLists.indexOf(listKey) !== -1;
570-
input.prop('checked', checked);
572+
checked = data.selectedLists.indexOf(listKey) !== -1 ||
573+
append && elem.prop('checked');
574+
elem.prop('checked', checked);
571575
listDetails.available[listKey].off = !checked;
572576
}
573577

574-
uDom.nodeFromId('externalLists').value = data.externalLists || '';
578+
elem = uDom.nodeFromId('externalLists');
579+
if ( !append ) {
580+
elem.value = '';
581+
}
582+
elem.value += data.externalLists || '';
575583

576584
renderWidgets();
577585
externalListsChangeHandler();

src/js/cloud-ui.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ var onCloudDataReceived = function(entry) {
6262
self.cloud.data = entry.data;
6363

6464
uDom.nodeFromId('cloudPull').removeAttribute('disabled');
65+
uDom.nodeFromId('cloudPullAndMerge').removeAttribute('disabled');
6566

6667
var timeOptions = {
6768
weekday: 'short',
@@ -110,9 +111,17 @@ var pushData = function() {
110111

111112
/******************************************************************************/
112113

113-
var pullData = function(ev) {
114+
var pullData = function() {
114115
if ( typeof self.cloud.onPull === 'function' ) {
115-
self.cloud.onPull(self.cloud.data, ev.shiftKey);
116+
self.cloud.onPull(self.cloud.data, false);
117+
}
118+
};
119+
120+
/******************************************************************************/
121+
122+
var pullAndMergeData = function() {
123+
if ( typeof self.cloud.onPull === 'function' ) {
124+
self.cloud.onPull(self.cloud.data, true);
116125
}
117126
};
118127

@@ -171,7 +180,8 @@ var onInitialize = function(options) {
171180
var html = [
172181
'<button id="cloudPush" type="button" title="cloudPush"></button>',
173182
'<span data-i18n="cloudNoData"></span>',
174-
'<button id="cloudPull" type="button" title="cloudPull" disabled></button>',
183+
'<button id="cloudPull" type="button" title="cloudPull" disabled></button>&nbsp;',
184+
'<button id="cloudPullAndMerge" type="button" title="cloudPullAndMerge" disabled></button>',
175185
'<span id="cloudCog" class="fa">&#xf013;</span>',
176186
'<div id="cloudOptions">',
177187
' <div>',
@@ -187,6 +197,7 @@ var onInitialize = function(options) {
187197

188198
uDom('#cloudPush').on('click', pushData);
189199
uDom('#cloudPull').on('click', pullData);
200+
uDom('#cloudPullAndMerge').on('click', pullAndMergeData);
190201
uDom('#cloudCog').on('click', openOptions);
191202
uDom('#cloudOptions').on('click', closeOptions);
192203
uDom('#cloudOptionsSubmit').on('click', submitOptions);

0 commit comments

Comments
 (0)