From b3f0e71dedd0d80cddbaf2265d2b0003cac730fc Mon Sep 17 00:00:00 2001 From: Evgeny Date: Thu, 8 Aug 2024 17:25:45 +0100 Subject: [PATCH] ios: toolbar opacity (#4630) * ios: toolbar material * top toolbar too --- .../Shared/Views/ChatList/ChatListView.swift | 11 +++-- .../UserSettings/AppearanceSettings.swift | 45 +++++++++++++++++++ .../Views/UserSettings/SettingsView.swift | 2 + .../bg.xcloc/Localized Contents/bg.xliff | 4 ++ .../cs.xcloc/Localized Contents/cs.xliff | 4 ++ .../de.xcloc/Localized Contents/de.xliff | 4 ++ .../en.xcloc/Localized Contents/en.xliff | 5 +++ .../es.xcloc/Localized Contents/es.xliff | 4 ++ .../fi.xcloc/Localized Contents/fi.xliff | 4 ++ .../fr.xcloc/Localized Contents/fr.xliff | 4 ++ .../hu.xcloc/Localized Contents/hu.xliff | 4 ++ .../it.xcloc/Localized Contents/it.xliff | 4 ++ .../ja.xcloc/Localized Contents/ja.xliff | 4 ++ .../nl.xcloc/Localized Contents/nl.xliff | 4 ++ .../pl.xcloc/Localized Contents/pl.xliff | 4 ++ .../ru.xcloc/Localized Contents/ru.xliff | 4 ++ .../th.xcloc/Localized Contents/th.xliff | 4 ++ .../tr.xcloc/Localized Contents/tr.xliff | 4 ++ .../uk.xcloc/Localized Contents/uk.xliff | 4 ++ .../Localized Contents/zh-Hans.xliff | 4 ++ 20 files changed, 123 insertions(+), 4 deletions(-) diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index efe55152e9..965fd147f7 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -25,6 +25,7 @@ struct ChatListView: View { @AppStorage(DEFAULT_SHOW_UNREAD_AND_FAVORITES) private var showUnreadAndFavorites = false @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true @AppStorage(DEFAULT_ONE_HAND_UI_CARD_SHOWN) private var oneHandUICardShown = false + @AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.bar.rawValue var body: some View { if #available(iOS 16.0, *) { @@ -62,7 +63,8 @@ struct ChatListView: View { } private var chatListView: some View { - withToolbar { + let tm = ToolbarMaterial.material(toolbarMaterial) + return withToolbar(tm) { chatList .background(theme.colors.background) .navigationBarTitleDisplayMode(.inline) @@ -87,11 +89,11 @@ struct ChatListView: View { )) } .safeAreaInset(edge: .top) { - if oneHandUI { Divider().background(Material.ultraThin) } + if oneHandUI { Divider().background(tm) } } .safeAreaInset(edge: .bottom) { if oneHandUI { - Divider().padding(.bottom, Self.hasHomeIndicator ? 0 : 8).background(Material.ultraThin) + Divider().padding(.bottom, Self.hasHomeIndicator ? 0 : 8).background(tm) } } } @@ -103,7 +105,7 @@ struct ChatListView: View { } else { false } }() - @ViewBuilder func withToolbar(content: () -> some View) -> some View { + @ViewBuilder func withToolbar(_ material: Material, content: () -> some View) -> some View { if #available(iOS 16.0, *) { if oneHandUI { content() @@ -112,6 +114,7 @@ struct ChatListView: View { } else { content() .toolbarBackground(.automatic, for: .navigationBar) + .toolbarBackground(material) .toolbar { topToolbar } } } else { diff --git a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift index 0087aaea1b..6ab91df122 100644 --- a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift @@ -32,8 +32,10 @@ struct AppearanceSettings: View { if currentThemeDefault.get() == DefaultTheme.SYSTEM_THEME_NAME { nil as DefaultThemeMode? } else { CurrentColors.base.mode } }() @State private var darkModeTheme: String = UserDefaults.standard.string(forKey: DEFAULT_SYSTEM_DARK_THEME) ?? DefaultTheme.DARK.themeName + @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false @AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileImageCornerRadius = defaultProfileImageCorner @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true + @AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.bar.rawValue @State var themeUserDestination: (Int64, ThemeModeOverrides?)? = { if let currentUser = ChatModel.shared.currentUser, let uiThemes = currentUser.uiThemes, uiThemes.preferredMode(!CurrentColors.colors.isLight) != nil { @@ -65,6 +67,14 @@ struct AppearanceSettings: View { Section("Chat list") { Toggle("Reachable chat toolbar", isOn: $oneHandUI) + if developerTools { + Picker("Toolbar opacity", selection: $toolbarMaterial) { + ForEach(ToolbarMaterial.allCases, id: \.rawValue) { tm in + Text(tm.text).tag(tm.rawValue) + } + } + .frame(height: 36) + } } Section { @@ -296,6 +306,41 @@ struct AppearanceSettings: View { } } +enum ToolbarMaterial: String, CaseIterable { + case bar + case ultraThin + case thin + case regular + case thick + case ultraThick + + static func material(_ s: String) -> Material { + ToolbarMaterial(rawValue: s)?.material ?? Material.bar + } + + var material: Material { + switch self { + case .bar: .bar + case .ultraThin: .ultraThin + case .thin: .thin + case .regular: .regular + case .thick: .thick + case .ultraThick: .ultraThick + } + } + + var text: String { + switch self { + case .bar: "System" + case .ultraThin: "Ultra thin" + case .thin: "Thin" + case .regular: "Regular" + case .thick: "Thick" + case .ultraThick: "Ultra thick" + } + } +} + struct ChatThemePreview: View { @EnvironmentObject var theme: AppTheme var base: DefaultTheme diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 51ce56939e..634918ffe1 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -48,6 +48,7 @@ let DEFAULT_ACCENT_COLOR_BLUE = "accentColorBlue" // deprecated, only used for m let DEFAULT_USER_INTERFACE_STYLE = "userInterfaceStyle" // deprecated, only used for migration let DEFAULT_PROFILE_IMAGE_CORNER_RADIUS = "profileImageCornerRadius" let DEFAULT_ONE_HAND_UI_CARD_SHOWN = "oneHandUICardShown" +let DEFAULT_TOOLBAR_MATERIAL = "toolbarMaterial" let DEFAULT_CONNECT_VIA_LINK_TAB = "connectViaLinkTab" let DEFAULT_LIVE_MESSAGE_ALERT_SHOWN = "liveMessageAlertShown" let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice" @@ -98,6 +99,7 @@ let appDefaults: [String: Any] = [ DEFAULT_ENCRYPTION_STARTED: false, DEFAULT_PROFILE_IMAGE_CORNER_RADIUS: defaultProfileImageCorner, DEFAULT_ONE_HAND_UI_CARD_SHOWN: false, + DEFAULT_TOOLBAR_MATERIAL: ToolbarMaterial.bar.rawValue, DEFAULT_CONNECT_VIA_LINK_TAB: ConnectViaLinkTab.scan.rawValue, DEFAULT_LIVE_MESSAGE_ALERT_SHOWN: false, DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE: true, diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff index 4a04212175..ef16d11d94 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -6579,6 +6579,10 @@ You will be prompted to complete authentication before this feature is enabled.< Избор на инкогнито при свързване. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff index b87d3d85c4..875f3af03d 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -6356,6 +6356,10 @@ Před zapnutím této funkce budete vyzváni k dokončení ověření. Změnit inkognito režim při připojení. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff index a1eb8bfb99..0226debea7 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -6757,6 +6757,10 @@ Sie werden aufgefordert, die Authentifizierung abzuschließen, bevor diese Funkt Inkognito beim Verbinden einschalten. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Summe aller Abonnements diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff index 2facc0baf5..7e152273eb 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -6793,6 +6793,11 @@ You will be prompted to complete authentication before this feature is enabled.< Toggle incognito when connecting. No comment provided by engineer. + + Toolbar opacity + Toolbar opacity + No comment provided by engineer. + Total Total diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff index bd12590f1d..9101de2426 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -6781,6 +6781,10 @@ Se te pedirá que completes la autenticación antes de activar esta función.Activa incógnito al conectar. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Total diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff index 19f32fc5de..500817570e 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -6341,6 +6341,10 @@ Sinua kehotetaan suorittamaan todennus loppuun, ennen kuin tämä ominaisuus ote Toggle incognito when connecting. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff index 1c4c951595..3b96738085 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -6750,6 +6750,10 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s Basculer en mode incognito lors de la connexion. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Total diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index c0c9d22dc8..c5238de475 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -6781,6 +6781,10 @@ A funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beáll Inkognitó mód kapcsolódáskor. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Összesen diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff index 5b073b048a..2d77002e37 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -6781,6 +6781,10 @@ Ti verrà chiesto di completare l'autenticazione prima di attivare questa funzio Attiva/disattiva l'incognito quando ti colleghi. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Totale diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff index f3c5a5482a..93f59f101d 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -6359,6 +6359,10 @@ You will be prompted to complete authentication before this feature is enabled.< Toggle incognito when connecting. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff index 368db7c819..e574ecc150 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -6781,6 +6781,10 @@ U wordt gevraagd de authenticatie te voltooien voordat deze functie wordt ingesc Schakel incognito in tijdens het verbinden. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Totaal diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff index 36dcd781dd..e5bab7b386 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -6730,6 +6730,10 @@ Przed włączeniem tej funkcji zostanie wyświetlony monit uwierzytelniania.Przełącz incognito przy połączeniu. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Łącznie diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index f8923cb7d2..f59461727d 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -6781,6 +6781,10 @@ You will be prompted to complete authentication before this feature is enabled.< Установите режим Инкогнито при соединении. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total Всего diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff index 45de018dae..28f216b696 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -6313,6 +6313,10 @@ You will be prompted to complete authentication before this feature is enabled.< Toggle incognito when connecting. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index cdeeaa46c8..e3961caff5 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -6610,6 +6610,10 @@ Bu özellik etkinleştirilmeden önce kimlik doğrulamayı tamamlamanız istenec Bağlanırken gizli moda geçiş yap. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff index f9d2066fde..9a856ac600 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -6610,6 +6610,10 @@ You will be prompted to complete authentication before this feature is enabled.< Увімкніть інкогніто при підключенні. No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index 9b662594bf..9c23a5bd48 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -6529,6 +6529,10 @@ You will be prompted to complete authentication before this feature is enabled.< 在连接时切换隐身模式。 No comment provided by engineer. + + Toolbar opacity + No comment provided by engineer. + Total No comment provided by engineer.