Skip to content

Commit

Permalink
feat: Show only available map types
Browse files Browse the repository at this point in the history
  • Loading branch information
paulschuberth committed Oct 14, 2023
1 parent 7f9682b commit 44323c3
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 12 deletions.
3 changes: 2 additions & 1 deletion SatelliteEyes/TTPreferencesViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
@property (strong) TTPreferencesHelpWindowController *helpWindowController;

- (IBAction)showManageMapStyles:(id)sender;
@property (weak) IBOutlet NSPopUpButton *selectableMapTypes;
- (IBAction)mapTypeSelected:(NSPopUpButton *)sender;
@property (weak) IBOutlet NSTextField *stadiaTokenTextField;
@property (weak) IBOutlet NSMenu *mapTypesMenu;

@end
46 changes: 45 additions & 1 deletion SatelliteEyes/TTPreferencesViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,73 @@

#import "TTPreferencesViewController.h"
#import "LLManager.h"
#import "TTMapManager.h"

@implementation TTPreferencesViewController

@synthesize startAtLogin;
@synthesize manageMapStylesWindowController;
@synthesize helpWindowController;
@synthesize selectableMapTypes;
@synthesize stadiaTokenTextField;
@synthesize mapTypesMenu;

- (void)awakeFromNib {
self.startAtLogin = [LLManager launchAtLogin];
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:@"stadiaToken"
options:NSKeyValueObservingOptionNew
context:nil];
[self refreshAvailableMapTypes];
}

- (BOOL)startAtLogin {
return [LLManager launchAtLogin];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
[self refreshAvailableMapTypes];
}

- (void) refreshAvailableMapTypes {
[mapTypesMenu removeAllItems];
NSDictionary *mapTypes = [[NSUserDefaults standardUserDefaults] objectForKey:@"mapTypes"];
NSEnumerator *objectEnumerator = [mapTypes objectEnumerator];
NSDictionary *mapType;

while ((mapType = [objectEnumerator nextObject])) {
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:mapType[@"name"] action:nil keyEquivalent:@""];
[item setRepresentedObject:mapType[@"id"]];
NSString *apiKeyDefaultsKey = mapType[@"apiKeyDefaultsKey"];

if (apiKeyDefaultsKey == nil) {
[mapTypesMenu addItem:item];
continue;
}

NSString *apiKey = [[NSUserDefaults standardUserDefaults] stringForKey:apiKeyDefaultsKey];
if ([apiKey length] > 0) {
[mapTypesMenu addItem:item];
}
}

NSString *selectedMapType = [[NSUserDefaults standardUserDefaults ] stringForKey:@"selectedMapTypeId"];
[mapTypesMenu performActionForItemAtIndex:[mapTypesMenu indexOfItemWithRepresentedObject:selectedMapType]];

}

- (void)setStartAtLogin:(BOOL)enabled {
[self willChangeValueForKey:@"startAtLogin"];
[LLManager setLaunchAtLogin:enabled];
[self didChangeValueForKey:@"startAtLogin"];
}

- (IBAction)mapTypeSelected:(NSPopUpButton *)sender {
NSString *_Nullable newSelectedMapTypeId = [[sender selectedItem] representedObject];
DDLogInfo(@"Selected %@", newSelectedMapTypeId);
[[NSUserDefaults standardUserDefaults] setObject:newSelectedMapTypeId forKey:@"selectedMapTypeId"];
}

- (IBAction)showManageMapStyles:(id)sender {
self.manageMapStylesWindowController = [[TTManageMapStylesWindowController alloc] init];
[manageMapStylesWindowController showWindow:self];
Expand Down
12 changes: 2 additions & 10 deletions SatelliteEyes/TTPreferencesWindow.xib
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<viewController id="4" customClass="TTPreferencesViewController">
<connections>
<outlet property="selectableMapTypes" destination="6" id="jS1-1t-pyR"/>
<outlet property="mapTypesMenu" destination="8" id="I9y-Sj-4BR"/>
<outlet property="stadiaTokenTextField" destination="LIX-Hk-0js" id="tKN-DF-2lS"/>
<outlet property="view" destination="2" id="5"/>
</connections>
Expand Down Expand Up @@ -45,15 +45,7 @@
</menu>
</popUpButtonCell>
<connections>
<binding destination="15" name="content" keyPath="values.mapTypes" id="59"/>
<binding destination="15" name="contentObjects" keyPath="values.mapTypes.id" previousBinding="59" id="347"/>
<binding destination="15" name="contentValues" keyPath="values.mapTypes.name" previousBinding="347" id="348">
<dictionary key="options">
<string key="NSNotApplicablePlaceholder">Custom</string>
<integer key="NSRaisesForNotApplicableKeys" value="0"/>
</dictionary>
</binding>
<binding destination="15" name="selectedObject" keyPath="values.selectedMapTypeId" previousBinding="348" id="349"/>
<action selector="mapTypeSelected:" target="4" id="i5g-3R-mPV"/>
</connections>
</popUpButton>
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="70">
Expand Down

0 comments on commit 44323c3

Please sign in to comment.