From cad3eabee0cbf81403f216db8e32ce1dd9b2d3d1 Mon Sep 17 00:00:00 2001 From: masakih Date: Sat, 6 Feb 2016 13:00:43 +0900 Subject: [PATCH] =?utf8?q?=E3=82=BF=E3=83=BC=E3=82=B1=E3=82=99=E3=83=83?= =?utf8?q?=E3=83=88OS=E3=82=9210.10=20Yosemite=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ベースSDKを10.11に変更 変更に伴い警告を発する部分を修正 --- KCD.xcodeproj/project.pbxproj | 29 +- .../masaki.xcuserdatad/xcschemes/KCD.xcscheme | 13 +- KCD/HMAppDelegate.m | 4 +- KCD/HMExternalBrowserWindowController.m | 2 +- KCD/HMGameViewController.m | 9 +- KCD/HMPreferencePanelController.m | 4 +- KCD/HMScreenshotWindowController.h | 32 -- KCD/HMScreenshotWindowController.m | 371 --------------------- KCD/HMStrokeTextFieldCell.m | 63 ++-- KCD/HMTSVSupport.m | 31 +- KCD/HMUserDefaults.m | 16 +- KCD/KCD-Info.plist | 2 +- KCD/ja.lproj/HMDocksViewController.xib | 6 +- KCD/ja.lproj/HMPowerUpSupportViewController.xib | 8 +- KCD/ja.lproj/HMScreenshotWindowController.xib | 153 --------- .../HMShipMasterDetailWindowController.xib | 17 +- KCD/ja.lproj/HMShipViewController.xib | 12 +- KCDTests/KCDTests-Info.plist | 2 +- 18 files changed, 119 insertions(+), 655 deletions(-) delete mode 100644 KCD/HMScreenshotWindowController.h delete mode 100644 KCD/HMScreenshotWindowController.m delete mode 100644 KCD/ja.lproj/HMScreenshotWindowController.xib diff --git a/KCD.xcodeproj/project.pbxproj b/KCD.xcodeproj/project.pbxproj index a83ad37c..8add8756 100644 --- a/KCD.xcodeproj/project.pbxproj +++ b/KCD.xcodeproj/project.pbxproj @@ -120,7 +120,6 @@ F4B1E30C19D1C06900805879 /* HMHokyuChargeCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B1E30B19D1C06900805879 /* HMHokyuChargeCommand.m */; }; F4B1E30F19D1C9C400805879 /* HMApplySuppliesCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B1E30E19D1C9C400805879 /* HMApplySuppliesCommand.m */; }; F4B2A08F1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B2A08D1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.m */; }; - F4B2D02B18F83A2F00542742 /* HMScreenshotWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4B2D02D18F83A2F00542742 /* HMScreenshotWindowController.xib */; }; F4B37EF019FADFC9002F371A /* HMIgnoreZeroTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EEF19FADFC9002F371A /* HMIgnoreZeroTransformer.m */; }; F4B37EF319FBBBED002F371A /* HMRemodelSlotCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EF219FBBBED002F371A /* HMRemodelSlotCommand.m */; }; F4B37EF619FBE801002F371A /* HMRemodelSlotItemCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EF519FBE801002F371A /* HMRemodelSlotItemCommand.m */; }; @@ -143,7 +142,6 @@ F4B3DC4718EEEB920011B4FC /* HMStart2Command.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC4618EEEB920011B4FC /* HMStart2Command.m */; }; F4B3DC4C18F0C8A90011B4FC /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4B3DC4B18F0C8A90011B4FC /* Social.framework */; }; F4B3DC4E18F0C8FF0011B4FC /* Accounts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4B3DC4D18F0C8FF0011B4FC /* Accounts.framework */; }; - F4B3DC5218F150CD0011B4FC /* HMScreenshotWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC5018F150CD0011B4FC /* HMScreenshotWindowController.m */; }; F4B414E918B09A4B00468DAF /* HMMasterMapAreaCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B414E818B09A4B00468DAF /* HMMasterMapAreaCommand.m */; }; F4B414EC18B0A7D600468DAF /* HMMasterUseItemCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B414EB18B0A7D600468DAF /* HMMasterUseItemCommand.m */; }; F4B414EF18B0BF1A00468DAF /* HMMasterMapInfoCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B414EE18B0BF1A00468DAF /* HMMasterMapInfoCommand.m */; }; @@ -473,7 +471,6 @@ F4B1E30E19D1C9C400805879 /* HMApplySuppliesCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMApplySuppliesCommand.m; sourceTree = ""; }; F4B2A08C1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMExternalBrowserWindowController.h; sourceTree = ""; }; F4B2A08D1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMExternalBrowserWindowController.m; sourceTree = ""; }; - F4B2D02C18F83A2F00542742 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/HMScreenshotWindowController.xib; sourceTree = ""; }; F4B37EEE19FADFC9002F371A /* HMIgnoreZeroTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMIgnoreZeroTransformer.h; sourceTree = ""; }; F4B37EEF19FADFC9002F371A /* HMIgnoreZeroTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMIgnoreZeroTransformer.m; sourceTree = ""; }; F4B37EF119FBBBED002F371A /* HMRemodelSlotCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMRemodelSlotCommand.h; sourceTree = ""; }; @@ -509,8 +506,6 @@ F4B3DC4618EEEB920011B4FC /* HMStart2Command.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMStart2Command.m; sourceTree = ""; }; F4B3DC4B18F0C8A90011B4FC /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; F4B3DC4D18F0C8FF0011B4FC /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; }; - F4B3DC4F18F150CD0011B4FC /* HMScreenshotWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMScreenshotWindowController.h; sourceTree = ""; }; - F4B3DC5018F150CD0011B4FC /* HMScreenshotWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMScreenshotWindowController.m; sourceTree = ""; }; F4B414E718B09A4B00468DAF /* HMMasterMapAreaCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMasterMapAreaCommand.h; sourceTree = ""; }; F4B414E818B09A4B00468DAF /* HMMasterMapAreaCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMasterMapAreaCommand.m; sourceTree = ""; }; F4B414EA18B0A7D600468DAF /* HMMasterUseItemCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMasterUseItemCommand.h; sourceTree = ""; }; @@ -922,9 +917,6 @@ F4B3DC2B18E07B680011B4FC /* HMHistoryWindowController.h */, F4B3DC2C18E07B680011B4FC /* HMHistoryWindowController.m */, F4B3DC3218E5C81E0011B4FC /* HMHistoryWindowController.xib */, - F4B3DC4F18F150CD0011B4FC /* HMScreenshotWindowController.h */, - F4B3DC5018F150CD0011B4FC /* HMScreenshotWindowController.m */, - F4B2D02D18F83A2F00542742 /* HMScreenshotWindowController.xib */, F4A3AD8919B9BE7A00FDBF80 /* HMMaskSelectView.h */, F4A3AD8A19B9BE7A00FDBF80 /* HMMaskSelectView.m */, F4A3AD8C19BB220000FDBF80 /* HMMaskInfomation.h */, @@ -1299,7 +1291,7 @@ isa = PBXProject; attributes = { CLASSPREFIX = HM; - LastUpgradeCheck = 0510; + LastUpgradeCheck = 0720; ORGANIZATIONNAME = "Hori,Masaki"; TargetAttributes = { F4BDEB63187252F30069D0CE = { @@ -1351,7 +1343,6 @@ F4B3DC3618E5C8650011B4FC /* HMShipWindowController.xib in Resources */, F4C6685A1C54510E00601AFB /* HMBookmarkEditorViewController.xib in Resources */, F4B3DC3C18E5C87D0011B4FC /* HMDocksViewController.xib in Resources */, - F4B2D02B18F83A2F00542742 /* HMScreenshotWindowController.xib in Resources */, F4C668631C54518F00601AFB /* HMProgressPanel.xib in Resources */, F4C6686F1C54524900601AFB /* HMVerticalFleetViewController.xib in Resources */, F4C668601C54517500601AFB /* HMGameViewController.xib in Resources */, @@ -1422,7 +1413,6 @@ F4A2AF5B1A0F9B490024BD9E /* HMScreenshotInformation.m in Sources */, F4666C561B1E0262001840DB /* HMBookmarkEditorViewController.m in Sources */, F43769DE1AE1248800DE6204 /* HMAirBattleCommand.m in Sources */, - F4B3DC5218F150CD0011B4FC /* HMScreenshotWindowController.m in Sources */, F426802E194D0FFD00B2C27F /* HMMemberShip3Command.m in Sources */, F4B37EF319FBBBED002F371A /* HMRemodelSlotCommand.m in Sources */, F495462E1B1894DD00E0D8D0 /* Bookmark.xcdatamodeld in Sources */, @@ -1649,14 +1639,6 @@ name = Taihi.txt; sourceTree = ""; }; - F4B2D02D18F83A2F00542742 /* HMScreenshotWindowController.xib */ = { - isa = PBXVariantGroup; - children = ( - F4B2D02C18F83A2F00542742 /* ja */, - ); - name = HMScreenshotWindowController.xib; - sourceTree = ""; - }; F4B37F0119FC8DCC002F371A /* HMUpgradableShipsWindowController.xib */ = { isa = PBXVariantGroup; children = ( @@ -1918,6 +1900,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -1985,7 +1968,8 @@ "COREDATA_STORE_TYPE=0", ); INFOPLIST_FILE = "KCD/KCD-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -2003,7 +1987,8 @@ "UI_TEST=0", ); INFOPLIST_FILE = "KCD/KCD-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -2025,6 +2010,7 @@ "$(inherited)", ); INFOPLIST_FILE = "KCDTests/KCDTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -2043,6 +2029,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "KCD/KCD-Prefix.pch"; INFOPLIST_FILE = "KCDTests/KCDTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; diff --git a/KCD.xcodeproj/xcuserdata/masaki.xcuserdatad/xcschemes/KCD.xcscheme b/KCD.xcodeproj/xcuserdata/masaki.xcuserdatad/xcschemes/KCD.xcscheme index a7b95b4a..5f5fbfa7 100644 --- a/KCD.xcodeproj/xcuserdata/masaki.xcuserdatad/xcschemes/KCD.xcscheme +++ b/KCD.xcodeproj/xcuserdata/masaki.xcuserdatad/xcschemes/KCD.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -84,15 +84,18 @@ ReferencedContainer = "container:KCD.xcodeproj"> + + @@ -108,10 +111,10 @@ diff --git a/KCD/HMAppDelegate.m b/KCD/HMAppDelegate.m index d6f29870..82b326de 100644 --- a/KCD/HMAppDelegate.m +++ b/KCD/HMAppDelegate.m @@ -513,7 +513,7 @@ [panel setPrompt:@"Save log"]; [panel setTitle:@"Save log"]; [panel beginWithCompletionHandler:^(NSInteger result) { - if(result == NSOKButton) { + if(result == NSModalResponseOK) { NSArray *array = [self.jsonViewWindowController.commands copy]; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; if(!data) { @@ -539,7 +539,7 @@ [panel setPrompt:@"Open log"]; [panel setTitle:@"Open log"]; [panel beginWithCompletionHandler:^(NSInteger result) { - if(result == NSOKButton) { + if(result == NSModalResponseOK) { NSData *data = [NSData dataWithContentsOfURL:panel.URL]; id array = [NSKeyedUnarchiver unarchiveObjectWithData:data]; if(!array || ![array isKindOfClass:[NSArray class]]) { diff --git a/KCD/HMExternalBrowserWindowController.m b/KCD/HMExternalBrowserWindowController.m index a18f96b1..35119aa4 100644 --- a/KCD/HMExternalBrowserWindowController.m +++ b/KCD/HMExternalBrowserWindowController.m @@ -14,7 +14,7 @@ -@interface HMExternalBrowserWindowController () +@interface HMExternalBrowserWindowController () @property (nonatomic, weak) IBOutlet NSSegmentedControl *goSegment; @property (nonatomic, weak) IBOutlet NSView *bookmarkListView; diff --git a/KCD/HMGameViewController.m b/KCD/HMGameViewController.m index e8bab21a..e8da919b 100644 --- a/KCD/HMGameViewController.m +++ b/KCD/HMGameViewController.m @@ -90,11 +90,10 @@ static NSString *loginPageURLPrefix = @"https://www.dmm.com/my/-/login/=/"; NSString *date = [NSDateFormatter localizedStringFromDate:untilDate dateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterMediumStyle]; - NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Reload interval is too short", @"") - defaultButton:nil - alternateButton:nil - otherButton:nil - informativeTextWithFormat:NSLocalizedString(@"Reload interval is too short.\nWait until %@.", @""), date]; + NSAlert *alert = [NSAlert new]; + alert.messageText = NSLocalizedString(@"Reload interval is too short", @""); + alert.informativeText = [NSString stringWithFormat:NSLocalizedString(@"Reload interval is too short.\nWait until %@.", @""), date]; + [alert runModal]; return; diff --git a/KCD/HMPreferencePanelController.m b/KCD/HMPreferencePanelController.m index 3cf733f4..2e95cbee 100644 --- a/KCD/HMPreferencePanelController.m +++ b/KCD/HMPreferencePanelController.m @@ -72,7 +72,7 @@ typedef NS_ENUM(NSUInteger, HMScreenShotSaveDirectoryPopUpMenuItemTag) { [panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) { - if(result == NSCancelButton) return; + if(result == NSModalResponseCancel) return; self.screenShotSaveDirectory = panel.URL.path; }]; @@ -92,7 +92,7 @@ typedef NS_ENUM(NSUInteger, HMScreenShotSaveDirectoryPopUpMenuItemTag) { completionHandler:^(NSInteger result) { [self.screenShotSaveDirectoryPopUp selectItemWithTag:kSaveDirectoryItem]; - if(result == NSCancelButton) return; + if(result == NSModalResponseCancel) return; self.screenShotSaveDirectory = panel.URL.path; }]; diff --git a/KCD/HMScreenshotWindowController.h b/KCD/HMScreenshotWindowController.h deleted file mode 100644 index 195596c6..00000000 --- a/KCD/HMScreenshotWindowController.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// HMScreenshotWindowController.h -// KCD -// -// Created by Hori,Masaki on 2014/04/06. -// Copyright (c) 2014年 Hori,Masaki. All rights reserved. -// - -#import - -@class HMMaskSelectView; - -@interface HMScreenshotWindowController : NSWindowController - -@property (strong, nonatomic) NSBitmapImageRep *snapImageRep; -@property (strong, nonatomic) NSString *tweetString; -/// 残り文字数 -@property (readonly) NSInteger leaveLength; -@property (readonly) NSColor *leaveLengthColor; -@property (readonly) BOOL canTweet; -@property (readonly) BOOL canSave; -@property BOOL appendKanColleTag; -@property (copy, nonatomic) NSString *tagString; - -@property (strong, nonatomic) IBOutlet HMMaskSelectView *maskSelectView; -@property BOOL useMask; - -- (IBAction)tweet:(id)sender; -- (IBAction)saveSnap:(id)sender; -- (IBAction)cancel:(id)sender; - -@end diff --git a/KCD/HMScreenshotWindowController.m b/KCD/HMScreenshotWindowController.m deleted file mode 100644 index b78bdfab..00000000 --- a/KCD/HMScreenshotWindowController.m +++ /dev/null @@ -1,371 +0,0 @@ -// -// HMScreenshotWindowController.m -// KCD -// -// Created by Hori,Masaki on 2014/04/06. -// Copyright (c) 2014年 Hori,Masaki. All rights reserved. -// - -#import "HMScreenshotWindowController.h" -#import "HMUserDefaults.h" -#import "HMMaskSelectView.h" -#import "HMMaskInfomation.h" - -#import "HMAppDelegate.h" - -#import -#import - - -@interface NSFileManager (KCDExtension) -- (NSString *)_web_pathWithUniqueFilenameForPath:(NSString *)path; -@end - -@interface HMScreenshotWindowController () - -@property (readonly) NSData *snapData; -@property (strong) NSImage *snap; - - -@property (strong) ACAccountStore *accountStore; -@property BOOL availableTwitter; -@property NSInteger shortURLLength; - - -- (void)postImage:(NSData *)jpeg withStatus:(NSString *)status; -@end - -@implementation HMScreenshotWindowController -@synthesize snapImageRep = _snapImageRep; -@synthesize snap = _snap; -@synthesize appendKanColleTag = _appendKanColleTag; -@synthesize useMask = _useMask; - -+ (NSSet *)keyPathsForValuesAffectingLeaveLength -{ - return [NSSet setWithObjects:@"tweetString", @"appendKanColleTag", nil]; -} -+ (NSSet *)keyPathsForValuesAffectingLeaveLengthColor -{ - return [NSSet setWithObject:@"leaveLength"]; -} -+ (NSSet *)keyPathsForValuesAffectingSnap -{ - return [NSSet setWithObject:@"snapData"]; -} -+ (NSSet *)keyPathsForValuesAffectingCanTweet -{ - return [NSSet setWithObject:@"leaveLength"]; -} - -- (id)init -{ - self = [super initWithWindowNibName:NSStringFromClass([self class])]; - if(self) { - _accountStore = [ACAccountStore new]; - - [self checkShortURLLength]; - - NSString *tag = NSLocalizedString(@"kancolle", @"kancolle twitter hash tag"); - if(tag) { - _tagString = [NSString stringWithFormat:@" #%@", tag]; - } else { - _tagString = @""; - } - _appendKanColleTag = HMStandardDefaults.appendKanColleTag; - - self.tweetString = @""; - - _useMask = HMStandardDefaults.useMask; - } - return self; -} - -- (NSBitmapImageRep *)snapImageRep -{ - return _snapImageRep; -} -- (void)setSnapImageRep:(NSBitmapImageRep *)snapImageRep -{ - _snapImageRep = snapImageRep; - self.snap = nil; -} - -- (NSData *)snapData -{ - NSBitmapImageRep *rep = self.snapImageRep; - - if(self.useMask) { - NSImage *image = [[NSImage alloc] initWithSize:[self.snapImageRep size]]; - [image addRepresentation:self.snapImageRep]; - - [image lockFocus]; - for(HMMaskInfomation *info in self.maskSelectView.masks) { - if(info.enable) { - NSBezierPath *path = [NSBezierPath bezierPathWithRect:info.maskRect]; - [info.maskColor set]; - [path fill]; - } - } - [image unlockFocus]; - - NSData *tiffData = [image TIFFRepresentation]; - rep = [NSBitmapImageRep imageRepWithData:tiffData]; - } - - return [rep representationUsingType:NSJPEGFileType properties:nil]; -} -- (NSImage *)snap -{ - if(_snap) return _snap; - - NSImage *image = [[NSImage alloc] initWithData:self.snapData]; - _snap = image; - self.tweetString = @""; - - return _snap; -} -- (void)setSnap:(NSImage *)snap -{ - _snap = snap; -} -- (BOOL)useMask -{ - return _useMask; -} -- (void)setUseMask:(BOOL)useMask -{ - HMStandardDefaults.useMask = useMask; - _useMask = useMask; -} -- (NSInteger)leaveLength -{ - const NSUInteger maxTweetLength = 140; - if(self.appendKanColleTag) return maxTweetLength - self.tagString.length - self.shortURLLength - self.tweetString.length; - return maxTweetLength - self.shortURLLength - self.tweetString.length; -} -- (NSColor *)leaveLengthColor -{ - if(self.leaveLength < 0) { - return [NSColor colorWithCalibratedRed:159/255.0 green:14/255.0 blue:0 alpha:1]; - } - return [NSColor controlTextColor]; -} -- (BOOL)appendKanColleTag -{ - return _appendKanColleTag; -} -- (void)setAppendKanColleTag:(BOOL)appendKanColleTag -{ - HMStandardDefaults.appendKanColleTag = appendKanColleTag; - _appendKanColleTag = appendKanColleTag; -} -- (BOOL)canTweet -{ - ACAccountType *twitterType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; - if(![twitterType accessGranted]) { - [self.accountStore requestAccessToAccountsWithType:twitterType - options:nil - completion:^(BOOL granted, NSError *error) { - if(!granted) { - NSLog(@"No access granted"); - } else { -// NSLog(@"succsess"); - } - }]; - } - NSArray *accounts = [self.accountStore accountsWithAccountType:twitterType]; - if([accounts count] == 0) { - NSLog(@"twitter account not avail."); - NSLog(@"Accounts -> %@", self.accountStore.accounts); - return NO; - } - self.availableTwitter = YES; - - return self.availableTwitter && self.leaveLength >= 0; -} -- (BOOL)canSave -{ - return self.snapData ? YES : NO; -} - -- (NSURL *)saveDirectoryURL -{ - HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate]; - return [NSURL fileURLWithPath:appDelegate.screenShotSaveDirectory]; -} - -- (IBAction)tweet:(id)sender -{ - if(!self.snapData) { - NSBeep(); - return; - } - - NSString *status = self.tweetString; - if(!status) status = @""; - if(self.appendKanColleTag) { - status = [status stringByAppendingString:self.tagString]; - } - - if(self.leaveLength >= 0) { - [self postImage:self.snapData withStatus:status]; - [self.window.sheetParent endSheet:self.window returnCode:NSOKButton + 1]; - } else { - NSBeep(); - } -} - -- (IBAction)saveSnap:(id)sender -{ - [self.window.sheetParent endSheet:self.window returnCode:NSOKButton + 0]; - - if(!self.snapData) return; - - NSBundle *mainBundle = [NSBundle mainBundle]; - NSDictionary *infoList = [mainBundle localizedInfoDictionary]; - NSString *filename = [infoList objectForKey:@"CFBundleName"]; - if([filename length] == 0) { - filename = @"KCD"; - } - filename = [filename stringByAppendingPathExtension:@"jpg"]; - NSURL *path = [[self saveDirectoryURL] URLByAppendingPathComponent:filename]; - - filename = [[NSFileManager defaultManager] _web_pathWithUniqueFilenameForPath:[path path]]; - - [self.snapData writeToFile:filename atomically:YES]; -} -- (IBAction)cancel:(id)sender -{ - [self.window.sheetParent endSheet:self.window returnCode:NSCancelButton]; -} -- (void)postImage:(NSData *)jpeg withStatus:(NSString *)status -{ - ACAccountType *twitterType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; - - SLRequestHandler requestHandler = - ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { - if (responseData) { - NSInteger statusCode = urlResponse.statusCode; - if (statusCode >= 200 && statusCode < 300) { -// NSDictionary *postResponseData = -// [NSJSONSerialization JSONObjectWithData:responseData -// options:NSJSONReadingMutableContainers -// error:NULL]; -// NSLog(@"[SUCCESS!] Created Tweet with ID: %@", postResponseData[@"id_str"]); - } - else { - NSLog(@"[ERROR] Server responded: status code %ld %@", statusCode, - [NSHTTPURLResponse localizedStringForStatusCode:statusCode]); - } - } - else { - NSLog(@"[ERROR] An error occurred while posting: %@", [error localizedDescription]); - } - }; - - ACAccountStoreRequestAccessCompletionHandler accountStoreHandler = - ^(BOOL granted, NSError *error) { - if (granted) { - NSArray *accounts = [self.accountStore accountsWithAccountType:twitterType]; - NSURL *url = [NSURL URLWithString:@"https://api.twitter.com" - @"/1.1/statuses/update_with_media.json"]; - NSDictionary *params = @{@"status" : status}; - SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter - requestMethod:SLRequestMethodPOST - URL:url - parameters:params]; - [request addMultipartData:jpeg - withName:@"media[]" - type:@"image/jpeg" - filename:@"image.jpg"]; - [request setAccount:[accounts lastObject]]; - [request performRequestWithHandler:requestHandler]; - } - else { - NSLog(@"[ERROR] An error occurred while asking for user authorization: %@", - [error localizedDescription]); - } - }; - - [self.accountStore requestAccessToAccountsWithType:twitterType - options:NULL - completion:accountStoreHandler]; -} - -- (void)checkShortURLLength -{ - ACAccountType *twitterType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; - - SLRequestHandler requestHandler = - ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { - if (responseData) { - NSInteger statusCode = urlResponse.statusCode; - if (statusCode >= 200 && statusCode < 300) { - NSDictionary *postResponseData = - [NSJSONSerialization JSONObjectWithData:responseData - options:NSJSONReadingMutableContainers - error:NULL]; -// NSLog(@"[SUCCESS!] characters_reserved_per_media is %@", postResponseData[@"characters_reserved_per_media"]); - - self.shortURLLength = [postResponseData[@"characters_reserved_per_media"] integerValue]; - } - else { - NSLog(@"[ERROR] Server responded: status code %ld %@", statusCode, - [NSHTTPURLResponse localizedStringForStatusCode:statusCode]); - } - } - else { - NSLog(@"[ERROR] An error occurred while posting: %@", [error localizedDescription]); - } - }; - - ACAccountStoreRequestAccessCompletionHandler accountStoreHandler = - ^(BOOL granted, NSError *error) { - if (granted) { - NSArray *accounts = [self.accountStore accountsWithAccountType:twitterType]; - NSURL *url = [NSURL URLWithString:@"https://api.twitter.com" - @"/1.1/help/configuration.json"]; - SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter - requestMethod:SLRequestMethodGET - URL:url - parameters:nil]; - [request setAccount:[accounts lastObject]]; - [request performRequestWithHandler:requestHandler]; - } - else { - NSLog(@"[ERROR] An error occurred while asking for user authorization: %@", - [error localizedDescription]); - } - }; - - [self.accountStore requestAccessToAccountsWithType:twitterType - options:NULL - completion:accountStoreHandler]; - -} - - -/** - NSControl delegate - */ -- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector -{ - BOOL result = NO; - if (commandSelector == @selector(insertNewline:)) - { - [textView insertNewlineIgnoringFieldEditor:self]; - result = YES; - } - return result; -} - -/** - * NSWindow delegate - */ -- (void)windowWillClose:(NSNotification *)notification -{ - [self.maskSelectView disableAllMasks:self]; -} - -@end diff --git a/KCD/HMStrokeTextFieldCell.m b/KCD/HMStrokeTextFieldCell.m index f66cb322..fb0f5d4e 100644 --- a/KCD/HMStrokeTextFieldCell.m +++ b/KCD/HMStrokeTextFieldCell.m @@ -38,36 +38,43 @@ const CGFloat boarderWidth = 2.0; [super drawInteriorWithFrame:cellFrame inView:controlView]; return; } +// +// NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:attributedString.string attributes:attribute]; +// [textStorage addLayoutManager:self.layoutManager]; +// +// NSRange range = [self.layoutManager glyphRangeForTextContainer:self.textContainer]; +// NSGlyph glyph[range.length]; +// NSUInteger glyphLength = [self.layoutManager getGlyphs:glyph range:range]; +// +// NSFont *font = [attribute objectForKey:NSFontAttributeName]; +// NSPoint point = {boarderWidth,0}; +// point.y -= [font descender]; +// if([controlView isFlipped]) { +// point.y -= [controlView frame].size.height; +// } +// +// NSBezierPath *path = [NSBezierPath new]; +// [path moveToPoint:point]; +// [path appendBezierPathWithGlyphs:glyph count:glyphLength inFont:font]; +// [path setLineWidth:boarderWidth]; +// [path setLineJoinStyle:NSRoundLineJoinStyle]; +// if([controlView isFlipped]) { +// NSAffineTransform *affineTransform = [NSAffineTransform transform]; +// [affineTransform scaleXBy:1 yBy:-1]; +// [path transformUsingAffineTransform:affineTransform]; +// } +// +// [[NSColor blackColor] set]; +// [path stroke]; +// +// [forgroundColor set]; +// [path fill]; - NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:attributedString.string attributes:attribute]; - [textStorage addLayoutManager:self.layoutManager]; - - NSRange range = [self.layoutManager glyphRangeForTextContainer:self.textContainer]; - NSGlyph glyph[range.length]; - NSUInteger glyphLength = [self.layoutManager getGlyphs:glyph range:range]; - - NSFont *font = [attribute objectForKey:NSFontAttributeName]; - NSPoint point = {boarderWidth,0}; - point.y -= [font descender]; - if([controlView isFlipped]) { - point.y -= [controlView frame].size.height; - } - - NSBezierPath *path = [NSBezierPath new]; - [path moveToPoint:point]; - [path appendBezierPathWithGlyphs:glyph count:glyphLength inFont:font]; - [path setLineWidth:boarderWidth]; - [path setLineJoinStyle:NSRoundLineJoinStyle]; - if([controlView isFlipped]) { - NSAffineTransform *affineTransform = [NSAffineTransform transform]; - [affineTransform scaleXBy:1 yBy:-1]; - [path transformUsingAffineTransform:affineTransform]; - } + NSMutableDictionary *newAttr = [attribute mutableCopy]; + newAttr[NSStrokeColorAttributeName] = [NSColor blackColor]; + newAttr[NSStrokeWidthAttributeName] = @(-4); - [[NSColor blackColor] set]; - [path stroke]; + [attributedString.string drawInRect:cellFrame withAttributes:newAttr]; - [forgroundColor set]; - [path fill]; } @end diff --git a/KCD/HMTSVSupport.m b/KCD/HMTSVSupport.m index fa0612ad..582ba4a1 100644 --- a/KCD/HMTSVSupport.m +++ b/KCD/HMTSVSupport.m @@ -144,11 +144,11 @@ [panel setAllowedFileTypes:@[@"kcdlocaldata"]]; [panel beginWithCompletionHandler:^(NSInteger result) { - if(result != NSOKButton) return; + if(result != NSModalResponseOK) return; NSString *path = [panel.URL path]; - NSFileWrapper *fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil]; + NSFileWrapper *fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:@{}]; [fileWrapper setFilename:[path lastPathComponent]]; [fileWrapper addRegularFileWithContents:[self dataOfKaihatuHistory] preferredFilename:@"kaihatu.tsv"]; @@ -157,7 +157,10 @@ [fileWrapper addRegularFileWithContents:[self dataOfKenzoMark] preferredFilename:@"kenzoMark.tsv"]; - [fileWrapper writeToFile:path atomically:YES updateFilenames:NO]; + [fileWrapper writeToURL:[NSURL fileURLWithPath:path] + options:NSFileWrapperWritingAtomic + originalContentsURL:nil + error:NULL]; }]; } @@ -194,6 +197,18 @@ return num == 0; } +- (NSDateFormatter *)dateFormatter +{ + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.dateFormat = @"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"; + + return formatter; +} +- (NSDate *)dateWithString:(NSString *)string +{ + return [self.dateFormatter dateFromString:string]; +} + - (void)buildKaihatuHistoryFromData:(NSData *)data { NSString *entityName = @"KaihatuHistory"; @@ -211,12 +226,12 @@ NSArray *array = [lds objectsWithEntityName:entityName error:NULL - predicateFormat:@"date = %@", [NSDate dateWithString:attr[0]]]; + predicateFormat:@"date = %@", [self dateWithString:attr[0]]]; if(array.count != 0) continue; HMKaihatuHistory *obj = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:moc]; - obj.date = [NSDate dateWithString:attr[0]]; + obj.date = [self dateWithString:attr[0]]; obj.fuel = @([attr[1] integerValue]); obj.bull = @([attr[2] integerValue]); obj.steel = @([attr[3] integerValue]); @@ -244,13 +259,13 @@ NSArray *array = [lds objectsWithEntityName:entityName error:NULL - predicateFormat:@"date = %@", [NSDate dateWithString:attr[0]]]; + predicateFormat:@"date = %@", [self dateWithString:attr[0]]]; if(array.count != 0) continue; HMKenzoHistory *obj = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:lds.managedObjectContext]; - obj.date = [NSDate dateWithString:attr[0]]; + obj.date = [self dateWithString:attr[0]]; obj.fuel = @([attr[1] integerValue]); obj.bull = @([attr[2] integerValue]); obj.steel = @([attr[3] integerValue]); @@ -299,7 +314,7 @@ [panel setAllowedFileTypes:@[@"kcdlocaldata"]]; [panel beginWithCompletionHandler:^(NSInteger result) { - if(result != NSOKButton) return; + if(result != NSModalResponseOK) return; NSFileWrapper *wrapper = [[NSFileWrapper alloc] initWithURL:panel.URL options:0 diff --git a/KCD/HMUserDefaults.m b/KCD/HMUserDefaults.m index 8a124941..b984d387 100644 --- a/KCD/HMUserDefaults.m +++ b/KCD/HMUserDefaults.m @@ -165,19 +165,29 @@ HMUserDefaults *HMStandardDefaults = nil; return [NSArray new]; } + +- (NSDateFormatter *)dateFormatter +{ + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.dateFormat = @"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"; + + return formatter; +} - (void)setPrevReloadDate:(NSDate *)prevReloadDate { if(prevReloadDate) { - [self setObject:[prevReloadDate description] forKey:@"previousReloadDateString"]; + NSString *dateString = [self.dateFormatter stringFromDate:prevReloadDate]; + [self setObject:dateString forKey:@"previousReloadDateString"]; } } - (NSDate *)prevReloadDate { + NSDate *date = nil; NSString *dateString = [self stringForKey:@"previousReloadDateString"]; if(dateString) { - return [NSDate dateWithString:dateString]; + date = [self.dateFormatter dateFromString:dateString]; } - return nil; + return date; } - (void)setShowsDebugMenu:(BOOL)showsDebugMenu diff --git a/KCD/KCD-Info.plist b/KCD/KCD-Info.plist index cd6ac93d..76a36d94 100644 --- a/KCD/KCD-Info.plist +++ b/KCD/KCD-Info.plist @@ -24,7 +24,7 @@ CFBundleIconFile CFBundleIdentifier - com.masakih.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/KCD/ja.lproj/HMDocksViewController.xib b/KCD/ja.lproj/HMDocksViewController.xib index 7bf65202..9de5e3a7 100644 --- a/KCD/ja.lproj/HMDocksViewController.xib +++ b/KCD/ja.lproj/HMDocksViewController.xib @@ -1,8 +1,8 @@ - + - - + + diff --git a/KCD/ja.lproj/HMPowerUpSupportViewController.xib b/KCD/ja.lproj/HMPowerUpSupportViewController.xib index 254168af..1eda6a11 100644 --- a/KCD/ja.lproj/HMPowerUpSupportViewController.xib +++ b/KCD/ja.lproj/HMPowerUpSupportViewController.xib @@ -1,8 +1,8 @@ - + - - + + @@ -158,7 +158,7 @@ - -