diff options
-rw-r--r-- | macosx/Base.lproj/HBQueueDetailsViewController.xib | 96 | ||||
-rw-r--r-- | macosx/Base.lproj/HBQueueInfoViewController.xib | 120 | ||||
-rw-r--r-- | macosx/HBJob+UIAdditions.m | 17 | ||||
-rw-r--r-- | macosx/HBQueue.h | 2 | ||||
-rw-r--r-- | macosx/HBQueue.m | 10 | ||||
-rw-r--r-- | macosx/HBQueueController.m | 89 | ||||
-rw-r--r-- | macosx/HBQueueDetailsViewController.h | 23 | ||||
-rw-r--r-- | macosx/HBQueueDetailsViewController.m | 65 | ||||
-rw-r--r-- | macosx/HBQueueDetailsViewController.xib | 21 | ||||
-rw-r--r-- | macosx/HBQueueInfoViewController.h | 27 | ||||
-rw-r--r-- | macosx/HBQueueInfoViewController.m | 72 | ||||
-rw-r--r-- | macosx/HBQueueItem.h | 11 | ||||
-rw-r--r-- | macosx/HBQueueMultiSelectionViewController.h | 18 | ||||
-rw-r--r-- | macosx/HBQueueMultiSelectionViewController.m | 43 | ||||
-rw-r--r-- | macosx/HBQueueMultiSelectionViewController.xib | 38 | ||||
-rw-r--r-- | macosx/HBQueueTableViewController.h | 3 | ||||
-rw-r--r-- | macosx/HBQueueTableViewController.m | 9 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 44 |
18 files changed, 488 insertions, 220 deletions
diff --git a/macosx/Base.lproj/HBQueueDetailsViewController.xib b/macosx/Base.lproj/HBQueueDetailsViewController.xib deleted file mode 100644 index 278805b95..000000000 --- a/macosx/Base.lproj/HBQueueDetailsViewController.xib +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> - <dependencies> - <deployment identifier="macosx"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <objects> - <customObject id="-2" userLabel="File's Owner" customClass="HBQueueDetailsViewController"> - <connections> - <outlet property="detailsLabel" destination="tBk-3B-YhZ" id="UvN-Op-Nf2"/> - <outlet property="scrollView" destination="jKW-nH-vE3" id="DWg-bJ-i8M"/> - <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/> - </connections> - </customObject> - <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> - <customObject id="-3" userLabel="Application" customClass="NSObject"/> - <customView id="Hz6-mo-xeY"> - <rect key="frame" x="0.0" y="0.0" width="480" height="98"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> - <subviews> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Z14-gh-hWn"> - <rect key="frame" x="402" y="13" width="64" height="32"/> - <buttonCell key="cell" type="push" title="Edit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erY-5X-50l"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <connections> - <action selector="editItem:" target="-2" id="ozj-G7-6d5"/> - <binding destination="-2" name="enabled" keyPath="self.item" id="Nss-YT-PPX"> - <dictionary key="options"> - <string key="NSValueTransformerName">NSIsNotNil</string> - </dictionary> - </binding> - </connections> - </button> - <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="jKW-nH-vE3"> - <rect key="frame" x="20" y="61" width="440" height="17"/> - <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Nz1-nG-orF"> - <rect key="frame" x="0.0" y="0.0" width="440" height="17"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tBk-3B-YhZ"> - <rect key="frame" x="0.0" y="0.0" width="440" height="17"/> - <textFieldCell key="cell" selectable="YES" allowsUndo="NO" title="Multiline Label" allowsEditingTextAttributes="YES" id="cFx-4D-4X9"> - <font key="font" usesAppearanceFont="YES"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - </subviews> - <constraints> - <constraint firstAttribute="trailing" secondItem="tBk-3B-YhZ" secondAttribute="trailing" constant="2" id="Jct-L0-ooa"/> - <constraint firstItem="tBk-3B-YhZ" firstAttribute="leading" secondItem="Nz1-nG-orF" secondAttribute="leading" constant="2" id="a3e-oE-U6F"/> - <constraint firstItem="tBk-3B-YhZ" firstAttribute="top" secondItem="Nz1-nG-orF" secondAttribute="top" id="gKz-v4-CFb"/> - </constraints> - </clipView> - <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Lon-kY-Grs"> - <rect key="frame" x="-100" y="-100" width="444" height="16"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="vPy-U2-zcL"> - <rect key="frame" x="429" y="1" width="16" height="17"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - </scrollView> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oq4-g0-srt"> - <rect key="frame" x="330" y="13" width="75" height="32"/> - <buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="hgl-N3-x4S"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <connections> - <action selector="resetItem:" target="-2" id="42R-t4-FxO"/> - <binding destination="-2" name="enabled" keyPath="self.item" id="L2a-Rh-3D1"> - <dictionary key="options"> - <string key="NSValueTransformerName">NSIsNotNil</string> - </dictionary> - </binding> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="Z14-gh-hWn" firstAttribute="leading" secondItem="oq4-g0-srt" secondAttribute="trailing" constant="9" id="3oM-tb-KiT"/> - <constraint firstItem="oq4-g0-srt" firstAttribute="firstBaseline" secondItem="Z14-gh-hWn" secondAttribute="firstBaseline" id="95H-sb-RO5"/> - <constraint firstAttribute="trailing" secondItem="jKW-nH-vE3" secondAttribute="trailing" constant="20" id="Cdo-eU-VL6"/> - <constraint firstAttribute="bottom" secondItem="Z14-gh-hWn" secondAttribute="bottom" constant="20" id="CwL-gc-KKJ"/> - <constraint firstItem="Z14-gh-hWn" firstAttribute="top" secondItem="jKW-nH-vE3" secondAttribute="bottom" constant="20" id="TC5-6s-DmD"/> - <constraint firstItem="jKW-nH-vE3" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="TWB-aM-yau"/> - <constraint firstAttribute="trailing" secondItem="Z14-gh-hWn" secondAttribute="trailing" constant="20" id="tSm-Qq-U0q"/> - <constraint firstItem="jKW-nH-vE3" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="zXd-jW-bKU"/> - </constraints> - <point key="canvasLocation" x="140" y="306.5"/> - </customView> - </objects> -</document> diff --git a/macosx/Base.lproj/HBQueueInfoViewController.xib b/macosx/Base.lproj/HBQueueInfoViewController.xib new file mode 100644 index 000000000..59cdb20c1 --- /dev/null +++ b/macosx/Base.lproj/HBQueueInfoViewController.xib @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> + <dependencies> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="HBQueueInfoViewController"> + <connections> + <outlet property="scrollView" destination="MXt-Cb-20x" id="dGY-tf-zF7"/> + <outlet property="statisticsLabel" destination="Mm9-nD-res" id="I4f-MN-amu"/> + <outlet property="summaryLabel" destination="3EV-1F-TH6" id="Mtc-l6-0eA"/> + <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <customView id="Hz6-mo-xeY"> + <rect key="frame" x="0.0" y="0.0" width="480" height="335"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> + <subviews> + <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Z14-gh-hWn"> + <rect key="frame" x="402" y="13" width="64" height="32"/> + <buttonCell key="cell" type="push" title="Edit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erY-5X-50l"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="editItem:" target="-2" id="ozj-G7-6d5"/> + </connections> + </button> + <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oq4-g0-srt"> + <rect key="frame" x="330" y="13" width="75" height="32"/> + <buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="hgl-N3-x4S"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="resetItem:" target="-2" id="42R-t4-FxO"/> + </connections> + </button> + <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MXt-Cb-20x"> + <rect key="frame" x="0.0" y="49" width="480" height="286"/> + <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="kkx-XF-sYr" customClass="HBFlippedClipView"> + <rect key="frame" x="0.0" y="0.0" width="480" height="286"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view translatesAutoresizingMaskIntoConstraints="NO" id="Akt-r1-6fP"> + <rect key="frame" x="0.0" y="228" width="480" height="58"/> + <subviews> + <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VVC-g8-nGU"> + <rect key="frame" x="8" y="8" width="464" height="42"/> + <subviews> + <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Mm9-nD-res" userLabel="Statistics"> + <rect key="frame" x="-2" y="25" width="468" height="17"/> + <textFieldCell key="cell" selectable="YES" allowsUndo="NO" title="Statistics" allowsEditingTextAttributes="YES" id="S15-bh-qKU"> + <font key="font" usesAppearanceFont="YES"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3EV-1F-TH6" userLabel="Summary"> + <rect key="frame" x="-2" y="0.0" width="468" height="17"/> + <textFieldCell key="cell" selectable="YES" allowsUndo="NO" title="Summary" allowsEditingTextAttributes="YES" id="GaR-qk-UW7"> + <font key="font" usesAppearanceFont="YES"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + </subviews> + <visibilityPriorities> + <integer value="1000"/> + <integer value="1000"/> + </visibilityPriorities> + <customSpacing> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + </customSpacing> + </stackView> + </subviews> + <constraints> + <constraint firstItem="VVC-g8-nGU" firstAttribute="top" secondItem="Akt-r1-6fP" secondAttribute="top" constant="8" id="37f-us-42T"/> + <constraint firstAttribute="bottom" secondItem="VVC-g8-nGU" secondAttribute="bottom" constant="8" id="7lz-sW-xUb"/> + <constraint firstItem="VVC-g8-nGU" firstAttribute="leading" secondItem="Akt-r1-6fP" secondAttribute="leading" constant="8" id="Ggq-bx-Bfy"/> + <constraint firstAttribute="trailing" secondItem="VVC-g8-nGU" secondAttribute="trailing" constant="8" id="xlB-d0-saX"/> + </constraints> + </view> + </subviews> + <constraints> + <constraint firstItem="Akt-r1-6fP" firstAttribute="top" secondItem="kkx-XF-sYr" secondAttribute="top" id="Lg7-YD-Gtq"/> + <constraint firstAttribute="trailing" secondItem="Akt-r1-6fP" secondAttribute="trailing" id="gsL-Kr-BmB"/> + <constraint firstItem="Akt-r1-6fP" firstAttribute="leading" secondItem="kkx-XF-sYr" secondAttribute="leading" id="l27-Nt-rQQ"/> + </constraints> + </clipView> + <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="00r-Zo-xeU"> + <rect key="frame" x="-100" y="-100" width="478" height="16"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="ied-bM-m6x"> + <rect key="frame" x="464" y="0.0" width="16" height="286"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + </scrollView> + </subviews> + <constraints> + <constraint firstItem="MXt-Cb-20x" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="3k7-0G-h1x"/> + <constraint firstItem="Z14-gh-hWn" firstAttribute="leading" secondItem="oq4-g0-srt" secondAttribute="trailing" constant="9" id="3oM-tb-KiT"/> + <constraint firstItem="oq4-g0-srt" firstAttribute="firstBaseline" secondItem="Z14-gh-hWn" secondAttribute="firstBaseline" id="95H-sb-RO5"/> + <constraint firstAttribute="bottom" secondItem="Z14-gh-hWn" secondAttribute="bottom" constant="20" id="CwL-gc-KKJ"/> + <constraint firstAttribute="trailing" secondItem="MXt-Cb-20x" secondAttribute="trailing" id="Tap-ZL-CDW"/> + <constraint firstItem="Z14-gh-hWn" firstAttribute="top" secondItem="MXt-Cb-20x" secondAttribute="bottom" constant="8" id="lF5-Ch-EcR"/> + <constraint firstItem="MXt-Cb-20x" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="sYg-Vz-4jY"/> + <constraint firstAttribute="trailing" secondItem="Z14-gh-hWn" secondAttribute="trailing" constant="20" id="tSm-Qq-U0q"/> + <constraint firstItem="oq4-g0-srt" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="y0g-z9-6Sn"/> + </constraints> + <point key="canvasLocation" x="-125" y="239"/> + </customView> + </objects> +</document> diff --git a/macosx/HBJob+UIAdditions.m b/macosx/HBJob+UIAdditions.m index 28c7edfe5..a13670499 100644 --- a/macosx/HBJob+UIAdditions.m +++ b/macosx/HBJob+UIAdditions.m @@ -660,20 +660,32 @@ static NSDictionary *shortHeightAttr; { [attrString appendAttributedString:[self presetAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + [attrString appendAttributedString:[self sourceAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + [attrString appendAttributedString:[self destinationAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + [attrString appendAttributedString:[self formatAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + [attrString appendAttributedString:[self rangeAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + [attrString appendAttributedString:[self dimensionsAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; - [attrString appendAttributedString:[self filtersAttributedDescription]]; - [attrString appendString:@"\n" withAttributes: detailAttr]; + + NSAttributedString *filters = [self filtersAttributedDescription]; + if (filters.length) + { + [attrString appendAttributedString:[self filtersAttributedDescription]]; + [attrString appendString:@"\n" withAttributes: detailAttr]; + } + [attrString appendAttributedString:[self videoAttributedDescription]]; [attrString appendString:@"\n" withAttributes: detailAttr]; + if (self.audio.countOfTracks > 1) { [attrString appendAttributedString:[self audioAttributedDescription]]; @@ -690,7 +702,6 @@ static NSDictionary *shortHeightAttr; return attrString; } - #pragma mark - Short descriptions - (NSString *)videoShortDescription diff --git a/macosx/HBQueue.h b/macosx/HBQueue.h index d62b25033..d1205b6fe 100644 --- a/macosx/HBQueue.h +++ b/macosx/HBQueue.h @@ -72,7 +72,7 @@ extern NSString * const HBQueueItemNotificationItemKey; // HBQueueI - (void)removeNotWorkingItems; - (void)removeCompletedItems; -- (void)resetItemsStateAtIndexes:(NSIndexSet *)indexes; +- (void)resetItemsAtIndexes:(NSIndexSet *)indexes; - (void)resetAllItems; - (void)resetFailedItems; diff --git a/macosx/HBQueue.m b/macosx/HBQueue.m index 846f13c24..a294c1104 100644 --- a/macosx/HBQueue.m +++ b/macosx/HBQueue.m @@ -318,7 +318,7 @@ NSString * const HBQueueItemNotificationItemKey = @"HBQueueItemNotificationItemK [self.items commit]; } -- (void)resetItemsStateAtIndexes:(NSIndexSet *)indexes +- (void)resetItemsAtIndexes:(NSIndexSet *)indexes { if ([self.items beginTransaction] == HBDistributedArrayContentReload) { @@ -352,7 +352,7 @@ NSString * const HBQueueItemNotificationItemKey = @"HBQueueItemNotificationItemK NSIndexSet *indexes = [self.items indexesOfObjectsUsingBlock:^BOOL(HBQueueItem *item) { return (item.state != HBQueueItemStateWorking); }]; - [self resetItemsStateAtIndexes:indexes]; + [self resetItemsAtIndexes:indexes]; [self.items commit]; } @@ -362,7 +362,7 @@ NSString * const HBQueueItemNotificationItemKey = @"HBQueueItemNotificationItemK NSIndexSet *indexes = [self.items indexesOfObjectsUsingBlock:^BOOL(HBQueueItem *item) { return (item.state == HBQueueItemStateFailed); }]; - [self resetItemsStateAtIndexes:indexes]; + [self resetItemsAtIndexes:indexes]; [self.items commit]; } @@ -634,8 +634,8 @@ NSString * const HBQueueItemNotificationItemKey = @"HBQueueItemNotificationItemK [NSNotificationCenter.defaultCenter postNotificationName:HBQueueProgressNotification object:self userInfo:@{HBQueueProgressNotificationPercentKey: @1.0, HBQueueProgressNotificationInfoKey: info}]; - NSInteger index = [self.items indexOfObject:item]; - NSIndexSet *indexes = index > -1 ? [NSIndexSet indexSetWithIndex:index] : [NSIndexSet indexSet]; + NSUInteger index = [self.items indexOfObject:item]; + NSIndexSet *indexes = index != NSNotFound ? [NSIndexSet indexSetWithIndex:index] : [NSIndexSet indexSet]; [NSNotificationCenter.defaultCenter postNotificationName:HBQueueDidCompleteItemNotification object:self userInfo:@{HBQueueItemNotificationItemKey: item, HBQueueItemNotificationIndexesKey: indexes}]; diff --git a/macosx/HBQueueController.m b/macosx/HBQueueController.m index 259f251e7..57fea10cb 100644 --- a/macosx/HBQueueController.m +++ b/macosx/HBQueueController.m @@ -11,6 +11,8 @@ #import "HBQueue.h" #import "HBQueueTableViewController.h" #import "HBQueueDetailsViewController.h" +#import "HBQueueInfoViewController.h" +#import "HBQueueMultiSelectionViewController.h" #import "HBDockTile.h" #import "HBPreferencesController.h" @@ -25,7 +27,9 @@ static void *HBControllerQueueCoreContext = &HBControllerQueueCoreContext; @property (weak) IBOutlet NSSplitView *splitView; @property (nonatomic) NSSplitViewController *splitViewController; @property (nonatomic) HBQueueTableViewController *tableViewController; -@property (nonatomic) HBQueueDetailsViewController *detailsViewController; +@property (nonatomic) NSViewController *containerViewController; +@property (nonatomic) HBQueueInfoViewController *infoViewController; +@property (nonatomic) HBQueueMultiSelectionViewController *multiSelectionViewController; /// Whether the window is visible or occluded, /// useful to avoid updating the UI needlessly @@ -128,14 +132,16 @@ static void *HBControllerQueueCoreContext = &HBControllerQueueCoreContext; _splitViewController.splitView.vertical = YES; _tableViewController = [[HBQueueTableViewController alloc] initWithQueue:self.queue delegate:self]; - _detailsViewController = [[HBQueueDetailsViewController alloc] initWithDelegate:self]; + _containerViewController = [[HBQueueDetailsViewController alloc] init]; + _infoViewController = [[HBQueueInfoViewController alloc] initWithDelegate:self]; + _multiSelectionViewController = [[HBQueueMultiSelectionViewController alloc] init]; NSSplitViewItem *tableItem = [NSSplitViewItem splitViewItemWithViewController:_tableViewController]; tableItem.minimumThickness = 160; [_splitViewController addSplitViewItem:tableItem]; - NSSplitViewItem *detailsItem = [NSSplitViewItem splitViewItemWithViewController:_detailsViewController]; + NSSplitViewItem *detailsItem = [NSSplitViewItem splitViewItemWithViewController:_containerViewController]; detailsItem.canCollapse = YES; detailsItem.minimumThickness = 240; @@ -155,6 +161,8 @@ static void *HBControllerQueueCoreContext = &HBControllerQueueCoreContext; [self.queue addObserver:self forKeyPath:@"pendingItemsCount" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial context:HBControllerQueueCoreContext]; + + [self tableViewDidSelectItemsAtIndexes:[NSIndexSet indexSet]]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context @@ -173,18 +181,21 @@ static void *HBControllerQueueCoreContext = &HBControllerQueueCoreContext; NSString *string; if (self.queue.pendingItemsCount == 0) { - string = NSLocalizedString(@"No encode pending", @"Queue status"); - } - else if (self.queue.pendingItemsCount == 1) - { - string = [NSString stringWithFormat: NSLocalizedString(@"%d encode pending", @"Queue status"), self.queue.pendingItemsCount]; + self.window.title = NSLocalizedString(@"Queue", @"Queue window title"); } else { - string = [NSString stringWithFormat: NSLocalizedString(@"%d encodes pending", @"Queue status"), self.queue.pendingItemsCount]; - } + if (self.queue.pendingItemsCount == 1) + { + string = [NSString stringWithFormat: NSLocalizedString(@"%d encode pending", @"Queue status"), self.queue.pendingItemsCount]; + } + else + { + string = [NSString stringWithFormat: NSLocalizedString(@"%d encodes pending", @"Queue status"), self.queue.pendingItemsCount]; + } - self.window.title = [NSString stringWithFormat: NSLocalizedString(@"Queue (%@)", @"Queue window title"), string]; + self.window.title = [NSString stringWithFormat: NSLocalizedString(@"Queue (%@)", @"Queue window title"), string]; + } } else { @@ -449,6 +460,11 @@ static void *HBControllerQueueCoreContext = &HBControllerQueueCoreContext; [self.queue.items commit]; } +- (void)resetQueueItemsAtIndexes:(NSIndexSet *)indexes +{ + [self.queue resetItemsAtIndexes:indexes]; +} + #pragma mark - Encode Done Actions NSString * const HBQueueItemNotificationPathKey = @"HBQueueItemNotificationPathKey"; @@ -743,9 +759,40 @@ NSString * const HBQueueItemNotificationPathKey = @"HBQueueItemNotificationPathK #pragma mark - table view controller delegate -- (void)tableViewDidSelectItem:(HBQueueItem *)item +- (void)tableViewDidSelectItemsAtIndexes:(NSIndexSet *)indexes { - self.detailsViewController.item = item; + NSUInteger count = indexes.count; + + if (count != 1) + { + self.multiSelectionViewController.count = count; + [self switchToViewController:self.multiSelectionViewController]; + } + else + { + NSArray<HBQueueItem *> *items = [self.queue.items objectsAtIndexes:indexes]; + self.infoViewController.item = items.firstObject; + [self switchToViewController:self.infoViewController]; + } +} + +- (void)switchToViewController:(NSViewController *)viewController +{ + NSViewController *firstChild = self.containerViewController.childViewControllers.firstObject; + + if (firstChild != viewController) + { + if (firstChild) + { + [firstChild.view removeFromSuperviewWithoutNeedingDisplay]; + [firstChild removeFromParentViewController]; + } + + [self.containerViewController addChildViewController:viewController]; + viewController.view.frame = self.containerViewController.view.bounds; + viewController.view.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; + [self.containerViewController.view addSubview:viewController.view]; + } } - (void)tableViewEditItem:(HBQueueItem *)item @@ -753,18 +800,26 @@ NSString * const HBQueueItemNotificationPathKey = @"HBQueueItemNotificationPathK [self editQueueItem:item]; } -- (void)tableViewRemoveItemsAtIndexes:(nonnull NSIndexSet *)indexes { +- (void)tableViewRemoveItemsAtIndexes:(nonnull NSIndexSet *)indexes +{ [self removeQueueItemsAtIndexes:indexes]; } -- (void)detailsViewEditItem:(nonnull HBQueueItem *)item { - [self editQueueItem:item]; +- (void)tableViewResetItemsAtIndexes:(nonnull NSIndexSet *)indexes { + [self resetQueueItemsAtIndexes:indexes]; } -- (void)detailsViewResetItem:(nonnull HBQueueItem *)item { +- (void)detailsViewEditItem:(nonnull HBQueueItem *)item +{ [self editQueueItem:item]; } +- (void)detailsViewResetItem:(nonnull HBQueueItem *)item +{ + NSUInteger index = [self.queue.items indexOfObject:item]; + [self resetQueueItemsAtIndexes:[NSIndexSet indexSetWithIndex:index]]; +} + - (IBAction)resetAll:(id)sender { [self.queue resetAllItems]; diff --git a/macosx/HBQueueDetailsViewController.h b/macosx/HBQueueDetailsViewController.h index 8fca10a1a..2aa7edbb1 100644 --- a/macosx/HBQueueDetailsViewController.h +++ b/macosx/HBQueueDetailsViewController.h @@ -1,27 +1,16 @@ -/* HBQueueDetailsViewController.h $ - - This file is part of the HandBrake source code. - Homepage: <http://handbrake.fr/>. - It may be used under the terms of the GNU General Public License. */ +// +// HBDetailsViewController.h +// HandBrake +// +// Created by Damiano Galassi on 27/07/2019. +// #import <Cocoa/Cocoa.h> -#import "HBQueueItem.h" NS_ASSUME_NONNULL_BEGIN -@protocol HBQueueDetailsViewControllerDelegate - -- (void)detailsViewEditItem:(HBQueueItem *)item; -- (void)detailsViewResetItem:(HBQueueItem *)item; - -@end - @interface HBQueueDetailsViewController : NSViewController -- (instancetype)initWithDelegate:(id<HBQueueDetailsViewControllerDelegate>)delegate; - -@property (nonatomic, nullable) HBQueueItem *item; - @end NS_ASSUME_NONNULL_END diff --git a/macosx/HBQueueDetailsViewController.m b/macosx/HBQueueDetailsViewController.m index a779346e8..335ffd770 100644 --- a/macosx/HBQueueDetailsViewController.m +++ b/macosx/HBQueueDetailsViewController.m @@ -1,65 +1,12 @@ -/* HBQueueDetailsViewController.m $ - - This file is part of the HandBrake source code. - Homepage: <http://handbrake.fr/>. - It may be used under the terms of the GNU General Public License. */ +// +// HBDetailsViewController.m +// HandBrake +// +// Created by Damiano Galassi on 27/07/2019. +// #import "HBQueueDetailsViewController.h" -@interface HBQueueDetailsViewController () - -@property (weak) IBOutlet NSTextField *detailsLabel; -@property (weak) IBOutlet NSScrollView *scrollView; - -@property (weak) id<HBQueueDetailsViewControllerDelegate> delegate; - -@end - @implementation HBQueueDetailsViewController -- (NSString *)nibName -{ - return @"HBQueueDetailsViewController"; -} - -- (instancetype)initWithDelegate:(id<HBQueueDetailsViewControllerDelegate>)delegate -{ - self = [super init]; - if (self) - { - _delegate = delegate; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.item = nil; -} - -- (void)setItem:(HBQueueItem *)item -{ - _item = item; - if (item) - { - self.detailsLabel.attributedStringValue = item.attributedDescription; - [self.scrollView flashScrollers]; - } - else - { - self.detailsLabel.stringValue = NSLocalizedString(@"No job selected", @""); - } -} - -- (IBAction)editItem:(id)sender -{ - [self.delegate detailsViewEditItem:self.item]; -} - -- (IBAction)resetItem:(id)sender -{ - [self.delegate detailsViewResetItem:self.item]; -} - - @end diff --git a/macosx/HBQueueDetailsViewController.xib b/macosx/HBQueueDetailsViewController.xib new file mode 100644 index 000000000..00bd188d8 --- /dev/null +++ b/macosx/HBQueueDetailsViewController.xib @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> + <dependencies> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="HBQueueDetailsViewController"> + <connections> + <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <customView id="Hz6-mo-xeY"> + <rect key="frame" x="0.0" y="0.0" width="480" height="272"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> + </customView> + </objects> +</document> diff --git a/macosx/HBQueueInfoViewController.h b/macosx/HBQueueInfoViewController.h new file mode 100644 index 000000000..0fcc747db --- /dev/null +++ b/macosx/HBQueueInfoViewController.h @@ -0,0 +1,27 @@ +/* HBQueueDetailsViewController.h $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import <Cocoa/Cocoa.h> +#import "HBQueueItem.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol HBQueueDetailsViewControllerDelegate + +- (void)detailsViewEditItem:(HBQueueItem *)item; +- (void)detailsViewResetItem:(HBQueueItem *)item; + +@end + +@interface HBQueueInfoViewController : NSViewController + +- (instancetype)initWithDelegate:(id<HBQueueDetailsViewControllerDelegate>)delegate; + +@property (nonatomic) HBQueueItem *item; + +@end + +NS_ASSUME_NONNULL_END diff --git a/macosx/HBQueueInfoViewController.m b/macosx/HBQueueInfoViewController.m new file mode 100644 index 000000000..1ae88bfc8 --- /dev/null +++ b/macosx/HBQueueInfoViewController.m @@ -0,0 +1,72 @@ +/* HBQueueDetailsViewController.m $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import "HBQueueInfoViewController.h" + +@interface HBQueueInfoViewController () + +@property (weak) IBOutlet NSTextField *summaryLabel; +@property (weak) IBOutlet NSTextField *statisticsLabel; +@property (weak) IBOutlet NSScrollView *scrollView; + +@property (weak) id<HBQueueDetailsViewControllerDelegate> delegate; + +@end + +@implementation HBQueueInfoViewController + +- (instancetype)initWithDelegate:(id<HBQueueDetailsViewControllerDelegate>)delegate +{ + self = [super init]; + if (self) + { + _delegate = delegate; + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self updateLabels]; +} + +- (void)updateLabels +{ + if (self.item) + { + self.statisticsLabel.hidden = self.item.endedDate == nil; + self.summaryLabel.hidden = NO; + + self.statisticsLabel.attributedStringValue = self.item.attributedStatistics; + self.summaryLabel.attributedStringValue = self.item.attributedDescription; + + [self.scrollView flashScrollers]; + } + else + { + self.statisticsLabel.hidden = YES; + self.summaryLabel.hidden = YES; + } +} + +- (void)setItem:(HBQueueItem *)item +{ + _item = item; + [self updateLabels]; +} + +- (IBAction)editItem:(id)sender +{ + [self.delegate detailsViewEditItem:self.item]; +} + +- (IBAction)resetItem:(id)sender +{ + [self.delegate detailsViewResetItem:self.item]; +} + + +@end diff --git a/macosx/HBQueueItem.h b/macosx/HBQueueItem.h index 13ad6c094..535d20a17 100644 --- a/macosx/HBQueueItem.h +++ b/macosx/HBQueueItem.h @@ -27,6 +27,8 @@ typedef NS_ENUM(NSUInteger, HBQueueItemState) { - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithJob:(HBJob *)job; +@property (nonatomic, readonly) HBJob *job; + /// Current state of the job. @property (nonatomic, readwrite) HBQueueItemState state; @@ -42,9 +44,6 @@ typedef NS_ENUM(NSUInteger, HBQueueItemState) { /// The file URL at which the new file will be created. @property (nonatomic, readonly, copy) NSURL *completeOutputURL; -@property (nonatomic, readonly) NSAttributedString *attributedTitleDescription; -@property (nonatomic, readonly) NSAttributedString *attributedDescription; - @property (nonatomic) NSTimeInterval encodeDuration; @property (nonatomic) NSTimeInterval pauseDuration; @@ -54,7 +53,11 @@ typedef NS_ENUM(NSUInteger, HBQueueItemState) { - (void)pausedAtDate:(NSDate *)date; - (void)resumedAtDate:(NSDate *)date; -@property (nonatomic, readonly) HBJob *job; +@property (nonatomic, readonly) NSAttributedString *attributedTitleDescription; +@property (nonatomic, readonly) NSAttributedString *attributedDescription; + +@property (nonatomic, readonly) NSAttributedString *attributedStatistics; + @end diff --git a/macosx/HBQueueMultiSelectionViewController.h b/macosx/HBQueueMultiSelectionViewController.h new file mode 100644 index 000000000..898c0383e --- /dev/null +++ b/macosx/HBQueueMultiSelectionViewController.h @@ -0,0 +1,18 @@ +// +// HBQueueEmptyViewController.h +// HandBrake +// +// Created by Damiano Galassi on 27/07/2019. +// + +#import <Cocoa/Cocoa.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface HBQueueMultiSelectionViewController : NSViewController + +@property (nonatomic) NSUInteger count; + +@end + +NS_ASSUME_NONNULL_END diff --git a/macosx/HBQueueMultiSelectionViewController.m b/macosx/HBQueueMultiSelectionViewController.m new file mode 100644 index 000000000..122b6ddbd --- /dev/null +++ b/macosx/HBQueueMultiSelectionViewController.m @@ -0,0 +1,43 @@ +// +// HBQueueEmptyViewController.m +// HandBrake +// +// Created by Damiano Galassi on 27/07/2019. +// + +#import "HBQueueMultiSelectionViewController.h" + +@interface HBQueueMultiSelectionViewController () + +@property (weak) IBOutlet NSTextField *label; + +@end + +@implementation HBQueueMultiSelectionViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self updateLabels]; +} + +- (void)updateLabels +{ + if (self.count == 0) + { + self.label.stringValue = NSLocalizedString(@"No job selected", @""); + } + else + { + self.label.stringValue = [NSString stringWithFormat:NSLocalizedString(@"%llu jobs selected", @""), self.count]; + } + +} + +- (void)setCount:(NSUInteger)count +{ + _count = count; + [self updateLabels]; +} + +@end diff --git a/macosx/HBQueueMultiSelectionViewController.xib b/macosx/HBQueueMultiSelectionViewController.xib new file mode 100644 index 000000000..042a322d7 --- /dev/null +++ b/macosx/HBQueueMultiSelectionViewController.xib @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> + <dependencies> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="HBQueueMultiSelectionViewController"> + <connections> + <outlet property="label" destination="PsT-Ew-eqp" id="85F-q4-sAD"/> + <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <customView id="Hz6-mo-xeY"> + <rect key="frame" x="0.0" y="0.0" width="481" height="272"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> + <subviews> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="PsT-Ew-eqp"> + <rect key="frame" x="222" y="128" width="37" height="17"/> + <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="kIU-Z4-yWH"> + <font key="font" usesAppearanceFont="YES"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + </subviews> + <constraints> + <constraint firstItem="PsT-Ew-eqp" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="Bbn-jl-bNV"/> + <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="PsT-Ew-eqp" secondAttribute="trailing" constant="8" id="GDs-VY-p4Z"/> + <constraint firstItem="PsT-Ew-eqp" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="8" id="fHW-CC-eUk"/> + <constraint firstItem="PsT-Ew-eqp" firstAttribute="centerY" secondItem="Hz6-mo-xeY" secondAttribute="centerY" id="uzh-dE-ILE"/> + </constraints> + </customView> + </objects> +</document> diff --git a/macosx/HBQueueTableViewController.h b/macosx/HBQueueTableViewController.h index 95ab53ac7..0b109c283 100644 --- a/macosx/HBQueueTableViewController.h +++ b/macosx/HBQueueTableViewController.h @@ -14,8 +14,9 @@ NS_ASSUME_NONNULL_BEGIN @protocol HBQueueTableViewControllerDelegate -- (void)tableViewDidSelectItem:(nullable HBQueueItem *)item; +- (void)tableViewDidSelectItemsAtIndexes:(NSIndexSet *)indexes; - (void)tableViewEditItem:(HBQueueItem *)item; +- (void)tableViewResetItemsAtIndexes:(NSIndexSet *)indexes; - (void)tableViewRemoveItemsAtIndexes:(NSIndexSet *)indexes; @end diff --git a/macosx/HBQueueTableViewController.m b/macosx/HBQueueTableViewController.m index 9ced3c216..8dc41ec1f 100644 --- a/macosx/HBQueueTableViewController.m +++ b/macosx/HBQueueTableViewController.m @@ -152,7 +152,7 @@ NSIndexSet *targetedRows = [self.tableView targetedRowIndexes]; if (targetedRows.count) { - [self.queue resetItemsStateAtIndexes:targetedRows]; + [self.delegate tableViewResetItemsAtIndexes:targetedRows]; } } @@ -243,7 +243,7 @@ - (void)removeQueueItem:(nonnull HBQueueItem *)item { NSUInteger index = [self.queue.items indexOfObject:item]; - [self.queue removeItemAtIndex:index]; + [self.delegate tableViewRemoveItemsAtIndexes:[NSIndexSet indexSetWithIndex:index]]; } - (void)revealQueueItem:(nonnull HBQueueItem *)item @@ -255,9 +255,8 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification { - NSInteger selectedRow = self.tableView.selectedRow; - HBQueueItem *selectedItem = selectedRow > -1 ? self.queue.items[selectedRow] : nil; - [self.delegate tableViewDidSelectItem:selectedItem]; + NSIndexSet *indexes = self.tableView.selectedRowIndexes; + [self.delegate tableViewDidSelectItemsAtIndexes:indexes]; } - (void)HB_deleteSelectionFromTableView:(NSTableView *)tableView diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index 7df67155b..bec82acd1 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -202,12 +202,12 @@ A955128B1A320B02001BFC6F /* libjansson.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A95512881A320A12001BFC6F /* libjansson.a */; }; A957EBCD218DBE5900007988 /* HBAutoNamer.m in Sources */ = {isa = PBXBuildFile; fileRef = A957EBCC218DBE5900007988 /* HBAutoNamer.m */; }; A958EAC222E24D6400D83AF4 /* HBQueueTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A958EAC422E24D6400D83AF4 /* HBQueueTableViewController.xib */; }; - A958EAC522E24D6800D83AF4 /* HBQueueDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A958EAC722E24D6800D83AF4 /* HBQueueDetailsViewController.xib */; }; + A958EAC522E24D6800D83AF4 /* HBQueueInfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A958EAC722E24D6800D83AF4 /* HBQueueInfoViewController.xib */; }; A95BA15D220C968500A2F9F9 /* HBQueueItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A95BA15C220C968500A2F9F9 /* HBQueueItem.m */; }; A95BA161220CA5DB00A2F9F9 /* HBDistributedArray.m in Sources */ = {isa = PBXBuildFile; fileRef = A95BA160220CA5DB00A2F9F9 /* HBDistributedArray.m */; }; A95BC1E71CD2548A008D6A33 /* volHighTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A95BC1E51CD2548A008D6A33 /* volHighTemplate.pdf */; }; A95BC1E81CD2548A008D6A33 /* volLowTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A95BC1E61CD2548A008D6A33 /* volLowTemplate.pdf */; }; - A96127DF22E0994E0086E6DC /* HBQueueDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96127DD22E0994E0086E6DC /* HBQueueDetailsViewController.m */; }; + A96127DF22E0994E0086E6DC /* HBQueueInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96127DD22E0994E0086E6DC /* HBQueueInfoViewController.m */; }; A96127E422E09ADD0086E6DC /* HBQueueTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96127E222E09ADD0086E6DC /* HBQueueTableViewController.m */; }; A96664B01CCE45BF00DA4A57 /* HBPlayerHUDController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96664AE1CCE45BF00DA4A57 /* HBPlayerHUDController.m */; }; A96664B51CCE48F700DA4A57 /* HBPictureHUDController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96664B31CCE48F700DA4A57 /* HBPictureHUDController.m */; }; @@ -223,6 +223,10 @@ A973E10C216E74E900D498EC /* HBThumbnailItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = A973E10B216E74E900D498EC /* HBThumbnailItemView.m */; }; A975B02220F7AF29004675CC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A975B02020F7AF29004675CC /* Localizable.strings */; }; A97ECB8222E1D85500570935 /* HBQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = A97ECB8122E1D85500570935 /* HBQueue.m */; }; + A97ED7F522EC5BE900AEF29B /* HBQueueMultiSelectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A97ED7F322EC5BE900AEF29B /* HBQueueMultiSelectionViewController.m */; }; + A97ED7F622EC5BE900AEF29B /* HBQueueMultiSelectionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A97ED7F422EC5BE900AEF29B /* HBQueueMultiSelectionViewController.xib */; }; + A97ED7FB22EC5E9300AEF29B /* HBQueueDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A97ED7F922EC5E9300AEF29B /* HBQueueDetailsViewController.m */; }; + A97ED7FC22EC5E9300AEF29B /* HBQueueDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A97ED7FA22EC5E9300AEF29B /* HBQueueDetailsViewController.xib */; }; A98036CD1CCA91DD007661AA /* HBAVPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A98036CC1CCA91DD007661AA /* HBAVPlayer.m */; }; A98B8E241C7DD2A200B810C9 /* HBPresetCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = A997D8EB1A4ABB0900E19B6F /* HBPresetCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; A98C29C41977B10600AF5DED /* HBLanguagesSelection.m in Sources */ = {isa = PBXBuildFile; fileRef = A98C29C31977B10600AF5DED /* HBLanguagesSelection.m */; }; @@ -550,7 +554,7 @@ A957EBCC218DBE5900007988 /* HBAutoNamer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBAutoNamer.m; sourceTree = "<group>"; }; A958605B2216A5E5002092B1 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; }; A958EAC322E24D6400D83AF4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/HBQueueTableViewController.xib; sourceTree = "<group>"; }; - A958EAC622E24D6800D83AF4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/HBQueueDetailsViewController.xib; sourceTree = "<group>"; }; + A958EAC622E24D6800D83AF4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/HBQueueInfoViewController.xib; sourceTree = "<group>"; }; A9597A281A49749D00007771 /* HBRange+UIAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "HBRange+UIAdditions.h"; sourceTree = "<group>"; }; A9597A291A49749D00007771 /* HBRange+UIAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "HBRange+UIAdditions.m"; sourceTree = "<group>"; }; A95BA15B220C968500A2F9F9 /* HBQueueItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueItem.h; sourceTree = "<group>"; }; @@ -560,8 +564,8 @@ A95BC1E51CD2548A008D6A33 /* volHighTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = volHighTemplate.pdf; sourceTree = "<group>"; }; A95BC1E61CD2548A008D6A33 /* volLowTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = volLowTemplate.pdf; sourceTree = "<group>"; }; A95CB2FB217B6D07001E9F51 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - A96127DC22E0994E0086E6DC /* HBQueueDetailsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueDetailsViewController.h; sourceTree = "<group>"; }; - A96127DD22E0994E0086E6DC /* HBQueueDetailsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueueDetailsViewController.m; sourceTree = "<group>"; }; + A96127DC22E0994E0086E6DC /* HBQueueInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueInfoViewController.h; sourceTree = "<group>"; }; + A96127DD22E0994E0086E6DC /* HBQueueInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueueInfoViewController.m; sourceTree = "<group>"; }; A96127E122E09ADD0086E6DC /* HBQueueTableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueTableViewController.h; sourceTree = "<group>"; }; A96127E222E09ADD0086E6DC /* HBQueueTableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueueTableViewController.m; sourceTree = "<group>"; }; A9637D9120F7A252001EAE7C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/HBEncodingProgressHUDController.strings; sourceTree = "<group>"; }; @@ -615,6 +619,12 @@ A975C08D1AE8C5270061870D /* HBStateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBStateFormatter.m; sourceTree = "<group>"; }; A97ECB8022E1D85500570935 /* HBQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueue.h; sourceTree = "<group>"; }; A97ECB8122E1D85500570935 /* HBQueue.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueue.m; sourceTree = "<group>"; }; + A97ED7F222EC5BE900AEF29B /* HBQueueMultiSelectionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueMultiSelectionViewController.h; sourceTree = "<group>"; }; + A97ED7F322EC5BE900AEF29B /* HBQueueMultiSelectionViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueueMultiSelectionViewController.m; sourceTree = "<group>"; }; + A97ED7F422EC5BE900AEF29B /* HBQueueMultiSelectionViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HBQueueMultiSelectionViewController.xib; sourceTree = "<group>"; }; + A97ED7F822EC5E9300AEF29B /* HBQueueDetailsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBQueueDetailsViewController.h; sourceTree = "<group>"; }; + A97ED7F922EC5E9300AEF29B /* HBQueueDetailsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBQueueDetailsViewController.m; sourceTree = "<group>"; }; + A97ED7FA22EC5E9300AEF29B /* HBQueueDetailsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HBQueueDetailsViewController.xib; sourceTree = "<group>"; }; A98036CB1CCA91DD007661AA /* HBAVPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAVPlayer.h; sourceTree = "<group>"; }; A98036CC1CCA91DD007661AA /* HBAVPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAVPlayer.m; sourceTree = "<group>"; }; A988AF9B1BC7C35F00932543 /* HBChapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBChapter.h; sourceTree = "<group>"; }; @@ -1109,9 +1119,15 @@ A96127E122E09ADD0086E6DC /* HBQueueTableViewController.h */, A96127E222E09ADD0086E6DC /* HBQueueTableViewController.m */, A958EAC422E24D6400D83AF4 /* HBQueueTableViewController.xib */, - A96127DC22E0994E0086E6DC /* HBQueueDetailsViewController.h */, - A96127DD22E0994E0086E6DC /* HBQueueDetailsViewController.m */, - A958EAC722E24D6800D83AF4 /* HBQueueDetailsViewController.xib */, + A96127DC22E0994E0086E6DC /* HBQueueInfoViewController.h */, + A96127DD22E0994E0086E6DC /* HBQueueInfoViewController.m */, + A958EAC722E24D6800D83AF4 /* HBQueueInfoViewController.xib */, + A97ED7F222EC5BE900AEF29B /* HBQueueMultiSelectionViewController.h */, + A97ED7F322EC5BE900AEF29B /* HBQueueMultiSelectionViewController.m */, + A97ED7F422EC5BE900AEF29B /* HBQueueMultiSelectionViewController.xib */, + A97ED7F822EC5E9300AEF29B /* HBQueueDetailsViewController.h */, + A97ED7F922EC5E9300AEF29B /* HBQueueDetailsViewController.m */, + A97ED7FA22EC5E9300AEF29B /* HBQueueDetailsViewController.xib */, ); name = Queue; sourceTree = "<group>"; @@ -1674,6 +1690,7 @@ buildActionMask = 2147483647; files = ( A9A96BC520CAD60A00A39AFB /* Audio.xib in Resources */, + A97ED7FC22EC5E9300AEF29B /* HBQueueDetailsViewController.xib in Resources */, A9A96B8220CAD2C200A39AFB /* HBPictureHUDController.xib in Resources */, 1C7776A5202301D5001C31EB /* HBRenamePresetController.xib in Resources */, 273F218B14ADDDA10021BE6D /* InfoPlist.strings in Resources */, @@ -1702,13 +1719,14 @@ A9A96BC820CAD61000A39AFB /* AudioDefaults.xib in Resources */, A9A96BB920CAD5EE00A39AFB /* HBPictureViewController.xib in Resources */, A91943111FB5E39E001E9BB0 /* HBSummaryViewController.xib in Resources */, - A958EAC522E24D6800D83AF4 /* HBQueueDetailsViewController.xib in Resources */, + A958EAC522E24D6800D83AF4 /* HBQueueInfoViewController.xib in Resources */, A9A96BBF20CAD5F800A39AFB /* Video.xib in Resources */, A9E1468316BC2AD800C307BC /* PrevTemplate.pdf in Resources */, A937EECB1C6C7C0300EEAE6D /* dsa_pub.pem in Resources */, A9A96BE320CAD6CD00A39AFB /* HBPreviewViewController.xib in Resources */, A9A96BCB20CAD61800A39AFB /* Subtitles.xib in Resources */, A95BC1E81CD2548A008D6A33 /* volLowTemplate.pdf in Resources */, + A97ED7F622EC5BE900AEF29B /* HBQueueMultiSelectionViewController.xib in Resources */, A9A96BBC20CAD5F400A39AFB /* HBFiltersViewController.xib in Resources */, A975B02220F7AF29004675CC /* Localizable.strings in Resources */, A9A96BDD20CAD66000A39AFB /* OutputPanel.xib in Resources */, @@ -1784,6 +1802,7 @@ A916C9971C8449CA00C7B560 /* HBAudioDefaultsController.m in Sources */, A916C9961C8449BE00C7B560 /* HBJobOutputFileWriter.m in Sources */, A916C9951C8449B000C7B560 /* HBChapterTitlesController.m in Sources */, + A97ED7FB22EC5E9300AEF29B /* HBQueueDetailsViewController.m in Sources */, A916C9931C8449A100C7B560 /* HBAddPresetController.m in Sources */, A916C9921C84498F00C7B560 /* HBDockTextField.m in Sources */, A9706CB41AC1436F00BAEAA8 /* HBApplication.m in Sources */, @@ -1801,6 +1820,7 @@ A9F7102619A475EC00F61301 /* HBDockTile.m in Sources */, A98C29C41977B10600AF5DED /* HBLanguagesSelection.m in Sources */, A96664BA1CCE493D00DA4A57 /* HBEncodingProgressHUDController.m in Sources */, + A97ED7F522EC5BE900AEF29B /* HBQueueMultiSelectionViewController.m in Sources */, A9A7E27C1FE2A0B5006BE79F /* HBPreviewViewController.m in Sources */, A919430D1FB5E2FE001E9BB0 /* HBSummaryViewController.m in Sources */, A9706CB71AC1437800BAEAA8 /* HBExceptionAlertController.m in Sources */, @@ -1820,7 +1840,7 @@ A95121E61B5F7BE700FD773D /* NSArray+HBAdditions.m in Sources */, A96664B51CCE48F700DA4A57 /* HBPictureHUDController.m in Sources */, A957EBCD218DBE5900007988 /* HBAutoNamer.m in Sources */, - A96127DF22E0994E0086E6DC /* HBQueueDetailsViewController.m in Sources */, + A96127DF22E0994E0086E6DC /* HBQueueInfoViewController.m in Sources */, A97ECB8222E1D85500570935 /* HBQueue.m in Sources */, A92B148220CA9F7700146FD8 /* HBHUDView.m in Sources */, A9B3B63922E2EA58001CEB9A /* HBQueueItemWorkingView.m in Sources */, @@ -1990,12 +2010,12 @@ name = HBQueueTableViewController.xib; sourceTree = "<group>"; }; - A958EAC722E24D6800D83AF4 /* HBQueueDetailsViewController.xib */ = { + A958EAC722E24D6800D83AF4 /* HBQueueInfoViewController.xib */ = { isa = PBXVariantGroup; children = ( A958EAC622E24D6800D83AF4 /* Base */, ); - name = HBQueueDetailsViewController.xib; + name = HBQueueInfoViewController.xib; sourceTree = "<group>"; }; A975B02020F7AF29004675CC /* Localizable.strings */ = { |