Ext.define('Rambox.view.main.MainController', { extend: 'Ext.app.ViewController' ,requires: [ ] ,alias: 'controller.main' ,showSimpleModal: function(record) { var me = this; var win = Ext.create('Ext.window.Window', { title: 'Add '+record.get('name') ,modal: true ,width: 400 ,resizable: false ,draggable: false ,bodyPadding: 20 ,items: [ { xtype: 'form' ,items: [ { xtype: 'textfield' ,fieldLabel: 'Name' ,value: record.get('name') ,name: 'serviceName' } ,{ xtype: 'fieldset' ,title: 'Options' ,margin: '10 0 0 0' ,items: [ { xtype: 'checkbox' ,boxLabel: 'Separate' ,checked: false ,name: 'align' ,uncheckedValue: 'left' ,inputValue: 'right' } ,{ xtype: 'checkbox' ,boxLabel: 'Show notifications' ,name: 'notifications' ,checked: true ,uncheckedValue: false ,inputValue: true } ,{ xtype: 'checkbox' ,boxLabel: 'Mute all sounds' ,name: 'muted' ,checked: false ,uncheckedValue: false ,inputValue: true } ] } ] } ] ,buttons: [ { text: 'Cancel' ,ui: 'decline' ,handler: function() { win.close(); } } ,'->' ,{ text: 'Add service' ,handler: function() { var formValues = win.down('form').getValues(); var service = Ext.getStore('Services').add({ type: record.get('id') ,name: formValues.serviceName ,url: record.get('url') ,align: formValues.align ,notifications: formValues.notifications ,muted: formValues.muted })[0]; me.getView().add({ xtype: 'webview' ,id: 'tab_'+service.get('id') ,title: service.get('name') ,icon: 'resources/icons/'+record.get('logo') ,src: service.get('url') ,type: service.get('type') ,align: formValues.align ,notifications: formValues.notifications ,muted: formValues.muted }).show(); win.close(); } } ] }).show(); } ,showCustomModal: function(record) { var me = this; var win = Ext.create('Ext.window.Window', { title: 'Add '+record.get('name') ,modal: true ,width: 400 ,resizable: false ,draggable: false ,bodyPadding: 20 ,items: [ { xtype: 'form' ,items: [ { xtype: 'textfield' ,fieldLabel: 'Name' ,value: record.get('name') ,name: 'serviceName' } ,{ xtype: 'container' ,layout: 'column' ,items: [{ xtype: 'textfield' ,fieldLabel: record.get('name') + ' team' ,name: 'url' },{ xtype: 'displayfield' ,value: record.get('url').split('___')[1].slice(0, -1) // Get the URL and remove the final slash (/) ,submitValue: false // Prevent being submitted }] } ,{ xtype: 'fieldset' ,title: 'Options' ,margin: '10 0 0 0' ,items: [ { xtype: 'checkbox' ,boxLabel: 'Separate' ,checked: false ,name: 'align' ,uncheckedValue: 'left' ,inputValue: 'right' } ,{ xtype: 'checkbox' ,boxLabel: 'Show notifications' ,name: 'notifications' ,checked: true ,uncheckedValue: false ,inputValue: true } ,{ xtype: 'checkbox' ,boxLabel: 'Mute all sounds' ,name: 'muted' ,checked: false ,uncheckedValue: false ,inputValue: true } ] } ] } ] ,buttons: [ { text: 'Cancel' ,ui: 'decline' ,handler: function() { win.close(); } } ,'->' ,{ text: 'Add service' ,handler: function() { var formValues = win.down('form').getValues(); var service = Ext.getStore('Services').add({ type: record.get('id') ,name: formValues.serviceName ,url: record.get('url').replace('___', formValues.url) ,align: formValues.align ,notifications: formValues.notifications ,muted: formValues.muted })[0]; me.getView().add({ xtype: 'webview' ,id: 'tab_'+service.get('id') ,title: service.get('name') ,icon: 'resources/icons/'+record.get('logo') ,src: service.get('url') ,type: service.get('type') ,align: formValues.align ,notifications: formValues.notifications ,muted: formValues.muted }).show(); win.close(); } } ] }).show(); } ,onNewServiceSelect: function( view, record, item, index, e ) { if ( record.get('url').indexOf('___') >= 0 ) { this.showCustomModal(record); } else { this.showSimpleModal(record); } } ,removeService: function( gridView, rowIndex, colIndex, col, e, rec, rowEl ) { Ext.Msg.confirm('Please confirm...', 'Are you sure you want to remove '+rec.get('name')+'?', function(btnId) { if ( btnId === 'yes' ) { gridView.getStore().remove(rec); Ext.getCmp('tab_'+rec.get('id')).close(); } }); } ,doFilter: function( cg, newValue, oldValue ) { var values = Ext.cq1('checkboxgroup').getValue(); Ext.getStore('ServicesList').getFilters().replaceAll({ fn: function(record) { return Ext.Array.contains(Ext.Object.getKeys(values), record.get('type')); } }); } });