Compare commits
2 Commits
5171a5ecab
...
4730d791e8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4730d791e8 | ||
|
|
62a1e7c469 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -22,10 +22,10 @@ deploy/.env
|
|||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
||||||
# iOS (Schritt 2)
|
# iOS (Schritt 2)
|
||||||
|
# Das Projekt selbst (Vorrania.xcodeproj) ist eingecheckt, damit man ohne
|
||||||
|
# XcodeGen bauen kann. Nur die persoenlichen Zustaende bleiben draussen.
|
||||||
ios/**/xcuserdata/
|
ios/**/xcuserdata/
|
||||||
ios/**/DerivedData/
|
ios/**/DerivedData/
|
||||||
# Wird aus ios/project.yml erzeugt ("xcodegen generate")
|
|
||||||
ios/ProjectGood.xcodeproj/
|
|
||||||
|
|
||||||
# Lokale Python-Umgebung fuer Tests
|
# Lokale Python-Umgebung fuer Tests
|
||||||
backend/.venv/
|
backend/.venv/
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
|
|||||||
nie ungefragt übernommen.
|
nie ungefragt übernommen.
|
||||||
- Auslagern-Flow: scannen → Menge/Einheit, FEFO oder Chargenauswahl.
|
- Auslagern-Flow: scannen → Menge/Einheit, FEFO oder Chargenauswahl.
|
||||||
- Einkaufsliste, „bald ablaufend“ und Produktliste mit Bearbeiten.
|
- Einkaufsliste, „bald ablaufend“ und Produktliste mit Bearbeiten.
|
||||||
- Home-Screen-Shortcuts und URL-Schema `projectgood://checkin` / `checkout`.
|
- Home-Screen-Shortcuts und URL-Schema `vorrania://checkin` / `checkout`.
|
||||||
- Anzeige folgt dem Datumsformat aus den Servereinstellungen.
|
- Anzeige folgt dem Datumsformat aus den Servereinstellungen.
|
||||||
|
|
||||||
## Schritt 2b – MHD-Genauigkeit und Benennung ✅
|
## Schritt 2b – MHD-Genauigkeit und Benennung ✅
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"fill" : {
|
"fill-specializations" : [
|
||||||
|
{
|
||||||
|
"value" : {
|
||||||
"automatic-gradient" : "display-p3:0.68468,0.62596,1.03953,1.00000",
|
"automatic-gradient" : "display-p3:0.68468,0.62596,1.03953,1.00000",
|
||||||
"orientation" : {
|
"orientation" : {
|
||||||
"start" : {
|
"start" : {
|
||||||
@@ -11,7 +13,25 @@
|
|||||||
"y" : 0.7
|
"y" : 0.7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"appearance" : "dark",
|
||||||
|
"value" : {
|
||||||
|
"automatic-gradient" : "display-p3:0.23587,0.21584,0.35184,1.00000",
|
||||||
|
"orientation" : {
|
||||||
|
"start" : {
|
||||||
|
"x" : 0.5,
|
||||||
|
"y" : 0
|
||||||
|
},
|
||||||
|
"stop" : {
|
||||||
|
"x" : 0.5,
|
||||||
|
"y" : 0.7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
"groups" : [
|
"groups" : [
|
||||||
{
|
{
|
||||||
"layers" : [
|
"layers" : [
|
||||||
@@ -20,7 +40,7 @@
|
|||||||
{
|
{
|
||||||
"appearance" : "dark",
|
"appearance" : "dark",
|
||||||
"value" : {
|
"value" : {
|
||||||
"solid" : "extended-gray:1.00000,1.00000"
|
"automatic-gradient" : "display-p3:0.42536,0.31875,0.88861,1.00000"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ REST-API wie die Web-Oberfläche.
|
|||||||
brew install xcodegen
|
brew install xcodegen
|
||||||
cd ios
|
cd ios
|
||||||
xcodegen generate
|
xcodegen generate
|
||||||
open ProjectGood.xcodeproj
|
open Vorrania.xcodeproj
|
||||||
```
|
```
|
||||||
`project.yml` beschreibt das Projekt vollständig (Bundle-ID, Info.plist,
|
`project.yml` beschreibt das Projekt vollständig (Bundle-ID, Info.plist,
|
||||||
Shortcuts, URL-Schema).
|
Shortcuts, URL-Schema).
|
||||||
|
|
||||||
### Variante B – ohne XcodeGen
|
### Variante B – ohne XcodeGen
|
||||||
1. Xcode → *File ▸ New ▸ Project…* → **App**, Interface **SwiftUI**, Sprache **Swift**
|
1. Xcode → *File ▸ New ▸ Project…* → **App**, Interface **SwiftUI**, Sprache **Swift**
|
||||||
2. Produktname `ProjectGood`, Bundle-ID z. B. `com.scarriffle.projectgood`
|
2. Produktname `Vorrania`, Bundle-ID z. B. `com.scarriffle.vorrania`
|
||||||
3. Die von Xcode erzeugte `ContentView.swift` und `…App.swift` löschen
|
3. Die von Xcode erzeugte `ContentView.swift` und `…App.swift` löschen
|
||||||
4. Den Ordner `Sources/` per Drag & Drop ins Projekt ziehen („Copy items if needed")
|
4. Den Ordner `Sources/` per Drag & Drop ins Projekt ziehen („Copy items if needed")
|
||||||
5. In den Target-Einstellungen die mitgelieferte `Sources/Info.plist` als Info.plist setzen
|
5. In den Target-Einstellungen die mitgelieferte `Sources/Info.plist` als Info.plist setzen
|
||||||
@@ -47,7 +47,7 @@ Es gibt zwei Wege direkt in den Scan-Bildschirm:
|
|||||||
|
|
||||||
**Eigene Symbole auf dem Home-Bildschirm** – über die Apple-App *Kurzbefehle*:
|
**Eigene Symbole auf dem Home-Bildschirm** – über die Apple-App *Kurzbefehle*:
|
||||||
1. Kurzbefehle ▸ **+** ▸ Aktion *URL öffnen*
|
1. Kurzbefehle ▸ **+** ▸ Aktion *URL öffnen*
|
||||||
2. URL `projectgood://checkin` (bzw. `projectgood://checkout`) eintragen
|
2. URL `vorrania://checkin` (bzw. `vorrania://checkout`) eintragen
|
||||||
3. Kurzbefehl benennen, dann ▸ *Zum Home-Bildschirm hinzufügen*
|
3. Kurzbefehl benennen, dann ▸ *Zum Home-Bildschirm hinzufügen*
|
||||||
|
|
||||||
Beide Wege öffnen die App **direkt in der Kamera**.
|
Beide Wege öffnen die App **direkt in der Kamera**.
|
||||||
@@ -55,7 +55,7 @@ Beide Wege öffnen die App **direkt in der Kamera**.
|
|||||||
## Aufbau der Quellen
|
## Aufbau der Quellen
|
||||||
| Datei | Inhalt |
|
| Datei | Inhalt |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `ProjectGoodApp.swift` | App-Einstieg, Schnellaktionen, URL-Schema |
|
| `VorraniaApp.swift` | App-Einstieg, Schnellaktionen, URL-Schema |
|
||||||
| `Session.swift` | Server-Adresse (UserDefaults) und Token (Keychain) |
|
| `Session.swift` | Server-Adresse (UserDefaults) und Token (Keychain) |
|
||||||
| `APIClient.swift` | REST-Aufrufe gegen `/api/...` |
|
| `APIClient.swift` | REST-Aufrufe gegen `/api/...` |
|
||||||
| `Models.swift` | Codable-Typen passend zu `backend/app/schemas.py` |
|
| `Models.swift` | Codable-Typen passend zu `backend/app/schemas.py` |
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>UIApplicationShortcutItemType</key>
|
<key>UIApplicationShortcutItemType</key>
|
||||||
<string>com.scarriffle.projectgood.checkin</string>
|
<string>com.scarriffle.vorrania.checkin</string>
|
||||||
<key>UIApplicationShortcutItemTitle</key>
|
<key>UIApplicationShortcutItemTitle</key>
|
||||||
<string>Einlagern</string>
|
<string>Einlagern</string>
|
||||||
<key>UIApplicationShortcutItemIconType</key>
|
<key>UIApplicationShortcutItemIconType</key>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>UIApplicationShortcutItemType</key>
|
<key>UIApplicationShortcutItemType</key>
|
||||||
<string>com.scarriffle.projectgood.checkout</string>
|
<string>com.scarriffle.vorrania.checkout</string>
|
||||||
<key>UIApplicationShortcutItemTitle</key>
|
<key>UIApplicationShortcutItemTitle</key>
|
||||||
<string>Auslagern</string>
|
<string>Auslagern</string>
|
||||||
<key>UIApplicationShortcutItemIconType</key>
|
<key>UIApplicationShortcutItemIconType</key>
|
||||||
@@ -79,15 +79,15 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
<!-- projectgood://checkin bzw. projectgood://checkout -->
|
<!-- vorrania://checkin bzw. vorrania://checkout -->
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleURLName</key>
|
<key>CFBundleURLName</key>
|
||||||
<string>com.scarriffle.projectgood</string>
|
<string>com.scarriffle.vorrania</string>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>projectgood</string>
|
<string>vorrania</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ final class Session: ObservableObject {
|
|||||||
|
|
||||||
/// Minimaler Keychain-Zugriff für ein einzelnes Token.
|
/// Minimaler Keychain-Zugriff für ein einzelnes Token.
|
||||||
enum Keychain {
|
enum Keychain {
|
||||||
private static let service = "com.scarriffle.projectgood"
|
private static let service = "com.scarriffle.vorrania"
|
||||||
|
|
||||||
static func write(_ value: String, account: String) {
|
static func write(_ value: String, account: String) {
|
||||||
delete(account: account)
|
delete(account: account)
|
||||||
|
|||||||
@@ -15,16 +15,16 @@ final class Router: ObservableObject {
|
|||||||
if type.hasSuffix("checkout") { route = .checkout }
|
if type.hasSuffix("checkout") { route = .checkout }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// projectgood://checkin bzw. projectgood://checkout
|
/// vorrania://checkin bzw. vorrania://checkout
|
||||||
func handle(url: URL) {
|
func handle(url: URL) {
|
||||||
guard url.scheme == "projectgood" else { return }
|
guard url.scheme == "vorrania" else { return }
|
||||||
let target = (url.host ?? url.path.replacingOccurrences(of: "/", with: "")).lowercased()
|
let target = (url.host ?? url.path.replacingOccurrences(of: "/", with: "")).lowercased()
|
||||||
if let route = Route(rawValue: target) { self.route = route }
|
if let route = Route(rawValue: target) { self.route = route }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@main
|
@main
|
||||||
struct ProjectGoodApp: App {
|
struct VorraniaApp: App {
|
||||||
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
||||||
@StateObject private var session = Session.shared
|
@StateObject private var session = Session.shared
|
||||||
@StateObject private var router = Router()
|
@StateObject private var router = Router()
|
||||||
@@ -52,7 +52,7 @@ struct ProjectGoodApp: App {
|
|||||||
|
|
||||||
/// Nimmt Home-Screen-Quick-Actions entgegen (auch beim Kaltstart).
|
/// Nimmt Home-Screen-Quick-Actions entgegen (auch beim Kaltstart).
|
||||||
final class AppDelegate: NSObject, UIApplicationDelegate {
|
final class AppDelegate: NSObject, UIApplicationDelegate {
|
||||||
static let shortcutNotification = Notification.Name("ProjectGoodShortcut")
|
static let shortcutNotification = Notification.Name("VorraniaShortcut")
|
||||||
static var pendingShortcut: String?
|
static var pendingShortcut: String?
|
||||||
|
|
||||||
func application(_ application: UIApplication,
|
func application(_ application: UIApplication,
|
||||||
373
ios/Vorrania.xcodeproj/project.pbxproj
Normal file
373
ios/Vorrania.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,373 @@
|
|||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 77;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
0D8629839E465D80EC58E74B /* ProductViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 369B9841E43E727ACA2E2A2A /* ProductViews.swift */; };
|
||||||
|
0E0AE6CC6FBA82B190BBC36F /* CheckInFormView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E56353CB483EFB1CCD09D8 /* CheckInFormView.swift */; };
|
||||||
|
25FC3913EFFA37D013328FDE /* CategoryPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD672F65352DA0D122EC9AE /* CategoryPicker.swift */; };
|
||||||
|
39F1F17DCB4E491652D08DEE /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378F1B2DE567B62169E84426 /* APIClient.swift */; };
|
||||||
|
44F08407AF69F5B7FD15F932 /* ScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF19A735AC17451B57BF5BB /* ScannerView.swift */; };
|
||||||
|
4F86620DF8303DB02314DB5A /* CheckInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0365A16FEAE3F2BEC321E68A /* CheckInView.swift */; };
|
||||||
|
6816C33381DF52A96E5BB303 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314B1BB7220691A7423E8929 /* Models.swift */; };
|
||||||
|
75F805F8AE93479933BD811D /* VorraniaApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9948219CDDC4188EA4298F22 /* VorraniaApp.swift */; };
|
||||||
|
7738E209D4D32BFD514B76F5 /* ListViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6785CD9174067EFBB2B9043 /* ListViews.swift */; };
|
||||||
|
7E2FA69E0C3BED650E91A7E9 /* AppIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = 099CCD94907BE0179B7D5742 /* AppIcon.icon */; };
|
||||||
|
9B0A1A7C19764857BDC6ED26 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741D0E95875919C921945CF /* RootView.swift */; };
|
||||||
|
A7017E6C0532A650439AED7B /* BestBeforeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA022A27118BEEEC5912ECDC /* BestBeforeText.swift */; };
|
||||||
|
AAF27320D2A67C994C29C26F /* ProductDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F574168AA0F849D46C384EE /* ProductDetailView.swift */; };
|
||||||
|
D70CB183C868FF0143A6A5E7 /* DisplaySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAC97A555856C6C5DD353E25 /* DisplaySettings.swift */; };
|
||||||
|
DFA55EF4ACA34537F445E998 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2F9406BD0D4F0D30FED345 /* Session.swift */; };
|
||||||
|
E9EA455CACB6ED5951B114C3 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A75926511854BB8EE316ED3A /* LoginView.swift */; };
|
||||||
|
ED61DAE4824165D6D87F8C1D /* DateScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 717C8EB336170526F5F3E695 /* DateScanView.swift */; };
|
||||||
|
F6C7E913CAB0FAF1826E6BD3 /* CheckOutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC0DDD06332E567E70CA842F /* CheckOutView.swift */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
0365A16FEAE3F2BEC321E68A /* CheckInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckInView.swift; sourceTree = "<group>"; };
|
||||||
|
099CCD94907BE0179B7D5742 /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = wrapper.icon; path = AppIcon.icon; sourceTree = "<group>"; };
|
||||||
|
314B1BB7220691A7423E8929 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
|
||||||
|
369B9841E43E727ACA2E2A2A /* ProductViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductViews.swift; sourceTree = "<group>"; };
|
||||||
|
378F1B2DE567B62169E84426 /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = "<group>"; };
|
||||||
|
4741D0E95875919C921945CF /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = "<group>"; };
|
||||||
|
4BF4E4F5524B15728CEEE116 /* Vorrania.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Vorrania.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
6F574168AA0F849D46C384EE /* ProductDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductDetailView.swift; sourceTree = "<group>"; };
|
||||||
|
717C8EB336170526F5F3E695 /* DateScanView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateScanView.swift; sourceTree = "<group>"; };
|
||||||
|
8AF19A735AC17451B57BF5BB /* ScannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerView.swift; sourceTree = "<group>"; };
|
||||||
|
9948219CDDC4188EA4298F22 /* VorraniaApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VorraniaApp.swift; sourceTree = "<group>"; };
|
||||||
|
99E56353CB483EFB1CCD09D8 /* CheckInFormView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckInFormView.swift; sourceTree = "<group>"; };
|
||||||
|
A6785CD9174067EFBB2B9043 /* ListViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListViews.swift; sourceTree = "<group>"; };
|
||||||
|
A75926511854BB8EE316ED3A /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = "<group>"; };
|
||||||
|
AA022A27118BEEEC5912ECDC /* BestBeforeText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BestBeforeText.swift; sourceTree = "<group>"; };
|
||||||
|
AAC97A555856C6C5DD353E25 /* DisplaySettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplaySettings.swift; sourceTree = "<group>"; };
|
||||||
|
AD2F9406BD0D4F0D30FED345 /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = "<group>"; };
|
||||||
|
CDD672F65352DA0D122EC9AE /* CategoryPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryPicker.swift; sourceTree = "<group>"; };
|
||||||
|
DC0DDD06332E567E70CA842F /* CheckOutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckOutView.swift; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
5216EA3D3DA41052FD0202A7 /* Sources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
378F1B2DE567B62169E84426 /* APIClient.swift */,
|
||||||
|
AA022A27118BEEEC5912ECDC /* BestBeforeText.swift */,
|
||||||
|
CDD672F65352DA0D122EC9AE /* CategoryPicker.swift */,
|
||||||
|
99E56353CB483EFB1CCD09D8 /* CheckInFormView.swift */,
|
||||||
|
0365A16FEAE3F2BEC321E68A /* CheckInView.swift */,
|
||||||
|
DC0DDD06332E567E70CA842F /* CheckOutView.swift */,
|
||||||
|
717C8EB336170526F5F3E695 /* DateScanView.swift */,
|
||||||
|
AAC97A555856C6C5DD353E25 /* DisplaySettings.swift */,
|
||||||
|
A6785CD9174067EFBB2B9043 /* ListViews.swift */,
|
||||||
|
A75926511854BB8EE316ED3A /* LoginView.swift */,
|
||||||
|
314B1BB7220691A7423E8929 /* Models.swift */,
|
||||||
|
6F574168AA0F849D46C384EE /* ProductDetailView.swift */,
|
||||||
|
369B9841E43E727ACA2E2A2A /* ProductViews.swift */,
|
||||||
|
4741D0E95875919C921945CF /* RootView.swift */,
|
||||||
|
8AF19A735AC17451B57BF5BB /* ScannerView.swift */,
|
||||||
|
AD2F9406BD0D4F0D30FED345 /* Session.swift */,
|
||||||
|
9948219CDDC4188EA4298F22 /* VorraniaApp.swift */,
|
||||||
|
);
|
||||||
|
path = Sources;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
5612AB3DD4CD09397A8F1BAB = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
099CCD94907BE0179B7D5742 /* AppIcon.icon */,
|
||||||
|
5216EA3D3DA41052FD0202A7 /* Sources */,
|
||||||
|
9BD53E938DBCB7F0CF657753 /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
9BD53E938DBCB7F0CF657753 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4BF4E4F5524B15728CEEE116 /* Vorrania.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
F94BFD4F59EC4E80E6CE55C2 /* Vorrania */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = ED9476E156CE913FF3C1E49E /* Build configuration list for PBXNativeTarget "Vorrania" */;
|
||||||
|
buildPhases = (
|
||||||
|
08E03A34841D4B2D2C7E2E81 /* Sources */,
|
||||||
|
049B3FB4A4D974E54814E40C /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = Vorrania;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
|
productName = Vorrania;
|
||||||
|
productReference = 4BF4E4F5524B15728CEEE116 /* Vorrania.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
B35524A6F4D28034E6687EE2 /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
BuildIndependentTargetsInParallel = YES;
|
||||||
|
LastUpgradeCheck = 1430;
|
||||||
|
TargetAttributes = {
|
||||||
|
F94BFD4F59EC4E80E6CE55C2 = {
|
||||||
|
DevelopmentTeam = PP34X97WS3;
|
||||||
|
ProvisioningStyle = Automatic;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 24001431CC5AE112F7B16FC4 /* Build configuration list for PBXProject "Vorrania" */;
|
||||||
|
developmentRegion = de;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
Base,
|
||||||
|
de,
|
||||||
|
);
|
||||||
|
mainGroup = 5612AB3DD4CD09397A8F1BAB;
|
||||||
|
minimizedProjectReferenceProxies = 1;
|
||||||
|
preferredProjectObjectVersion = 77;
|
||||||
|
productRefGroup = 9BD53E938DBCB7F0CF657753 /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
F94BFD4F59EC4E80E6CE55C2 /* Vorrania */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
049B3FB4A4D974E54814E40C /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
7E2FA69E0C3BED650E91A7E9 /* AppIcon.icon in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
08E03A34841D4B2D2C7E2E81 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
39F1F17DCB4E491652D08DEE /* APIClient.swift in Sources */,
|
||||||
|
A7017E6C0532A650439AED7B /* BestBeforeText.swift in Sources */,
|
||||||
|
25FC3913EFFA37D013328FDE /* CategoryPicker.swift in Sources */,
|
||||||
|
0E0AE6CC6FBA82B190BBC36F /* CheckInFormView.swift in Sources */,
|
||||||
|
4F86620DF8303DB02314DB5A /* CheckInView.swift in Sources */,
|
||||||
|
F6C7E913CAB0FAF1826E6BD3 /* CheckOutView.swift in Sources */,
|
||||||
|
ED61DAE4824165D6D87F8C1D /* DateScanView.swift in Sources */,
|
||||||
|
D70CB183C868FF0143A6A5E7 /* DisplaySettings.swift in Sources */,
|
||||||
|
7738E209D4D32BFD514B76F5 /* ListViews.swift in Sources */,
|
||||||
|
E9EA455CACB6ED5951B114C3 /* LoginView.swift in Sources */,
|
||||||
|
6816C33381DF52A96E5BB303 /* Models.swift in Sources */,
|
||||||
|
AAF27320D2A67C994C29C26F /* ProductDetailView.swift in Sources */,
|
||||||
|
0D8629839E465D80EC58E74B /* ProductViews.swift in Sources */,
|
||||||
|
9B0A1A7C19764857BDC6ED26 /* RootView.swift in Sources */,
|
||||||
|
44F08407AF69F5B7FD15F932 /* ScannerView.swift in Sources */,
|
||||||
|
DFA55EF4ACA34537F445E998 /* Session.swift in Sources */,
|
||||||
|
75F805F8AE93479933BD811D /* VorraniaApp.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
42F6240F33F6257B69608277 /* 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++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
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 = 16.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
9FF98D8C55956D14369FF551 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = PP34X97WS3;
|
||||||
|
GENERATE_INFOPLIST_FILE = NO;
|
||||||
|
INFOPLIST_FILE = Sources/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.scarriffle.vorrania;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_VERSION = 5.9;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
CD14B99E428F1B09564274DC /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = PP34X97WS3;
|
||||||
|
GENERATE_INFOPLIST_FILE = NO;
|
||||||
|
INFOPLIST_FILE = Sources/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
);
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.scarriffle.vorrania;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_VERSION = 5.9;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
E7EB062D93A728D757BA4C0D /* 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++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
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 = (
|
||||||
|
"$(inherited)",
|
||||||
|
"DEBUG=1",
|
||||||
|
);
|
||||||
|
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 = 16.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
24001431CC5AE112F7B16FC4 /* Build configuration list for PBXProject "Vorrania" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
E7EB062D93A728D757BA4C0D /* Debug */,
|
||||||
|
42F6240F33F6257B69608277 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
ED9476E156CE913FF3C1E49E /* Build configuration list for PBXNativeTarget "Vorrania" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
9FF98D8C55956D14369FF551 /* Debug */,
|
||||||
|
CD14B99E428F1B09564274DC /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = B35524A6F4D28034E6687EE2 /* Project object */;
|
||||||
|
}
|
||||||
7
ios/Vorrania.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
ios/Vorrania.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>
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# XcodeGen-Spezifikation – erzeugt das Xcode-Projekt aus diesen Quellen.
|
# XcodeGen-Spezifikation – erzeugt das Xcode-Projekt aus diesen Quellen.
|
||||||
# brew install xcodegen && cd ios && xcodegen generate && open ProjectGood.xcodeproj
|
# brew install xcodegen && cd ios && xcodegen generate && open Vorrania.xcodeproj
|
||||||
# Alternativ kann man in Xcode ein leeres App-Projekt anlegen und den Ordner
|
# Alternativ kann man in Xcode ein leeres App-Projekt anlegen und den Ordner
|
||||||
# "Sources" hineinziehen (siehe README.md).
|
# "Sources" hineinziehen (siehe README.md).
|
||||||
name: ProjectGood
|
name: Vorrania
|
||||||
options:
|
options:
|
||||||
bundleIdPrefix: com.scarriffle
|
bundleIdPrefix: com.scarriffle
|
||||||
# Ohne das baut Xcode eine englische App: DatePicker und Monatsnamen
|
# Ohne das baut Xcode eine englische App: DatePicker und Monatsnamen
|
||||||
@@ -13,7 +13,7 @@ options:
|
|||||||
createIntermediateGroups: true
|
createIntermediateGroups: true
|
||||||
|
|
||||||
targets:
|
targets:
|
||||||
ProjectGood:
|
Vorrania:
|
||||||
type: application
|
type: application
|
||||||
platform: iOS
|
platform: iOS
|
||||||
# Info.plist wird bewusst NICHT aus dieser Datei erzeugt, sondern unveraendert
|
# Info.plist wird bewusst NICHT aus dieser Datei erzeugt, sondern unveraendert
|
||||||
@@ -29,7 +29,7 @@ targets:
|
|||||||
settings:
|
settings:
|
||||||
base:
|
base:
|
||||||
INFOPLIST_FILE: Sources/Info.plist
|
INFOPLIST_FILE: Sources/Info.plist
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffle.projectgood
|
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffle.vorrania
|
||||||
# Signing: automatisch verwaltet. Wer mit einem anderen Apple-Konto baut,
|
# Signing: automatisch verwaltet. Wer mit einem anderen Apple-Konto baut,
|
||||||
# traegt hier seine Team-ID ein (Xcode: Signing & Capabilities -> Team).
|
# traegt hier seine Team-ID ein (Xcode: Signing & Capabilities -> Team).
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||||
|
|||||||
Reference in New Issue
Block a user