@ -14,7 +14,8 @@ define(
'Settings/Notifications/CollectionView' ,
'Settings/Notifications/CollectionView' ,
'Settings/Notifications/Collection' ,
'Settings/Notifications/Collection' ,
'Settings/General/GeneralView' ,
'Settings/General/GeneralView' ,
'Shared/LoadingView'
'Shared/LoadingView' ,
'Config'
] , function ( App ,
] , function ( App ,
Marionette ,
Marionette ,
SettingsModel ,
SettingsModel ,
@ -28,7 +29,8 @@ define(
NotificationCollectionView ,
NotificationCollectionView ,
NotificationCollection ,
NotificationCollection ,
GeneralView ,
GeneralView ,
LoadingView ) {
LoadingView ,
Config ) {
return Marionette . Layout . extend ( {
return Marionette . Layout . extend ( {
template : 'Settings/SettingsLayoutTemplate' ,
template : 'Settings/SettingsLayoutTemplate' ,
@ -48,7 +50,8 @@ define(
indexersTab : '.x-indexers-tab' ,
indexersTab : '.x-indexers-tab' ,
downloadClientTab : '.x-download-client-tab' ,
downloadClientTab : '.x-download-client-tab' ,
notificationsTab : '.x-notifications-tab' ,
notificationsTab : '.x-notifications-tab' ,
generalTab : '.x-general-tab'
generalTab : '.x-general-tab' ,
advancedSettings : '.x-advanced-settings'
} ,
} ,
events : {
events : {
@ -58,7 +61,67 @@ define(
'click .x-download-client-tab' : '_showDownloadClient' ,
'click .x-download-client-tab' : '_showDownloadClient' ,
'click .x-notifications-tab' : '_showNotifications' ,
'click .x-notifications-tab' : '_showNotifications' ,
'click .x-general-tab' : '_showGeneral' ,
'click .x-general-tab' : '_showGeneral' ,
'click .x-save-settings' : '_save'
'click .x-save-settings' : '_save' ,
'change .x-advanced-settings' : '_toggleAdvancedSettings'
} ,
initialize : function ( options ) {
if ( options . action ) {
this . action = options . action . toLowerCase ( ) ;
}
} ,
onRender : function ( ) {
this . loading . show ( new LoadingView ( ) ) ;
var self = this ;
this . settings = new SettingsModel ( ) ;
this . generalSettings = new GeneralSettingsModel ( ) ;
this . namingSettings = new NamingModel ( ) ;
this . indexerSettings = new IndexerCollection ( ) ;
this . notificationSettings = new NotificationCollection ( ) ;
$ . when ( this . settings . fetch ( ) ,
this . generalSettings . fetch ( ) ,
this . namingSettings . fetch ( ) ,
this . indexerSettings . fetch ( ) ,
this . notificationSettings . fetch ( )
) . done ( function ( ) {
self . loading . $el . hide ( ) ;
self . mediaManagement . show ( new MediaManagementLayout ( { settings : self . settings , namingSettings : self . namingSettings } ) ) ;
self . quality . show ( new QualityLayout ( { settings : self . settings } ) ) ;
self . indexers . show ( new IndexerLayout ( { settings : self . settings , indexersCollection : self . indexerSettings } ) ) ;
self . downloadClient . show ( new DownloadClientLayout ( { model : self . settings } ) ) ;
self . notifications . show ( new NotificationCollectionView ( { collection : self . notificationSettings } ) ) ;
self . general . show ( new GeneralView ( { model : self . generalSettings } ) ) ;
} ) ;
this . _setAdvancedSettingsState ( ) ;
} ,
onShow : function ( ) {
switch ( this . action ) {
case 'quality' :
this . _showQuality ( ) ;
break ;
case 'indexers' :
this . _showIndexers ( ) ;
break ;
case 'downloadclient' :
this . _showDownloadClient ( ) ;
break ;
case 'connect' :
this . _showNotifications ( ) ;
break ;
case 'notifications' :
this . _showNotifications ( ) ;
break ;
case 'general' :
this . _showGeneral ( ) ;
break ;
default :
this . _showMediaManagement ( ) ;
}
} ,
} ,
_showMediaManagement : function ( e ) {
_showMediaManagement : function ( e ) {
@ -121,65 +184,30 @@ define(
} ) ;
} ) ;
} ,
} ,
initialize : function ( options ) {
_save : function ( ) {
if ( options . action ) {
App . vent . trigger ( App . Commands . SaveSettings ) ;
this . action = options . action . toLowerCase ( ) ;
}
} ,
} ,
onRender : function ( ) {
_setAdvancedSettingsState : function ( ) {
this . loading . show ( new LoadingView ( ) ) ;
var checked = Config . getValueBoolean ( 'advancedSettings' ) ;
var self = this ;
this . ui . advancedSettings . prop ( 'checked' , checked ) ;
this . settings = new SettingsModel ( ) ;
this . generalSettings = new GeneralSettingsModel ( ) ;
this . namingSettings = new NamingModel ( ) ;
this . indexerSettings = new IndexerCollection ( ) ;
this . notificationSettings = new NotificationCollection ( ) ;
$ . when ( this . settings . fetch ( ) ,
if ( checked ) {
this . generalSettings . fetch ( ) ,
this . $el . addClass ( 'show-advanced-settings' ) ;
this . namingSettings . fetch ( ) ,
}
this . indexerSettings . fetch ( ) ,
this . notificationSettings . fetch ( )
) . done ( function ( ) {
self . loading . $el . hide ( ) ;
self . mediaManagement . show ( new MediaManagementLayout ( { settings : self . settings , namingSettings : self . namingSettings } ) ) ;
self . quality . show ( new QualityLayout ( { settings : self . settings } ) ) ;
self . indexers . show ( new IndexerLayout ( { settings : self . settings , indexersCollection : self . indexerSettings } ) ) ;
self . downloadClient . show ( new DownloadClientLayout ( { model : self . settings } ) ) ;
self . notifications . show ( new NotificationCollectionView ( { collection : self . notificationSettings } ) ) ;
self . general . show ( new GeneralView ( { model : self . generalSettings } ) ) ;
} ) ;
} ,
} ,
onShow : function ( ) {
_toggleAdvancedSettings : function ( ) {
switch ( this . action ) {
var checked = this . ui . advancedSettings . prop ( 'checked' ) ;
case 'quality' :
Config . setValue ( 'advancedSettings' , checked ) ;
this . _showQuality ( ) ;
break ;
if ( checked ) {
case 'indexers' :
this . $el . addClass ( 'show-advanced-settings' ) ;
this . _showIndexers ( ) ;
break ;
case 'downloadclient' :
this . _showDownloadClient ( ) ;
break ;
case 'connect' :
this . _showNotifications ( ) ;
break ;
case 'notifications' :
this . _showNotifications ( ) ;
break ;
case 'general' :
this . _showGeneral ( ) ;
break ;
default :
this . _showMediaManagement ( ) ;
}
}
} ,
_save : function ( ) {
else {
App . vent . trigger ( App . Commands . SaveSettings ) ;
this . $el . removeClass ( 'show-advanced-settings' ) ;
}
}
}
} ) ;
} ) ;
} ) ;
} ) ;