// // PreferencesController.m // iLyrics // // Created by Kim Wittenburg on 14.06.12. // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // //TODO: Implement Auto-Lyricds Interval //TODO: #import "PreferencesController.h" #import "iLyrics.h" @implementation PreferencesController { AutoLyrics *autoLyrics; iLyrics *ilyrics; } @synthesize generalView; @synthesize autoLyricsView; @synthesize toggleAutoLyricsButton; @synthesize replaceOldCheckBox; @synthesize preferencesWindow; @synthesize generalButton; @synthesize hosterTable; -(id)init { ilyrics = [iLyrics sharediLyrics]; autoLyrics = [AutoLyrics autoLyrics]; return [super init]; } #pragma mark - #pragma mark Window Delegate Methods #define HosterDataType @"HosterDataType" -(void)awakeFromNib { if ([autoLyrics enabled]) { [self enableAutoLyrics:toggleAutoLyricsButton]; } else { [self disableAutoLyrics:toggleAutoLyricsButton]; } if ([autoLyrics replaceOldLyrics]) { [replaceOldCheckBox setState:NSOnState]; } else { [replaceOldCheckBox setState:NSOffState]; } [[preferencesWindow toolbar] setSelectedItemIdentifier:@"general"]; [self showGeneralPreferences:nil]; [hosterTable registerForDraggedTypes:[NSArray arrayWithObject:HosterDataType]]; } #pragma mark - #pragma mark Modifying hosters - (IBAction)showGeneralPreferences:(id)sender { [preferencesWindow setTitle:NSLocalizedString(@"iLyrics.preferences.text.general", @"")]; [self changeContentViewTo:generalView]; } -(IBAction)showAutoLyricsPreferences:(id)sender { [preferencesWindow setTitle:NSLocalizedString(@"iLyrics.preferences.text.auto-lyrics", @"")]; [self changeContentViewTo:autoLyricsView]; } - (IBAction)toggleAutoLyrics:(id)sender { if ([autoLyrics enabled]) { [self disableAutoLyrics:sender]; } else { [self enableAutoLyrics:sender]; } } -(void)enableAutoLyrics: (id) sender{ [autoLyrics setEnabled:YES]; [sender setTitle:NSLocalizedString(@"iLyrics.preferences.text.disableAutoLyrics", @"")]; } -(void)disableAutoLyrics: (id) sender { [autoLyrics setEnabled:NO]; [sender setTitle:NSLocalizedString(@"iLyrics.preferences.text.enableAutoLyrics", @"")]; } - (IBAction)changeAutoLyricsInterval:(id)sender { NSLog(@"%i", [sender intValue]); } - (IBAction)toggleReplaceOldLyrics:(id)sender { [autoLyrics setReplaceOldLyrics:[sender state] == NSOnState]; } - (void)changeContentViewTo: (NSView *)view { [preferencesWindow setContentView:view]; //[preferencesWindow setFrame:[view frame] display:YES animate:YES]; } #pragma mark - #pragma mark Table Data Source -(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { return [[ilyrics lyricsHosters] count]; } -(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { id hoster = [[ilyrics lyricsHosters] objectAtIndex:row]; if ([[tableColumn identifier] isEqualToString:@"hoster"]) { return [hoster name]; } else { NSDate *version = [hoster hosterVersion]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterLongStyle]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; return [dateFormatter stringFromDate:version]; } } #pragma mark Drag and Drop Hosters -(BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard { // Copy the row numbers to the pasteboard. NSData *indexData = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes]; [pboard declareTypes:[NSArray arrayWithObject:HosterDataType] owner:self]; [pboard setData:indexData forType:HosterDataType]; return YES; } - (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)op { // Add code here to validate the drop return NSDragOperationMove; } - (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation { NSPasteboard* pboard = [info draggingPasteboard]; NSData* rowData = [pboard dataForType:HosterDataType]; NSIndexSet* rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:rowData]; NSInteger dragRow = [rowIndexes firstIndex]; if (dragRow < row) { [[ilyrics lyricsHosters] insertObject:[[ilyrics lyricsHosters] objectAtIndex:dragRow] atIndex:row]; [[ilyrics lyricsHosters] removeObjectAtIndex:dragRow]; [hosterTable noteNumberOfRowsChanged]; [hosterTable reloadData]; return YES; } id draggedHoster = [[ilyrics lyricsHosters] objectAtIndex:dragRow]; [[ilyrics lyricsHosters] removeObjectAtIndex:dragRow]; [[ilyrics lyricsHosters] insertObject:draggedHoster atIndex:row]; [hosterTable noteNumberOfRowsChanged]; [hosterTable reloadData]; return YES; } @end