// Méthode de test pour savoir si l'application est dans le loginwindow.plist
- (BOOL)isInAutoLaunchDictionary
{
NSString *loginwindowPlist=[@"~/Library/Preferences/loginwindow.plist" stringByExpandingTildeInPath];
NSDictionary *autoLaunchedApps=[NSDictionary dictionaryWithContentsOfFile:loginwindowPlist];
NSArray *appsArray=[autoLaunchedApps objectForKey:@"AutoLaunchedApplicationDictionary"];
NSEnumerator *anEnum=[appsArray objectEnumerator];
id anObject;
while ((anObject=[anEnum nextObject])) {
if ([[[NSBundle mainBundle]bundlePath] isEqualToString:[anObject objectForKey:@"Path"]]) {
return YES;
}
}
return NO;
}
// Active/Désactive le démarrage automatique avec la session
- (void) setIsInAutoLaunchDictionary:(BOOL)value
{
int i;
NSMutableDictionary * loginDict;
NSString *itemPfad = [[NSBundle mainBundle]bundlePath];
NSMutableArray *loginItems = (NSMutableArray*)
CFPreferencesCopyValue((CFStringRef)@"AutoLaunchedApplicationDictionary"
, (CFStringRef) @"loginwindow", kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
loginItems = [[loginItems autorelease] mutableCopy];
if(value==YES)
{
loginDict = [[NSMutableDictionary alloc] init];
[loginDict setObject: itemPfad forKey: @"Path"];
[loginDict setObject: [NSNumber numberWithBool:FALSE] forKey: @"Hide"];
[loginItems addObject: loginDict];
[loginDict release];
}
else
{
for(i = 0; i < [loginItems count]; i++)
{
loginDict = [loginItems objectAtIndex: i];
if (NSOrderedSame == [(NSString *)[loginDict objectForKey:@"Path"] compare: itemPfad])
{
[loginItems removeObjectAtIndex:i];
break;
}
}
}
CFPreferencesSetValue((CFStringRef)@"AutoLaunchedApplicationDictionary",
loginItems, (CFStringRef)@"loginwindow", kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
CFPreferencesSynchronize((CFStringRef) @"loginwindow",
kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
}