'use strict'; define( [ 'app', 'marionette', 'Settings/SettingsModel', 'Settings/General/GeneralSettingsModel', 'Settings/Naming/NamingModel', 'Settings/Naming/NamingView', 'Settings/Quality/QualityLayout', 'Settings/Indexers/CollectionView', 'Settings/Indexers/Collection', 'Settings/DownloadClient/DownloadClientView', 'Settings/Notifications/CollectionView', 'Settings/Notifications/Collection', 'Settings/General/GeneralView', 'Settings/Misc/MiscView' ], function (App, Marionette, SettingsModel, GeneralSettingsModel,NamingModel, NamingView, QualityLayout, IndexerCollectionView, IndexerCollection, DownloadClientView, NotificationCollectionView, NotificationCollection, GeneralView, MiscView) { return Marionette.Layout.extend({ template: 'Settings/SettingsLayoutTemplate', regions: { naming : '#naming', quality : '#quality', indexers : '#indexers', downloadClient: '#download-client', notifications : '#notifications', general : '#general', misc : '#misc' }, ui: { namingTab : '.x-naming-tab', qualityTab : '.x-quality-tab', indexersTab : '.x-indexers-tab', downloadClientTab: '.x-download-client-tab', notificationsTab : '.x-notifications-tab', generalTab : '.x-general-tab', miscTab : '.x-misc-tab' }, events: { 'click .x-naming-tab' : 'showNaming', 'click .x-quality-tab' : 'showQuality', 'click .x-indexers-tab' : 'showIndexers', 'click .x-download-client-tab': 'showDownloadClient', 'click .x-notifications-tab' : 'showNotifications', 'click .x-general-tab' : 'showGeneral', 'click .x-misc-tab' : 'showMisc', 'click .x-save-settings' : 'save' }, showNaming: function (e) { if (e) { e.preventDefault(); } this.ui.namingTab.tab('show'); this._navigate('settings/naming'); }, showQuality: function (e) { if (e) { e.preventDefault(); } this.ui.qualityTab.tab('show'); this._navigate('settings/quality'); }, showIndexers: function (e) { if (e) { e.preventDefault(); } this.ui.indexersTab.tab('show'); this._navigate('settings/indexers'); }, showDownloadClient: function (e) { if (e) { e.preventDefault(); } this.ui.downloadClientTab.tab('show'); this._navigate('settings/downloadclient'); }, showNotifications: function (e) { if (e) { e.preventDefault(); } this.ui.notificationsTab.tab('show'); this._navigate('settings/notifications'); }, showGeneral: function (e) { if (e) { e.preventDefault(); } this.ui.generalTab.tab('show'); this._navigate('settings/general'); }, showMisc: function (e) { if (e) { e.preventDefault(); } this.ui.miscTab.tab('show'); this._navigate('settings/misc'); }, _navigate:function(route){ require(['Router'], function(){ App.Router.navigate(route); }); }, initialize: function (options) { this.settings = new SettingsModel(); this.settings.fetch(); this.generalSettings = new GeneralSettingsModel(); this.generalSettings.fetch(); this.namingSettings = new NamingModel(); this.namingSettings.fetch(); this.indexerSettings = new IndexerCollection(); this.indexerSettings.fetch(); this.notificationSettings = new NotificationCollection(); this.notificationSettings.fetch(); if (options.action) { this.action = options.action.toLowerCase(); } }, onRender: function () { this.naming.show(new NamingView()); this.quality.show(new QualityLayout({settings: this.settings})); this.indexers.show(new IndexerCollectionView({collection: this.indexerSettings})); this.downloadClient.show(new DownloadClientView({model: this.settings})); this.notifications.show(new NotificationCollectionView({collection: this.notificationSettings})); this.general.show(new GeneralView({model: this.generalSettings})); this.misc.show(new MiscView({model: this.settings})); }, onShow: function () { switch (this.action) { case 'quality': this.showQuality(); break; case 'indexers': this.showIndexers(); break; case 'downloadclient': this.showDownloadClient(); break; case 'notifications': this.showNotifications(); break; case 'general': this.showGeneral(); break; case 'misc': this.showMisc(); break; default: this.showNaming(); } }, save: function () { App.vent.trigger(App.Commands.SaveSettings); } }); });