mirror of
https://github.com/samsonjs/samhuri.net-ios.git
synced 2026-03-25 09:25:47 +00:00
Merge branch 'iOS-9'
This commit is contained in:
commit
c0ad4ab4fc
444 changed files with 4092 additions and 41035 deletions
|
|
@ -17,6 +17,7 @@
|
|||
1BCFCB7B50DAE4885AE55B80 /* MuseoSans-100.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFCC3154DB1D3B3C025211 /* MuseoSans-100.otf */; };
|
||||
1BCFCC3709A3C3783E180815 /* ChangeTitleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFCE26B630D546311BB715 /* ChangeTitleViewController.m */; };
|
||||
1BCFCC637C63C780248D685E /* PostCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFCB5C36F301B2B93F8069 /* PostCell.m */; };
|
||||
1BCFCD56F7850C9BDF8261AC /* BlogSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */; };
|
||||
1BCFCD747F327FC361469D49 /* MuseoSans-100-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFCB67571197A762B88624 /* MuseoSans-100-Italic.otf */; };
|
||||
1BCFCD7E8EEBFAA97226B0BF /* UIColor+Hex.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFC23988387A5CAE551C90 /* UIColor+Hex.m */; };
|
||||
1BCFCE976D6638781FBA9942 /* MuseoSans-700.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFC462F5540C67B9D97299 /* MuseoSans-700.otf */; };
|
||||
|
|
@ -54,6 +55,7 @@
|
|||
7B9E64421A22F3840072FF42 /* BlogService.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B9E64411A22F3840072FF42 /* BlogService.m */; };
|
||||
7B9E644C1A230B940072FF42 /* JSONHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B9E644B1A230B940072FF42 /* JSONHTTPClient.m */; };
|
||||
7B9E644F1A23129B0072FF42 /* BlogStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B9E644E1A23129B0072FF42 /* BlogStatus.m */; };
|
||||
7BBA86971B4264AB00FD2320 /* NotificationToSelectorMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BBA86961B4264AB00FD2320 /* NotificationToSelectorMap.m */; };
|
||||
7BE3A0351AE461E700E45CCB /* PreviewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE3A0341AE461E700E45CCB /* PreviewViewController.m */; };
|
||||
7BF029331A27117200E42EDE /* ModelStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BF029321A27117200E42EDE /* ModelStore.m */; };
|
||||
7BF029381A280CB200E42EDE /* BlogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BF029371A280CB200E42EDE /* BlogController.m */; };
|
||||
|
|
@ -98,6 +100,7 @@
|
|||
/* Begin PBXFileReference section */
|
||||
1613DC56A86AFA7E50460A37 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1BCFC0549FB7723D8893A91C /* ExtensionItemProcessor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExtensionItemProcessor.m; sourceTree = "<group>"; };
|
||||
1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlogSplitViewController.m; sourceTree = "<group>"; };
|
||||
1BCFC23988387A5CAE551C90 /* UIColor+Hex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hex.m"; sourceTree = "<group>"; };
|
||||
1BCFC27DA8A32D0484C273A0 /* ExtensionItemProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtensionItemProcessor.h; sourceTree = "<group>"; };
|
||||
1BCFC32EC1E5AE196D194D21 /* CommonUI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommonUI.m; sourceTree = "<group>"; };
|
||||
|
|
@ -105,6 +108,7 @@
|
|||
1BCFC3B62AA92DB07923F7C1 /* PostCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PostCollection.m; sourceTree = "<group>"; };
|
||||
1BCFC40D1BFCFBF04BC79A35 /* MuseoSans-900.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-900.otf"; sourceTree = "<group>"; };
|
||||
1BCFC462F5540C67B9D97299 /* MuseoSans-700.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-700.otf"; sourceTree = "<group>"; };
|
||||
1BCFC63F2FE2EFBC1C513859 /* BlogSplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlogSplitViewController.h; sourceTree = "<group>"; };
|
||||
1BCFC7FD826AC4789F946BC9 /* MuseoSans-900-Italic.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-900-Italic.otf"; sourceTree = "<group>"; };
|
||||
1BCFCA73B716677EFBCEC417 /* CommonUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonUI.h; sourceTree = "<group>"; };
|
||||
1BCFCB18C8C8304D67E6462E /* PostCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PostCollection.h; sourceTree = "<group>"; };
|
||||
|
|
@ -163,6 +167,8 @@
|
|||
7B9E644B1A230B940072FF42 /* JSONHTTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONHTTPClient.m; sourceTree = "<group>"; };
|
||||
7B9E644D1A23129B0072FF42 /* BlogStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlogStatus.h; sourceTree = "<group>"; };
|
||||
7B9E644E1A23129B0072FF42 /* BlogStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlogStatus.m; sourceTree = "<group>"; };
|
||||
7BBA86951B4264AB00FD2320 /* NotificationToSelectorMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotificationToSelectorMap.h; sourceTree = "<group>"; };
|
||||
7BBA86961B4264AB00FD2320 /* NotificationToSelectorMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotificationToSelectorMap.m; sourceTree = "<group>"; };
|
||||
7BE3A0331AE461E700E45CCB /* PreviewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreviewViewController.h; sourceTree = "<group>"; };
|
||||
7BE3A0341AE461E700E45CCB /* PreviewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreviewViewController.m; sourceTree = "<group>"; };
|
||||
7BF029311A27117200E42EDE /* ModelStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModelStore.h; sourceTree = "<group>"; };
|
||||
|
|
@ -295,6 +301,8 @@
|
|||
7BF029351A27119B00E42EDE /* Service */,
|
||||
7B5C4BE019F2606900667D48 /* AppDelegate.h */,
|
||||
7B5C4BE119F2606900667D48 /* AppDelegate.m */,
|
||||
1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */,
|
||||
1BCFC63F2FE2EFBC1C513859 /* BlogSplitViewController.h */,
|
||||
7B5C4BE319F2606900667D48 /* PostsViewController.h */,
|
||||
7B5C4BE419F2606900667D48 /* PostsViewController.m */,
|
||||
7B5C4BE619F2606900667D48 /* EditorViewController.h */,
|
||||
|
|
@ -316,6 +324,8 @@
|
|||
7B2B43501AED5BA500BAC4E2 /* Functions.m */,
|
||||
1BCFC32EC1E5AE196D194D21 /* CommonUI.m */,
|
||||
1BCFCA73B716677EFBCEC417 /* CommonUI.h */,
|
||||
7BBA86951B4264AB00FD2320 /* NotificationToSelectorMap.h */,
|
||||
7BBA86961B4264AB00FD2320 /* NotificationToSelectorMap.m */,
|
||||
);
|
||||
path = Blog;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -469,7 +479,7 @@
|
|||
7B5C4BD119F2606900667D48 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0600;
|
||||
LastUpgradeCheck = 0700;
|
||||
ORGANIZATIONNAME = "Guru Logic Inc.";
|
||||
TargetAttributes = {
|
||||
7B08B3E61AF9CAD300435579 = {
|
||||
|
|
@ -674,6 +684,7 @@
|
|||
7B9E642E1A227FA20072FF42 /* NSString+marshmallows.m in Sources */,
|
||||
7B9E64421A22F3840072FF42 /* BlogService.m in Sources */,
|
||||
7B5C4BDF19F2606900667D48 /* main.m in Sources */,
|
||||
7BBA86971B4264AB00FD2320 /* NotificationToSelectorMap.m in Sources */,
|
||||
7BF029331A27117200E42EDE /* ModelStore.m in Sources */,
|
||||
7B2B43511AED5BA500BAC4E2 /* Functions.m in Sources */,
|
||||
7BF029381A280CB200E42EDE /* BlogController.m in Sources */,
|
||||
|
|
@ -685,6 +696,7 @@
|
|||
1BCFCF6DB93786CC2EDB8F69 /* PostCollection.m in Sources */,
|
||||
1BCFCC3709A3C3783E180815 /* ChangeTitleViewController.m in Sources */,
|
||||
1BCFC7C3FCBF364F3239C3D4 /* CommonUI.m in Sources */,
|
||||
1BCFCD56F7850C9BDF8261AC /* BlogSplitViewController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -745,6 +757,7 @@
|
|||
INFOPLIST_FILE = samhuri.net/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.Blog.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
|
|
@ -761,6 +774,7 @@
|
|||
INFOPLIST_FILE = samhuri.net/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.Blog.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
|
|
@ -785,7 +799,9 @@
|
|||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
|
|
@ -828,6 +844,7 @@
|
|||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Distribution";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
|
|
@ -856,6 +873,7 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
INFOPLIST_FILE = Blog/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
};
|
||||
|
|
@ -870,6 +888,7 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
INFOPLIST_FILE = Blog/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
};
|
||||
|
|
@ -889,6 +908,7 @@
|
|||
);
|
||||
INFOPLIST_FILE = BlogTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Blog.app/Blog";
|
||||
};
|
||||
|
|
@ -904,6 +924,7 @@
|
|||
);
|
||||
INFOPLIST_FILE = BlogTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Blog.app/Blog";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
|
@ -27,7 +28,28 @@
|
|||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BF419F2606900667D48"
|
||||
BuildableName = "BlogTests.xctest"
|
||||
BlueprintName = "BlogTests"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BD819F2606900667D48"
|
||||
BuildableName = "Blog.app"
|
||||
BlueprintName = "Blog"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
|
|
@ -37,6 +59,7 @@
|
|||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
|
|
@ -57,6 +80,15 @@
|
|||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BD819F2606900667D48"
|
||||
BuildableName = "Blog.app"
|
||||
BlueprintName = "Blog"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
|
|
|
|||
|
|
@ -1,10 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction>
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForRunning = "YES">
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B08B3E61AF9CAD300435579"
|
||||
|
|
@ -15,10 +22,47 @@
|
|||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<LaunchAction
|
||||
useCustomWorkingDirectory = "NO"
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<BuildableProductRunnable>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BF419F2606900667D48"
|
||||
BuildableName = "BlogTests.xctest"
|
||||
BlueprintName = "BlogTests"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BD819F2606900667D48"
|
||||
BuildableName = "Blog.app"
|
||||
BlueprintName = "Blog"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B5C4BD819F2606900667D48"
|
||||
|
|
@ -27,5 +71,30 @@
|
|||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B08B3E61AF9CAD300435579"
|
||||
BuildableName = "samhuri.net.appex"
|
||||
BlueprintName = "samhuri.net"
|
||||
ReferencedContainer = "container:Blog.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
|
|
|
|||
|
|
@ -6,37 +6,27 @@
|
|||
// Copyright (c) 2014 Guru Logic Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <HockeySDK/HockeySDK.h>
|
||||
#import <dyci/SFDynamicCodeInjection.h>
|
||||
#import "AppDelegate.h"
|
||||
#import "PostsViewController.h"
|
||||
#import "EditorViewController.h"
|
||||
#import "SamhuriNet.h"
|
||||
#import "Functions.h"
|
||||
#import "BlogSplitViewController.h"
|
||||
|
||||
@interface AppDelegate () <UISplitViewControllerDelegate>
|
||||
|
||||
@property (nonatomic, readonly, strong) SamhuriNet *site;
|
||||
@property (nonatomic, readonly, strong) PostsViewController *postsViewController;
|
||||
@property (nonatomic, readonly, strong) EditorViewController *editorViewControllerForPhone;
|
||||
@property (nonatomic, readonly, strong) EditorViewController *editorViewControllerForPad;
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize site = _site;
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
[self setupCodeInjection];
|
||||
[self setupHockeySDK];
|
||||
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
|
||||
UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
|
||||
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
|
||||
BlogSplitViewController *splitViewController = (BlogSplitViewController *)self.window.rootViewController;
|
||||
splitViewController.delegate = self;
|
||||
self.postsViewController.blogController = self.site.blogController;
|
||||
self.editorViewControllerForPhone.blogController = self.site.blogController;
|
||||
self.editorViewControllerForPad.blogController = self.site.blogController;
|
||||
splitViewController.site = [SamhuriNet new];
|
||||
splitViewController.editorViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
|
||||
splitViewController.editorViewController.navigationItem.leftItemsSupplementBackButton = YES;
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
|
@ -52,43 +42,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void)setupHockeySDK {
|
||||
[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"15435e2af912c96d7068c47c7bc6438f"];
|
||||
[[BITHockeyManager sharedHockeyManager] startManager];
|
||||
[[BITHockeyManager sharedHockeyManager].authenticator authenticateInstallation];
|
||||
}
|
||||
|
||||
- (PostsViewController *)postsViewController {
|
||||
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
|
||||
UINavigationController *navigationController = splitViewController.viewControllers.firstObject;
|
||||
PostsViewController *postsViewController = (PostsViewController *)navigationController.viewControllers.firstObject;
|
||||
return postsViewController;
|
||||
}
|
||||
|
||||
- (EditorViewController *)editorViewControllerForPhone {
|
||||
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
|
||||
UINavigationController *navigationController = splitViewController.viewControllers.firstObject;
|
||||
if (navigationController.viewControllers.count > 1) {
|
||||
navigationController = navigationController.viewControllers.lastObject;
|
||||
}
|
||||
EditorViewController *editorViewController = (EditorViewController *)navigationController.viewControllers.firstObject;
|
||||
return editorViewController;
|
||||
}
|
||||
|
||||
- (EditorViewController *)editorViewControllerForPad {
|
||||
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
|
||||
UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
|
||||
EditorViewController *editorViewController = (EditorViewController *)navigationController.viewControllers.firstObject;
|
||||
return editorViewController;
|
||||
}
|
||||
|
||||
- (SamhuriNet *)site {
|
||||
if (!_site) {
|
||||
_site = [SamhuriNet new];
|
||||
}
|
||||
return _site;
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
|
||||
|
|
@ -131,14 +84,10 @@
|
|||
NSLog(@"did decode restorable state with coder %@", coder);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - UISplitViewDelegate methods
|
||||
|
||||
- (BOOL) splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
|
||||
UINavigationController *navigationController = [secondaryViewController isKindOfClass:[UINavigationController class]]
|
||||
? (UINavigationController *)secondaryViewController
|
||||
: nil;
|
||||
EditorViewController *editorViewController = navigationController.topViewController ? safeCast(navigationController.topViewController, [EditorViewController class]) : nil;
|
||||
- (BOOL)splitViewController:(BlogSplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
|
||||
EditorViewController *editorViewController = splitViewController.editorViewController;
|
||||
if (!editorViewController.post) {
|
||||
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
|
||||
return YES;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="H1p-Uh-vWS">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8121.20" systemVersion="15A204h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="H1p-Uh-vWS">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8101.16"/>
|
||||
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
</dependencies>
|
||||
|
|
@ -22,6 +23,7 @@
|
|||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" barStyle="black" translucent="NO" id="Pmd-2v-anx">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<animations/>
|
||||
<color key="tintColor" red="0.79534143518518507" green="0.0" blue="0.013255690586419705" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="barTintColor" red="0.1333333333" green="0.1333333333" blue="0.1333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
|
|
@ -45,7 +47,7 @@
|
|||
<viewControllerLayoutGuide type="bottom" id="GAO-Cl-Wes"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="svH-Pt-448">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="536"/>
|
||||
<rect key="frame" x="0.0" y="64" width="600" height="536"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D5w-s5-7oj" userLabel="Link View">
|
||||
|
|
@ -53,6 +55,7 @@
|
|||
<subviews>
|
||||
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UEU-f2-Xco" userLabel="Link">
|
||||
<rect key="frame" x="0.0" y="4" width="30" height="24"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="UEU-f2-Xco" secondAttribute="height" multiplier="1:1" id="HaA-ZR-lpJ"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="20" id="o69-uA-gKN"/>
|
||||
|
|
@ -69,7 +72,8 @@
|
|||
</variation>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" restorationIdentifier="Link Button" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ydf-ii-P8M">
|
||||
<rect key="frame" x="30" y="1" width="116" height="29"/>
|
||||
<rect key="frame" x="30" y="1" width="117" height="29"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<state key="normal" title="http://samhuri.net">
|
||||
<color key="titleColor" red="0.96862745098039216" green="0.96862745098039216" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
|
|
@ -81,6 +85,7 @@
|
|||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" restorationIdentifier="Remove Link Button" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="81X-Pe-PFV">
|
||||
<rect key="frame" x="570" y="0.0" width="30" height="30"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="81X-Pe-PFV" secondAttribute="height" multiplier="1:1" id="iW2-b5-VdB"/>
|
||||
</constraints>
|
||||
|
|
@ -94,6 +99,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerY" secondItem="ydf-ii-P8M" secondAttribute="centerY" id="0vl-tP-uea"/>
|
||||
|
|
@ -118,7 +124,8 @@
|
|||
</variation>
|
||||
</view>
|
||||
<label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Using Emacs to Develop Mojo Apps for WebOS or Something Even Longer Than That" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HlE-1R-AqU" userLabel="Title Label">
|
||||
<rect key="frame" x="21" y="38" width="559" height="41"/>
|
||||
<rect key="frame" x="21" y="38" width="559.5" height="40.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
|
||||
<color key="textColor" red="0.96862745100000003" green="0.96862745100000003" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
|
@ -127,14 +134,16 @@
|
|||
</connections>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cwh-4G-e0V" userLabel="Separator View">
|
||||
<rect key="frame" x="0.0" y="87" width="600" height="1"/>
|
||||
<rect key="frame" x="0.0" y="86" width="600" height="1"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.31372549019607843" green="0.31372549019607843" blue="0.31372549019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="zkb-Pd-Wg0"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" restorationIdentifier="Editor Text View" alwaysBounceVertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wrG-1y-ZY3">
|
||||
<rect key="frame" x="0.0" y="88" width="600" height="404"/>
|
||||
<rect key="frame" x="0.0" y="87" width="600" height="404.5"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.26666666666666666" green="0.26666666666666666" blue="0.26666666666666666" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<string key="text">The latest technology I've been learning is Palm's SDK for webOS,
|
||||
Mojo. My first impression is that it's a great platform and
|
||||
|
|
@ -180,6 +189,7 @@ wanted with as little input and thought as possible.</string>
|
|||
</textView>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translucent="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YUD-Xe-6Cc">
|
||||
<rect key="frame" x="0.0" y="492" width="600" height="44"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.13333333333333333" green="0.13333333333333333" blue="0.13333333333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<items>
|
||||
<barButtonItem title="Publish" id="qEb-VA-ueB">
|
||||
|
|
@ -203,6 +213,7 @@ wanted with as little input and thought as possible.</string>
|
|||
<color key="barTintColor" red="0.1333333333" green="0.1333333333" blue="0.1333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</toolbar>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" red="0.7953414352" green="0.0" blue="0.013255690590000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
|
|
@ -284,6 +295,7 @@ wanted with as little input and thought as possible.</string>
|
|||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="Text Field" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="G2v-XU-V16">
|
||||
<rect key="frame" x="16" y="15" width="288" height="30"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.2666666667" green="0.2666666667" blue="0.2666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="textColor" red="0.96862745100000003" green="0.96862745100000003" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
|
|
@ -293,6 +305,7 @@ wanted with as little input and thought as possible.</string>
|
|||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerX" secondItem="G2v-XU-V16" secondAttribute="centerX" id="1bq-IE-HrD"/>
|
||||
<constraint firstItem="G2v-XU-V16" firstAttribute="width" secondItem="B66-2b-lYL" secondAttribute="width" constant="-32" id="7ms-ZC-kzo"/>
|
||||
|
|
@ -321,16 +334,19 @@ wanted with as little input and thought as possible.</string>
|
|||
<viewControllerLayoutGuide type="bottom" id="qQh-ht-rVd"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="d1U-C6-XQQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="536"/>
|
||||
<rect key="frame" x="0.0" y="64" width="600" height="536"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="zNM-N6-tdC">
|
||||
<rect key="frame" x="282" y="250" width="37" height="37"/>
|
||||
<animations/>
|
||||
</activityIndicatorView>
|
||||
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="LTA-w8-Izg">
|
||||
<rect key="frame" x="564" y="20" width="20" height="20"/>
|
||||
<rect key="frame" x="560" y="20" width="20" height="20"/>
|
||||
<animations/>
|
||||
</activityIndicatorView>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.1333333333" green="0.1333333333" blue="0.1333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="LTA-w8-Izg" firstAttribute="trailing" secondItem="d1U-C6-XQQ" secondAttribute="trailingMargin" id="2XG-V6-KeX"/>
|
||||
|
|
@ -352,10 +368,10 @@ wanted with as little input and thought as possible.</string>
|
|||
</objects>
|
||||
<point key="canvasLocation" x="1478" y="129"/>
|
||||
</scene>
|
||||
<!--Split View Controller-->
|
||||
<!--Blog Split View Controller-->
|
||||
<scene sceneID="Nki-YV-4Qg">
|
||||
<objects>
|
||||
<splitViewController storyboardIdentifier="Split View Controller" useStoryboardIdentifierAsRestorationIdentifier="YES" id="H1p-Uh-vWS" sceneMemberID="viewController">
|
||||
<splitViewController storyboardIdentifier="Split View Controller" useStoryboardIdentifierAsRestorationIdentifier="YES" id="H1p-Uh-vWS" customClass="BlogSplitViewController" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<connections>
|
||||
|
|
@ -372,13 +388,15 @@ wanted with as little input and thought as possible.</string>
|
|||
<objects>
|
||||
<tableViewController storyboardIdentifier="Posts View Controller" title="Posts" useStoryboardIdentifierAsRestorationIdentifier="YES" id="7bK-jq-Zjz" customClass="PostsViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="Posts Table View" alwaysBounceVertical="YES" indicatorStyle="white" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="r7i-6Z-zg0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="536"/>
|
||||
<rect key="frame" x="0.0" y="64" width="600" height="536"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" red="0.7953414352" green="0.0" blue="0.013255690590000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<searchBar key="tableHeaderView" contentMode="redraw" barStyle="black" searchBarStyle="minimal" placeholder="Search" showsCancelButton="YES" id="QTr-jX-TNh">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<animations/>
|
||||
<color key="tintColor" red="0.96862745100000003" green="0.96862745100000003" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="barTintColor" red="0.96862745100000003" green="0.96862745100000003" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<textInputTraits key="textInputTraits" returnKeyType="search" enablesReturnKeyAutomatically="YES"/>
|
||||
|
|
@ -388,25 +406,28 @@ wanted with as little input and thought as possible.</string>
|
|||
</searchBar>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" rowHeight="58" id="WCw-Qf-5nD" customClass="PostCell">
|
||||
<rect key="frame" x="0.0" y="86" width="320" height="44"/>
|
||||
<rect key="frame" x="0.0" y="93.5" width="600" height="58"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="WCw-Qf-5nD" id="37f-cq-3Eg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="57.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" text="2015-04-19" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vd6-ZS-EnM">
|
||||
<rect key="frame" x="8" y="35" width="65" height="14.5"/>
|
||||
<rect key="frame" x="8" y="35" width="68" height="14.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="I Can't Wait to See What Trey Parker & Matt Stone Do With This" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sTp-VX-x9k">
|
||||
<rect key="frame" x="8" y="11" width="584" height="17"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="vd6-ZS-EnM" firstAttribute="top" secondItem="sTp-VX-x9k" secondAttribute="bottom" constant="2" id="40P-IG-vhq"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="vd6-ZS-EnM" secondAttribute="bottom" id="5E9-cV-kNx"/>
|
||||
|
|
@ -438,6 +459,7 @@ wanted with as little input and thought as possible.</string>
|
|||
</mask>
|
||||
</variation>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.1333333333" green="0.1333333333" blue="0.1333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<outlet property="dateLabel" destination="vd6-ZS-EnM" id="mER-WA-QZz"/>
|
||||
|
|
@ -462,6 +484,7 @@ wanted with as little input and thought as possible.</string>
|
|||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<refreshControl key="refreshControl" opaque="NO" multipleTouchEnabled="YES" contentMode="center" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="ywL-K4-nCx">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<animations/>
|
||||
<connections>
|
||||
<action selector="refresh:" destination="7bK-jq-Zjz" eventType="valueChanged" id="N7M-8B-qbe"/>
|
||||
</connections>
|
||||
|
|
@ -493,6 +516,7 @@ wanted with as little input and thought as possible.</string>
|
|||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" barStyle="black" translucent="NO" id="DjV-YW-jjY">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<animations/>
|
||||
<color key="tintColor" red="0.7953414352" green="0.0" blue="0.013255690590000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="barTintColor" red="0.1333333333" green="0.1333333333" blue="0.1333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
|
|
@ -509,6 +533,6 @@ wanted with as little input and thought as possible.</string>
|
|||
</scene>
|
||||
</scenes>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="6S0-TO-JiA"/>
|
||||
<segue reference="Tll-UG-LXB"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
||||
|
|
|
|||
17
Blog/BlogSplitViewController.h
Normal file
17
Blog/BlogSplitViewController.h
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//
|
||||
// Created by Sami Samhuri on 2015-06-27.
|
||||
// Copyright (c) 2015 Guru Logic Inc. All rights reserved.
|
||||
//
|
||||
@import UIKit;
|
||||
|
||||
@class SamhuriNet;
|
||||
@class EditorViewController;
|
||||
|
||||
@interface BlogSplitViewController : UISplitViewController
|
||||
|
||||
@property (nonatomic, strong) SamhuriNet *site;
|
||||
@property (nonatomic, readonly, strong) UINavigationController *masterNavigationController;
|
||||
@property (nonatomic, readonly, strong) UINavigationController *detailNavigationController;
|
||||
@property (nonatomic, readonly, strong) EditorViewController *editorViewController;
|
||||
|
||||
@end
|
||||
56
Blog/BlogSplitViewController.m
Normal file
56
Blog/BlogSplitViewController.m
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
//
|
||||
// Created by Sami Samhuri on 2015-06-27.
|
||||
// Copyright (c) 2015 Guru Logic Inc. All rights reserved.
|
||||
//
|
||||
#import <ObjectiveSugar/NSArray+ObjectiveSugar.h>
|
||||
#import "BlogSplitViewController.h"
|
||||
#import "PostsViewController.h"
|
||||
#import "EditorViewController.h"
|
||||
#import "SamhuriNet.h"
|
||||
|
||||
@interface BlogSplitViewController ()
|
||||
|
||||
@property (nonatomic, readonly, strong) PostsViewController *postsViewController;
|
||||
|
||||
@end
|
||||
|
||||
@implementation BlogSplitViewController
|
||||
|
||||
- (void)setSite:(SamhuriNet *)site {
|
||||
_site = site;
|
||||
self.postsViewController.blogController = self.site.blogController;
|
||||
self.editorViewController.blogController = self.site.blogController;
|
||||
}
|
||||
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
self.postsViewController.preferredContentSize = CGSizeMake(320, 600);
|
||||
}
|
||||
|
||||
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator {
|
||||
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
|
||||
[self updateForNewTraitCollection:newCollection];
|
||||
}
|
||||
|
||||
- (void)updateForNewTraitCollection:(UITraitCollection *)newCollection {
|
||||
BOOL isCompact = newCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact;
|
||||
self.postsViewController.clearsSelectionOnViewWillAppear = isCompact;
|
||||
}
|
||||
|
||||
- (UINavigationController *)masterNavigationController {
|
||||
return self.viewControllers.firstObject;
|
||||
}
|
||||
|
||||
- (UINavigationController *)detailNavigationController {
|
||||
return self.viewControllers.count == 2 ? self.viewControllers.lastObject : nil;
|
||||
}
|
||||
|
||||
- (PostsViewController *)postsViewController {
|
||||
return (PostsViewController *)self.masterNavigationController.viewControllers.firstObject;
|
||||
}
|
||||
|
||||
- (EditorViewController *)editorViewController {
|
||||
return (EditorViewController *)self.detailNavigationController.viewControllers.firstObject;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
#import "UIColor+Hex.h"
|
||||
#import "MBProgressHUD.h"
|
||||
#import "CommonUI.h"
|
||||
#import "NotificationToSelectorMap.h"
|
||||
|
||||
@interface EditorViewController () <UITextViewDelegate, UIPopoverPresentationControllerDelegate>
|
||||
|
||||
|
|
@ -34,6 +35,7 @@
|
|||
@property (nonatomic, strong) Post *modifiedPost;
|
||||
@property (nonatomic, readonly, assign, getter=isDirty) BOOL dirty;
|
||||
@property (nonatomic, strong) PMKPromise *savePromise;
|
||||
@property (nonatomic, strong) NotificationToSelectorMap *notificationMap;
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -42,38 +44,46 @@
|
|||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self setupFontAwesomeIcons];
|
||||
[self setupNotifications];
|
||||
self.linkView.hidden = YES;
|
||||
}
|
||||
|
||||
- (void)setupNotifications {
|
||||
NSDictionary *map = @{UIApplicationWillResignActiveNotification: NSStringFromSelector(@selector(applicationWillResignActive:)),
|
||||
UIApplicationDidBecomeActiveNotification: NSStringFromSelector(@selector(applicationDidBecomeActive:)),
|
||||
UIPasteboardChangedNotification: NSStringFromSelector(@selector(configureLinkView)),
|
||||
UIKeyboardWillShowNotification: NSStringFromSelector(@selector(keyboardWillShow:)),
|
||||
UIKeyboardWillHideNotification: NSStringFromSelector(@selector(keyboardWillHide:)),
|
||||
DraftRemovedNotification: NSStringFromSelector(@selector(postDeleted:)),
|
||||
PublishedPostRemovedNotification: NSStringFromSelector(@selector(postDeleted:)),
|
||||
};
|
||||
self.notificationMap = [[NotificationToSelectorMap alloc] initWithNotificationMap:map];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
NSAssert(self.blogController, @"blogController is required");
|
||||
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
|
||||
[notificationCenter addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(configureLinkView) name:UIPasteboardChangedNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(postDeleted:) name:DraftRemovedNotification object:nil];
|
||||
[notificationCenter addObserver:self selector:@selector(postDeleted:) name:PublishedPostRemovedNotification object:nil];
|
||||
[self configureView];
|
||||
[self restoreScrollOffset];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
[self.notificationMap addObserver:self];
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewWillDisappear:animated];
|
||||
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
|
||||
[notificationCenter removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:UIPasteboardChangedNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:UIKeyboardWillShowNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:UIKeyboardWillHideNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:DraftRemovedNotification object:nil];
|
||||
[notificationCenter removeObserver:self name:PublishedPostRemovedNotification object:nil];
|
||||
if (self.post) {
|
||||
[self savePostAndWaitForCompilation:NO];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
[super viewDidDisappear:animated];
|
||||
[self.notificationMap removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
[super prepareForSegue:segue sender:sender];
|
||||
if ([segue.identifier isEqualToString:@"showPreview"]) {
|
||||
|
|
@ -119,7 +129,10 @@
|
|||
}
|
||||
|
||||
- (NSString *)statusText {
|
||||
return self.modifiedPost.draft ? @"Draft" : self.modifiedPost.date;
|
||||
if (self.post) {
|
||||
return self.modifiedPost.draft ? @"Draft" : self.modifiedPost.date;
|
||||
}
|
||||
return @"";
|
||||
}
|
||||
|
||||
- (void)configureLinkView {
|
||||
|
|
@ -131,6 +144,7 @@
|
|||
self.removeLinkButton.hidden = !url;
|
||||
const CGFloat titleLabelTop = TitleLabelTopMargin + CGRectGetMaxY(self.linkView.frame);
|
||||
if (self.titleLabelTopConstraint.constant <= titleLabelTop) {
|
||||
self.linkView.hidden = NO;
|
||||
self.linkView.alpha = 1;
|
||||
self.linkButton.alpha = 0;
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
|
|
@ -143,6 +157,8 @@
|
|||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.linkView.alpha = 0;
|
||||
self.titleLabelTopConstraint.constant = TitleLabelTopMargin;
|
||||
} completion:^(BOOL finished) {
|
||||
self.linkView.hidden = YES;
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
|
@ -22,6 +22,20 @@
|
|||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>FontAwesome.otf</string>
|
||||
<string>MuseoSans-100-Italic.otf</string>
|
||||
<string>MuseoSans-100.otf</string>
|
||||
<string>MuseoSans-300-Italic.otf</string>
|
||||
<string>MuseoSans-300.otf</string>
|
||||
<string>MuseoSans-500-Italic.otf</string>
|
||||
<string>MuseoSans-500.otf</string>
|
||||
<string>MuseoSans-700-Italic.otf</string>
|
||||
<string>MuseoSans-700.otf</string>
|
||||
<string>MuseoSans-900-Italic.otf</string>
|
||||
<string>MuseoSans-900.otf</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
|
|
@ -32,8 +46,6 @@
|
|||
</array>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleLightContent</string>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>UIStatusBarTintParameters</key>
|
||||
<dict>
|
||||
<key>UINavigationBar</key>
|
||||
|
|
@ -49,6 +61,7 @@
|
|||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
|
|
@ -57,19 +70,7 @@
|
|||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>FontAwesome.otf</string>
|
||||
<string>MuseoSans-100-Italic.otf</string>
|
||||
<string>MuseoSans-100.otf</string>
|
||||
<string>MuseoSans-300-Italic.otf</string>
|
||||
<string>MuseoSans-300.otf</string>
|
||||
<string>MuseoSans-500-Italic.otf</string>
|
||||
<string>MuseoSans-500.otf</string>
|
||||
<string>MuseoSans-700-Italic.otf</string>
|
||||
<string>MuseoSans-700.otf</string>
|
||||
<string>MuseoSans-900-Italic.otf</string>
|
||||
<string>MuseoSans-900.otf</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
19
Blog/NotificationToSelectorMap.h
Normal file
19
Blog/NotificationToSelectorMap.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// NotificationToSelectorMap.h
|
||||
// Blog
|
||||
//
|
||||
// Created by Sami Samhuri on 2015-06-29.
|
||||
// Copyright © 2015 Guru Logic Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NotificationToSelectorMap : NSObject
|
||||
|
||||
@property (nonatomic, copy, nonnull) NSDictionary *notificationNameToSelectorNameMap;
|
||||
|
||||
- (nonnull instancetype)initWithNotificationMap:(nonnull NSDictionary *)notificationMap;
|
||||
- (void)addObserver:(nonnull NSObject *)observer;
|
||||
- (void)removeObserver:(nonnull NSObject *)observer;
|
||||
|
||||
@end
|
||||
36
Blog/NotificationToSelectorMap.m
Normal file
36
Blog/NotificationToSelectorMap.m
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
//
|
||||
// NotificationToSelectorMap.m
|
||||
// Blog
|
||||
//
|
||||
// Created by Sami Samhuri on 2015-06-29.
|
||||
// Copyright © 2015 Guru Logic Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NotificationToSelectorMap.h"
|
||||
|
||||
@implementation NotificationToSelectorMap
|
||||
|
||||
- (nonnull instancetype)initWithNotificationMap:(nonnull NSDictionary *)notificationMap {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_notificationNameToSelectorNameMap = notificationMap;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)addObserver:(nonnull NSObject *)observer {
|
||||
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
|
||||
for (NSString *notificationName in self.notificationNameToSelectorNameMap.allKeys) {
|
||||
NSString *selectorName = self.notificationNameToSelectorNameMap[notificationName];
|
||||
[notificationCenter addObserver:observer selector:NSSelectorFromString(selectorName) name:notificationName object:nil];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)removeObserver:(nonnull NSObject *)observer {
|
||||
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
|
||||
for (NSString *notificationName in self.notificationNameToSelectorNameMap.allKeys) {
|
||||
[notificationCenter removeObserver:observer name:notificationName object:nil];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -38,6 +38,7 @@
|
|||
@property (nonatomic, copy) NSString *blogStatusText;
|
||||
@property (nonatomic, strong) NSDate *blogStatusDate;
|
||||
@property (nonatomic, strong) NSTimer *blogStatusTimer;
|
||||
@property (nonatomic, strong) NSIndexPath *selectedIndexPath;
|
||||
@property (nonatomic, weak) NSLayoutConstraint *titleViewWidthConstraint;
|
||||
@property (nonatomic, weak) NSLayoutConstraint *titleViewHeightConstraint;
|
||||
@property (nonatomic, weak) NSLayoutConstraint *titleLabelTopConstraint;
|
||||
|
|
@ -63,11 +64,6 @@ static const NSUInteger SectionPublished = 1;
|
|||
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
||||
self.clearsSelectionOnViewWillAppear = NO;
|
||||
self.preferredContentSize = CGSizeMake(320.0, 600.0);
|
||||
}
|
||||
|
||||
[self setupTitleView];
|
||||
[self setupFontAwesomeIcons];
|
||||
self.refreshControl.tintColor = [UIColor whiteColor];
|
||||
|
|
@ -84,7 +80,7 @@ static const NSUInteger SectionPublished = 1;
|
|||
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:titleView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:0];
|
||||
[titleView addConstraint:widthConstraint];
|
||||
self.titleViewWidthConstraint = widthConstraint;
|
||||
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:titleView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:0];
|
||||
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:titleView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:8 + CGRectGetMaxY(self.navigationController.navigationBar.frame)];
|
||||
[titleView addConstraint:heightConstraint];
|
||||
self.titleViewHeightConstraint = heightConstraint;
|
||||
titleView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
|
|
@ -100,9 +96,7 @@ static const NSUInteger SectionPublished = 1;
|
|||
titleLabel.text = self.navigationItem.title;
|
||||
[titleLabel sizeToFit];
|
||||
[titleView addSubview:titleLabel];
|
||||
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:titleLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeTop multiplier:1 constant:0];
|
||||
[titleView addConstraint:topConstraint];
|
||||
self.titleLabelTopConstraint = topConstraint;
|
||||
[titleView addConstraint:[NSLayoutConstraint constraintWithItem:titleLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeTop multiplier:1 constant:18]];
|
||||
[titleView addConstraint:[NSLayoutConstraint constraintWithItem:titleLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
|
||||
self.titleLabel = titleLabel;
|
||||
UILabel *subtitleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
|
||||
|
|
@ -111,26 +105,15 @@ static const NSUInteger SectionPublished = 1;
|
|||
subtitleLabel.textColor = [UIColor whiteColor];
|
||||
[subtitleLabel sizeToFit];
|
||||
[titleView addSubview:subtitleLabel];
|
||||
[titleView addConstraint:[NSLayoutConstraint constraintWithItem:subtitleLabel attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeBottom multiplier:1 constant:-9]];
|
||||
[titleView addConstraint:[NSLayoutConstraint constraintWithItem:subtitleLabel attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]];
|
||||
[titleView addConstraint:[NSLayoutConstraint constraintWithItem:subtitleLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:titleView attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
|
||||
self.statusLabel = subtitleLabel;
|
||||
self.navigationItem.titleView = titleView;
|
||||
}
|
||||
|
||||
- (void)updateTitleViewConstraints;
|
||||
{
|
||||
- (void)updateTitleViewConstraints {
|
||||
self.titleViewWidthConstraint.constant = CGRectGetWidth(self.view.bounds);
|
||||
CGFloat height = CGRectGetHeight(self.navigationController.navigationBar.bounds);
|
||||
CGFloat top = 5;
|
||||
// This is more reliable than checking if it's portrait.
|
||||
if (!UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
|
||||
{
|
||||
// status bar
|
||||
height += 20;
|
||||
top += 15;
|
||||
}
|
||||
self.titleViewHeightConstraint.constant = height;
|
||||
self.titleLabelTopConstraint.constant = top;
|
||||
self.titleViewHeightConstraint.constant = 8 + CGRectGetHeight(self.navigationController.navigationBar.bounds);
|
||||
[self.titleLabel.superview setNeedsUpdateConstraints];
|
||||
}
|
||||
|
||||
|
|
@ -154,6 +137,8 @@ static const NSUInteger SectionPublished = 1;
|
|||
}
|
||||
|
||||
- (void)setupBlogStatusTimer {
|
||||
// Just make sure everything is cleaned up in case we get called twice.
|
||||
[self teardownBlogStatusTimer];
|
||||
self.blogStatusTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateBlogStatus) userInfo:nil repeats:YES];
|
||||
}
|
||||
|
||||
|
|
@ -187,39 +172,47 @@ static const NSUInteger SectionPublished = 1;
|
|||
}
|
||||
|
||||
- (void)updateBlogStatus {
|
||||
[self updateStatusLabel:[NSString stringWithFormat:@"%@ as of %@", self.blogStatusText, [self.blogStatusDate mm_relativeToNow]] animated:NO];
|
||||
[self updateBlogStatusAnimated:NO];
|
||||
}
|
||||
|
||||
- (void)updateBlogStatusAnimated:(BOOL)animated {
|
||||
[self updateStatusLabel:[NSString stringWithFormat:@"%@ as of %@", self.blogStatusText, [self.blogStatusDate mm_relativeToNow]] animated:animated];
|
||||
if (!(self.blogStatusText && self.blogStatusDate)) {
|
||||
return;
|
||||
}
|
||||
NSString *status = [NSString stringWithFormat:@"%@ as of %@", self.blogStatusText, [self.blogStatusDate mm_relativeToNow]];
|
||||
[self updateStatusLabel:status animated:animated];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[self setupBlogStatusTimer];
|
||||
[self requestStatusWithCaching:YES];
|
||||
BOOL isPhone = [UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone;
|
||||
if (isPhone && self.tableView.indexPathForSelectedRow) {
|
||||
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];
|
||||
}
|
||||
if (!self.postCollections) {
|
||||
[self requestPostsWithCaching:YES];
|
||||
}
|
||||
[self setupKeyboardNotifications];
|
||||
PMKPromise *postP = self.postCollections ? [PMKPromise promiseWithValue:self.postCollections] : [self requestPostsWithCaching:YES];
|
||||
postP.then(^{
|
||||
if (self.selectedIndexPath && [self postForIndexPath:self.selectedIndexPath]) {
|
||||
[self.tableView selectRowAtIndexPath:self.selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
|
||||
self.selectedIndexPath = nil;
|
||||
}
|
||||
if (self.clearsSelectionOnViewWillAppear && self.tableView.indexPathForSelectedRow) {
|
||||
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
[self setupKeyboardNotifications];
|
||||
[self setupBlogStatusTimer];
|
||||
|
||||
if (!self.hasAppeared) {
|
||||
self.hasAppeared = YES;
|
||||
[self hideSearchBarAnimated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
[super viewWillDisappear:animated];
|
||||
[self teardownBlogStatusTimer];
|
||||
[self teardownKeyboardNotifications];
|
||||
[self teardownBlogStatusTimer];
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews {
|
||||
|
|
@ -239,7 +232,6 @@ static const NSUInteger SectionPublished = 1;
|
|||
}
|
||||
|
||||
- (PMKPromise *)requestStatusWithCaching:(BOOL)useCache {
|
||||
[self teardownBlogStatusTimer];
|
||||
[self updateStatusLabel:@"Checking status" animated:YES];
|
||||
return [self.blogController requestBlogStatusWithCaching:useCache].then(^(BlogStatus *status) {
|
||||
self.blogStatusDate = status.date;
|
||||
|
|
@ -249,7 +241,6 @@ static const NSUInteger SectionPublished = 1;
|
|||
else {
|
||||
self.blogStatusText = @"Everything published";
|
||||
}
|
||||
[self setupBlogStatusTimer];
|
||||
[self updateBlogStatusAnimated:YES];
|
||||
return status;
|
||||
}).catch(^(NSError *error) {
|
||||
|
|
@ -270,11 +261,19 @@ static const NSUInteger SectionPublished = 1;
|
|||
}
|
||||
|
||||
- (PostCollection *)postCollectionForSection:(NSInteger)section {
|
||||
return [self collectionsForTableView][section];
|
||||
NSArray *collections = [self collectionsForTableView];
|
||||
if (section < collections.count) {
|
||||
return collections[section];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (Post *)postForIndexPath:(NSIndexPath *)indexPath {
|
||||
return [self postCollectionForSection:indexPath.section].posts[indexPath.row];
|
||||
PostCollection *collection = [self postCollectionForSection:indexPath.section];
|
||||
if (indexPath.row < collection.posts.count) {
|
||||
return collection.posts[indexPath.row];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSMutableArray *)drafts {
|
||||
|
|
@ -487,8 +486,6 @@ static const NSUInteger SectionPublished = 1;
|
|||
EditorViewController *controller = (EditorViewController *)[[segue destinationViewController] topViewController];
|
||||
controller.blogController = self.blogController;
|
||||
[controller configureWithPost:post];
|
||||
controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
|
||||
controller.navigationItem.leftItemsSupplementBackButton = YES;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -496,16 +493,19 @@ static const NSUInteger SectionPublished = 1;
|
|||
|
||||
static NSString *const StateRestorationBlogStatusDateKey = @"blogStatusDate";
|
||||
static NSString *const StateRestorationBlogStatusTextKey = @"blogStatusText";
|
||||
static NSString *const StateRestorationTableViewSelectedIndexPathKey = @"tableView.indexPathForSelectedRow";
|
||||
|
||||
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
|
||||
[coder encodeObject:self.blogStatusDate forKey:StateRestorationBlogStatusDateKey];
|
||||
[coder encodeObject:self.blogStatusText forKey:StateRestorationBlogStatusTextKey];
|
||||
[coder encodeObject:self.tableView.indexPathForSelectedRow forKey:StateRestorationTableViewSelectedIndexPathKey];
|
||||
[super encodeRestorableStateWithCoder:coder];
|
||||
}
|
||||
|
||||
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder {
|
||||
self.blogStatusDate = [coder decodeObjectForKey:StateRestorationBlogStatusDateKey];
|
||||
self.blogStatusText = [coder decodeObjectForKey:StateRestorationBlogStatusTextKey];
|
||||
self.selectedIndexPath = [coder decodeObjectForKey:StateRestorationTableViewSelectedIndexPathKey];
|
||||
[super decodeRestorableStateWithCoder:coder];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
}
|
||||
|
||||
- (NSString *)rootURL {
|
||||
return @"http://ocean.samhuri.net:6706/";
|
||||
return @"https://ocean.samhuri.net/";
|
||||
}
|
||||
|
||||
- (BlogController *)blogController {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>ca.gurulogic.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
|
|
|||
2
Podfile
2
Podfile
|
|
@ -20,9 +20,7 @@ target :Blog do
|
|||
pod 'dyci'
|
||||
pod 'FontAwesome+iOS', :git => 'https://github.com/alexdrone/ios-fontawesome.git'
|
||||
pod 'MBProgressHUD'
|
||||
pod 'HockeySDK'
|
||||
end
|
||||
|
||||
target :BlogTests do
|
||||
link_with :Blog
|
||||
end
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ PODS:
|
|||
- dyci/Injections (= 0.1.5.6)
|
||||
- dyci/Injections (0.1.5.6)
|
||||
- FontAwesome+iOS (0.0.1)
|
||||
- HockeySDK (3.6.4)
|
||||
- libextobjc (0.4.1):
|
||||
- libextobjc/EXTADT (= 0.4.1)
|
||||
- libextobjc/EXTConcreteProtocol (= 0.4.1)
|
||||
|
|
@ -100,7 +99,6 @@ PODS:
|
|||
DEPENDENCIES:
|
||||
- dyci
|
||||
- FontAwesome+iOS (from `https://github.com/alexdrone/ios-fontawesome.git`)
|
||||
- HockeySDK
|
||||
- libextobjc
|
||||
- Mantle
|
||||
- MBProgressHUD
|
||||
|
|
@ -121,7 +119,6 @@ SPEC CHECKSUMS:
|
|||
CocoaLumberjack: 628fca2e88ef06f7cf6817309aa405f325d9a6fa
|
||||
dyci: 099c2e6dc98abb8f21b370cabbf1443ff700608a
|
||||
FontAwesome+iOS: c6d3bbd2856b9633028d316d56133d45fb6a6cb0
|
||||
HockeySDK: c07cdd580296737edcd0963e292c19885a53f563
|
||||
libextobjc: a650fc1bf489a3d3a9bc2e621efa3e1006fc5471
|
||||
Mantle: d7c75b6fb789b20f7ae30cd0d09435fe545896ff
|
||||
MBProgressHUD: c47f2c166c126cf2ce36498d80f33e754d4e93ad
|
||||
|
|
@ -130,4 +127,4 @@ SPEC CHECKSUMS:
|
|||
PromiseKit: b333c1baae651ed1fdfb4f6f4ef18d7ca118931e
|
||||
YapDatabase: 13566c87dc9226a0f15d755edba08e8ad94cac9f
|
||||
|
||||
COCOAPODS: 0.37.1
|
||||
COCOAPODS: 0.37.2
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITActivityIndicatorButton.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAppStoreHeader.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAppVersionMetaInfo.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITArrowImageAnnotation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAttributedLabel.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAuthenticationViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAuthenticator.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAuthenticator_Private.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITBlurImageAnnotation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashAttachment.h
|
||||
1
Pods/Headers/Private/HockeySDK/BITCrashDetails.h
generated
1
Pods/Headers/Private/HockeySDK/BITCrashDetails.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashDetails.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashDetailsPrivate.h
|
||||
1
Pods/Headers/Private/HockeySDK/BITCrashManager.h
generated
1
Pods/Headers/Private/HockeySDK/BITCrashManager.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashManagerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashMetaData.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashReportTextFormatter.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackActivity.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackComposeViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackComposeViewControllerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackListViewCell.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackListViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackManagerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackMessage.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackMessageAttachment.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackUserDataViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHTTPOperation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyAppClient.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyAttachment.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyBaseManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyBaseManagerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyBaseViewController.h
|
||||
1
Pods/Headers/Private/HockeySDK/BITHockeyHelper.h
generated
1
Pods/Headers/Private/HockeySDK/BITHockeyHelper.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyHelper.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITImageAnnotation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITImageAnnotationViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITKeychainUtils.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITRectangleImageAnnotation.h
|
||||
1
Pods/Headers/Private/HockeySDK/BITStoreButton.h
generated
1
Pods/Headers/Private/HockeySDK/BITStoreButton.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITStoreButton.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITStoreUpdateManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITStoreUpdateManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITStoreUpdateManagerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITUpdateManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITUpdateManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITUpdateManagerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITUpdateViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITUpdateViewControllerPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITWebTableViewCell.h
|
||||
1
Pods/Headers/Private/HockeySDK/HockeySDK.h
generated
1
Pods/Headers/Private/HockeySDK/HockeySDK.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/HockeySDK.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/HockeySDKFeatureConfig.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/HockeySDKPrivate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITActivityIndicatorButton.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAppStoreHeader.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAppVersionMetaInfo.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITArrowImageAnnotation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAttributedLabel.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAuthenticationViewController.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITAuthenticator.h
generated
1
Pods/Headers/Public/HockeySDK/BITAuthenticator.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITAuthenticator.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITBlurImageAnnotation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashAttachment.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITCrashDetails.h
generated
1
Pods/Headers/Public/HockeySDK/BITCrashDetails.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashDetails.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITCrashManager.h
generated
1
Pods/Headers/Public/HockeySDK/BITCrashManager.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashManagerDelegate.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITCrashMetaData.h
generated
1
Pods/Headers/Public/HockeySDK/BITCrashMetaData.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashMetaData.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITCrashReportTextFormatter.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackActivity.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackComposeViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackComposeViewControllerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackListViewCell.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackListViewController.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackManagerDelegate.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackMessage.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackMessageAttachment.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITFeedbackUserDataViewController.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITHTTPOperation.h
generated
1
Pods/Headers/Public/HockeySDK/BITHTTPOperation.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHTTPOperation.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyAppClient.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyAttachment.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyBaseManager.h
|
||||
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyBaseViewController.h
|
||||
1
Pods/Headers/Public/HockeySDK/BITHockeyHelper.h
generated
1
Pods/Headers/Public/HockeySDK/BITHockeyHelper.h
generated
|
|
@ -1 +0,0 @@
|
|||
../../../HockeySDK/Classes/BITHockeyHelper.h
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue