Skip to content

Commit

Permalink
-Localisation Impl
Browse files Browse the repository at this point in the history
  • Loading branch information
KhubaibKhan4 committed Feb 3, 2025
1 parent 6885235 commit f667610
Show file tree
Hide file tree
Showing 50 changed files with 1,324 additions and 87 deletions.
36 changes: 36 additions & 0 deletions Notes.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,38 @@
Base,
ar,
es,
hi,
"ur-PK",
ru,
it,
id,
"pt-PT",
fr,
de,
ja,
sv,
nb,
nl,
tr,
af,
th,
vi,
ms,
prg,
kbd,
he,
pl,
cs,
hu,
ro,
uk,
el,
sr,
da,
fi,
et,
ko,
"bn-BD",
);
mainGroup = 49BA1F7D2CBD8E700099CDCB;
minimizedProjectReferenceProxies = 1;
Expand Down Expand Up @@ -212,6 +244,7 @@
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
Expand Down Expand Up @@ -268,6 +301,7 @@
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_EMIT_LOC_STRINGS = YES;
VALIDATE_PRODUCT = YES;
};
name = Release;
Expand All @@ -284,6 +318,7 @@
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Notes/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = NoteSync;
INFOPLIST_KEY_NSCameraUsageDescription = "Provide us the Camera Permission to Take Images and Record Videos to Store in Notes App.";
INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide us the Location Permission to Provide the realtime location inside the app.";
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Provide us the Location Permission to Provide the realtime location inside the app.";
Expand Down Expand Up @@ -318,6 +353,7 @@
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Notes/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = NoteSync;
INFOPLIST_KEY_NSCameraUsageDescription = "Provide us the Camera Permission to Take Images and Record Videos to Store in Notes App.";
INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide us the Location Permission to Provide the realtime location inside the app.";
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Provide us the Location Permission to Provide the realtime location inside the app.";
Expand Down
Binary file not shown.
4 changes: 2 additions & 2 deletions Notes/Assets.xcassets/AppIcon.appiconset/Contents.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "notes.jpg",
"filename" : "Untitled design.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand All @@ -13,7 +13,6 @@
"value" : "dark"
}
],
"filename" : "notes_dark.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand All @@ -25,6 +24,7 @@
"value" : "tinted"
}
],
"filename" : "Untitled design 2.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed Notes/Assets.xcassets/AppIcon.appiconset/notes.jpg
Binary file not shown.
Binary file not shown.
21 changes: 21 additions & 0 deletions Notes/Assets.xcassets/logo.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "Untitled design.jpg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 24 additions & 12 deletions Notes/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,33 @@ import SwiftData
struct ContentView: View {
@State private var isSelected : Int = 0
@AppStorage("isPermissionGranted") var isPermissionGranted = false

@State private var isSplash: Bool = true
var body: some View {
TabView(selection:$isSelected) {
Tab("Home", systemImage: "house",value: 0) {
HomeScreen()
VStack {
if isSplash {
SplashScreen()
} else {
TabView(selection:$isSelected) {
Tab("Home", systemImage: "house",value: 0) {
HomeScreen()
}

Tab("Todo", systemImage: "checklist",value: 1) {
TodoScreen()

}

Tab("Setting", systemImage: "gear",value:2) {
SettingScreen()
}

}
}

Tab("Todo", systemImage: "checklist",value: 1) {
TodoScreen()

}.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
isSplash = false
}

Tab("Setting", systemImage: "gear",value:2) {
SettingScreen()
}

}
}
}
Expand Down
21 changes: 7 additions & 14 deletions Notes/setting/SettingScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,27 +44,20 @@ struct SettingScreen: View {
}
}


Section("Font Size") {
HStack {
Stepper("Font #\(fontSize) ", value: $fontSize, in: 12...40, step: 1)

}
}

Section("Display") {
Toggle("Show Line Number", isOn: $showLineNo)
Toggle("Show Preview", isOn: $showPreview)
}

Section("App Detail") {
Button(action: {
requestReview()
}) {
Label("Review", systemImage: "star")
}

}

