diff --git a/tine20/Felamimail/css/Felamimail.css b/tine20/Felamimail/css/Felamimail.css index cbea5ba24b4..e93caa857e6 100644 --- a/tine20/Felamimail/css/Felamimail.css +++ b/tine20/Felamimail/css/Felamimail.css @@ -230,20 +230,19 @@ } .felamimail-node-statusbox-progress { - width: 16px; - height: 16px; - margin-top: 1px; + width: 14px; + height: 14px; + margin-top: 2px; background-repeat: no-repeat; vertical-align: top; margin-right: 5px; } .felamimail-node-statusbox-progress-pie { - background-image:url(../../images/progress-pie.gif); -} - -.felamimail-node-statusbox-progress-loading { - background-image:url(../../library/ExtJS/resources/images/default/tree/loading.gif); + background-size: contain; + width: 17px; + height: 17px; + margin-top: 1px; } .ext-gecko .felamimail-node-statusbox-unread { diff --git a/tine20/Felamimail/js/GridPanel.js b/tine20/Felamimail/js/GridPanel.js index 41053aad7be..c34a11b13d5 100644 --- a/tine20/Felamimail/js/GridPanel.js +++ b/tine20/Felamimail/js/GridPanel.js @@ -915,8 +915,7 @@ Tine.Felamimail.GridPanel = Ext.extend(Tine.widgets.grid.GridPanel, { var sm = this.getGrid().getSelectionModel(), filter = sm.getSelectionFilter(), - msgsIds = [], - foldersNeedUpdate = false; + msgsIds = []; if (sm.isFilterSelect) { var msgs = this.getStore(), @@ -935,16 +934,10 @@ Tine.Felamimail.GridPanel = Ext.extend(Tine.widgets.grid.GridPanel, { if (currFolder) { currFolder.set('cache_unreadcount', currFolder.get('cache_unreadcount') - diff); currFolder.set('cache_totalcount', currFolder.get('cache_totalcount') - 1); - if (sm.isFilterSelect && sm.getCount() > 50 && currFolder.get('cache_status') !== 'pending') { - Tine.log.debug('Tine.Felamimail.GridPanel::moveOrDeleteMessages - Set cache status to pending for folder ' + currFolder.get('globalname')); - currFolder.set('cache_status', 'pending'); - foldersNeedUpdate = true; - } + currFolder.set('cache_status', 'pending'); currFolder.commit(); } - if (folder) { - increaseUnreadCountInTargetFolder += diff; - } + increaseUnreadCountInTargetFolder += diff; msgsIds.push(msg.id); if (! keepOriginalMessages) { @@ -952,20 +945,12 @@ Tine.Felamimail.GridPanel = Ext.extend(Tine.widgets.grid.GridPanel, { } }, this); - if (folder && increaseUnreadCountInTargetFolder > 0) { + if (folder) { // update unread count of target folder (only when moving) folder.set('cache_unreadcount', folder.get('cache_unreadcount') + increaseUnreadCountInTargetFolder); - if (foldersNeedUpdate) { - Tine.log.debug('Tine.Felamimail.GridPanel::moveOrDeleteMessages - Set cache status to pending for target folder ' + folder.get('globalname')); - folder.set('cache_status', 'pending'); - } + folder.set('cache_status', 'pending'); folder.commit(); } - - if (foldersNeedUpdate) { - Tine.log.debug('Tine.Felamimail.GridPanel::moveOrDeleteMessages - update message cache for "pending" folders'); - this.app.checkMailsDelayedTask.delay(1000); - } if (! keepOriginalMessages) { this.deleteQueue = this.deleteQueue.concat(msgsIds); @@ -974,6 +959,8 @@ Tine.Felamimail.GridPanel = Ext.extend(Tine.widgets.grid.GridPanel, { sm.selectRecords([nextRecord]); } + this.app.checkMailsDelayedTask.delay(1000); + var callbackFn = this.onAfterDelete.createDelegate(this, [msgsIds]); if (folder !== null || toTrash) { diff --git a/tine20/Felamimail/js/TreePanel.js b/tine20/Felamimail/js/TreePanel.js index 5019549fc60..466039cf7ec 100644 --- a/tine20/Felamimail/js/TreePanel.js +++ b/tine20/Felamimail/js/TreePanel.js @@ -531,7 +531,13 @@ Ext.extend(Tine.Felamimail.TreePanel, Ext.tree.TreePanel, { if (node.id && node.id != '/' && node.attributes.globalname != '') { var folder = this.app.getFolderStore().getById(node.id); - this.app.checkMailsDelayedTask.delay(0); + if (folder) { + if (folder.get('cache_status') === 'pending') { + this.app.checkMails(folder, Ext.emptyFn); + } + // lasy wait for selection change + _.delay(() => {this.updateFolderStatus(folder);}, 100); + } } }, @@ -769,11 +775,10 @@ Ext.extend(Tine.Felamimail.TreePanel, Ext.tree.TreePanel, { var progressEl = Ext.get(Ext.DomQuery.selectNode('img[class^=felamimail-node-statusbox-progress]', nodeEl)); progressEl.removeClass(['felamimail-node-statusbox-progress-pie', 'felamimail-node-statusbox-progress-loading']); if (! Ext.isNumber(progress)) { - progressEl.setStyle('background-position', 0 + 'px'); progressEl.addClass('felamimail-node-statusbox-progress-loading'); } else { - progressEl.setStyle('background-position', progress + '%'); progressEl.addClass('felamimail-node-statusbox-progress-pie'); + progressEl.addClass('felamimail-node-statusbox-progress-pie-' + progress); } progressEl.setVisible(isSelected && cacheStatus !== 'complete' && cacheStatus !== 'disconnect' && progress !== 100 && lastCacheStatus !== 'complete'); } diff --git a/tine20/Tinebase/css/Tinebase.css b/tine20/Tinebase/css/Tinebase.css index 9188b496c1a..621e81bfe62 100644 --- a/tine20/Tinebase/css/Tinebase.css +++ b/tine20/Tinebase/css/Tinebase.css @@ -1137,6 +1137,7 @@ textarea.x-form-invalid, div.x-btn-wait, .x-item-disabled .x-tbar-loading + div, .tinebase-download-link-anim .tinebase-download-link-wait, +.felamimail-node-statusbox-progress-loading, .x-item-disabled .x-tbar-loading { animation-name: loading-animation; animation-duration: 1000ms; @@ -1176,6 +1177,7 @@ div.x-btn-wait, .x-item-disabled div.x-tbar-loading, div.x-btn-wait, .tinebase-download-link-anim .tinebase-download-link-wait, +.felamimail-node-statusbox-progress-loading, .x-btn-wait + div { box-sizing: border-box; border: 2px solid #ccc !important; @@ -1183,6 +1185,18 @@ div.x-btn-wait, border-radius: 100%; } +.x-pie-0 { background-image: url(../../images/icon-set/icon_pie_0percent.svg); } +.x-pie-10 { background-image: url(../../images/icon-set/icon_pie_10percent.svg); } +.x-pie-20 { background-image: url(../../images/icon-set/icon_pie_20percent.svg); } +.x-pie-30 { background-image: url(../../images/icon-set/icon_pie_30percent.svg); } +.x-pie-40 { background-image: url(../../images/icon-set/icon_pie_40percent.svg); } +.x-pie-50 { background-image: url(../../images/icon-set/icon_pie_50percent.svg); } +.x-pie-60 { background-image: url(../../images/icon-set/icon_pie_60percent.svg); } +.x-pie-70 { background-image: url(../../images/icon-set/icon_pie_70percent.svg); } +.x-pie-80 { background-image: url(../../images/icon-set/icon_pie_80percent.svg); } +.x-pie-90 { background-image: url(../../images/icon-set/icon_pie_90percent.svg); } +.x-pie-100 { background-image: url(../../images/icon-set/icon_pie_100percent.svg); } + .x-btn-medium.x-btn-icon-medium-top div.x-btn-wait { width: 28px; height: 28px;