mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
187 lines
6.5 KiB
Objective-C
187 lines
6.5 KiB
Objective-C
//
|
|
// BWApp.m
|
|
// HockeyDemo
|
|
//
|
|
// Created by Peter Steinberger on 04.02.11.
|
|
// Copyright 2011 Buzzworks. All rights reserved.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
|
|
#import "BWApp.h"
|
|
#import "BWGlobal.h"
|
|
|
|
@implementation BWApp
|
|
|
|
@synthesize name = name_;
|
|
@synthesize version = version_;
|
|
@synthesize shortVersion = shortVersion_;
|
|
@synthesize notes = notes_;
|
|
@synthesize date = date_;
|
|
@synthesize size = size_;
|
|
@synthesize mandatory = mandatory_;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma mark -
|
|
#pragma mark static
|
|
|
|
+ (BWApp *)appFromDict:(NSDictionary *)dict {
|
|
BWApp *app = [[[[self class] alloc] init] autorelease];
|
|
|
|
// NSParameterAssert([dict isKindOfClass:[NSDictionary class]]);
|
|
if ([dict isKindOfClass:[NSDictionary class]]) {
|
|
app.name = [dict objectForKey:@"title"];
|
|
app.version = [dict objectForKey:@"version"];
|
|
app.shortVersion = [dict objectForKey:@"shortversion"];
|
|
[app setDateWithTimestamp:[[dict objectForKey:@"timestamp"] doubleValue]];
|
|
app.size = [dict objectForKey:@"appsize"];
|
|
app.notes = [dict objectForKey:@"notes"];
|
|
app.mandatory = [dict objectForKey:@"mandatory"];
|
|
}
|
|
|
|
return app;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma mark -
|
|
#pragma mark NSObject
|
|
|
|
- (void)dealloc {
|
|
[name_ release];
|
|
[version_ release];
|
|
[shortVersion_ release];
|
|
[notes_ release];
|
|
[date_ release];
|
|
[size_ release];
|
|
[mandatory_ release];
|
|
|
|
[super dealloc];
|
|
}
|
|
|
|
- (BOOL)isEqual:(id)other {
|
|
if (other == self)
|
|
return YES;
|
|
if (!other || ![other isKindOfClass:[self class]])
|
|
return NO;
|
|
return [self isEqualToBWApp:other];
|
|
}
|
|
|
|
- (BOOL)isEqualToBWApp:(BWApp *)anApp {
|
|
if (self == anApp)
|
|
return YES;
|
|
if (self.name != anApp.name && ![self.name isEqualToString:anApp.name])
|
|
return NO;
|
|
if (self.version != anApp.version && ![self.version isEqualToString:anApp.version])
|
|
return NO;
|
|
if (self.shortVersion != anApp.shortVersion && ![self.shortVersion isEqualToString:anApp.shortVersion])
|
|
return NO;
|
|
if (self.notes != anApp.notes && ![self.notes isEqualToString:anApp.notes])
|
|
return NO;
|
|
if (self.date != anApp.date && ![self.date isEqualToDate:anApp.date])
|
|
return NO;
|
|
if (self.size != anApp.size && ![self.size isEqualToNumber:anApp.size])
|
|
return NO;
|
|
if (self.mandatory != anApp.mandatory && ![self.mandatory isEqualToNumber:anApp.mandatory])
|
|
return NO;
|
|
return YES;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma mark -
|
|
#pragma mark NSCoder
|
|
|
|
- (void)encodeWithCoder:(NSCoder *)encoder {
|
|
[encoder encodeObject:self.name forKey:@"name"];
|
|
[encoder encodeObject:self.version forKey:@"version"];
|
|
[encoder encodeObject:self.shortVersion forKey:@"shortVersion"];
|
|
[encoder encodeObject:self.notes forKey:@"notes"];
|
|
[encoder encodeObject:self.date forKey:@"date"];
|
|
[encoder encodeObject:self.size forKey:@"size"];
|
|
[encoder encodeObject:self.mandatory forKey:@"mandatory"];
|
|
}
|
|
|
|
- (id)initWithCoder:(NSCoder *)decoder {
|
|
if ((self = [super init])) {
|
|
self.name = [decoder decodeObjectForKey:@"name"];
|
|
self.version = [decoder decodeObjectForKey:@"version"];
|
|
self.shortVersion = [decoder decodeObjectForKey:@"shortVersion"];
|
|
self.notes = [decoder decodeObjectForKey:@"notes"];
|
|
self.date = [decoder decodeObjectForKey:@"date"];
|
|
self.size = [decoder decodeObjectForKey:@"size"];
|
|
self.mandatory = [decoder decodeObjectForKey:@"mandatory"];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma mark -
|
|
#pragma mark Properties
|
|
|
|
- (NSString *)nameAndVersionString {
|
|
NSString *appNameAndVersion = [NSString stringWithFormat:@"%@ %@", self.name, [self versionString]];
|
|
return appNameAndVersion;
|
|
}
|
|
|
|
- (NSString *)versionString {
|
|
NSString *shortString = ([self.shortVersion respondsToSelector:@selector(length)] && [self.shortVersion length]) ? [NSString stringWithFormat:@"%@", self.shortVersion] : @"";
|
|
NSString *versionString = [shortString length] ? [NSString stringWithFormat:@" (%@)", self.version] : self.version;
|
|
return [NSString stringWithFormat:@"%@ %@%@", BWHockeyLocalize(@"HockeyVersion"), shortString, versionString];
|
|
}
|
|
|
|
- (NSString *)dateString {
|
|
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
|
|
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
|
|
|
return [formatter stringFromDate:self.date];
|
|
}
|
|
|
|
- (NSString *)sizeInMB {
|
|
if ([[size_ class] isKindOfClass: [NSNumber class]] && [size_ doubleValue] > 0) {
|
|
double appSizeInMB = [size_ doubleValue]/(1024*1024);
|
|
NSString *appSizeString = [NSString stringWithFormat:@"%.1f MB", appSizeInMB];
|
|
return appSizeString;
|
|
}
|
|
|
|
return @"0 MB";
|
|
}
|
|
|
|
- (void)setDateWithTimestamp:(NSTimeInterval)timestamp {
|
|
if (timestamp) {
|
|
NSDate *appDate = [NSDate dateWithTimeIntervalSince1970:timestamp];
|
|
self.date = appDate;
|
|
} else {
|
|
self.date = nil;
|
|
}
|
|
}
|
|
|
|
- (NSString *)notesOrEmptyString {
|
|
if (self.notes) {
|
|
return self.notes;
|
|
}else {
|
|
return [NSString string];
|
|
}
|
|
}
|
|
|
|
// a valid app needs at least following properties: name, version, date
|
|
- (BOOL)isValid {
|
|
BOOL valid = [self.name length] && [self.version length] && self.date;
|
|
return valid;
|
|
}
|
|
|
|
@end
|