summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
Diffstat (limited to 'macosx')
-rw-r--r--macosx/HBFilters.h2
-rw-r--r--macosx/HBFilters.m197
2 files changed, 156 insertions, 43 deletions
diff --git a/macosx/HBFilters.h b/macosx/HBFilters.h
index eaafef178..f0a5fbbe9 100644
--- a/macosx/HBFilters.h
+++ b/macosx/HBFilters.h
@@ -6,6 +6,8 @@
#import <Foundation/Foundation.h>
+extern NSString * const HBFiltersChangedNotification;
+
/**
* Filters settings.
*/
diff --git a/macosx/HBFilters.m b/macosx/HBFilters.m
index ac5fdac83..4d3583daf 100644
--- a/macosx/HBFilters.m
+++ b/macosx/HBFilters.m
@@ -6,6 +6,8 @@
#import "HBFilters.h"
+NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
+
@implementation HBGenericDictionaryTransformer
+ (Class)transformedValueClass
@@ -70,6 +72,12 @@ static NSDictionary *_denoiseTypesDict;
static NSDictionary *_denoisePresetsDict;
static NSDictionary *_nlmeansTunesDict;
+@interface HBFilters ()
+
+@property (nonatomic, readwrite, getter=areNotificationsEnabled) BOOL notificationsEnabled;
+
+@end
+
@implementation HBFilters
+ (void)initialize
@@ -105,10 +113,152 @@ static NSDictionary *_nlmeansTunesDict;
_denoiseCustomString = @"";
_denoisePreset = @"medium";
_denoiseTune = @"none";
+
+ _notificationsEnabled = YES;
}
return self;
}
+- (void)postChangedNotification
+{
+ if (self.areNotificationsEnabled)
+ {
+ [[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName:HBFiltersChangedNotification
+ object:self
+ userInfo:nil]];
+ }
+}
+
+#pragma mark - Setters
+
+- (void)setDetelecine:(NSInteger)detelecine
+{
+ _detelecine = detelecine;
+ [self postChangedNotification];
+}
+
+// Override setter to avoid nil values.
+- (void)setDetelecineCustomString:(NSString *)detelecineCustomString
+{
+ [_detelecineCustomString autorelease];
+
+ if (detelecineCustomString)
+ {
+ _detelecineCustomString = [detelecineCustomString copy];
+ }
+ else
+ {
+ _detelecineCustomString = @"";
+ }
+
+ [self postChangedNotification];
+}
+
+- (void)setDeinterlace:(NSInteger)deinterlace
+{
+ _deinterlace = deinterlace;
+ [self postChangedNotification];
+}
+
+- (void)setDeinterlaceCustomString:(NSString *)deinterlaceCustomString
+{
+ [_deinterlaceCustomString autorelease];
+
+ if (deinterlaceCustomString)
+ {
+ _deinterlaceCustomString = [deinterlaceCustomString copy];
+ }
+ else
+ {
+ _deinterlaceCustomString = @"";
+ }
+
+ [self postChangedNotification];
+}
+
+- (void)setDecomb:(NSInteger)decomb
+{
+ _decomb = decomb;
+ [self postChangedNotification];
+}
+
+- (void)setDecombCustomString:(NSString *)decombCustomString
+{
+ [_decombCustomString autorelease];
+
+ if (decombCustomString)
+ {
+ _decombCustomString = [decombCustomString copy];
+ }
+ else
+ {
+ _decombCustomString = @"";
+ }
+
+ [self postChangedNotification];
+}
+
+- (void)setDenoise:(NSString *)denoise
+{
+ [_denoise autorelease];
+ _denoise = [denoise copy];
+
+ [self postChangedNotification];
+}
+
+- (void)setDenoisePreset:(NSString *)denoisePreset
+{
+ [_denoisePreset autorelease];
+ _denoisePreset = [denoisePreset copy];
+
+ [self postChangedNotification];
+}
+
+
+- (void)setDenoiseTune:(NSString *)denoiseTune
+{
+ [_denoiseTune autorelease];
+ _denoiseTune = [denoiseTune copy];
+
+ [self postChangedNotification];
+}
+
+- (void)setDenoiseCustomString:(NSString *)denoiseCustomString
+{
+ [_denoiseCustomString autorelease];
+
+ if (denoiseCustomString)
+ {
+ _denoiseCustomString = [denoiseCustomString copy];
+ }
+ else
+ {
+ _denoiseCustomString = @"";
+ }
+
+ [self postChangedNotification];
+}
+
+- (void)setDeblock:(NSInteger)deblock
+{
+ _deblock = deblock;
+ [self postChangedNotification];
+}
+
+- (void)setGrayscale:(BOOL)grayscale
+{
+ _grayscale = grayscale;
+ [self postChangedNotification];
+}
+
+- (void)setUseDecomb:(BOOL)useDecomb
+{
+ _useDecomb = useDecomb;
+ [self postChangedNotification];
+}
+
+#pragma mark - Presets and queue
+
- (void)prepareFiltersForPreset:(NSMutableDictionary *)preset
{
preset[@"PictureDecombDeinterlace"] = @(self.useDecomb);
@@ -133,6 +283,8 @@ static NSDictionary *_nlmeansTunesDict;
- (void)applySettingsFromPreset:(NSDictionary *)preset
{
+ self.notificationsEnabled = NO;
+
/* If the preset has an objectForKey:@"UsesPictureFilters", and handle the filters here */
if (preset[@"UsesPictureFilters"] && [preset[@"UsesPictureFilters"] intValue] > 0)
{
@@ -242,6 +394,8 @@ static NSDictionary *_nlmeansTunesDict;
self.grayscale = [preset[@"VideoGrayScale"] intValue];
}
+
+ self.notificationsEnabled = YES;
}
- (NSString *)summary
@@ -360,49 +514,6 @@ static NSDictionary *_nlmeansTunesDict;
return [NSString stringWithString:summary];
}
-// Override setter to avoid nil values.
-- (void)setDetelecineCustomString:(NSString *)detelecineCustomString
-{
- [_detelecineCustomString autorelease];
-
- if (detelecineCustomString)
- {
- _detelecineCustomString = [detelecineCustomString copy];
- }
- else
- {
- _detelecineCustomString = @"";
- }
-}
-
-- (void)setDeinterlaceCustomString:(NSString *)deinterlaceCustomString
-{
- [_deinterlaceCustomString autorelease];
-
- if (deinterlaceCustomString)
- {
- _deinterlaceCustomString = [deinterlaceCustomString copy];
- }
- else
- {
- _deinterlaceCustomString = @"";
- }
-}
-
-- (void)setDenoiseCustomString:(NSString *)denoiseCustomString
-{
- [_denoiseCustomString autorelease];
-
- if (denoiseCustomString)
- {
- _denoiseCustomString = [denoiseCustomString copy];
- }
- else
- {
- _denoiseCustomString = @"";
- }
-}
-
#pragma mark - Valid values
+ (NSDictionary *)denoisePresetDict