summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
authorritsuka <[email protected]>2014-08-20 07:29:18 +0000
committerritsuka <[email protected]>2014-08-20 07:29:18 +0000
commitd1897978424444696eda51313f41feffc4112c78 (patch)
tree2094bb1f44c9a4a2eaafad7cc16adce4c6c26744 /macosx
parentda33f7120c66115d506be98d6cfb08bd2c267ea5 (diff)
MacGui: added a HBDockTile class to manage the dock tile.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6324 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx')
-rw-r--r--macosx/Controller.h9
-rw-r--r--macosx/Controller.m151
-rw-r--r--macosx/HBDockTile.h22
-rw-r--r--macosx/HBDockTile.m77
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj8
5 files changed, 170 insertions, 97 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h
index 9ae122d21..954817d5c 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -30,7 +30,7 @@ extern NSString *keyTitleTag;
@class HBOutputPanelController;
@class HBPresetsViewController;
@class HBPresetsManager;
-@class DockTextField;
+@class HBDockTile;
@interface HBController : NSObject <GrowlApplicationBridgeDelegate, HBPictureControllerDelegate, NSToolbarDelegate, NSDrawerDelegate>
{
@@ -192,9 +192,8 @@ extern NSString *keyTitleTag;
double dockIconProgress;
BOOL fWillScan;
- NSDockTile * dockTile;
- DockTextField * percentField;
- DockTextField * timeField;
+
+ HBDockTile *dockTile;
}
- (int) getPidnum;
@@ -322,6 +321,4 @@ extern NSString *keyTitleTag;
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender;
-- (void) updateDockIcon:(double)progress withETA:(NSString*)etaStr;
-
@end
diff --git a/macosx/Controller.m b/macosx/Controller.m
index f17eda416..9e7f1b346 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -12,7 +12,7 @@
#import "HBPresetsManager.h"
#import "HBPreset.h"
#import "HBPreviewController.h"
-#import "DockTextField.h"
+#import "HBDockTile.h"
#import "HBUtilities.h"
#import "HBPresetsViewController.h"
@@ -26,7 +26,6 @@ NSString *keyTitleTag = @"keyTitleTag";
NSString *dragDropFiles = @"dragDropFiles";
-NSString *dockTilePercentFormat = @"%2.1f%%";
// DockTile update freqency in total percent increment
#define dockTileUpdateFrequency 0.1f
@@ -53,67 +52,56 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
*******************************/
@implementation HBController
-- (id)init
+- (instancetype)init
{
self = [super init];
- if( !self )
+ if (self)
{
- return nil;
- }
+ // Register the defaults preferences
+ [HBPreferencesController registerUserDefaults];
- [HBPreferencesController registerUserDefaults];
- fHandle = NULL;
- fQueueEncodeLibhb = NULL;
-
- /* Check for and create the App Support Preview directory if necessary */
- NSString *PreviewDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"Previews"];
- if( ![[NSFileManager defaultManager] fileExistsAtPath:PreviewDirectory] )
- {
- [[NSFileManager defaultManager] createDirectoryAtPath:PreviewDirectory
- withIntermediateDirectories:YES
- attributes:nil
- error:NULL];
- }
- outputPanel = [[HBOutputPanelController alloc] init];
- fPictureController = [[HBPictureController alloc] init];
- fQueueController = [[HBQueueController alloc] init];
-
- /* we init the HBPresetsManager class */
- NSURL *presetsURL = [NSURL fileURLWithPath:[[HBUtilities appSupportPath] stringByAppendingPathComponent:@"UserPresets.plist"]];
- presetManager = [[HBPresetsManager alloc] initWithURL:presetsURL];
- _selectedPreset = presetManager.defaultPreset;
-
- fPreferencesController = [[HBPreferencesController alloc] init];
- /* Lets report the HandBrake version number here to the activity log and text log file */
- NSString *versionStringFull = [[NSString stringWithFormat: @"Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]];
- [HBUtilities writeToActivityLog: "%s", [versionStringFull UTF8String]];
-
- /* Load the dockTile and instiante initial text fields */
- dockTile = [[NSApplication sharedApplication] dockTile];
- NSImageView *iv = [[NSImageView alloc] init];
- [iv setImage:[[NSApplication sharedApplication] applicationIconImage]];
- [dockTile setContentView:iv];
- [iv release];
-
- /* We can move the specific values out from here by subclassing NSDockTile and package everything in here */
- /* If colors are to be chosen once and for all, we can also remove the instantiation with numerical values */
- percentField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 32.0f, [dockTile size].width, 30.0f)];
- [percentField changeGradientColors:[NSColor colorWithDeviceRed:0.4f green:0.6f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.2f green:0.4f blue:0.2f alpha:1.0f]];
- [iv addSubview:percentField];
-
- timeField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, [dockTile size].width, 30.0f)];
- [timeField changeGradientColors:[NSColor colorWithDeviceRed:0.6f green:0.4f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.4f green:0.2f blue:0.2f alpha:1.0f]];
- [iv addSubview:timeField];
-
- [self updateDockIcon:-1.0 withETA:@""];
-
- /* Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it */
- int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue];
- fHandle = hb_init(loggingLevel, 0);
- /* Optional dvd nav UseDvdNav*/
- hb_dvd_set_dvdnav([[[NSUserDefaults standardUserDefaults] objectForKey:@"UseDvdNav"] boolValue]);
- /* Init a separate instance of libhb for user scanning and setting up jobs */
- fQueueEncodeLibhb = hb_init(loggingLevel, 0);
+ /* Check for and create the App Support Preview directory if necessary */
+ NSString *previewDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"Previews"];
+ if (![[NSFileManager defaultManager] fileExistsAtPath:previewDirectory])
+ {
+ [[NSFileManager defaultManager] createDirectoryAtPath:previewDirectory
+ withIntermediateDirectories:YES
+ attributes:nil
+ error:NULL];
+ }
+
+ // Inits the controllers
+ outputPanel = [[HBOutputPanelController alloc] init];
+ fPictureController = [[HBPictureController alloc] init];
+ fQueueController = [[HBQueueController alloc] init];
+
+ // we init the HBPresetsManager class
+ NSURL *presetsURL = [NSURL fileURLWithPath:[[HBUtilities appSupportPath] stringByAppendingPathComponent:@"UserPresets.plist"]];
+ presetManager = [[HBPresetsManager alloc] initWithURL:presetsURL];
+ _selectedPreset = presetManager.defaultPreset;
+
+ // Load the dockTile and instiante initial text fields
+ dockTile = [[HBDockTile alloc] initWithDockTile:[[NSApplication sharedApplication] dockTile]
+ image:[[NSApplication sharedApplication] applicationIconImage]];
+
+ [dockTile updateDockIcon:-1.0 withETA:@""];
+
+ // Lets report the HandBrake version number here to the activity log and text log file
+ NSString *versionStringFull = [[NSString stringWithFormat:@"Handbrake Version: %@",
+ [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]]
+ stringByAppendingString:[NSString stringWithFormat: @" (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]];
+ [HBUtilities writeToActivityLog: "%s", [versionStringFull UTF8String]];
+
+ // Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it
+ int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue];
+ fHandle = hb_init(loggingLevel, 0);
+
+ // Optional dvd nav UseDvdNav
+ hb_dvd_set_dvdnav([[[NSUserDefaults standardUserDefaults] objectForKey:@"UseDvdNav"] boolValue]);
+
+ // Init a separate instance of libhb for user scanning and setting up jobs
+ fQueueEncodeLibhb = hb_init(loggingLevel, 0);
+ }
return self;
}
@@ -561,6 +549,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[[NSUserDefaults standardUserDefaults] removeObjectForKey:dragDropFiles];
[presetManager savePresets];
+ [presetManager release];
[self closeQueueFSEvent];
[currentQueueEncodeNameString release];
@@ -569,11 +558,11 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fQueueController release];
[fPreviewController release];
[fPictureController release];
+ [dockTile release];
hb_close(&fHandle);
hb_close(&fQueueEncodeLibhb);
hb_global_close();
-
}
@@ -750,31 +739,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fChapterTitlesController setUIEnabled:b];
}
-/***********************************************************************
- * updateDockIcon
- ***********************************************************************
- * Updates two DockTextFields on the dockTile,
- * one with total percentage, the other one with the ETA.
- * The ETA string is formated by the callers
- **********************************************************************/
-- (void) updateDockIcon: (double) progress withETA:(NSString*)etaStr
-{
- if (progress < 0.0 || progress > 1.0)
- {
- [percentField setHidden:YES];
- [timeField setHidden:YES];
- }
- else
- {
- [percentField setTextToDisplay:[NSString stringWithFormat:dockTilePercentFormat,progress * 100]];
- [percentField setHidden:NO];
- [timeField setTextToDisplay:etaStr];
- [timeField setHidden:NO];
- }
-
- [dockTile display];
-}
-
- (void) updateUI: (NSTimer *) timer
{
/* Update UI for fHandle (user scanning instance of libhb ) */
@@ -1035,7 +999,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
else
etaStr = @"~";
- [self updateDockIcon:progress_total withETA:etaStr];
+ [dockTile updateDockIcon:progress_total withETA:etaStr];
dockIconProgress += dockTileUpdateFrequency;
}
@@ -1056,7 +1020,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fRipIndicator startAnimation: nil];
/* Update dock icon */
- [self updateDockIcon:1.0 withETA:@""];
+ [dockTile updateDockIcon:1.0 withETA:@""];
break;
}
@@ -1084,7 +1048,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[[fWindow toolbar] validateVisibleItems];
/* Restore dock icon */
- [self updateDockIcon:-1.0 withETA:@""];
+ [dockTile updateDockIcon:-1.0 withETA:@""];
dockIconProgress = 0;
if( fRipIndicatorShown )
@@ -4254,8 +4218,8 @@ fWorkingCount = 0;
hb_list_item(list, (int)[fSrcTitlePopUp indexOfSelectedItem]);
// Generate a new file name
- NSString *fileName = [HBUtilities automaticNameForSource:[browsedSourceDisplayName stringByDeletingPathExtension]
- title: title->index
+ NSString *fileName = [HBUtilities automaticNameForSource:@(title->name)
+ title:title->index
chapters:NSMakeRange([fSrcChapterStartPopUp indexOfSelectedItem] + 1, [fSrcChapterEndPopUp indexOfSelectedItem] + 1)
quality:fVideoController.selectedQualityType ? fVideoController.selectedQuality : 0
bitrate:!fVideoController.selectedQualityType ? fVideoController.selectedBitrate : 0
@@ -4680,7 +4644,12 @@ the user is using "Custom" settings by determining the sender*/
*/
- (IBAction) showPreferencesWindow: (id) sender
{
- NSWindow * window = [fPreferencesController window];
+ if (fPreferencesController == nil)
+ {
+ fPreferencesController = [[HBPreferencesController alloc] init];
+ }
+
+ NSWindow *window = [fPreferencesController window];
if (![window isVisible])
[window center];
diff --git a/macosx/HBDockTile.h b/macosx/HBDockTile.h
new file mode 100644
index 000000000..f7bfde7c8
--- /dev/null
+++ b/macosx/HBDockTile.h
@@ -0,0 +1,22 @@
+//
+// HBDockTile.h
+// HandBrake
+//
+// Created by Damiano Galassi on 20/08/14.
+//
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface HBDockTile : NSObject
+
+- (instancetype)initWithDockTile:(NSDockTile *)dockTile image:(NSImage *)image;
+
+/**
+ * Updates two DockTextFields on the dockTile,
+ * one with total percentage, the other one with the ETA.
+ * The ETA string is formated by the callers *
+ */
+- (void)updateDockIcon:(double)progress withETA:(NSString *)etaStr;
+
+@end
diff --git a/macosx/HBDockTile.m b/macosx/HBDockTile.m
new file mode 100644
index 000000000..bfbed37b7
--- /dev/null
+++ b/macosx/HBDockTile.m
@@ -0,0 +1,77 @@
+//
+// HBDockTile.m
+// HandBrake
+//
+// Created by Damiano Galassi on 20/08/14.
+//
+//
+
+#import "HBDockTile.h"
+#import "DockTextField.h"
+
+NSString *dockTilePercentFormat = @"%2.1f%%";
+
+@interface HBDockTile ()
+
+@property (nonatomic, retain) NSDockTile *dockTile;
+@property (nonatomic, retain) NSImage *image;
+@property (nonatomic, retain) DockTextField * percentField;
+@property (nonatomic, retain) DockTextField * timeField;
+
+@end
+
+@implementation HBDockTile
+
+- (instancetype)initWithDockTile:(NSDockTile *)dockTile image:(NSImage *)image
+{
+ self = [super init];
+ if (self)
+ {
+ _dockTile = [dockTile retain];
+ _image = [image retain];
+
+ NSImageView *iv = [[NSImageView alloc] init];
+ [iv setImage:_image];
+ [dockTile setContentView:iv];
+
+ _percentField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 32.0f, [dockTile size].width, 30.0f)];
+ [_percentField changeGradientColors:[NSColor colorWithDeviceRed:0.4f green:0.6f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.2f green:0.4f blue:0.2f alpha:1.0f]];
+ [iv addSubview:_percentField];
+
+ _timeField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, [dockTile size].width, 30.0f)];
+ [_timeField changeGradientColors:[NSColor colorWithDeviceRed:0.6f green:0.4f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.4f green:0.2f blue:0.2f alpha:1.0f]];
+ [iv addSubview:_timeField];
+ [iv release];
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ [_dockTile release];
+ [_image release];
+ [_percentField release];
+ [_timeField release];
+
+ [super dealloc];
+}
+
+- (void)updateDockIcon:(double)progress withETA:(NSString *)etaStr
+{
+ if (progress < 0.0 || progress > 1.0)
+ {
+ [_percentField setHidden:YES];
+ [_timeField setHidden:YES];
+ }
+ else
+ {
+ [_percentField setTextToDisplay:[NSString stringWithFormat:dockTilePercentFormat, progress * 100]];
+ [_percentField setHidden:NO];
+ [_timeField setTextToDisplay:etaStr];
+ [_timeField setHidden:NO];
+ }
+
+ [_dockTile display];
+}
+
+@end
diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj
index f7a6fc851..0e098b425 100644
--- a/macosx/HandBrake.xcodeproj/project.pbxproj
+++ b/macosx/HandBrake.xcodeproj/project.pbxproj
@@ -144,6 +144,7 @@
A9F2EB6F196F12C800066546 /* Audio.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9F2EB6D196F12C800066546 /* Audio.xib */; };
A9F472891976B7F30009EC65 /* HBSubtitlesDefaultsController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F472871976B7F30009EC65 /* HBSubtitlesDefaultsController.m */; };
A9F4728D1976BAA70009EC65 /* HBSubtitlesSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F4728C1976BAA70009EC65 /* HBSubtitlesSettings.m */; };
+ A9F7102619A475EC00F61301 /* HBDockTile.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F7102519A475EC00F61301 /* HBDockTile.m */; };
D2BCB10916F5152C0084604C /* activity.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F616F515230084604C /* activity.png */; };
D2BCB10A16F5152C0084604C /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F716F515230084604C /* [email protected] */; };
D2BCB10B16F5152C0084604C /* addqueue.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F816F515240084604C /* addqueue.png */; };
@@ -372,6 +373,8 @@
A9F472871976B7F30009EC65 /* HBSubtitlesDefaultsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBSubtitlesDefaultsController.m; sourceTree = "<group>"; };
A9F4728B1976BAA70009EC65 /* HBSubtitlesSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBSubtitlesSettings.h; sourceTree = "<group>"; };
A9F4728C1976BAA70009EC65 /* HBSubtitlesSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBSubtitlesSettings.m; sourceTree = "<group>"; };
+ A9F7102419A475EC00F61301 /* HBDockTile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBDockTile.h; sourceTree = "<group>"; };
+ A9F7102519A475EC00F61301 /* HBDockTile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBDockTile.m; sourceTree = "<group>"; };
D2BCB0F616F515230084604C /* activity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = activity.png; sourceTree = "<group>"; };
D2BCB0F716F515230084604C /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
D2BCB0F816F515240084604C /* addqueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = addqueue.png; sourceTree = "<group>"; };
@@ -837,6 +840,8 @@
children = (
46AB433315F98A2B009C0961 /* DockTextField.h */,
46AB433415F98A2B009C0961 /* DockTextField.m */,
+ A9F7102419A475EC00F61301 /* HBDockTile.h */,
+ A9F7102519A475EC00F61301 /* HBDockTile.m */,
273F209914ADBE670021BE6D /* HBImageAndTextCell.h */,
273F209A14ADBE670021BE6D /* HBImageAndTextCell.m */,
A9BB0F2519A0ECE40079F1C1 /* HBHUDButtonCell.h */,
@@ -1031,6 +1036,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ A9F7102619A475EC00F61301 /* HBDockTile.m in Sources */,
A98C29C41977B10600AF5DED /* HBLanguagesSelection.m in Sources */,
A9BB0F2719A0ECE40079F1C1 /* HBHUDButtonCell.m in Sources */,
A932E273198834130047D13E /* HBAudioSettings.m in Sources */,
@@ -1226,6 +1232,7 @@
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.6;
OTHER_LDFLAGS = (
"-filelist",
"$(EXTERNAL_BUILD)/macosx/osl.filelist.txt",
@@ -1254,6 +1261,7 @@
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.6;
OTHER_LDFLAGS = (
"-filelist",
"$(EXTERNAL_BUILD)/macosx/osl.filelist.txt",