mirror of
https://github.com/Matte23/circolapp.git
synced 2025-12-06 07:29:10 +00:00
Integrate settings in application, add LaunchScreen
This commit is contained in:
@@ -8,4 +8,5 @@ target 'circolapp' do
|
||||
pod 'shared', :path => '../../shared'
|
||||
pod 'Firebase/Messaging'
|
||||
pod 'Firebase/AppDistribution'
|
||||
pod 'AppStorage', '~> 1.0.3'
|
||||
end
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
PODS:
|
||||
- AppStorage (1.0.3)
|
||||
- Firebase/AppDistribution (7.1.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseAppDistribution (~> 7.1.0-beta)
|
||||
@@ -69,12 +70,14 @@ PODS:
|
||||
- HTMLKit (~> 3.1.0)
|
||||
|
||||
DEPENDENCIES:
|
||||
- AppStorage (~> 1.0.3)
|
||||
- Firebase/AppDistribution
|
||||
- Firebase/Messaging
|
||||
- shared (from `../../shared`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- AppStorage
|
||||
- Firebase
|
||||
- FirebaseAppDistribution
|
||||
- FirebaseCore
|
||||
@@ -93,6 +96,7 @@ EXTERNAL SOURCES:
|
||||
:path: "../../shared"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AppStorage: dc9e2c18b5ebb7fed666af00c103b1c1432d459b
|
||||
Firebase: 78e8dd2e39d653de6270432ad84fe8b59f7bf4e8
|
||||
FirebaseAppDistribution: 055561ff2d0682e92492c00f4bd2acf562f9eb6f
|
||||
FirebaseCore: 20046127eef0fcb8fa25df7fc12f7b97d4e48611
|
||||
@@ -107,6 +111,6 @@ SPEC CHECKSUMS:
|
||||
PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
|
||||
shared: fb3154b4def038b2b13aa88e01dd9f91bb2de9b5
|
||||
|
||||
PODFILE CHECKSUM: a487659931a7673e546d39f1a5fb311269291d94
|
||||
PODFILE CHECKSUM: 072fc8452438117fc96c91f862d3a31d3cf40f14
|
||||
|
||||
COCOAPODS: 1.10.0
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* Begin PBXBuildFile section */
|
||||
9512D3C1257AB4F60023C3A1 /* NewReminderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */; };
|
||||
952DEDDF2576F8DC001DF85D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */; };
|
||||
9547205B2573B688005AA401 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9547205A2573B688005AA401 /* Settings.bundle */; };
|
||||
953DDE7E2580312500C457CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 953DDE7D2580312500C457CE /* LaunchScreen.storyboard */; };
|
||||
954AF8F62588A5C300666D0C /* CircularList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F52588A5C300666D0C /* CircularList.swift */; };
|
||||
954AF8F82588A5CF00666D0C /* FavouritesList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F72588A5CF00666D0C /* FavouritesList.swift */; };
|
||||
954AF8FA2588A5DD00666D0C /* RemindersList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F92588A5DD00666D0C /* RemindersList.swift */; };
|
||||
@@ -23,6 +23,7 @@
|
||||
955B7A10257D10A70091B1F9 /* ViewControllerResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955B7A0F257D10A70091B1F9 /* ViewControllerResolver.swift */; };
|
||||
95906F48257508660060F5D0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95906F47257506360060F5D0 /* Assets.xcassets */; };
|
||||
95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 95906F4C257510370060F5D0 /* GoogleService-Info.plist */; };
|
||||
95B4CE142588BC890090D5E8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B4CE132588BC890090D5E8 /* SettingsView.swift */; };
|
||||
95BC3BF82572BCF900F24400 /* AttachmentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BC3BF72572BCF900F24400 /* AttachmentView.swift */; };
|
||||
95C46A51255D3A34007A75E5 /* CircularViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C46A50255D3A34007A75E5 /* CircularViewModel.swift */; };
|
||||
95C9CBA32570EDEE005F879D /* Pods_circolapp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BEA78E7C5BBEF0119834B33 /* Pods_circolapp.framework */; settings = {ATTRIBUTES = (Required, ); }; };
|
||||
@@ -53,7 +54,7 @@
|
||||
9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewReminderView.swift; sourceTree = "<group>"; };
|
||||
952C5954255C57650018C010 /* shared.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = shared.framework; path = "../../shared/build/xcode-frameworks/shared.framework"; sourceTree = "<group>"; };
|
||||
952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
|
||||
9547205A2573B688005AA401 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
|
||||
953DDE7D2580312500C457CE /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
954AF8F52588A5C300666D0C /* CircularList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularList.swift; sourceTree = "<group>"; };
|
||||
954AF8F72588A5CF00666D0C /* FavouritesList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavouritesList.swift; sourceTree = "<group>"; };
|
||||
954AF8F92588A5DD00666D0C /* RemindersList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemindersList.swift; sourceTree = "<group>"; };
|
||||
@@ -68,6 +69,7 @@
|
||||
95906F47257506360060F5D0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
95906F4C257510370060F5D0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
959B531E25764726009AD895 /* circolapp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = circolapp.entitlements; sourceTree = "<group>"; };
|
||||
95B4CE132588BC890090D5E8 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
||||
95BC3BF72572BCF900F24400 /* AttachmentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentView.swift; sourceTree = "<group>"; };
|
||||
95C46A50255D3A34007A75E5 /* CircularViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularViewModel.swift; sourceTree = "<group>"; };
|
||||
95CA31AC255C1EDE00AC095B /* circolapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = circolapp.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -132,6 +134,7 @@
|
||||
954AF8F52588A5C300666D0C /* CircularList.swift */,
|
||||
954AF8F72588A5CF00666D0C /* FavouritesList.swift */,
|
||||
954AF8F92588A5DD00666D0C /* RemindersList.swift */,
|
||||
95B4CE132588BC890090D5E8 /* SettingsView.swift */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
@@ -173,10 +176,10 @@
|
||||
95CA31AF255C1EDE00AC095B /* AppDelegate.swift */,
|
||||
952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */,
|
||||
954E683C2574ED9E0034EBA8 /* UserDefaultsExtensions.swift */,
|
||||
953DDE7D2580312500C457CE /* LaunchScreen.storyboard */,
|
||||
95CA31B8255C1EE000AC095B /* Info.plist */,
|
||||
95906F4C257510370060F5D0 /* GoogleService-Info.plist */,
|
||||
95906F47257506360060F5D0 /* Assets.xcassets */,
|
||||
9547205A2573B688005AA401 /* Settings.bundle */,
|
||||
95CA31B5255C1EE000AC095B /* Preview Content */,
|
||||
);
|
||||
path = circolapp;
|
||||
@@ -253,7 +256,7 @@
|
||||
95CA31B7255C1EE000AC095B /* Preview Assets.xcassets in Resources */,
|
||||
95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */,
|
||||
95906F48257508660060F5D0 /* Assets.xcassets in Resources */,
|
||||
9547205B2573B688005AA401 /* Settings.bundle in Resources */,
|
||||
953DDE7E2580312500C457CE /* LaunchScreen.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -324,6 +327,7 @@
|
||||
955B7A0E257D098C0091B1F9 /* SearchBar.swift in Sources */,
|
||||
9554BDB8257E498F00D8925B /* OnboardingView.swift in Sources */,
|
||||
95C46A51255D3A34007A75E5 /* CircularViewModel.swift in Sources */,
|
||||
95B4CE142588BC890090D5E8 /* SettingsView.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1220"
|
||||
LastUpgradeVersion = "1230"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
<true/>
|
||||
<key>UILaunchScreen</key>
|
||||
<dict/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
|
||||
49
ios/circolapp/circolapp/LaunchScreen.storyboard
Normal file
49
ios/circolapp/circolapp/LaunchScreen.storyboard
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
||||
<rect key="frame" x="0.0" y="876" width="414" height="0.0"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CircolApp" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
||||
<rect key="frame" x="0.0" y="278" width="414" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
||||
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
|
||||
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -1,53 +0,0 @@
|
||||
<?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>StringsTable</key>
|
||||
<string>Root</string>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>General</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSMultiValueSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>School</string>
|
||||
<key>Key</key>
|
||||
<string>school</string>
|
||||
<key>DefaultValue</key>
|
||||
<integer>0</integer>
|
||||
<key>Titles</key>
|
||||
<array>
|
||||
<string>Liceo scientifico Maria Curie</string>
|
||||
<string>Liceo G.F. Porporato</string>
|
||||
</array>
|
||||
<key>Values</key>
|
||||
<array>
|
||||
<integer>0</integer>
|
||||
<integer>1</integer>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Notifications</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Notifications</string>
|
||||
<key>Key</key>
|
||||
<string>enable_notifications</string>
|
||||
<key>DefaultValue</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -42,6 +42,12 @@ struct ContentView: View {
|
||||
Image(systemName: "alarm.fill")
|
||||
Text("Reminders")
|
||||
}
|
||||
|
||||
SettingsView()
|
||||
.tabItem {
|
||||
Image(systemName: "gear")
|
||||
Text("Settings")
|
||||
}
|
||||
}.sheet(isPresented: self.$showOnboarding, onDismiss: {
|
||||
UserDefaults.standard.set(true, forKey: "skipOnboarding")
|
||||
}) {
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
*/
|
||||
|
||||
import SwiftUI
|
||||
import Combine
|
||||
import AppStorage
|
||||
import Shared
|
||||
|
||||
struct OnboardingView: View {
|
||||
@State private var school = 0
|
||||
@AppStorageCompat("school") var school = 0
|
||||
@Environment(\.presentationMode) var presentationMode
|
||||
private let serverCompanion = ServerAPI.Companion()
|
||||
|
||||
@@ -38,9 +38,6 @@ struct OnboardingView: View {
|
||||
Text(serverCompanion.getServerName(server: server))
|
||||
}
|
||||
}
|
||||
.onReceive([self.school].publisher.first()) { value in
|
||||
UserDefaults.standard.set(value, forKey: "school")
|
||||
}
|
||||
}
|
||||
.navigationBarTitle("Welcome to CircolApp")
|
||||
.navigationBarItems(trailing: Button(action: {
|
||||
|
||||
50
ios/circolapp/circolapp/View/SettingsView.swift
Normal file
50
ios/circolapp/circolapp/View/SettingsView.swift
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Circolapp
|
||||
* Copyright (C) 2019-2020 Matteo Schiff
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import SwiftUI
|
||||
import AppStorage
|
||||
import Shared
|
||||
|
||||
struct SettingsView: View {
|
||||
@AppStorageCompat("school") var school = 0
|
||||
|
||||
private let serverCompanion = ServerAPI.Companion()
|
||||
|
||||
var body: some View {
|
||||
NavigationView {
|
||||
Form {
|
||||
Picker("School", selection: $school) {
|
||||
ForEach(0..<Int(serverCompanion.numberOfServers)) { serverID in
|
||||
let server = serverCompanion.getServer(serverID: Int32(serverID))
|
||||
Text(serverCompanion.getServerName(server: server))
|
||||
}
|
||||
}
|
||||
.onReceive([self.school].publisher.first()) { value in
|
||||
UserDefaults.standard.set(value, forKey: "school")
|
||||
}
|
||||
}
|
||||
.navigationBarTitle("Settings", displayMode: .inline)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct SettingsView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SettingsView()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user