Section("Privacy Policy") {
NavigationLink(destination: PirvacyPolicyView()) {
Label("Privacy Policy", systemImage: "shield.fill")
}
}

}.onAppear {
themeText = isDark ? "Dark Mode" : "Light Mode"
}
Expand Down
106 changes: 53 additions & 53 deletions Notes/setting/SettingView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,59 @@ struct CountrySelectorView: View {
@State private var searchText: String = ""
@AppStorage("selectedCountry") private var storedCountry: String?
@State private var selectedCountry: Country? = nil
@State private var countries: [Country] = [
Country(name: "United States", flag: "🇺🇸", language: "English", languageCode: "en"),
Country(name: "Canada", flag: "🇨🇦", language: "English, French", languageCode: "en, fr"),
Country(name: "United Kingdom", flag: "🇬🇧", language: "English", languageCode: "en"),
Country(name: "India", flag: "🇮🇳", language: "Hindi, English", languageCode: "hi, en"),
Country(name: "Germany", flag: "🇩🇪", language: "German", languageCode: "de"),
Country(name: "Australia", flag: "🇦🇺", language: "English", languageCode: "en"),
Country(name: "Japan", flag: "🇯🇵", language: "Japanese", languageCode: "ja"),
Country(name: "France", flag: "🇫🇷", language: "French", languageCode: "fr"),
Country(name: "Brazil", flag: "🇧🇷", language: "Portuguese", languageCode: "pt"),
Country(name: "Russia", flag: "🇷🇺", language: "Russian", languageCode: "ru"),
Country(name: "China", flag: "🇨🇳", language: "Mandarin", languageCode: "zh"),
Country(name: "South Korea", flag: "🇰🇷", language: "Korean", languageCode: "ko"),
Country(name: "Italy", flag: "🇮🇹", language: "Italian", languageCode: "it"),
Country(name: "Spain", flag: "🇪🇸", language: "Spanish", languageCode: "es"),
Country(name: "Mexico", flag: "🇲🇽", language: "Spanish", languageCode: "es"),
Country(name: "Saudi Arabia", flag: "🇸🇦", language: "Arabic", languageCode: "ar"),
Country(name: "Sweden", flag: "🇸🇪", language: "Swedish", languageCode: "sv"),
Country(name: "Norway", flag: "🇳🇴", language: "Norwegian", languageCode: "no"),
Country(name: "Netherlands", flag: "🇳🇱", language: "Dutch", languageCode: "nl"),
Country(name: "Turkey", flag: "🇹🇷", language: "Turkish", languageCode: "tr"),
Country(name: "South Africa", flag: "🇿🇦", language: "Afrikaans, English", languageCode: "af, en"),
Country(name: "Egypt", flag: "🇪🇬", language: "Arabic", languageCode: "ar"),
Country(name: "Thailand", flag: "🇹🇭", language: "Thai", languageCode: "th"),
Country(name: "Vietnam", flag: "🇻🇳", language: "Vietnamese", languageCode: "vi"),
Country(name: "Argentina", flag: "🇦🇷", language: "Spanish", languageCode: "es"),
Country(name: "Nigeria", flag: "🇳🇬", language: "English", languageCode: "en"),
Country(name: "Indonesia", flag: "🇮🇩", language: "Indonesian", languageCode: "id"),
Country(name: "Pakistan", flag: "🇵🇰", language: "Urdu, English", languageCode: "ur, en"),
Country(name: "Bangladesh", flag: "🇧🇩", language: "Bengali", languageCode: "bn"),
Country(name: "Philippines", flag: "🇵🇭", language: "Filipino, English", languageCode: "fil, en"),
Country(name: "Malaysia", flag: "🇲🇾", language: "Malay", languageCode: "ms"),
Country(name: "Iran", flag: "🇮🇷", language: "Persian", languageCode: "fa"),
Country(name: "Iraq", flag: "🇮🇶", language: "Arabic, Kurdish", languageCode: "ar, ku"),
Country(name: "Israel", flag: "🇮🇱", language: "Hebrew", languageCode: "he"),
Country(name: "Portugal", flag: "🇵🇹", language: "Portuguese", languageCode: "pt"),
Country(name: "Poland", flag: "🇵🇱", language: "Polish", languageCode: "pl"),
Country(name: "Czech Republic", flag: "🇨🇿", language: "Czech", languageCode: "cs"),
Country(name: "Hungary", flag: "🇭🇺", language: "Hungarian", languageCode: "hu"),
Country(name: "Romania", flag: "🇷🇴", language: "Romanian", languageCode: "ro"),
Country(name: "Ukraine", flag: "🇺🇦", language: "Ukrainian", languageCode: "uk"),
Country(name: "Greece", flag: "🇬🇷", language: "Greek", languageCode: "el"),
Country(name: "Serbia", flag: "🇷🇸", language: "Serbian", languageCode: "sr"),
Country(name: "Switzerland", flag: "🇨🇭", language: "German, French, Italian", languageCode: "de, fr, it"),
Country(name: "Denmark", flag: "🇩🇰", language: "Danish", languageCode: "da"),
Country(name: "Finland", flag: "🇫🇮", language: "Finnish, Swedish", languageCode: "fi, sv"),
Country(name: "Iceland", flag: "🇮🇸", language: "Icelandic", languageCode: "is"),
Country(name: "Estonia", flag: "🇪🇪", language: "Estonian", languageCode: "et"),
Country(name: "Latvia", flag: "🇱🇻", language: "Latvian", languageCode: "lv"),
Country(name: "Lithuania", flag: "🇱🇹", language: "Lithuanian", languageCode: "lt"),
Country(name: "Belarus", flag: "🇧🇾", language: "Belarusian, Russian", languageCode: "be, ru"),
Country(name: "Kazakhstan", flag: "🇰🇿", language: "Kazakh, Russian", languageCode: "kk, ru"),
]
@State private var countries: [Country] = [
Country(name: "United States", flag: "🇺🇸", language: "English", languageCode: "en"),
Country(name: "Canada", flag: "🇨🇦", language: "French", languageCode: "en, fr"),
Country(name: "United Kingdom", flag: "🇬🇧", language: "English", languageCode: "en"),
Country(name: "India", flag: "🇮🇳", language: "Hindi", languageCode: "hi, en"),
Country(name: "Germany", flag: "🇩🇪", language: "German", languageCode: "de"),
Country(name: "Australia", flag: "🇦🇺", language: "English", languageCode: "en"),
Country(name: "Japan", flag: "🇯🇵", language: "Japanese", languageCode: "ja"),
Country(name: "France", flag: "🇫🇷", language: "French", languageCode: "fr"),
Country(name: "Brazil", flag: "🇧🇷", language: "Portuguese", languageCode: "pt"),
Country(name: "Russia", flag: "🇷🇺", language: "Russian", languageCode: "ru"),
Country(name: "China", flag: "🇨🇳", language: "Mandarin", languageCode: "zh"),
Country(name: "South Korea", flag: "🇰🇷", language: "Korean", languageCode: "ko"),
Country(name: "Italy", flag: "🇮🇹", language: "Italian", languageCode: "it"),
Country(name: "Spain", flag: "🇪🇸", language: "Spanish", languageCode: "es"),
Country(name: "Mexico", flag: "🇲🇽", language: "Spanish", languageCode: "es"),
Country(name: "Saudi Arabia", flag: "🇸🇦", language: "Arabic", languageCode: "ar"),
Country(name: "Sweden", flag: "🇸🇪", language: "Swedish", languageCode: "sv"),
Country(name: "Norway", flag: "🇳🇴", language: "Norwegian", languageCode: "no"),
Country(name: "Netherlands", flag: "🇳🇱", language: "Dutch", languageCode: "nl"),
Country(name: "Turkey", flag: "🇹🇷", language: "Turkish", languageCode: "tr"),
Country(name: "South Africa", flag: "🇿🇦", language: "Afrikaans", languageCode: "af, en"),
Country(name: "Egypt", flag: "🇪🇬", language: "Arabic", languageCode: "ar"),
Country(name: "Thailand", flag: "🇹🇭", language: "Thai", languageCode: "th"),
Country(name: "Vietnam", flag: "🇻🇳", language: "Vietnamese", languageCode: "vi"),
Country(name: "Argentina", flag: "🇦🇷", language: "Spanish", languageCode: "es"),
Country(name: "Nigeria", flag: "🇳🇬", language: "English", languageCode: "en"),
Country(name: "Indonesia", flag: "🇮🇩", language: "Indonesian", languageCode: "id"),
Country(name: "Pakistan", flag: "🇵🇰", language: "Urdu", languageCode: "ur, en"),
Country(name: "Bangladesh", flag: "🇧🇩", language: "Bengali", languageCode: "bn"),
Country(name: "Philippines", flag: "🇵🇭", language: "Filipino", languageCode: "fil, en"),
Country(name: "Malaysia", flag: "🇲🇾", language: "Malay", languageCode: "ms"),
Country(name: "Iran", flag: "🇮🇷", language: "Persian", languageCode: "fa"),
Country(name: "Iraq", flag: "🇮🇶", language: "Kurdish", languageCode: "ar, ku"),
Country(name: "Israel", flag: "🇮🇱", language: "Hebrew", languageCode: "he"),
Country(name: "Portugal", flag: "🇵🇹", language: "Portuguese", languageCode: "pt"),
Country(name: "Poland", flag: "🇵🇱", language: "Polish", languageCode: "pl"),
Country(name: "Czech Republic", flag: "🇨🇿", language: "Czech", languageCode: "cs"),
Country(name: "Hungary", flag: "🇭🇺", language: "Hungarian", languageCode: "hu"),
Country(name: "Romania", flag: "🇷🇴", language: "Romanian", languageCode: "ro"),
Country(name: "Ukraine", flag: "🇺🇦", language: "Ukrainian", languageCode: "uk"),
Country(name: "Greece", flag: "🇬🇷", language: "Greek", languageCode: "el"),
Country(name: "Serbia", flag: "🇷🇸", language: "Serbian", languageCode: "sr"),
Country(name: "Switzerland", flag: "🇨🇭", language: "French", languageCode: "de, fr, it"),
Country(name: "Denmark", flag: "🇩🇰", language: "Danish", languageCode: "da"),
Country(name: "Finland", flag: "🇫🇮", language: "Finnish", languageCode: "fi, sv"),
Country(name: "Iceland", flag: "🇮🇸", language: "Icelandic", languageCode: "is"),
Country(name: "Estonia", flag: "🇪🇪", language: "Estonian", languageCode: "et"),
Country(name: "Latvia", flag: "🇱🇻", language: "Latvian", languageCode: "lv"),
Country(name: "Lithuania", flag: "🇱🇹", language: "Lithuanian", languageCode: "lt"),
Country(name: "Belarus", flag: "🇧🇾", language: "Russian", languageCode: "be, ru"),
Country(name: "Kazakhstan", flag: "🇰🇿", language: "Russian", languageCode: "kk, ru"),
]



Expand Down
16 changes: 16 additions & 0 deletions Notes/setting/privacy_policy/PrivacyPolicyScreen.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// PrivacyPolicyScreen.swift
// Notes
//
// Created by Muhammad Khubaib Imtiaz on 03/02/2025.
//

import SwiftUI

struct PirvacyPolicyView : View {
var body: some View {
VStack {
WebView(url: URL(string: "https://doc-hosting.flycricket.io/notesync-privacy-policy/61d1e969-77e5-4632-8b9c-c0fb38398960/privacy")!)
}
}
}
22 changes: 22 additions & 0 deletions Notes/setting/webview/WebView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//
// WebView.swift
// Notes
//
// Created by Muhammad Khubaib Imtiaz on 03/02/2025.
//

import SwiftUI
import WebKit

struct WebView: UIViewRepresentable {
let url: URL

func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}

func updateUIView(_ webView: WKWebView, context: Context) {
let request = URLRequest(url: url)
webView.load(request)
}
}
21 changes: 21 additions & 0 deletions Notes/splash/SplashScreen.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// SplashScreen.swift
// Notes
//
// Created by Muhammad Khubaib Imtiaz on 03/02/2025.
//
import SwiftUI

struct SplashScreen: View {
var body: some View {
VStack {
Image("logo")
.resizable()
.scaledToFit()
.frame(width: 150, height: 150)
.padding()
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.white)
}
}
Loading

0 comments on commit f667610

Please sign in to comment.