X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBQueueController.h;h=51e01f66dec54d12ad8f20ead45dfc5bfa994bc3;hb=c8d428d055c84eb606b2d3e946bb8d192a891e00;hp=1afd58fb104f9deb998e97fe0b0eb49ffaa75eba;hpb=22485fa138ab52503118a60a14ab2894f1058670;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h index 1afd58fb..51e01f66 100644 --- a/macosx/HBQueueController.h +++ b/macosx/HBQueueController.h @@ -1,36 +1,76 @@ /* HBQueueController This file is part of the HandBrake source code. - Homepage: . + Homepage: . It may be used under the terms of the GNU General Public License. */ -#include - +#import #include "hb.h" + @class HBController; -// HB_OUTLINE_QUEUE turns on an outline view for the queue. -#define HB_OUTLINE_QUEUE 1 + +#define HB_QUEUE_DRAGGING 0 // <--- NOT COMPLETELY FUNCTIONAL YET #define HB_OUTLINE_METRIC_CONTROLS 0 // for tweaking the outline cell spacings -@interface HBQueueController : NSObject + +//------------------------------------------------------------------------------------ +// As usual, we need to subclass NSOutlineView to handle a few special cases: +// +// (1) variable row heights during live resizes +// HBQueueOutlineView exists solely to get around a bug in variable row height outline +// views in which row heights get messed up during live resizes. See this discussion: +// http://lists.apple.com/archives/cocoa-dev/2005/Oct/msg00871.html +// However, the recommeneded fix (override drawRect:) does not work. Instead, this +// subclass implements viewDidEndLiveResize in order to recalculate all row heights. +// +// (2) prevent expanding of items during drags +// During dragging operations, we don't want outline items to expand, since a queue +// doesn't really have children items. +// +// (3) generate a drag image that incorporates more than just the first column +// By default, NSTableView only drags an image of the first column. Change this to +// drag an image of the queue's icon and desc columns. + +@interface HBQueueOutlineView : NSOutlineView +{ + +BOOL fIsDragging; + +} + +- (BOOL) isDragging; + +@end + + + + +@interface HBQueueController : NSWindowController { - hb_handle_t *fHandle; - HBController *fHBController; - NSViewAnimation *fAnimation; - BOOL fCurrentJobHidden; // YES when fCurrentJobPane has been shifted out of view (see showCurrentJobPane) - BOOL fShowsJobsAsGroups; - BOOL fShowsDetail; -#if HB_OUTLINE_QUEUE - NSMutableArray *fEncodes; // hblib's job list organized in a hierarchy. Contents are NSArrays of HBJobs. - NSMutableIndexSet *fSavedExpandedItems; - unsigned int fSavedSelectedItem; - hb_job_t *fLastKnownCurrentJob; + hb_handle_t *fQueueEncodeLibhb; // reference to libhb + HBController *fHBController; // reference to HBController + NSMutableArray *fJobGroups; // mirror image of the queue array from controller.mm + + int fEncodingQueueItem; // corresponds to the index of fJobGroups encoding item + int fPendingCount; // Number of various kinds of job groups in fJobGroups. + int fCompletedCount; + int fCanceledCount; + int fWorkingCount; + BOOL fJobGroupCountsNeedUpdating; + + BOOL fCurrentJobPaneShown; // NO when fCurrentJobPane has been shifted out of view (see showCurrentJobPane) + NSMutableIndexSet *fSavedExpandedItems; // used by save/restoreOutlineViewState to preserve which items are expanded + NSMutableIndexSet *fSavedSelectedItems; // used by save/restoreOutlineViewState to preserve which items are selected +#if HB_QUEUE_DRAGGING + NSArray *fDraggedNodes; #endif - - // +---------------fQueueWindow----------------+ + NSTimer *fAnimationTimer; // animates the icon of the current job in the queue outline view + int fAnimationIndex; // used to generate name of image used to animate the current job in the queue outline view + + // +------------------window-------------------+ // |+-------------fCurrentJobPane-------------+| // || || // || || @@ -46,8 +86,6 @@ // || || // |+-----------------------------------------+| // +-------------------------------------------+ - - IBOutlet NSWindow *fQueueWindow; // fCurrentJobPane - visible only when processing a job IBOutlet NSView *fCurrentJobPane; @@ -55,40 +93,58 @@ IBOutlet NSTextField *fJobDescTextField; IBOutlet NSProgressIndicator *fProgressBar; IBOutlet NSTextField *fProgressTextField; - + // fQueuePane - always visible; fills entire window when fCurrentJobPane is hidden IBOutlet NSView *fQueuePane; -#if HB_OUTLINE_QUEUE - IBOutlet NSOutlineView *fOutlineView; -#else - IBOutlet NSTableView *fTaskView; -#endif + IBOutlet HBQueueOutlineView *fOutlineView; IBOutlet NSTextField *fQueueCountField; + NSArray *fDraggedNodes; + BOOL fIsDragging; #if HB_OUTLINE_METRIC_CONTROLS IBOutlet NSSlider *fIndentation; // debug IBOutlet NSSlider *fSpacing; // debug #endif - + } - (void)setHandle: (hb_handle_t *)handle; - (void)setHBController: (HBController *)controller; -- (void)updateQueueUI; -- (void)updateCurrentJobUI; + +- (void)setupToolbar; + +- (void)setQueueArray: (NSMutableArray *)QueueFileArray; +- (id)outlineView:(NSOutlineView *)fOutlineView child:(NSInteger)index ofItem:(id)item; + +- (BOOL)outlineView:(NSOutlineView *)fOutlineView isItemExpandable:(id)item; + +- (BOOL)outlineView:(NSOutlineView *)fOutlineView shouldExpandItem:(id)item; + +- (NSInteger)outlineView:(NSOutlineView *)fOutlineView numberOfChildrenOfItem:(id)item; + +- (id)outlineView:(NSOutlineView *)fOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; + +- (void)outlineView:(NSOutlineView *)fOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; + +/* Animate the icon for the current encode */ +- (void) animateWorkingEncodeIconInQueue; +- (void) startAnimatingCurrentWorkingEncodeInQueue; +- (void) stopAnimatingCurrentJobGroupInQueue; +- (void)setQueueStatusString: (NSString *)statusString; - (IBAction)showQueueWindow: (id)sender; -- (IBAction)removeSelectedJob: (id)sender; -- (IBAction)cancelCurrentJob: (id)sender; -- (IBAction)showDetail: (id)sender; -- (IBAction)hideDetail: (id)sender; -- (IBAction)showJobsAsGroups: (id)sender; -- (IBAction)showJobsAsPasses: (id)sender; -- (IBAction)toggleStartCancel: (id)sender; -- (IBAction)togglePauseResume: (id)sender; + + +/* control encodes in the window */ +- (IBAction)removeSelectedQueueItem: (id)sender; +- (IBAction)revealSelectedQueueItem: (id)sender; #if HB_OUTLINE_METRIC_CONTROLS - (IBAction)imageSpacingChanged: (id)sender; - (IBAction)indentChanged: (id)sender; #endif + + + + @end