summaryrefslogtreecommitdiffstats
path: root/macosx/HBChapter.m
diff options
context:
space:
mode:
authorDamiano Galassi <[email protected]>2015-10-09 12:34:42 +0200
committerDamiano Galassi <[email protected]>2015-10-09 12:34:42 +0200
commitf6920d0dbbc70e16cd016ab9d809532fa5db5521 (patch)
treed62071ed285145a946e20614bed73f44a9f8731b /macosx/HBChapter.m
parentf9c5593978ccc7f214dff75f01f59ebda91d8102 (diff)
MacGui: add a duration column to the chapters table
Diffstat (limited to 'macosx/HBChapter.m')
-rw-r--r--macosx/HBChapter.m82
1 files changed, 82 insertions, 0 deletions
diff --git a/macosx/HBChapter.m b/macosx/HBChapter.m
new file mode 100644
index 000000000..46d0a7602
--- /dev/null
+++ b/macosx/HBChapter.m
@@ -0,0 +1,82 @@
+/* HBChapter.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 "HBChapter.h"
+#import "HBCodingUtilities.h"
+
+@implementation HBChapter
+
+- (instancetype)init
+{
+ self = [self initWithTitle:@"No Value" duration:0];
+ return self;
+}
+
+- (instancetype)initWithTitle:(NSString *)title duration:(uint64_t)duration
+{
+ NSParameterAssert(title);
+
+ self = [super init];
+ if (self)
+ {
+ uint64_t hours = duration / 90000 / 3600;
+ uint64_t minutes = ((duration / 90000 ) % 3600) / 60;
+ uint64_t seconds = (duration / 90000 ) % 60;
+
+ _duration = [NSString stringWithFormat:@"%02llu:%02llu:%02llu", hours, minutes, seconds];
+ _title = [title copy];
+
+ }
+ return self;
+}
+
+#pragma mark - NSCopying
+
+- (instancetype)copyWithZone:(NSZone *)zone
+{
+ HBChapter *copy = [[[self class] alloc] init];
+
+ if (copy)
+ {
+ copy->_title = [_title copy];
+ copy->_duration = [_duration copy];
+ }
+
+ return copy;
+}
+
+
+#pragma mark - NSCoding
+
++ (BOOL)supportsSecureCoding
+{
+ return YES;
+}
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+ [coder encodeInt:1 forKey:@"HBChapterVersion"];
+
+ encodeObject(_title);
+ encodeObject(_duration);
+}
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+ int version = [decoder decodeIntForKey:@"HBChapterVersion"];
+
+ if (version == 1 && (self = [self init]))
+ {
+ decodeObject(_title, NSString);
+ decodeObject(_duration, NSString);
+
+ return self;
+ }
+
+ return nil;
+}
+
+@end