Made small improvements like dismissing the keyboard. Tapping the Contacts tab causes the app to crash.

This commit is contained in:
Isaac Greene 2022-06-10 23:55:34 -04:00
parent b77ef882e8
commit 5c4d4f8059
21 changed files with 174 additions and 36 deletions

View file

@ -14,6 +14,10 @@
850F8018284A83400094580D /* FeaturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F8017284A83400094580D /* FeaturesView.swift */; };
850F80202853F7790094580D /* LicenseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F801F2853F7790094580D /* LicenseView.swift */; };
850F80222853F7E30094580D /* SecretView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F80212853F7E30094580D /* SecretView.swift */; };
850F8027285437500094580D /* caleb.bost.duo.heic in Resources */ = {isa = PBXBuildFile; fileRef = 850F8023285437500094580D /* caleb.bost.duo.heic */; };
850F8028285437500094580D /* aiden.moore.states.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 850F8024285437500094580D /* aiden.moore.states.jpg */; };
850F8029285437500094580D /* isaac.greene.clouds.heic in Resources */ = {isa = PBXBuildFile; fileRef = 850F8025285437500094580D /* isaac.greene.clouds.heic */; };
850F802A285437500094580D /* jake.zimmerman.group.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 850F8026285437500094580D /* jake.zimmerman.group.jpg */; };
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 */; };
@ -31,6 +35,10 @@
850F8017284A83400094580D /* FeaturesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturesView.swift; sourceTree = "<group>"; };
850F801F2853F7790094580D /* LicenseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicenseView.swift; sourceTree = "<group>"; };
850F80212853F7E30094580D /* SecretView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecretView.swift; sourceTree = "<group>"; };
850F8023285437500094580D /* caleb.bost.duo.heic */ = {isa = PBXFileReference; lastKnownFileType = file; name = caleb.bost.duo.heic; path = Assets.xcassets/caleb.bost.duo.heic; sourceTree = "<group>"; };
850F8024285437500094580D /* aiden.moore.states.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = aiden.moore.states.jpg; path = Assets.xcassets/aiden.moore.states.jpg; sourceTree = "<group>"; };
850F8025285437500094580D /* isaac.greene.clouds.heic */ = {isa = PBXFileReference; lastKnownFileType = file; name = isaac.greene.clouds.heic; path = Assets.xcassets/isaac.greene.clouds.heic; sourceTree = "<group>"; };
850F8026285437500094580D /* jake.zimmerman.group.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = jake.zimmerman.group.jpg; path = Assets.xcassets/jake.zimmerman.group.jpg; 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>"; };
@ -83,6 +91,10 @@
85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */,
850F801F2853F7790094580D /* LicenseView.swift */,
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */,
850F8025285437500094580D /* isaac.greene.clouds.heic */,
850F8023285437500094580D /* caleb.bost.duo.heic */,
850F8026285437500094580D /* jake.zimmerman.group.jpg */,
850F8024285437500094580D /* aiden.moore.states.jpg */,
85AAA0DB27FA2DDA00F4B9A1 /* Preview Content */,
);
path = Splits;
@ -162,6 +174,10 @@
files = (
85AAA0DD27FA2DDA00F4B9A1 /* Preview Assets.xcassets in Resources */,
85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */,
850F802A285437500094580D /* jake.zimmerman.group.jpg in Resources */,
850F8028285437500094580D /* aiden.moore.states.jpg in Resources */,
850F8027285437500094580D /* caleb.bost.duo.heic in Resources */,
850F8029285437500094580D /* isaac.greene.clouds.heic in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -49,7 +49,7 @@
<key>Splits.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
<key>SwiftRichString (Playground) 1.xcscheme</key>
<dict>

View file

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "aiden.moore.states.jpg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

View file

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "caleb.bost.duo.heic",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "isaac.greene.clouds.heic",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "jake.zimmerman.group.jpg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -17,11 +17,14 @@ struct June2022: View {
VStack (alignment: .leading) {
Text("2022-06-10")
.font(.title2)
Text("Version 1.0.0 (LVSXT10a)\n")
Text("Version Release Candidate (LVSXT10a)\n")
.font(.footnote)
Text("\u{2022} Got the conversion of paces to work, so a 5:00/km pace will also show as 8:03/mi\n\u{2022} This app is now considered \"Finished\" and will transition to Version Numbers")
Text("\u{2022} Got the conversion of paces to work, so a 5:00/km pace will also show as 8:03/mi\n\u{2022} This app is now considered \"Finished\" and will transition to Version Numbers\n\u{2022} FINALLY MADE A WAY TO DISMISS THE KEYBOARD\n\t\u{2022} (as with most of the other solutions I've had to use for other problems in this app, the fix was remarkably easy)\n\u{2022} Made several small quality-of-life improvements")
}
Spacer()
}
.padding(30)
//2022-06-09
HStack {
VStack (alignment: .leading) {
@ -97,6 +100,8 @@ struct June2022: View {
}
.padding(30)
}
.navigationTitle("June 2022 Log")
.navigationBarTitleDisplayMode(.inline)
}
}
@ -129,6 +134,8 @@ struct May2022: View {
}
.padding(30)
}
.navigationTitle("May 2022 Log")
.navigationBarTitleDisplayMode(.inline)
}
}
@ -226,6 +233,8 @@ struct April2022: View {
}
.padding(30)
}
.navigationTitle("April 2022 Log")
.navigationBarTitleDisplayMode(.inline)
}
}
@ -258,5 +267,7 @@ struct March2022: View {
}
.padding(30)
}
.navigationTitle("March 2022 Log")
.navigationBarTitleDisplayMode(.inline)
}
}

View file

@ -9,6 +9,7 @@ import SwiftUI
import Foundation
struct ContentView: View {
@FocusState private var nameIsFocused: Bool
var SISystem = ["km","mi"]
@State var timeHours: String = ""
@State var timeMinutes: String = ""
@ -18,11 +19,13 @@ struct ContentView: View {
var body: some View {
VStack {
Spacer()
VStack {
TextField("Enter distance here", text: $distance)
.padding()
.keyboardType(.decimalPad)
.textFieldStyle(.roundedBorder)
.focused($nameIsFocused)
}
VStack {
Text("Unit of measurement:")
@ -39,6 +42,7 @@ struct ContentView: View {
TextField("Enter hours here", text: $timeHours)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
.focused($nameIsFocused)
}
.frame(minWidth: 100)
.padding(.trailing, -15)
@ -48,6 +52,7 @@ struct ContentView: View {
TextField("Enter minutes here", text: $timeMinutes)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
.focused($nameIsFocused)
}
.frame(minWidth: 100)
.padding(.trailing, -15)
@ -58,6 +63,7 @@ struct ContentView: View {
TextField("Enter seconds here", text: $timeSeconds)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
.focused($nameIsFocused)
}
.frame(minWidth: 100)
.padding(.leading, -15)
@ -65,6 +71,13 @@ struct ContentView: View {
}
PaceResults(timeHours: $timeHours, timeMinutes: $timeMinutes, timeSeconds: $timeSeconds, selectedSystem: $selectedSystem, distance: $distance)
}
Spacer()
if nameIsFocused == true {
Button("Done") {
nameIsFocused = false
}
.padding()
}
}
}
}
@ -164,11 +177,11 @@ struct PaceResults: View {
HStack {
VStack {
Text("Distance: \(distance)\(selectedSystem)")
Text("Converted distance: \(convertedDistanceString)\(notSelectedSystem)")
Text("Distance: \(convertedDistanceString)\(notSelectedSystem)")
}
Text("Total time: \(hoursFormatted):\(leadingZeros)")
Text("Total time\n\(hoursFormatted):\(leadingZeros)")
.padding()
VStack {
VStack(alignment: .trailing) {
Text("\(paceFormatted) per \(selectedSystem)")
Text("\(paceFormattedOpposite) per \(notSelectedSystem)")
}

View file

@ -11,12 +11,20 @@ import SwiftUI
// human-readable without aid, as long as
// the reader has a basic understanding of
// Swift and/or SwiftUI.
let username = "admin"
let password = "123"
struct DocsView: View {
@State var pass: String = ""
@State var user: String = ""
enum Field: Hashable {
case username
case password
}
@State private var pass: String = ""
@State private var user: String = ""
@FocusState private var focusedField: Field?
var body: some View {
NavigationView {
List {
@ -36,14 +44,22 @@ struct DocsView: View {
}
Section(header: Text("App Information")) {
NavigationLink("Software License", destination: LicenseView())
Text("Version: 1.0.0")
Text("Version: Release Candidate (1.0.0)")
Text("Release date: 2022-06-10")
Text("Start date: 2022-03-25")
Link("Built with SwiftUI \(Image(systemName: "swift"))", destination: URL(string: "https://developer.apple.com/xcode/swiftui")!)
}
Section(header: Text("Login")) {
SecureField("Username", text: $user)
.keyboardType(.alphabet)
.textContentType(.username)
.submitLabel(.next)
.focused($focusedField, equals: .username)
SecureField("Password", text: $pass)
.keyboardType(.numbersAndPunctuation)
.textContentType(.password)
.submitLabel(.done)
.focused($focusedField, equals: .password)
if (pass == password && user == username) {
NavigationLink("Contacts", destination: SecretView())
}
@ -51,6 +67,14 @@ struct DocsView: View {
}
.navigationTitle("Docs")
}
.onSubmit {
switch focusedField {
case .username:
focusedField = .password
default:
()
}
}
}
}

View file

@ -10,10 +10,6 @@ import SwiftUI
struct NewFeatures: View {
var body: some View {
ScrollView {
Text("New Features\n")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\u{2022} Reformatted the Docs tabs and made the common things up at the top")
Text("Implemented in Version Prerelease LVSXT10d.2\n")
@ -30,6 +26,7 @@ struct NewFeatures: View {
}
.padding(30)
}
.navigationTitle("New Features")
}
}
@ -48,6 +45,7 @@ struct InProgressFeatures: View {
}
.padding(30)
}
.navigationTitle("In Progress")
}
}
@ -66,6 +64,7 @@ struct DeprecatedFeatures: View {
}
.padding(30)
}
.navigationTitle("Deprecated")
}
}

View file

@ -12,61 +12,49 @@ import SwiftUI
struct RecentlyResolved: View {
var body: some View {
ScrollView {
Text("Recently Resolved Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} None since the addition of this tab")
Text("\u{2022} Implemented an easy way to dismiss the keyboard in the main view of Calculator (it only took 2 1/2 months)")
}
.padding(30)
}
.navigationTitle("Recently Resolved")
}
}
struct HighPriority: View {
var body: some View {
ScrollView {
Text("High Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} You can not dismiss the keyboard on iPhone\n\t\u{2022} This hides the tab bar at the bottom so you can't navigate the app after bringing it up")
Text("Tapping on the Contacts tab after entering correct login details causes the app to crash")
}
.padding(30)
}
.navigationTitle("High Priority")
}
}
struct MediumPriority: View {
var body: some View {
ScrollView {
Text("Medium Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("Wow. Such Empty.")
.italic()
}
.padding(30)
}
.navigationTitle("Medium Priority")
}
}
struct LowPriority: View {
var body: some View {
ScrollView {
Text("Low Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} Space between the equation and explanation in the \"Help\" tab is too large\n\u{2022} App has no custom icon")
Text("\u{2022} Space between the equation and explanation in the \"Help\" tab is too large\n\u{2022} App has no custom icon")
}
.padding(30)
}
.navigationTitle("Low Priority")
}
}

View file

@ -8,7 +8,7 @@
import SwiftUI
struct LicenseView: View {
var fontSize:CGFloat {UIScreen.main.bounds.width > 700 ? 18 : 8}
var fontSize:CGFloat {UIScreen.main.bounds.width > 700 ? 18 : 9}
// figuring out how to do this came partly from tinyurl.com/9snwkrzt
// and also partly from stackoverflow.com/questions/57727107/
// then I remembered about ternary operators and I optimized it
@ -96,10 +96,13 @@ struct LicenseView: View {
Text("Updated: 2022-06-09")
}
.navigationTitle("Software License Agreement")
.navigationBarTitleDisplayMode(.inline)
// sets the top of the screen to this text which always
// lets you know what page you're in
.padding()
.frame(maxWidth: .infinity)
// this just makes it so you can scroll anywhere on screen
// instead of only in the frame
}
}
}

View file

@ -15,7 +15,7 @@ import SwiftUI
struct SecretView: View {
var body: some View {
VStack {
HStack {
ScrollView {
VStack {
Image("jake.zimmerman.group")
.resizable()
@ -59,8 +59,6 @@ Email: bostc@students.lakeviewspartans.org
}
.frame(minWidth: 350, minHeight: 175)
.border(.primary)
}
HStack {
VStack {
Image("aiden.moore.states")
.resizable()
@ -104,6 +102,8 @@ Email: greenei@students.lakeviewspartans.org
.frame(minWidth: 350, minHeight: 175)
.border(.primary)
}
}
.navigationTitle("Contacts")
}
.frame(minWidth: .infinity)
}
}