fix #25: remember menu and list width

This commit is contained in:
Antelle 2015-11-11 21:58:29 +03:00
parent 56a3d1f8a1
commit 87a26a4e89
5 changed files with 25 additions and 2 deletions

View File

@ -18,6 +18,7 @@ var Resizable = {
var size = dragInfo.startSize + e.offset;
size = Math.max(dragInfo.min, Math.min(dragInfo.max, size));
this.$el[dragInfo.prop](size);
this.trigger('view-resize', size);
Backbone.trigger('page-geometry', { source: 'resizable' });
},
@ -29,6 +30,7 @@ var Resizable = {
this.$el.css(dragInfo.prop, 'auto');
}
this.fixSize(dragInfo);
this.trigger('view-resize', null);
Backbone.trigger('page-geometry', { source: 'resizable' });
},

View File

@ -8,7 +8,9 @@ var FileName = 'app-settings.json';
var AppSettingsModel = Backbone.Model.extend({
defaults: {
theme: 'd',
expandGroups: true
expandGroups: true,
listViewWidth: null,
menuViewWidth: null
},
initialize: function() {

View File

@ -6,6 +6,7 @@ var Backbone = require('backbone'),
ListSearchView = require('./list-search-view'),
EntryPresenter = require('../presenters/entry-presenter'),
DragDropInfo = require('../comp/drag-drop-info'),
AppSettingsModel = require('../models/app-settings-model'),
baron = require('baron');
var ListView = Backbone.View.extend({
@ -36,6 +37,7 @@ var ListView = Backbone.View.extend({
this.listenTo(this.views.search, 'create-group', this.createGroup);
this.listenTo(this, 'show', this.viewShown);
this.listenTo(this, 'hide', this.viewHidden);
this.listenTo(this, 'view-resize', this.viewResized);
this.listenTo(Backbone, 'filter', this.filterChanged);
this.listenTo(Backbone, 'entry-updated', this.entryUpdated);
@ -68,6 +70,9 @@ var ListView = Backbone.View.extend({
} else {
this.itemsEl.html(this.emptyTemplate());
}
if (typeof AppSettingsModel.instance.get('listViewWidth') === 'number') {
this.$el.width(AppSettingsModel.instance.get('listViewWidth'));
}
this.pageResized();
return this;
},
@ -137,6 +142,10 @@ var ListView = Backbone.View.extend({
this.views.search.hide();
},
viewResized: _.throttle(function(size) {
AppSettingsModel.instance.set('listViewWidth', size);
}, 1000),
filterChanged: function(filter) {
this.items = filter.entries;
this.render();

View File

@ -3,7 +3,8 @@
var Backbone = require('backbone'),
Resizable = require('../../mixins/resizable'),
MenuSectionView = require('./menu-section-view'),
DragView = require('../drag-view');
DragView = require('../drag-view'),
AppSettingsModel = require('../../models/app-settings-model');
var MenuView = Backbone.View.extend({
template: require('templates/menu/menu.html'),
@ -17,6 +18,7 @@ var MenuView = Backbone.View.extend({
initialize: function () {
this.listenTo(this.model, 'change:sections', this.menuChanged);
this.listenTo(this, 'view-resize', this.viewResized);
},
remove: function() {
@ -40,6 +42,9 @@ var MenuView = Backbone.View.extend({
}
this.sectionViews.push(sectionView);
}, this);
if (typeof AppSettingsModel.instance.get('menuViewWidth') === 'number') {
this.$el.width(AppSettingsModel.instance.get('menuViewWidth'));
}
return this;
},
@ -47,6 +52,10 @@ var MenuView = Backbone.View.extend({
this.render();
},
viewResized: _.throttle(function(size) {
AppSettingsModel.instance.set('menuViewWidth', size);
}, 1000),
switchVisibility: function(visible) {
this.$el.toggleClass('menu-visible', visible);
}

View File

@ -2,6 +2,7 @@ Release notes
-------------
##### vNext
`-` fixed protected field deletion
`+` remember menu and list width
##### v0.2.1 (2015-11-10)
Fixed KeePassX compatibility issues