forked from opa334/AltList
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathATLApplicationListSelectionController.m
78 lines (64 loc) · 2.22 KB
/
ATLApplicationListSelectionController.m
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
#import <Foundation/Foundation.h>
#import "ATLApplicationListSelectionController.h"
#import "PSSpecifier+AltList.h"
@interface PSTableCell()
- (void)setChecked:(BOOL)checked;
@end
@implementation ATLApplicationListSelectionController
- (void)loadPreferences
{
PSSpecifier* specifier = [self specifier];
if([specifier atl_hasValidGetter])
{
_selectedApplicationID = [specifier atl_performGetter];
}
if(!_selectedApplicationID)
{
NSString* defaultValue = [specifier propertyForKey:@"default"];
if(defaultValue && [defaultValue isKindOfClass:[NSString class]])
{
_selectedApplicationID = defaultValue;
}
}
}
- (void)savePreferences
{
PSSpecifier* specifier = [self specifier];
if([specifier atl_hasValidSetter])
{
[specifier atl_performSetterWithValue:_selectedApplicationID];
}
}
- (PSTableCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
PSTableCell* tableCell = (PSTableCell*)[super tableView:tableView cellForRowAtIndexPath:indexPath];
PSSpecifier* specifier = [tableCell specifier];
NSString* applicationID = [specifier propertyForKey:@"applicationIdentifier"];
[tableCell setChecked:[_selectedApplicationID isEqualToString:applicationID]];
return tableCell;
}
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
if(_selectedApplicationID)
{
//deselect previously selected application if visible
NSIndexPath* previousIndexPath = [self indexPathForApplicationWithIdentifier:_selectedApplicationID];
if([[tableView indexPathsForVisibleRows] containsObject:previousIndexPath])
{
[tableView cellForRowAtIndexPath:previousIndexPath].accessoryType = UITableViewCellAccessoryNone;
}
}
PSSpecifier* specifierOfCell = [self specifierAtIndex:[self indexForIndexPath:indexPath]];
_selectedApplicationID = [specifierOfCell propertyForKey:@"applicationIdentifier"];
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
[self savePreferences];
}
- (void)viewWillDisappear:(BOOL)animated
{
PSListController* topVC = (PSListController*)self.navigationController.topViewController;
if([topVC respondsToSelector:@selector(reloadSpecifier:)])
{
[topVC reloadSpecifier:[self specifier]];
}
}
@end