summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--macosx/Base.lproj/HBQueueDetailsViewController.xib96
-rw-r--r--macosx/Base.lproj/HBQueueInfoViewController.xib120
-rw-r--r--macosx/HBJob+UIAdditions.m17
-rw-r--r--macosx/HBQueue.h2
-rw-r--r--macosx/HBQueue.m10
-rw-r--r--macosx/HBQueueController.m89
-rw-r--r--macosx/HBQueueDetailsViewController.h23
-rw-r--r--macosx/HBQueueDetailsViewController.m65
-rw-r--r--macosx/HBQueueDetailsViewController.xib21
-rw-r--r--macosx/HBQueueInfoViewController.h27
-rw-r--r--macosx/HBQueueInfoViewController.m72
-rw-r--r--macosx/HBQueueItem.h11
-rw-r--r--macosx/HBQueueMultiSelectionViewController.h18
-rw-r--r--macosx/HBQueueMultiSelectionViewController.m43
-rw-r--r--macosx/HBQueueMultiSelectionViewController.xib38
-rw-r--r--macosx/HBQueueTableViewController.h3
-rw-r--r--macosx/HBQueueTableViewController.m9
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj44
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 */ = {