File: PreferencesWindowController.m

package info (click to toggle)
mediainfo 20.09-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 14,732 kB
  • sloc: cpp: 15,682; objc: 2,760; sh: 1,343; xml: 926; python: 259; perl: 207; makefile: 173
file content (214 lines) | stat: -rw-r--r-- 7,932 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/*  Copyright (c) MediaArea.net SARL. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license that can
 *  be found in the License.html file in the root of the source tree.
 */

//  Created by Maxim Pozdeev on 10.04.12.

#import "PreferencesWindowController.h"
#import "SubscribeWindowController.h"
#import "SubscriptionManager.h"

@interface PreferencesWindowController () 

- (void)addLanguageToComboWithTitle:(NSString*)title andValue:(NSString*)value;
- (IBAction)languageChanged:(id)sender;
- (IBAction)clickToSelectPrefTab:(id)sender;

@end

@implementation PreferencesWindowController

static PreferencesWindowController *prefsCtrl = nil;

+ (PreferencesWindowController*)controller
{
	if (!prefsCtrl) {
		prefsCtrl = [[PreferencesWindowController alloc] initWithWindowNibName:@"Preferences"];
	}
	
	return prefsCtrl;
}


-(void)show {
	[[self window] makeKeyAndOrderFront:nil];	
}


- (void)windowDidLoad
{
    [super windowDidLoad];

    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.

    observers = [[NSMutableArray alloc] init];

    if (@available(macOS 10.9, *)) {
        if([[SubscriptionManager shared] subscriptionActive]) {
            [self enableSubscription];
        }
        else {
            [observers addObject:[[NSNotificationCenter defaultCenter] addObserverForName:[SubscriptionManager subscriptionStateChangedNotification] object:[SubscriptionManager shared] queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) {
                [self enableSubscription];
            }]];
        }
    }
    else {
        [subscribeButton setEnabled:NO];
        [subscribeButton setHidden:YES];
    }

	[toolbar setSelectedItemIdentifier:@"General"];
	
	
	//Load languages...
	
	[self addLanguageToComboWithTitle:@"العربية" andValue:@"ar"];
	//[self addLanguageToComboWithTitle:@"Български" andValue:@"bg"];
	[self addLanguageToComboWithTitle:@"Català" andValue:@"ca"];
	[self addLanguageToComboWithTitle:@"简体中文" andValue:@"zh-Hans"];
	[self addLanguageToComboWithTitle:@"華語 (台灣)" andValue:@"zh-Hant"];
	[self addLanguageToComboWithTitle:@"Hrvatski" andValue:@"hr"];
	[self addLanguageToComboWithTitle:@"Czech" andValue:@"cs"];
	[self addLanguageToComboWithTitle:@"Dansk" andValue:@"da"];
	[self addLanguageToComboWithTitle:@"Nederlands" andValue:@"nl"];
	[self addLanguageToComboWithTitle:@"Deutsch" andValue:@"de"];
	[self addLanguageToComboWithTitle:@"Ελληνικά" andValue:@"el"];
	[self addLanguageToComboWithTitle:@"magyar" andValue:@"hu"];
	[self addLanguageToComboWithTitle:@"English" andValue:@"en"];
	[self addLanguageToComboWithTitle:@"Français" andValue:@"fr"];
	//[self addLanguageToComboWithTitle:@"ქართული" andValue:@"ka"];
	[self addLanguageToComboWithTitle:@"日本語" andValue:@"ja"];
	[self addLanguageToComboWithTitle:@"Italiano" andValue:@"it"];
	[self addLanguageToComboWithTitle:@"한국어" andValue:@"ko"];
	[self addLanguageToComboWithTitle:@"Polski" andValue:@"pl"];
	[self addLanguageToComboWithTitle:@"Português" andValue:@"pt"];
	[self addLanguageToComboWithTitle:@"Português (Europeu)" andValue:@"pt-PT"];
	[self addLanguageToComboWithTitle:@"Romana" andValue:@"ro"];
	[self addLanguageToComboWithTitle:@"Русский" andValue:@"ru"];
	[self addLanguageToComboWithTitle:@"Slovak" andValue:@"sk"];
	[self addLanguageToComboWithTitle:@"Español" andValue:@"es"];
	[self addLanguageToComboWithTitle:@"Svenska" andValue:@"sv"];
	//[self addLanguageToComboWithTitle:@"ไทย" andValue:@"th"];
	[self addLanguageToComboWithTitle:@"Türkçe" andValue:@"tr"];
	//[self addLanguageToComboWithTitle:@"Українська" andValue:@"uk"];
	
	// Set language checkmark
	NSString *savedLang = [[NSUserDefaults standardUserDefaults] objectForKey:@"prefLanguage"];
	
	if(![savedLang isEqualToString:@"__default__"]) {
		for(NSMenuItem *i in [[langsCombo menu] itemArray]) {
			if([[i representedObject] isEqualToString:savedLang]) {
				[langsCombo selectItem:i];
				break;
			}
		}
	}
	
	// Load views
	[self addViewToComboWithTitle:@"Easy" andValue:@"Easy"];
	[self addViewToComboWithTitle:@"Tree" andValue:@"Tree"];
	[self addViewToComboWithTitle:@"Compare" andValue:@"Compare"];
	[self addViewToComboWithTitle:@"Text" andValue:@"Text"];
	[self addViewToComboWithTitle:@"XML" andValue:@"JSON"];
	[self addViewToComboWithTitle:@"XML" andValue:@"JSON"];
	[self addViewToComboWithTitle:@"MPEG-7" andValue:@"MPEG-7"];
	[self addViewToComboWithTitle:@"PBCore" andValue:@"PBCore"];
	[self addViewToComboWithTitle:@"PBCore2" andValue:@"PBCore2"];
	[self addViewToComboWithTitle:@"EBUCore 1.5" andValue:@"EBUCore 1.5"];
	[self addViewToComboWithTitle:@"EBUCore 1.6" andValue:@"EBUCore 1.6"];
	[self addViewToComboWithTitle:@"EBUCore 1.8 (acq. metadata: parameter then segment)" andValue:@"EBUCore_1.8_ps"];
	[self addViewToComboWithTitle:@"EBUCore 1.8 (acq. metadata: segment then parameter)" andValue:@"EBUCore_1.8_sp"];
	[self addViewToComboWithTitle:@"EBUCore 1.8 (acq. metadata: parameter then segment, json output)" andValue:@"EBUCore_1.8_ps_JSON"];
	[self addViewToComboWithTitle:@"EBUCore 1.8 (acq. metadata: segment then parameter, json output)" andValue:@"EBUCore_1.8_sp_JSON"];
	[self addViewToComboWithTitle:@"FIMS 1.1" andValue:@"FIMS_1.1"];
	[self addViewToComboWithTitle:@"FIMS 1.2" andValue:@"FIMS_1.2"];
	[self addViewToComboWithTitle:@"FIMS 1.3" andValue:@"FIMS_1.3"];
	[self addViewToComboWithTitle:@"reVTMD" andValue:@"reVTMD"];
	[self addViewToComboWithTitle:@"NISO Z39.87" andValue:@"NISO_Z39.87"];

	NSString *savedView = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultView"];
	
	if(savedView == nil)
		savedView = @"Easy";

	for(NSMenuItem *i in [[viewCombo menu] itemArray]) {
		if([[i representedObject] isEqualToString:savedView]) {
				[viewCombo selectItem:i];
				break;
		}
	}
}

