Initial Commit
This commit is contained in:
commit
15389248af
17 changed files with 1131 additions and 0 deletions
397
Splits.xcodeproj/project.pbxproj
Normal file
397
Splits.xcodeproj/project.pbxproj
Normal file
|
|
@ -0,0 +1,397 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
850062C92802328F0095F121 /* TabViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850062C82802328F0095F121 /* TabViewData.swift */; };
|
||||
8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */; };
|
||||
85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */; };
|
||||
85AAA0D827FA2DD600F4B9A1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */; };
|
||||
85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */; };
|
||||
85AAA0DD27FA2DDA00F4B9A1 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0DC27FA2DDA00F4B9A1 /* Preview Assets.xcassets */; };
|
||||
85AAA0E627FA2EB100F4B9A1 /* ModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */; };
|
||||
85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */; };
|
||||
85AAA0EB27FA2F7000F4B9A1 /* RichTextView in Frameworks */ = {isa = PBXBuildFile; productRef = 85AAA0EA27FA2F7000F4B9A1 /* RichTextView */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
850062C82802328F0095F121 /* TabViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewData.swift; sourceTree = "<group>"; };
|
||||
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogData.swift; sourceTree = "<group>"; };
|
||||
85AAA0D227FA2DD600F4B9A1 /* Splits.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Splits.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitsApp.swift; sourceTree = "<group>"; };
|
||||
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
|
||||
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
85AAA0DC27FA2DDA00F4B9A1 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
|
||||
85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalView.swift; sourceTree = "<group>"; };
|
||||
85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
85AAA0CF27FA2DD600F4B9A1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
85AAA0EB27FA2F7000F4B9A1 /* RichTextView in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
85AAA0C927FA2DD600F4B9A1 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0D427FA2DD600F4B9A1 /* Splits */,
|
||||
85AAA0D327FA2DD600F4B9A1 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
85AAA0D327FA2DD600F4B9A1 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0D227FA2DD600F4B9A1 /* Splits.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
85AAA0D427FA2DD600F4B9A1 /* Splits */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */,
|
||||
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */,
|
||||
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */,
|
||||
850062C82802328F0095F121 /* TabViewData.swift */,
|
||||
85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */,
|
||||
85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */,
|
||||
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */,
|
||||
85AAA0DB27FA2DDA00F4B9A1 /* Preview Content */,
|
||||
);
|
||||
path = Splits;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
85AAA0DB27FA2DDA00F4B9A1 /* Preview Content */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0DC27FA2DDA00F4B9A1 /* Preview Assets.xcassets */,
|
||||
);
|
||||
path = "Preview Content";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
85AAA0D127FA2DD600F4B9A1 /* Splits */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Splits" */;
|
||||
buildPhases = (
|
||||
85AAA0CE27FA2DD600F4B9A1 /* Sources */,
|
||||
85AAA0CF27FA2DD600F4B9A1 /* Frameworks */,
|
||||
85AAA0D027FA2DD600F4B9A1 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Splits;
|
||||
packageProductDependencies = (
|
||||
85AAA0EA27FA2F7000F4B9A1 /* RichTextView */,
|
||||
);
|
||||
productName = Splits;
|
||||
productReference = 85AAA0D227FA2DD600F4B9A1 /* Splits.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
85AAA0CA27FA2DD600F4B9A1 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastSwiftUpdateCheck = 1330;
|
||||
LastUpgradeCheck = 1330;
|
||||
TargetAttributes = {
|
||||
85AAA0D127FA2DD600F4B9A1 = {
|
||||
CreatedOnToolsVersion = 13.3;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Splits" */;
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 85AAA0C927FA2DD600F4B9A1;
|
||||
packageReferences = (
|
||||
85AAA0E927FA2F7000F4B9A1 /* XCRemoteSwiftPackageReference "RichTextView" */,
|
||||
);
|
||||
productRefGroup = 85AAA0D327FA2DD600F4B9A1 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
85AAA0D127FA2DD600F4B9A1 /* Splits */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
85AAA0D027FA2DD600F4B9A1 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
85AAA0DD27FA2DDA00F4B9A1 /* Preview Assets.xcassets in Resources */,
|
||||
85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
85AAA0CE27FA2DD600F4B9A1 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
85AAA0D827FA2DD600F4B9A1 /* ContentView.swift in Sources */,
|
||||
85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */,
|
||||
850062C92802328F0095F121 /* TabViewData.swift in Sources */,
|
||||
8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */,
|
||||
85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */,
|
||||
85AAA0E627FA2EB100F4B9A1 /* ModalView.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
85AAA0DE27FA2DDA00F4B9A1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.4;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
85AAA0DF27FA2DDA00F4B9A1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.4;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
85AAA0E127FA2DDA00F4B9A1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Splits/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = UQJ7U8R2CV;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UIRequiresFullScreen = NO;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeRight UIInterfaceOrientationLandscapeLeft";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.Splits;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
85AAA0E227FA2DDA00F4B9A1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Splits/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = UQJ7U8R2CV;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UIRequiresFullScreen = NO;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeRight UIInterfaceOrientationLandscapeLeft";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.Splits;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Splits" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
85AAA0DE27FA2DDA00F4B9A1 /* Debug */,
|
||||
85AAA0DF27FA2DDA00F4B9A1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Splits" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
85AAA0E127FA2DDA00F4B9A1 /* Debug */,
|
||||
85AAA0E227FA2DDA00F4B9A1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
85AAA0E927FA2F7000F4B9A1 /* XCRemoteSwiftPackageReference "RichTextView" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/tophat/RichTextView.git";
|
||||
requirement = {
|
||||
branch = master;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
85AAA0EA27FA2F7000F4B9A1 /* RichTextView */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 85AAA0E927FA2F7000F4B9A1 /* XCRemoteSwiftPackageReference "RichTextView" */;
|
||||
productName = RichTextView;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 85AAA0CA27FA2DD600F4B9A1 /* Project object */;
|
||||
}
|
||||
7
Splits.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
Splits.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "down",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/johnxnguyen/Down",
|
||||
"state" : {
|
||||
"revision" : "f34b166be1f1db4aa8f573067e901d72f2a6be57",
|
||||
"version" : "0.11.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "iosmath",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/tophatmonocle/iosMath",
|
||||
"state" : {
|
||||
"revision" : "8c65dab2295100c02d9d844f6dc5646ab9d57b42",
|
||||
"version" : "1.1.2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "richtextview",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/tophat/RichTextView.git",
|
||||
"state" : {
|
||||
"branch" : "master",
|
||||
"revision" : "c34d4d8a45b9635ec65237b484180d8611d1f8cf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "snapkit",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/SnapKit/SnapKit",
|
||||
"state" : {
|
||||
"revision" : "d458564516e5676af9c70b4f4b2a9178294f1bc6",
|
||||
"version" : "5.0.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swiftrichstring",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/tophatmonocle/SwiftRichString",
|
||||
"state" : {
|
||||
"branch" : "master",
|
||||
"revision" : "e0b72d5c96968d7802856d2be096202c9798e8d1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>SnapKitPlayground (Playground) 1.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>5</integer>
|
||||
</dict>
|
||||
<key>SnapKitPlayground (Playground) 2.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>6</integer>
|
||||
</dict>
|
||||
<key>SnapKitPlayground (Playground).xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>4</integer>
|
||||
</dict>
|
||||
<key>Splits.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground) 1.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground) 2.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground).xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
11
Splits/Assets.xcassets/AccentColor.colorset/Contents.json
Normal file
11
Splits/Assets.xcassets/AccentColor.colorset/Contents.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
98
Splits/Assets.xcassets/AppIcon-1.appiconset/Contents.json
Normal file
98
Splits/Assets.xcassets/AppIcon-1.appiconset/Contents.json
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
98
Splits/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
98
Splits/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
38
Splits/Assets.xcassets/Color.colorset/Contents.json
Normal file
38
Splits/Assets.xcassets/Color.colorset/Contents.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
6
Splits/Assets.xcassets/Contents.json
Normal file
6
Splits/Assets.xcassets/Contents.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
54
Splits/ChangeLogData.swift
Normal file
54
Splits/ChangeLogData.swift
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
//
|
||||
// ChangeLogData.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Isaac Greene on 4/3/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct April2022: View {
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
//2022-04-09
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-04-09:")
|
||||
.font(.title2)
|
||||
Text("Version Prerelease Build LVSXT10q\n")
|
||||
.font(.footnote)
|
||||
Text("\u{2022} Fixed the math with seconds so now you can actually use them! YEAH BABY!\n\u{2022} Rounded pace so that you don't get values like 4.999999999999996 minutes per km\n\t\u{2022} Working on getting the seconds to change into minutes like 340 seconds will show as 5 minutes 40 seconds or \"0:05:40\"\n\u{2022} Removed warning about not using seconds (because they work now!)\n\u{2022} Got math color right. Issue was I had my colors switched so it showed black text in dark mode, and white text in light mode.\n\u{2022} Fixed distance between time boxes\n\u{2022} Removed text about not using seconds greater than 59 in text field")
|
||||
}
|
||||
.padding(30)
|
||||
|
||||
//2022-04-08
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-04-08:")
|
||||
.font(.title2)
|
||||
Text("Version Prerelease Build LVSXT10r\n")
|
||||
.font(.footnote)
|
||||
Text("\u{2022} Added bullet points to change log\n\u{2022} Changed text in \"Help\" section about using seconds (ended up not working)\n\u{2022} Tried unsuccessfully to dynamically change the color of the pace formula whether in dark or light mode\n\u{2022} Temporarily removed change log in Build t\n\u{2022} Fixed positioning of minutes and seconds text boxes\n\u{2022} Total time now shows correct minute/hour time (minutes and hours are no longer equal)\n\t\u{2022} Seconds still don't work properly")
|
||||
}
|
||||
.padding(30)
|
||||
|
||||
//2022-04-05
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-04-05:")
|
||||
.font(.title2)
|
||||
Text("Version Prerelease Build LVSXT10u.2\n")
|
||||
.font(.footnote)
|
||||
Text("\u{2022} Reformatted change log to include better navigation and clearer notice of changes")
|
||||
}
|
||||
.padding(30)
|
||||
|
||||
//2022-04-03
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-04-03:")
|
||||
.font(.title2)
|
||||
Text("Version Prerelease Build LVSXT10u\n")
|
||||
.font(.footnote)
|
||||
Text("\u{2022} Fixed math\n\u{2022} Implemented change log view\n\u{2022} Restructured code so it gave fewer errors\n\u{2022} Added correct pace data\n\t\u{2022} At this time, the seconds functionality is entirely broken\n\u{2022} Implemented total time view\n\t\u{2022} For some reason, the view for the minutes automatically fills in for the hours as well")
|
||||
}
|
||||
.padding(30)
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Splits/ChangeLogView.swift
Normal file
43
Splits/ChangeLogView.swift
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
//
|
||||
// ChangeLogView.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Isaac Greene on 4/3/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct ChangeLogView: View {
|
||||
@State var showSheet = false
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Button("Change log", action: {
|
||||
self.showSheet.toggle()
|
||||
})
|
||||
.padding(.bottom, 25)
|
||||
}
|
||||
.sheet(isPresented: self.$showSheet, content: {
|
||||
ChangeLog()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct ChangeLog: View {
|
||||
var body: some View {
|
||||
NavigationView {
|
||||
List {
|
||||
Section(header: Text("2022")) {
|
||||
NavigationLink("April", destination: April2022())
|
||||
}
|
||||
}
|
||||
.listStyle(.insetGrouped)
|
||||
.navigationTitle("Change log")
|
||||
}
|
||||
}
|
||||
}
|
||||
struct ChangeLog_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ChangeLog()
|
||||
}
|
||||
}
|
||||
94
Splits/ContentView.swift
Normal file
94
Splits/ContentView.swift
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
//
|
||||
// ContentView.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Isaac Greene on 4/3/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Foundation
|
||||
|
||||
struct ContentView: View {
|
||||
var SISystem = ["km","mi"]
|
||||
var minutes = Array(0...300)
|
||||
var times = Array(0...300).map { String($0) }
|
||||
@State var timeMinutes: String = ""
|
||||
@State var timeSeconds: String = ""
|
||||
@State var selectedSystem: String = "km"
|
||||
@State var distance: String = ""
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
TextField("Enter distance here", text: $distance)
|
||||
.padding()
|
||||
.keyboardType(.decimalPad)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
}
|
||||
VStack {
|
||||
Text("Unit of measurement:")
|
||||
Picker("System of measurement", selection: $selectedSystem, content: {
|
||||
ForEach(SISystem, id: \.self, content: { unit in
|
||||
Text(unit)
|
||||
})
|
||||
})
|
||||
.pickerStyle(.segmented)
|
||||
.frame(minWidth: 60, maxWidth: 300)
|
||||
HStack {
|
||||
VStack {
|
||||
Text("Total Minutes")
|
||||
TextField("Enter minutes here", text: $timeMinutes)
|
||||
.keyboardType(.numberPad)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
}
|
||||
.frame(minWidth: 100)
|
||||
.padding(.trailing, -15)
|
||||
.padding()
|
||||
VStack {
|
||||
Text("Total Seconds")
|
||||
TextField("Enter seconds here", text: $timeSeconds)
|
||||
.keyboardType(.numberPad)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
}
|
||||
.frame(minWidth: 100)
|
||||
.padding(.leading, -15)
|
||||
.padding()
|
||||
}
|
||||
PaceResults(timeMinutes: $timeMinutes, timeSeconds: $timeSeconds, selectedSystem: $selectedSystem, distance: $distance)
|
||||
}
|
||||
ChangeLogView()
|
||||
}
|
||||
}
|
||||
|
||||
struct PaceResults: View {
|
||||
@Binding var timeMinutes: String
|
||||
@Binding var timeSeconds: String
|
||||
@Binding var selectedSystem: String
|
||||
@Binding var distance: String
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
let timeMinutesDouble = Double(timeMinutes) ?? 0.0
|
||||
let timeHours = String(Int(timeMinutesDouble / 60))
|
||||
|
||||
let timeMinutesInt = Int(timeMinutes) ?? 0
|
||||
let timeSecondsInt = Int(timeSeconds) ?? 0
|
||||
|
||||
let leadingZeros = String(format: "%02d:%02d", timeMinutesInt, timeSecondsInt)
|
||||
let convertedSeconds = (Double(timeSeconds) ?? 0) * (1+(2/3))
|
||||
|
||||
let actualTime = timeMinutesDouble + (convertedSeconds / 100)
|
||||
let pace = actualTime / (Double(distance) ?? 1)
|
||||
let paceString = String(format: "%.2f", pace)
|
||||
|
||||
Text("Distance: \(distance)\(selectedSystem)")
|
||||
Text("Total time: \(timeHours):\(leadingZeros)")
|
||||
Text("\(paceString) minutes per \(selectedSystem)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ContentView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ContentView()
|
||||
}
|
||||
}
|
||||
115
Splits/ModalView.swift
Normal file
115
Splits/ModalView.swift
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
//
|
||||
// ModalView.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Isaac Greene on 4/3/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import RichTextView
|
||||
|
||||
struct ModalView: View {
|
||||
@State var showSheet2 = false
|
||||
var body: some View {
|
||||
Text("Help")
|
||||
.font(.largeTitle)
|
||||
.bold()
|
||||
.padding(.top, 40)
|
||||
Text("Due to limitations in our system, you can only use kilometers and miles at this time. \nSmaller units like meters and feet are not supported. \nYou can, however, use decimals, such as .2km or .8mi.\n\nWe apologize for any inconvenience. In the future, we hope to make our app easier to use.")
|
||||
.padding()
|
||||
Button("See our math", action: {
|
||||
self.showSheet2.toggle()
|
||||
})
|
||||
.padding(30)
|
||||
.sheet(isPresented: self.$showSheet2, content: {
|
||||
SubSubView()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct SubView: View {
|
||||
@State var showSheet2 = false
|
||||
var body: some View {
|
||||
Text("Help")
|
||||
.font(.largeTitle)
|
||||
.bold()
|
||||
.padding(.top, 40)
|
||||
Text("Due to limitations in our system, you can only use kilometers and miles at this time. \nSmaller units like meters and feet are not supported. \nYou can, however, use decimals, such as .2km or .8mi.\n\nWe apologize for any inconvenience. In the future, we hope to make our app easier to use.")
|
||||
.padding()
|
||||
Button("See our math", action: {
|
||||
self.showSheet2.toggle()
|
||||
})
|
||||
.padding(30)
|
||||
.sheet(isPresented: self.$showSheet2, content: {
|
||||
SubSubView()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct SubSubView: View {
|
||||
|
||||
var body: some View {
|
||||
Text("The Algorithm")
|
||||
.font(.largeTitle)
|
||||
.bold()
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text("Calculating pace is fairly straightforward, and does not change with increased complexity. The standard formula is simply this:\n")
|
||||
mathView()
|
||||
.frame(maxHeight: 300)
|
||||
Text("\nWhere:\n")
|
||||
HStack {
|
||||
Text("\"t\"")
|
||||
.font(.custom("Charter", size: 18))
|
||||
Text("is total time")
|
||||
}
|
||||
HStack{
|
||||
Text("\"d\"")
|
||||
.font(.custom("Charter", size: 18))
|
||||
Text("is distance")
|
||||
}
|
||||
HStack {
|
||||
Text("\"p\"")
|
||||
.font(.custom("Charter", size: 18))
|
||||
Text("is the resulting pace")
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
|
||||
struct mathView: View {
|
||||
@State var mathString:String = "[math] \\frac{t}{d} &= p [/math]"
|
||||
|
||||
var body: some View {
|
||||
mathLaTeX_inator(mathString: $mathString)
|
||||
.padding(30)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct mathLaTeX_inator: UIViewRepresentable {
|
||||
@Environment(\.colorScheme) var colorScheme
|
||||
@Binding var mathString:String
|
||||
|
||||
func makeUIView(context: Context) -> RichTextView {
|
||||
let richTextView = RichTextView(
|
||||
input: mathString,
|
||||
latexParser: LatexParser(),
|
||||
font: UIFont.systemFont(ofSize: UIFont.systemFontSize),
|
||||
textColor: (colorScheme == .dark ? UIColor.white : UIColor.black),
|
||||
frame: CGRect.zero,
|
||||
completion: nil
|
||||
)
|
||||
return richTextView
|
||||
}
|
||||
|
||||
func updateUIView(_ uiView: RichTextView, context: Context) {
|
||||
uiView.update(
|
||||
input: mathString,
|
||||
latexParser: LatexParser(),
|
||||
font: UIFont.systemFont(ofSize: UIFont.systemFontSize),
|
||||
textColor: (colorScheme == .dark ? UIColor.white : UIColor.black),
|
||||
completion: nil
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
17
Splits/SplitsApp.swift
Normal file
17
Splits/SplitsApp.swift
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//
|
||||
// SplitsApp.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Isaac Greene on 4/3/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct SplitsApp: App {
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
TabViewData()
|
||||
}
|
||||
}
|
||||
}
|
||||
33
Splits/TabViewData.swift
Normal file
33
Splits/TabViewData.swift
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
//
|
||||
// TabViewData.swift
|
||||
// Splits
|
||||
//
|
||||
// Created by Eric J. Greene on 4/9/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct TabViewData: View {
|
||||
var body: some View {
|
||||
TabView {
|
||||
ContentView()
|
||||
.tabItem {
|
||||
Label("Calculator", systemImage: "stopwatch")
|
||||
}
|
||||
ModalView()
|
||||
.tabItem {
|
||||
Label("Help", systemImage: "info.circle")
|
||||
}
|
||||
ChangeLog()
|
||||
.tabItem {
|
||||
Label("Change log", systemImage: "doc.text.fill")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct TabViewData_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
TabViewData()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue