89 lines
2.6 KiB
Mathematica
89 lines
2.6 KiB
Mathematica
|
//
|
||
|
// MGMLoginItems.m
|
||
|
// Exhaust
|
||
|
//
|
||
|
// Created by Mr. Gecko on 8/7/10.
|
||
|
// Copyright (c) 2011 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
|
||
|
//
|
||
|
|
||
|
#import "MGMLoginItems.h"
|
||
|
|
||
|
NSString * const MGMLoginItemsPath = @"~/Library/Preferences/loginwindow.plist";
|
||
|
NSString * const MGMItemsKey = @"AutoLaunchedApplicationDictionary";
|
||
|
NSString * const MGMPathKey = @"Path";
|
||
|
NSString * const MGMHideKey = @"Hide";
|
||
|
|
||
|
@implementation MGMLoginItems
|
||
|
+ (id)items {
|
||
|
return [[[self alloc] init] autorelease];
|
||
|
}
|
||
|
- (id)init {
|
||
|
if ((self = [super init])) {
|
||
|
loginItems = [[NSMutableDictionary dictionaryWithContentsOfFile:[MGMLoginItemsPath stringByExpandingTildeInPath]] retain];
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
- (void)dealloc {
|
||
|
[loginItems release];
|
||
|
[super dealloc];
|
||
|
}
|
||
|
|
||
|
- (NSArray *)paths {
|
||
|
NSMutableArray *returnApps = [NSMutableArray array];
|
||
|
NSArray *applications = [loginItems objectForKey:MGMItemsKey];
|
||
|
for (int i=0; i<[applications count]; i++) {
|
||
|
[returnApps addObject:[[applications objectAtIndex:i] objectForKey:MGMPathKey]];
|
||
|
}
|
||
|
return returnApps;
|
||
|
}
|
||
|
|
||
|
- (BOOL)selfExists {
|
||
|
return [self exists:[[NSBundle mainBundle] bundlePath]];
|
||
|
}
|
||
|
- (BOOL)addSelf {
|
||
|
return [self add:[[NSBundle mainBundle] bundlePath]];
|
||
|
}
|
||
|
- (BOOL)removeSelf {
|
||
|
return [self remove:[[NSBundle mainBundle] bundlePath]];
|
||
|
}
|
||
|
|
||
|
- (BOOL)exists:(NSString *)thePath {
|
||
|
NSArray *applications = [loginItems objectForKey:MGMItemsKey];
|
||
|
for (int i=0; i<[applications count]; i++) {
|
||
|
if ([[[applications objectAtIndex:i] objectForKey:MGMPathKey] isEqual:thePath])
|
||
|
return YES;
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
- (BOOL)add:(NSString *)thePath {
|
||
|
return [self add:thePath hide:NO];
|
||
|
}
|
||
|
- (BOOL)add:(NSString *)thePath hide:(BOOL)shouldHide {
|
||
|
if ([self exists:thePath])
|
||
|
return NO;
|
||
|
NSMutableArray *applications = [NSMutableArray arrayWithArray:[loginItems objectForKey:MGMItemsKey]];
|
||
|
NSMutableDictionary *info = [NSMutableDictionary dictionary];
|
||
|
[info setObject:thePath forKey:MGMPathKey];
|
||
|
[info setObject:[NSNumber numberWithBool:shouldHide] forKey:MGMHideKey];
|
||
|
[applications addObject:info];
|
||
|
[loginItems setObject:applications forKey:MGMItemsKey];
|
||
|
[self _save];
|
||
|
return YES;
|
||
|
}
|
||
|
- (BOOL)remove:(NSString *)thePath {
|
||
|
NSMutableArray *applications = [NSMutableArray arrayWithArray:[loginItems objectForKey:MGMItemsKey]];
|
||
|
for (int i=0; i<[applications count]; i++) {
|
||
|
if ([[[applications objectAtIndex:i] objectForKey:MGMPathKey] isEqual:thePath]) {
|
||
|
[applications removeObjectAtIndex:i];
|
||
|
[loginItems setObject:applications forKey:MGMItemsKey];
|
||
|
[self _save];
|
||
|
return YES;
|
||
|
}
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
|
||
|
- (void)_save {
|
||
|
[loginItems writeToFile:[MGMLoginItemsPath stringByExpandingTildeInPath] atomically:YES];
|
||
|
}
|
||
|
@end
|