-(void)windowWillClose:(NSNotification *)notification {
	for(id observer in observers) {
		[[NSNotificationCenter defaultCenter] removeObserver:observer];
	}
	[observers release];

	//window object is released automatically when closes (see setReleasedWhenClosed: method)
	//dont forget to bind delegate and window outlet
	
	[prefsCtrl release], prefsCtrl = nil;
}

- (void)addViewToComboWithTitle:(NSString*)title andValue:(NSString*)value {
	NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""];
	[item setRepresentedObject:value];
	[[viewCombo menu] addItem:item];
	[item release];
}

- (void)addLanguageToComboWithTitle:(NSString*)title andValue:(NSString*)value {
	NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""];
	[item setRepresentedObject:value];
	[[langsCombo menu] addItem:item];
	[item release];
}

- (IBAction)languageChanged:(id)sender {
	
	NSMenuItem *obj = [langsCombo selectedItem];
	NSString *value = [obj representedObject];
	NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
	
	if(!value) {
		//set to default
		[ud setObject:@"__default__" forKey:@"prefLanguage"];
		[ud removeObjectForKey:@"AppleLanguages"];
	}
	else {
		//set non-default language
		[ud setObject:value forKey:@"prefLanguage"];
		[ud setObject:[NSArray arrayWithObjects:value,@"en",nil] forKey:@"AppleLanguages"];
	}
}

- (IBAction)viewChanged:(id)sender {
	NSMenuItem *obj = [viewCombo selectedItem];
	NSString *value = [obj representedObject];

	if(!value)
		value = @"Easy";

	[[NSUserDefaults standardUserDefaults] setObject:value forKey:@"defaultView"];
}
- (IBAction)subscribeClicked:(id)sender {
    if (@available(macOS 10.9, *)) {
        [[SubscribeWindowController controller] show];
    }
}

- (IBAction)clickToSelectPrefTab:(id)sender {
	
}

- (void)enableSubscription {
    [viewCombo setEnabled:YES];
    [subscribeButton setEnabled:NO];
    [subscribeButton setHidden:YES];

}
@end