diff options
Diffstat (limited to 'macosx/QueueController.mm')
-rw-r--r-- | macosx/QueueController.mm | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/macosx/QueueController.mm b/macosx/QueueController.mm new file mode 100644 index 000000000..e775bb33d --- /dev/null +++ b/macosx/QueueController.mm @@ -0,0 +1,120 @@ +#include "QueueController.h" + +@implementation QueueController + +- (void) SetHandle: (hb_handle_t *) handle +{ + fHandle = handle; +} + +- (void) AddTextField: (NSString *) string rect: (NSRect *) rect +{ + NSTextField * textField; + + rect->origin.x = 10; + rect->origin.y -= 17; + rect->size.height = 17; + textField = [[NSTextField alloc] initWithFrame: *rect]; + + [textField setEditable: NO]; + [textField setSelectable: NO]; + [textField setDrawsBackground: NO]; + [textField setBordered: NO]; + [textField setStringValue: string]; + + [fTaskView addSubview: textField]; +} + +- (void) removeTask: (id) sender +{ + hb_rem( fHandle, hb_job( fHandle, [sender tag] ) ); + [self performSelectorOnMainThread: @selector( Update: ) + withObject: sender waitUntilDone: NO]; +} + +- (void) AddButton: (NSRect *) rect tag: (int) tag +{ + NSButton * button; + + rect->origin.x = rect->size.width - 90; + rect->origin.y -= 20; + rect->size.width = 100; + rect->size.height = 20; + button = [[NSButton alloc] initWithFrame: *rect]; + rect->size.width = rect->origin.x + 90; + + [button setTitle: @"Remove"]; + [button setBezelStyle: NSRoundedBezelStyle]; + [button setFont: [NSFont systemFontOfSize: + [NSFont systemFontSizeForControlSize: NSSmallControlSize]]]; + [[button cell] setControlSize: NSSmallControlSize]; + + [button setTag: tag]; + [button setTarget: self]; + [button setAction: @selector( removeTask: )]; + + [fTaskView addSubview: button]; + + NSBox * box; + + rect->origin.x = 15; + rect->origin.y -= 10; + rect->size.width -= 10; + rect->size.height = 1; + box = [[NSBox alloc] initWithFrame: *rect]; + [box setBoxType: NSBoxSeparator]; + rect->origin.y -= 10; + rect->size.width += 10; + + [fTaskView addSubview: box]; +} + +- (IBAction) Update: (id) sender +{ + int i; + hb_job_t * j; + hb_title_t * title; + + NSSize size = [fScrollView contentSize]; + int height = MAX( 20 + 125 * hb_count( fHandle ), size.height ); + [fTaskView setFrame: NSMakeRect(0,0,size.width,height)]; + + NSRect rect = NSMakeRect(10,height-10,size.width-20,10); + + NSArray * subviews = [fTaskView subviews]; + while( [subviews count] > 0 ) + { + [[subviews objectAtIndex: 0] + removeFromSuperviewWithoutNeedingDisplay]; + } + + for( i = 0; i < hb_count( fHandle ); i++ ) + { + j = hb_job( fHandle, i ); + title = j->title; + + [self AddTextField: [NSString stringWithFormat: + @"DVD: %s", title->dvd] rect: &rect]; + [self AddTextField: [NSString stringWithFormat: + @"Title: %d", title->index] rect: &rect]; + [self AddTextField: [NSString stringWithFormat: + @"Chapters: %d to %d", j->chapter_start, j->chapter_end] + rect: &rect]; + [self AddTextField: [NSString stringWithFormat: + @"Pass: %d of %d", MAX( 1, j->pass ), MIN( 2, j->pass + 1 )] + rect: &rect]; + [self AddTextField: [NSString stringWithFormat: + @"Destination: %s", j->file] rect: &rect]; + [self AddButton: &rect tag: i]; + } + + [fTaskView scrollPoint: NSMakePoint(0,height)]; + [fTaskView setNeedsDisplay: YES]; +} + +- (IBAction) ClosePanel: (id) sender +{ + [NSApp stopModal]; +} + +@end |