diff --git a/ApplicationIcon/AppIconAlternate/Test 2 Kopie.png b/ApplicationIcon/AppIconAlternate/Test 2 Kopie.png new file mode 100644 index 000000000..0a926a05b Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2 Kopie.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-29.png b/ApplicationIcon/AppIconAlternate/Test 2-29.png new file mode 100644 index 000000000..5c4720131 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-29.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-29@2x.png b/ApplicationIcon/AppIconAlternate/Test 2-29@2x.png new file mode 100644 index 000000000..7ab2c4fd2 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-29@2x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-29@3x.png b/ApplicationIcon/AppIconAlternate/Test 2-29@3x.png new file mode 100644 index 000000000..0711c4f0a Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-29@3x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-76.png b/ApplicationIcon/AppIconAlternate/Test 2-76.png new file mode 100644 index 000000000..1fb31a368 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-76.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-76@2x.png b/ApplicationIcon/AppIconAlternate/Test 2-76@2x.png new file mode 100644 index 000000000..d967b6047 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-76@2x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2-83.5@2x.png b/ApplicationIcon/AppIconAlternate/Test 2-83.5@2x.png new file mode 100644 index 000000000..a605be3c1 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2-83.5@2x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2.png b/ApplicationIcon/AppIconAlternate/Test 2.png new file mode 100644 index 000000000..0a926a05b Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2@1x.png b/ApplicationIcon/AppIconAlternate/Test 2@1x.png new file mode 100644 index 000000000..11409e3b4 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2@1x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2@2x.png b/ApplicationIcon/AppIconAlternate/Test 2@2x.png new file mode 100644 index 000000000..09b711322 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2@2x.png differ diff --git a/ApplicationIcon/AppIconAlternate/Test 2@3x.png b/ApplicationIcon/AppIconAlternate/Test 2@3x.png new file mode 100644 index 000000000..1091cf8b5 Binary files /dev/null and b/ApplicationIcon/AppIconAlternate/Test 2@3x.png differ diff --git a/FreeAPS.xcodeproj/project.pbxproj b/FreeAPS.xcodeproj/project.pbxproj index 3307afcc9..23b1fc043 100644 --- a/FreeAPS.xcodeproj/project.pbxproj +++ b/FreeAPS.xcodeproj/project.pbxproj @@ -339,6 +339,11 @@ E39E418C56A5A46B61D960EE /* ConfigEditorStateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B4F8B4194BB7E260EF251 /* ConfigEditorStateModel.swift */; }; E3A08AAE59538BC8A8ABE477 /* NotificationsConfigDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3260468377DA9DB4DEE9AF6D /* NotificationsConfigDataFlow.swift */; }; E4984C5262A90469788754BB /* PreferencesEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F8BA8533F56BC55748CA877 /* PreferencesEditorProvider.swift */; }; + E655645029A8298A00573139 /* AppIconConfigRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655644F29A8298A00573139 /* AppIconConfigRootView.swift */; }; + E655645229A82A0400573139 /* AppIconConfigDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655645129A82A0400573139 /* AppIconConfigDataFlow.swift */; }; + E655645429A82B0700573139 /* AppIconConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655645329A82B0700573139 /* AppIconConfigProvider.swift */; }; + E655645629A82BA600573139 /* AppIconConfigStateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655645529A82BA600573139 /* AppIconConfigStateModel.swift */; }; + E655645829A82CA900573139 /* AppIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655645729A82CA900573139 /* AppIcon.swift */; }; E97285ED9B814CD5253C6658 /* AddCarbsDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F48C3AC770D4CCD0EA2B0C2 /* AddCarbsDataFlow.swift */; }; E974172296125A5AE99E634C /* PumpConfigRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD22C985B79A2F0D2EA3D9D /* PumpConfigRootView.swift */; }; F5CA3DB1F9DC8B05792BBFAA /* CGMDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9B5C0607505A38F256BF99A /* CGMDataFlow.swift */; }; @@ -791,6 +796,11 @@ E26904AACA8D9C15D229D675 /* SnoozeStateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SnoozeStateModel.swift; sourceTree = ""; }; E2EBA7C03C26FCC67E16D798 /* LibreConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibreConfigProvider.swift; sourceTree = ""; }; E625985B47742D498CB1681A /* NotificationsConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotificationsConfigProvider.swift; sourceTree = ""; }; + E655644F29A8298A00573139 /* AppIconConfigRootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconConfigRootView.swift; sourceTree = ""; }; + E655645129A82A0400573139 /* AppIconConfigDataFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconConfigDataFlow.swift; sourceTree = ""; }; + E655645329A82B0700573139 /* AppIconConfigProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconConfigProvider.swift; sourceTree = ""; }; + E655645529A82BA600573139 /* AppIconConfigStateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconConfigStateModel.swift; sourceTree = ""; }; + E655645729A82CA900573139 /* AppIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIcon.swift; sourceTree = ""; }; E68CDC1E5C438D1BEAD4CF24 /* LibreConfigStateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibreConfigStateModel.swift; sourceTree = ""; }; E9AAB83FB6C3B41EFD1846A0 /* AddTempTargetRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AddTempTargetRootView.swift; sourceTree = ""; }; F816825D28DB441200054060 /* HeartBeatManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeartBeatManager.swift; sourceTree = ""; }; @@ -976,6 +986,7 @@ 3811DE0325C9D31700A708ED /* Modules */ = { isa = PBXGroup; children = ( + E655644B29A8287E00573139 /* AppIconConfig */, 19D466A129AA2B0A004D5F33 /* FPUConfig */, F90692CD274B99850037068D /* HealthKit */, 6DC5D590658EF8B8DF94F9F5 /* AddCarbs */, @@ -1391,6 +1402,7 @@ 385CEAC025F2EA52002D6D5B /* Announcement.swift */, 388E5A5F25B6F2310019842D /* Autosens.swift */, 38A00B1E25FC00F7006BC0B0 /* Autotune.swift */, + E655645729A82CA900573139 /* AppIcon.swift */, 388358C725EEF6D200E024B2 /* BasalProfileEntry.swift */, 38D0B3B525EBE24900CB6E88 /* Battery.swift */, 382C134A25F14E3700715CE1 /* BGTargets.swift */, @@ -1931,6 +1943,25 @@ path = PumpSettingsEditor; sourceTree = ""; }; + E655644B29A8287E00573139 /* AppIconConfig */ = { + isa = PBXGroup; + children = ( + E655645129A82A0400573139 /* AppIconConfigDataFlow.swift */, + E655645329A82B0700573139 /* AppIconConfigProvider.swift */, + E655645529A82BA600573139 /* AppIconConfigStateModel.swift */, + E655644C29A828B600573139 /* View */, + ); + path = AppIconConfig; + sourceTree = ""; + }; + E655644C29A828B600573139 /* View */ = { + isa = PBXGroup; + children = ( + E655644F29A8298A00573139 /* AppIconConfigRootView.swift */, + ); + path = View; + sourceTree = ""; + }; E8176B120B55CE89F1591542 /* Calibrations */ = { isa = PBXGroup; children = ( @@ -2260,6 +2291,7 @@ 3811DEEB25CA063400A708ED /* PersistedProperty.swift in Sources */, 38E44537274E411700EC9A94 /* Disk+Helpers.swift in Sources */, 388E5A6025B6F2310019842D /* Autosens.swift in Sources */, + E655645829A82CA900573139 /* AppIcon.swift in Sources */, 3811DE8F25C9D80400A708ED /* User.swift in Sources */, 19D466A329AA2B80004D5F33 /* FPUConfigDataFlow.swift in Sources */, 3811DEB225C9D88300A708ED /* KeychainItemAccessibility.swift in Sources */, @@ -2312,11 +2344,13 @@ 3811DE4225C9D4A100A708ED /* SettingsDataFlow.swift in Sources */, 3811DE2525C9D48300A708ED /* MainRootView.swift in Sources */, 38E44535274E411700EC9A94 /* Disk+Data.swift in Sources */, + E655645629A82BA600573139 /* AppIconConfigStateModel.swift in Sources */, 3811DE3125C9D49500A708ED /* HomeProvider.swift in Sources */, FE41E4D629463EE20047FD55 /* NightscoutPreferences.swift in Sources */, E013D872273AC6FE0014109C /* GlucoseSimulatorSource.swift in Sources */, 388E5A5C25B6F0770019842D /* JSON.swift in Sources */, 3811DF0225CA9FEA00A708ED /* Credentials.swift in Sources */, + E655645229A82A0400573139 /* AppIconConfigDataFlow.swift in Sources */, 389A572026079BAA00BC102F /* Interpolation.swift in Sources */, 38B4F3C625E5017E00E76A18 /* NotificationCenter.swift in Sources */, 19D466A729AA2C22004D5F33 /* FPUConfigStateModel.swift in Sources */, @@ -2363,6 +2397,7 @@ 38D0B3D925EC07C400CB6E88 /* CarbsEntry.swift in Sources */, 38A9260525F012D8009E3739 /* CarbRatios.swift in Sources */, 38FCF3D625E8FDF40078B0D1 /* MD5.swift in Sources */, + E655645429A82B0700573139 /* AppIconConfigProvider.swift in Sources */, 3871F39C25ED892B0013ECB5 /* TempTarget.swift in Sources */, FEFA5C11299F814A00765C17 /* CoreDataStack.swift in Sources */, 3811DEAB25C9D88300A708ED /* HTTPResponseStatus.swift in Sources */, @@ -2380,6 +2415,7 @@ 3883581C25EE79BB00E024B2 /* DecimalTextField.swift in Sources */, 38DAB28A260D349500F74C1A /* FetchGlucoseManager.swift in Sources */, 38F37828261260DC009DB701 /* Color+Extensions.swift in Sources */, + E655645029A8298A00573139 /* AppIconConfigRootView.swift in Sources */, 3811DE3F25C9D4A100A708ED /* SettingsStateModel.swift in Sources */, 38B4F3CB25E502E200E76A18 /* WeakObjectSet.swift in Sources */, 38E989DD25F5021400C0CED0 /* PumpStatus.swift in Sources */, @@ -2640,6 +2676,9 @@ baseConfigurationReference = 38F3783A2613555C009DB701 /* Config.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = ""; + ASSETCATALOG_COMPILER_APPICON_NAME = ""; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2689,7 +2728,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; MARKETING_VERSION = "$(APP_VERSION)"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -2705,6 +2744,9 @@ baseConfigurationReference = 38F3783A2613555C009DB701 /* Config.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = ""; + ASSETCATALOG_COMPILER_APPICON_NAME = ""; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2748,7 +2790,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; MARKETING_VERSION = "$(APP_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -2764,8 +2806,10 @@ buildSettings = { APP_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; APP_GROUP_ID = "$(APP_GROUP_ID)"; - ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON)"; + ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = ""; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; CODE_SIGN_ENTITLEMENTS = FreeAPS/Resources/FreeAPS.entitlements; CODE_SIGN_STYLE = Automatic; @@ -2774,7 +2818,7 @@ DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)"; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = FreeAPS/Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2800,8 +2844,10 @@ buildSettings = { APP_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; APP_GROUP_ID = "$(APP_GROUP_ID)"; - ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON)"; + ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = ""; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; CODE_SIGN_ENTITLEMENTS = FreeAPS/Resources/FreeAPS.entitlements; CODE_SIGN_STYLE = Automatic; @@ -2810,7 +2856,7 @@ DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)"; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = FreeAPS/Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.1; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2838,6 +2884,7 @@ APP_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_ENTITLEMENTS = FreeAPSWatch/FreeAPSWatch.entitlements; @@ -2868,6 +2915,7 @@ APP_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_ENTITLEMENTS = FreeAPSWatch/FreeAPSWatch.entitlements; diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/1024.png b/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/1024 3.png similarity index 100% rename from FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/1024.png rename to FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/1024 3.png diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/512 1.png b/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/512 1.png new file mode 100644 index 000000000..a034915b2 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/512 1.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index 7d9c03979..1984978e6 100644 --- a/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/FreeAPS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -55,13 +55,13 @@ "size" : "256x256" }, { - "filename" : "512.png", + "filename" : "512 1.png", "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { - "filename" : "1024.png", + "filename" : "1024 3.png", "idiom" : "mac", "scale" : "2x", "size" : "512x512" diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-1024.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-1024.png new file mode 100644 index 000000000..a6459cc82 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-1024.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@2x.png new file mode 100644 index 000000000..3be1cc1bc Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@3x.png new file mode 100644 index 000000000..4be240e7a Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-20@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@2x.png new file mode 100644 index 000000000..af093c1f2 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@3x.png new file mode 100644 index 000000000..3e25dd66f Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-29@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@2x.png new file mode 100644 index 000000000..a1f4892d6 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@3x.png new file mode 100644 index 000000000..5843e7a0a Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-40@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@2x.png new file mode 100644 index 000000000..5843e7a0a Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@3x.png new file mode 100644 index 000000000..fd8c92ced Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/AppIcon_Blue-60@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/Contents.json b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/Contents.json new file mode 100644 index 000000000..baf27ea76 --- /dev/null +++ b/FreeAPS/Resources/Assets.xcassets/AppIcon_Blue.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "AppIcon_Blue-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Blue-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Blue-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Blue-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Blue-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Blue-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Blue-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Blue-60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Blue-1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-1024.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-1024.png new file mode 100644 index 000000000..754e48b13 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-1024.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@2x.png new file mode 100644 index 000000000..5d6a47963 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@3x.png new file mode 100644 index 000000000..89d2c6116 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-20@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@2x.png new file mode 100644 index 000000000..c4270996f Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@3x.png new file mode 100644 index 000000000..49c0aa928 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-29@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@2x.png new file mode 100644 index 000000000..f96f7e137 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@3x.png new file mode 100644 index 000000000..89b257cbb Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-40@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@2x.png new file mode 100644 index 000000000..89b257cbb Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@3x.png new file mode 100644 index 000000000..b484ed950 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/AppIcon_Green-60@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/Contents.json b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/Contents.json new file mode 100644 index 000000000..f8a70a2c3 --- /dev/null +++ b/FreeAPS/Resources/Assets.xcassets/AppIcon_Green.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "AppIcon_Green-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Green-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Green-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Green-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Green-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Green-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Green-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Green-60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Green-1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-1024.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-1024.png new file mode 100644 index 000000000..ae9e0ae6c Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-1024.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@2x.png new file mode 100644 index 000000000..d95628ea3 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@3x.png new file mode 100644 index 000000000..525209641 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-20@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@2x.png new file mode 100644 index 000000000..8e13c8e51 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@3x.png new file mode 100644 index 000000000..4935d17f6 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-29@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@2x.png new file mode 100644 index 000000000..d2219bed5 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@3x.png new file mode 100644 index 000000000..2d7cd7e57 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-40@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@2x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@2x.png new file mode 100644 index 000000000..2d7cd7e57 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@2x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@3x.png b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@3x.png new file mode 100644 index 000000000..714621b22 Binary files /dev/null and b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/AppIcon_Red-60@3x.png differ diff --git a/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/Contents.json b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/Contents.json new file mode 100644 index 000000000..6e33b2440 --- /dev/null +++ b/FreeAPS/Resources/Assets.xcassets/AppIcon_RED.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "AppIcon_Red-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Red-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "AppIcon_Red-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Red-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "AppIcon_Red-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Red-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon_Red-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Red-60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "AppIcon_Red-1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings index c0e77037f..1fbb849b4 100644 --- a/FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings index c46d4489a..52bfc88fb 100644 --- a/FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings @@ -1668,3 +1668,6 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings index 3efb88b72..8b9b8f791 100644 --- a/FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings @@ -1668,3 +1668,6 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings index 14b48ba5d..c7134bec3 100644 --- a/FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings @@ -1008,6 +1008,7 @@ Enact a temp Basal or a temp target */ /* */ "Apple Health" = "Apple Health"; + /* */ "Connect to Apple Health" = "Apple Health verbinden"; @@ -1086,6 +1087,12 @@ Enact a temp Basal or a temp target */ /* Section in settings */ "Protein / Fat" = "Eiweiß / Fett"; +/* Alert text */ +"Delete carb equivalents?" = "Delete carb equivalents?"; + +/* Section in settings */ +"Protein / Fat" = "Protein / Fat"; + /* ------------------------------------------------------------------------------------------- DASH strings */ @@ -1668,3 +1675,6 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Korrekturfaktor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings index 1367312a0..0ed69f41f 100644 --- a/FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings @@ -1672,3 +1672,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Change"; + diff --git a/FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings index b6a422ecb..a21a8a903 100644 --- a/FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings @@ -1674,3 +1674,6 @@ Un 1.0 de valor permite un ajuste completo con el nuevo factor de sensibilidad d /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings index 5d69b31eb..0843d581d 100644 --- a/FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings index dd8087e53..d62e43898 100644 --- a/FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings index c0e77037f..2c292d608 100644 --- a/FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings @@ -1668,3 +1668,6 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings index 1f3b414be..83451d9a1 100644 --- a/FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings index f7a85aadc..39f1537ff 100644 --- a/FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Justeringsfaktor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings index 82bece51a..8c87d8079 100644 --- a/FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings @@ -1092,6 +1092,12 @@ Enact a temp Basal or a temp target */ /* Section in settings */ "Protein / Fat" = "Protein / Fat"; +/* Alert text */ +"Delete carb equivalents?" = "Delete carb equivalents?"; + +/* Section in settings */ +"Protein / Fat" = "Protein / Fat"; + /* ------------------------------------------------------------------------------------------- DASH strings */ @@ -1674,3 +1680,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Aanpassingsfactor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings index 0a7864171..b98446861 100644 --- a/FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings @@ -1670,3 +1670,6 @@ Połączono z Nightscout!"; /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings index e12653f11..344b564fb 100644 --- a/FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings index c5cda1b1b..507f2a77d 100644 --- a/FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings index 09b0d215b..a0789f91f 100644 --- a/FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Коэффициент регулировки"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings index 6d52c4622..6afb339b8 100644 --- a/FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings index fae8a90b4..d34a32cc2 100644 --- a/FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings @@ -1668,3 +1668,6 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Justeringskonstant"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; diff --git a/FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings index 20edaa8ae..3cee69943 100644 --- a/FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Düzeltme Katsayısı"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings index d601128e7..1f36ee527 100644 --- a/FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings @@ -1668,3 +1668,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Коефіцієнт регулювання"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings b/FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings index 0c8eadb00..da0f4af7f 100644 --- a/FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings +++ b/FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings @@ -1670,3 +1670,7 @@ Enact a temp Basal or a temp target */ /* Headline "Adjustment Factor" */ "Adjustment Factor" = "Adjustment Factor"; + +/* AppIcon Change View */ +"AppIcon Change" = "AppIcon Wechseln"; + diff --git a/FreeAPS/Sources/Models/AppIcon.swift b/FreeAPS/Sources/Models/AppIcon.swift new file mode 100644 index 000000000..a3de20493 --- /dev/null +++ b/FreeAPS/Sources/Models/AppIcon.swift @@ -0,0 +1,17 @@ +import Foundation + +struct AppIcon: JSON, Equatable { + var createdAt: Date? + let basalProfile: [BasalProfileEntry] + let sensitivity: Decimal + let carbRatio: Decimal +} + +extension AppIcon { + private enum CodingKeys: String, CodingKey { + case createdAt = "created_at" + case basalProfile = "basalprofile" + case sensitivity = "sens" + case carbRatio = "carb_ratio" + } +} diff --git a/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigDataFlow.swift b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigDataFlow.swift new file mode 100644 index 000000000..827f70e4b --- /dev/null +++ b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigDataFlow.swift @@ -0,0 +1,5 @@ +enum AppIconConfig { + enum Config {} +} + +protocol AppIconConfigProvider: Provider {} diff --git a/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigProvider.swift b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigProvider.swift new file mode 100644 index 000000000..2cca564d7 --- /dev/null +++ b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigProvider.swift @@ -0,0 +1,3 @@ +extension AppIconConfig { + final class Provider: BaseProvider, AppIconConfigProvider {} +} diff --git a/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigStateModel.swift b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigStateModel.swift new file mode 100644 index 000000000..485233fc9 --- /dev/null +++ b/FreeAPS/Sources/Modules/AppIconConfig/AppIconConfigStateModel.swift @@ -0,0 +1,21 @@ +import Combine +import SwiftUI + +extension AppIconConfig { + final class StateModel: BaseStateModel { + @Published var useAppIcon = false +// @Published var publishedDate = Date() +// @Injected() var apsManager: APSManager! + // @Published var useAutotune = false +// @Published var appicon: AppIcon? +// private(set) var units: GlucoseUnits = .mmolL + // @Published var publishedDate = Date() +// @Persisted(key: "lastAutotuneDate") private var lastAutotuneDate = Date() { +// didSet { +// DispatchQueue.main.async { +// self.publishedDate = self.lastAutotuneDate +// } +// } +// } + } +} diff --git a/FreeAPS/Sources/Modules/AppIconConfig/View/AppIconConfigRootView.swift b/FreeAPS/Sources/Modules/AppIconConfig/View/AppIconConfigRootView.swift new file mode 100644 index 000000000..bdb762fc5 --- /dev/null +++ b/FreeAPS/Sources/Modules/AppIconConfig/View/AppIconConfigRootView.swift @@ -0,0 +1,268 @@ +import SwiftUI +import Swinject + +class NamesOfIcon: ObservableObject { + var namesOfIcon: [String?] = [nil] + + @Published var iconCount = 0 + + init() { + getAlternateIcons() + + if let currentIcon = UIApplication.shared.alternateIconName { + // if let currentIcon = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any] { + iconCount = namesOfIcon.firstIndex(of: currentIcon) ?? 0 + } + } + + func getAlternateIcons() + { + // looking into our info.plist file to locate the specific Bundle with our icons + if let icons = Bundle.main.object(forInfoDictionaryKey: "CFBundleIcons") as? [String: Any], + let alternateIcons = icons["CFBundleAlternateIcons"] as? [String: Any] + { + for (_, value) in alternateIcons { + // Accessing the name of icon list inside the dictionary + guard let iconList = value as? [String: Any] else { return } + // Accessing the name of icon files + // guard let iconFiles = iconList["CFBundleIconFiles"] as? [String] + /* guard let iconFiles = iconList["CFBundleIconName"] as? [String] + else { return } */ + // Accessing the name of the icon + // guard let icon = iconFiles.first else { return } + namesOfIcon.append(iconList.values.first as! String) + } + } + } +} + +extension AppIconConfig { + // struct RootView: AppIconView.environmentObject(NamesOfIcon()) + /* struct RootView: BaseView { + let resolver: Resolver + @StateObject var state = StateModel() + + func GetAppIcon(isPrimary: Bool) -> UIImage { + var appIcon: UIImage! { + if isPrimary == true { + guard let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any], + let primaryIconsDictionary = iconsDictionary["CFBundlePrimaryIcon"] as? [String: Any], + let iconFiles = primaryIconsDictionary["CFBundleIconFiles"] as? [String], + let lastIcon = iconFiles.last else { return nil } + return UIImage(named: lastIcon) + } else { + guard let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any], + let alternateIconsDictionary = iconsDictionary["CFBundleAlternateIcons"] as? [String: Any], + let altIconName = alternateIconsDictionary["AppIconAlternate1"] as? [String: Any], + let iconFiles = altIconName["CFBundleIconFiles"] as? [String], + let lastIcon = iconFiles.last else { return nil } + return UIImage(named: lastIcon) + } + } + + return appIcon + } + + @AppStorage("active_icon") var activeAppIcon: String = "AppIcon" + var body: some View { + NavigationStack { + Picker(selection: $activeAppIcon) { + let customIcons: [String] = ["AppIcon", "AppIcon_BW"] + ForEach(customIcons, id: \.self) { icon in + Text(icon) + .tag(icon) + } + } label: {} + .navigationTitle("Alternative App Icon") + } + .onChange(of: activeAppIcon) { newValue in + UIApplication.shared.setAlternateIconName(newValue) + } + + /* + Form { + Section { + // Toggle("Connect to Apple Health", isOn: $state.useAppIcon) + + HStack { + // Image(systemName: "pencil.circle.fill") + // Image(uiImage: UIImage(named: GetAppIcon().String) ?? UIImage()) + Image(uiImage: GetAppIcon(isPrimary: false)) + Text( + "Default AppIcon" + ) + // .font(.caption) + } + // .foregroundColor(Color.secondary) + HStack { + Image(systemName: "exclamationmark.circle.fill") + Text("For write data to Apple Health you must give permissions in Settings > Health > Data Access") + .font(.caption) + } + }*/ + } + + /* .onAppear(perform: configureView) + .navigationTitle("AppIcon Change") + .navigationBarTitleDisplayMode(.automatic)*/ + } + } */ + /* func addItem() { + // print("test") + + let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any] + let alternateIconsDictionary = iconsDictionary!["CFBundleAlternateIcons"] as? [String: Any] + let altIconName = alternateIconsDictionary!["AppIconAlternate1"] as? [String: Any] + }*/ + + struct ContentView: View { + @AppStorage("active_icon") var activeAppIcon: String = "AppIcon" + + var body: some View { + NavigationStack { + Picker(selection: $activeAppIcon) { + let customIcons: [String] = ["AppIcon", "AppIcon_BW"] + ForEach(customIcons, id: \.self) { icon in + Text(icon) + .tag(icon) + } + } label: {} + .navigationTitle("Alternative App Icon") + } + + .onChange(of: activeAppIcon) { + newValue in + if newValue == "AppIcon" { + UIApplication.shared.setAlternateIconName(nil) + } else { + UIApplication.shared.setAlternateIconName(newValue) + } + } + } + } + + struct AppIconView2: View { + // @AppStorage("active_icon") var activeAppIcon: String = "AppIcon" + var body: some View { + /* Image("1024 2") + .resizable() + .scaledToFit() + .cornerRadius(10) + .padding() */ + Button(action: { + let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any] + print(iconsDictionary?.first?.value as Any) + + }) + { + Label { Text("Default Icon").font(.callout.bold()) } + icon: { Image(uiImage: UIImage(named: "AppIcon_RED") ?? UIImage()) + .resizable() + .scaledToFit() + .padding() + .cornerRadius(10) + .frame(width: 80, height: 80) + } + } + } + } + + // TODO: change font color when changing iOS to dark mode + struct AppIconView3: View { + @Environment(\.colorScheme) var colorScheme + @StateObject var iconSettings = NamesOfIcon() + var body: some View { + Section { + ForEach(0 ..< $iconSettings.namesOfIcon.count) { i in + Button(action: { + if self.iconSettings.namesOfIcon[i] == "AppIcon" { + UIApplication.shared.setAlternateIconName(nil) + } else { + UIApplication.shared.setAlternateIconName(self.iconSettings.namesOfIcon[i]) + } + + }) + { + Label { Text(self.iconSettings.namesOfIcon[i] ?? "AppIcon") } + icon: { Image(uiImage: UIImage(named: self.iconSettings.namesOfIcon[i] ?? "AppIcon") ?? UIImage()) + .resizable() + .scaledToFit() + // .border(.red) + + // .frame(width: 80, height: 80, alignment: .topLeading) + } + } + }.frame(width: 200, height: 45, alignment: .topLeading) + // .border(.green) + } + .navigationTitle("Change App Icon") + .foregroundColor(colorScheme == .dark ? .white : .black) + + .frame(alignment: .topLeading) + // .padding(.top, -50) + // .border(.yellow) + + // .scaledToFit() + + // .frame(alignment: .leading) + } + } + + // --------------------------------Final View-------------------------------------------------------- + struct RootView: BaseView { + let resolver: Resolver + @StateObject var state = StateModel() + @StateObject var iconSettings = NamesOfIcon() + var body: some View { + Form { + Section( + header: Text( + "This feature allows to change the AppIcon on FAX that you see on the Home Screen\n\nIt dynamically fetches all AppIcons that are available in FreeAPS->Resources->Assets.xcassets\nYou can add your own icon easilly with right-click. Select iOS->New iOS App Icon. Add one .png image with size 1024x1024. Done" + ).font(.body) + ) + {} + VStack { + ForEach(0 ..< $iconSettings.namesOfIcon.count) { i in + Button(action: { + if self.iconSettings.namesOfIcon[i] == "AppIcon" { + UIApplication.shared.setAlternateIconName(nil) + } else { + UIApplication.shared.setAlternateIconName(self.iconSettings.namesOfIcon[i]) + } + + }) + { + Label { Text(self.iconSettings.namesOfIcon[i] ?? "AppIcon") } + icon: { Image(uiImage: UIImage(named: self.iconSettings.namesOfIcon[i] ?? "AppIcon") ?? UIImage()) + .resizable() + .scaledToFit() + .border(.red) + + // .frame(width: 80, height: 80, alignment: .topLeading) + } + } + }.frame(width: 200, height: 40, alignment: .topLeading) + .border(.green) + } + } + // } + .onAppear(perform: configureView) + // .alignmentGuide(HorizontalAlignment.leading) { _ in 80 } + // .scaledToFit() + .navigationTitle("Change App Icon") + .navigationBarTitleDisplayMode(.automatic) + // .foregroundColor(.black) + // .frame(alignment: .topLeading) + // .padding(.top, -200) + // .border(.yellow) + // .navigationViewStyle(.stack) + // .scaledToFit() + + // .frame(alignment: .leading) + } + } + + // --------------------------------Final View-------------------------------------------------------- +} + +// } diff --git a/FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift b/FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift index bcbe313e5..fe8a076ff 100644 --- a/FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift +++ b/FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift @@ -40,6 +40,7 @@ extension Settings { Text("Carb Ratios").navigationLink(to: .crEditor, from: self) Text("Target Ranges").navigationLink(to: .targetsEditor, from: self) Text("Autotune").navigationLink(to: .autotuneConfig, from: self) + Text("AppIcon").navigationLink(to: .appIconConfig, from: self) } Section(header: Text("Developer")) { diff --git a/FreeAPS/Sources/Router/Screen.swift b/FreeAPS/Sources/Router/Screen.swift index 82e41ea78..479133837 100644 --- a/FreeAPS/Sources/Router/Screen.swift +++ b/FreeAPS/Sources/Router/Screen.swift @@ -27,6 +27,7 @@ enum Screen: Identifiable, Hashable { case notificationsConfig case fpuConfig case snooze + case appIconConfig // becksen var id: Int { String(reflecting: self).hashValue } } @@ -87,6 +88,8 @@ extension Screen { FPUConfig.RootView(resolver: resolver) case .snooze: Snooze.RootView(resolver: resolver) + case .appIconConfig: + AppIconConfig.AppIconView3() } }