diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 92c2d8bad..736fce2e5 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -62,8 +62,11 @@ define([ setApi: function (api) { if (api) { this.api = api; + this.api.asc_registerCallback('asc_onZoomChanged', this.onApiZoomChange.bind(this)); this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); - this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + // this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); + this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); } @@ -77,9 +80,17 @@ define([ }); this.addListeners({ 'ViewTab': { - 'viewtab:freeze': this.onFreeze + 'viewtab:freeze': this.onFreeze, + 'viewtab:formula': this.onViewSettings, + 'viewtab:headings': this.onViewSettings, + 'viewtab:gridlines': this.onViewSettings, + 'viewtab:zoom': this.onZoom + }, + 'Statusbar': { + 'sheet:changed': this.onApiSheetChanged.bind(this) } }); + Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this)); }, SetDisabled: function(state) { @@ -99,22 +110,58 @@ define([ if (!this.toolbar.editMode || !this.view) return; }, - onFreeze: function() { - var me = this; - Common.NotificationCenter.trigger('edit:complete', me.toolbar); + onFreeze: function(state) { + if (this.api) { + this.api.asc_freezePane(); + } + Common.NotificationCenter.trigger('edit:complete', this.view); }, - onWorksheetLocked: function(index,locked) { - if (index == this.api.asc_getActiveWorksheetIndex()) { - Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); + onZoom: function(zoom) { + if (this.api) { + this.api.asc_setZoom(zoom/100); } + Common.NotificationCenter.trigger('edit:complete', this.view); }, + onViewSettings: function(type, value){ + if (this.api) { + switch (type) { + case 0: this.getApplication().getController('Viewport').header.fireEvent('formulabar:hide', [ value!=='checked']); break; + case 1: this.api.asc_setDisplayHeadings(value=='checked'); break; + case 2: this.api.asc_setDisplayGridlines( value=='checked'); break; + } + } + Common.NotificationCenter.trigger('edit:complete', this.view); + }, + + // onWorksheetLocked: function(index,locked) { + // if (index == this.api.asc_getActiveWorksheetIndex()) { + // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); + // } + // }, + onApiSheetChanged: function() { if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; - var currentSheet = this.api.asc_getActiveWorksheetIndex(); - this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + var params = this.api.asc_getSheetViewSettings(); + this.view.chHeadings.setValue(!!params.asc_getShowRowColHeaders(), true); + this.view.chGridlines.setValue(!!params.asc_getShowGridLines(), true); + this.view.btnFreezePanes.toggle(!!params.asc_getIsFreezePane(), true); + + // var currentSheet = this.api.asc_getActiveWorksheetIndex(); + // this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + }, + + onLayoutChanged: function(area) { + if (area=='celleditor' && arguments[1]) { + this.view.chFormula.setValue(arguments[1]=='showed', true); + } + }, + + onApiZoomChange: function(zf, type){ + var value = Math.floor((zf + .005) * 100); + this.view.cmbZoom.setValue(value, value + '%'); } }, SSE.Controllers.ViewTab || {})); diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index 151f68b4c..d9bbf598a 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -207,7 +207,7 @@ define([ }, this)); } - var mnuitemHideFormulaBar = new Common.UI.MenuItem({ + me.header.mnuitemHideFormulaBar = new Common.UI.MenuItem({ caption : me.textHideFBar, checked : Common.localStorage.getBool('sse-hidden-formula'), checkable : true, @@ -261,7 +261,7 @@ define([ style: 'min-width: 180px;', items: [ me.header.mnuitemCompactToolbar, - mnuitemHideFormulaBar, + me.header.mnuitemHideFormulaBar, {caption:'--'}, me.header.mnuitemHideHeadings, me.header.mnuitemHideGridlines, @@ -391,6 +391,7 @@ define([ case 'celleditor': if (arguments[1]) { this.boxSdk.css('border-top', arguments[1]=='hidden'?'none':''); + this.header.mnuitemHideFormulaBar.setChecked(arguments[1]=='hidden', true); } this.viewport.celayout.doLayout(); break; diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index 785c957d0..f12de75f4 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -51,6 +51,19 @@ define([ me.btnFreezePanes.on('click', function (btn, e) { me.fireEvent('viewtab:freeze', [btn.pressed]); }); + this.chFormula.on('change', function (field, value) { + me.fireEvent('viewtab:formula', [0, value]); + }); + this.chHeadings.on('change', function (field, value) { + me.fireEvent('viewtab:headings', [1, value]); + }); + this.chGridlines.on('change', function (field, value) { + me.fireEvent('viewtab:gridlines', [2, value]); + }); + + this.cmbZoom.on('selected', function(combo, record) { + me.fireEvent('viewtab:zoom', [record.value]); + }); } return { @@ -108,6 +121,7 @@ define([ this.lockedControls.push(this.btnFreezePanes); this.cmbZoom = new Common.UI.ComboBox({ + el : $host.find('#slot-field-zoom'), cls : 'input-group-nr', menuStyle : 'min-width: 55px;', hint : me.tipFontSize, @@ -123,11 +137,12 @@ define([ { displayValue: "200%", value: 200 } ] }); - Common.Utils.injectComponent($host.find('#slot-field-zoom'), this.cmbZoom); + this.cmbZoom.setValue(100); this.chFormula = new Common.UI.CheckBox({ el: $host.findById('#slot-chk-formula'), labelText: this.textFormula, + value: !Common.localStorage.getBool('sse-hidden-formula'), lock : [_set.lostConnect, _set.coAuth] }); this.lockedControls.push(this.chFormula);