mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-07-26 22:42:17 +00:00
ref: reorganize settings page
This commit is contained in:
parent
d767f60d35
commit
a2d3fda686
9 changed files with 74 additions and 90 deletions
|
|
@ -436,7 +436,7 @@
|
|||
<string name="compose_settings_root_account_section">ACCOUNT</string>
|
||||
<string name="compose_settings_root_advanced_description">Startup and profile behavior.</string>
|
||||
<string name="compose_settings_root_advanced_section">ADVANCED</string>
|
||||
<string name="compose_settings_root_appearance_description">Home structure and poster styles</string>
|
||||
<string name="compose_settings_root_appearance_description">Home, streams, collections, and detail pages</string>
|
||||
<string name="compose_settings_root_check_updates_description">Download latest release</string>
|
||||
<string name="compose_settings_root_check_updates_title">Check for updates</string>
|
||||
<string name="compose_settings_root_content_discovery_description">Manage addons and discovery sources.</string>
|
||||
|
|
|
|||
|
|
@ -20,9 +20,6 @@ import androidx.compose.foundation.shape.CircleShape
|
|||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Check
|
||||
import androidx.compose.material.icons.rounded.Language
|
||||
import androidx.compose.material.icons.rounded.Style
|
||||
import androidx.compose.material.icons.rounded.Tune
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
|
|
@ -50,8 +47,12 @@ import com.nuvio.app.core.ui.ThemeColors
|
|||
import kotlinx.coroutines.launch
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
import nuvio.composeapp.generated.resources.cd_selected
|
||||
import nuvio.composeapp.generated.resources.collections_header
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_continue_watching
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_homescreen
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_meta_screen
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_poster_customization
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_streams
|
||||
import nuvio.composeapp.generated.resources.settings_appearance_app_language
|
||||
import nuvio.composeapp.generated.resources.settings_appearance_app_language_sheet_title
|
||||
import nuvio.composeapp.generated.resources.settings_appearance_amoled_black
|
||||
|
|
@ -63,6 +64,10 @@ import nuvio.composeapp.generated.resources.settings_appearance_poster_customiza
|
|||
import nuvio.composeapp.generated.resources.settings_appearance_section_display
|
||||
import nuvio.composeapp.generated.resources.settings_appearance_section_home
|
||||
import nuvio.composeapp.generated.resources.settings_appearance_section_theme
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_collections_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_homescreen_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_meta_screen_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_streams_description
|
||||
import org.jetbrains.compose.resources.StringResource
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
|
|
@ -79,6 +84,10 @@ internal fun LazyListScope.appearanceSettingsContent(
|
|||
onLiquidGlassNativeTabBarToggle: (Boolean) -> Unit,
|
||||
selectedAppLanguage: AppLanguage,
|
||||
onAppLanguageSelected: (AppLanguage) -> Unit,
|
||||
onHomescreenClick: () -> Unit,
|
||||
onMetaScreenClick: () -> Unit,
|
||||
onStreamsClick: () -> Unit,
|
||||
onCollectionsClick: () -> Unit,
|
||||
onContinueWatchingClick: () -> Unit,
|
||||
onPosterCustomizationClick: () -> Unit,
|
||||
) {
|
||||
|
|
@ -161,7 +170,6 @@ internal fun LazyListScope.appearanceSettingsContent(
|
|||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.settings_appearance_app_language),
|
||||
description = stringResource(selectedAppLanguage.labelRes),
|
||||
icon = Icons.Rounded.Language,
|
||||
isTablet = isTablet,
|
||||
onClick = { showLanguageSheet = true },
|
||||
)
|
||||
|
|
@ -186,10 +194,23 @@ internal fun LazyListScope.appearanceSettingsContent(
|
|||
isTablet = isTablet,
|
||||
) {
|
||||
SettingsGroup(isTablet = isTablet) {
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_homescreen),
|
||||
description = stringResource(Res.string.settings_content_discovery_homescreen_description),
|
||||
isTablet = isTablet,
|
||||
onClick = onHomescreenClick,
|
||||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.collections_header),
|
||||
description = stringResource(Res.string.settings_content_discovery_collections_description),
|
||||
isTablet = isTablet,
|
||||
onClick = onCollectionsClick,
|
||||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_continue_watching),
|
||||
description = stringResource(Res.string.settings_appearance_continue_watching_description),
|
||||
icon = Icons.Rounded.Style,
|
||||
isTablet = isTablet,
|
||||
onClick = onContinueWatchingClick,
|
||||
)
|
||||
|
|
@ -197,13 +218,42 @@ internal fun LazyListScope.appearanceSettingsContent(
|
|||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_poster_customization),
|
||||
description = stringResource(Res.string.settings_appearance_poster_customization_description),
|
||||
icon = Icons.Rounded.Tune,
|
||||
isTablet = isTablet,
|
||||
onClick = onPosterCustomizationClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
item {
|
||||
SettingsSection(
|
||||
title = stringResource(Res.string.compose_settings_page_streams),
|
||||
isTablet = isTablet,
|
||||
) {
|
||||
SettingsGroup(isTablet = isTablet) {
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_streams),
|
||||
description = stringResource(Res.string.compose_settings_root_streams_description),
|
||||
isTablet = isTablet,
|
||||
onClick = onStreamsClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
item {
|
||||
SettingsSection(
|
||||
title = stringResource(Res.string.compose_settings_page_meta_screen),
|
||||
isTablet = isTablet,
|
||||
) {
|
||||
SettingsGroup(isTablet = isTablet) {
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_meta_screen),
|
||||
description = stringResource(Res.string.settings_content_discovery_meta_screen_description),
|
||||
isTablet = isTablet,
|
||||
onClick = onMetaScreenClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private data class AppLanguageSheetOption(
|
||||
|
|
|
|||
|
|
@ -1,26 +1,13 @@
|
|||
package com.nuvio.app.features.settings
|
||||
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.CollectionsBookmark
|
||||
import androidx.compose.material.icons.rounded.Extension
|
||||
import androidx.compose.material.icons.rounded.Home
|
||||
import androidx.compose.material.icons.rounded.Hub
|
||||
import androidx.compose.material.icons.rounded.Tune
|
||||
import com.nuvio.app.core.build.AppFeaturePolicy
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_addons
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_homescreen
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_meta_screen
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_plugins
|
||||
import nuvio.composeapp.generated.resources.collections_header
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_addons_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_addons_description_appstore
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_collections_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_homescreen_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_meta_screen_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_plugins_description
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_section_home
|
||||
import nuvio.composeapp.generated.resources.settings_content_discovery_section_sources
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
|
|
@ -29,9 +16,6 @@ internal fun LazyListScope.contentDiscoveryContent(
|
|||
showPluginsEntry: Boolean,
|
||||
onAddonsClick: () -> Unit,
|
||||
onPluginsClick: () -> Unit,
|
||||
onHomescreenClick: () -> Unit,
|
||||
onMetaScreenClick: () -> Unit,
|
||||
onCollectionsClick: () -> Unit = {},
|
||||
) {
|
||||
item {
|
||||
SettingsSection(
|
||||
|
|
@ -48,7 +32,6 @@ internal fun LazyListScope.contentDiscoveryContent(
|
|||
Res.string.settings_content_discovery_addons_description
|
||||
},
|
||||
),
|
||||
icon = Icons.Rounded.Extension,
|
||||
isTablet = isTablet,
|
||||
onClick = onAddonsClick,
|
||||
)
|
||||
|
|
@ -56,7 +39,6 @@ internal fun LazyListScope.contentDiscoveryContent(
|
|||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_plugins),
|
||||
description = stringResource(Res.string.settings_content_discovery_plugins_description),
|
||||
icon = Icons.Rounded.Hub,
|
||||
isTablet = isTablet,
|
||||
onClick = onPluginsClick,
|
||||
)
|
||||
|
|
@ -64,34 +46,4 @@ internal fun LazyListScope.contentDiscoveryContent(
|
|||
}
|
||||
}
|
||||
}
|
||||
item {
|
||||
SettingsSection(
|
||||
title = stringResource(Res.string.settings_content_discovery_section_home),
|
||||
isTablet = isTablet,
|
||||
) {
|
||||
SettingsGroup(isTablet = isTablet) {
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_homescreen),
|
||||
description = stringResource(Res.string.settings_content_discovery_homescreen_description),
|
||||
icon = Icons.Rounded.Home,
|
||||
isTablet = isTablet,
|
||||
onClick = onHomescreenClick,
|
||||
)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_meta_screen),
|
||||
description = stringResource(Res.string.settings_content_discovery_meta_screen_description),
|
||||
icon = Icons.Rounded.Tune,
|
||||
isTablet = isTablet,
|
||||
onClick = onMetaScreenClick,
|
||||
)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.collections_header),
|
||||
description = stringResource(Res.string.settings_content_discovery_collections_description),
|
||||
icon = Icons.Rounded.CollectionsBookmark,
|
||||
isTablet = isTablet,
|
||||
onClick = onCollectionsClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package com.nuvio.app.features.settings
|
||||
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.CloudQueue
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_debrid
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
|
|
@ -44,7 +42,6 @@ internal fun LazyListScope.integrationsContent(
|
|||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_debrid),
|
||||
description = stringResource(Res.string.settings_integrations_debrid_description),
|
||||
icon = Icons.Rounded.CloudQueue,
|
||||
isTablet = isTablet,
|
||||
onClick = onDebridClick,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -74,16 +74,16 @@ internal enum class SettingsPage(
|
|||
category = SettingsCategory.General,
|
||||
parentPage = Root,
|
||||
),
|
||||
Streams(
|
||||
titleRes = Res.string.compose_settings_page_streams,
|
||||
category = SettingsCategory.General,
|
||||
parentPage = Root,
|
||||
),
|
||||
Appearance(
|
||||
titleRes = Res.string.compose_settings_page_appearance,
|
||||
category = SettingsCategory.General,
|
||||
parentPage = Root,
|
||||
),
|
||||
Streams(
|
||||
titleRes = Res.string.compose_settings_page_streams,
|
||||
category = SettingsCategory.General,
|
||||
parentPage = Appearance,
|
||||
),
|
||||
Advanced(
|
||||
titleRes = Res.string.compose_settings_page_advanced,
|
||||
category = SettingsCategory.Advanced,
|
||||
|
|
@ -122,12 +122,12 @@ internal enum class SettingsPage(
|
|||
Homescreen(
|
||||
titleRes = Res.string.compose_settings_page_homescreen,
|
||||
category = SettingsCategory.General,
|
||||
parentPage = ContentDiscovery,
|
||||
parentPage = Appearance,
|
||||
),
|
||||
MetaScreen(
|
||||
titleRes = Res.string.compose_settings_page_meta_screen,
|
||||
category = SettingsCategory.General,
|
||||
parentPage = ContentDiscovery,
|
||||
parentPage = Appearance,
|
||||
),
|
||||
Integrations(
|
||||
titleRes = Res.string.compose_settings_page_integrations,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import androidx.compose.material.icons.rounded.Notifications
|
|||
import androidx.compose.material.icons.rounded.Palette
|
||||
import androidx.compose.material.icons.rounded.People
|
||||
import androidx.compose.material.icons.rounded.PlayArrow
|
||||
import androidx.compose.material.icons.rounded.Style
|
||||
import androidx.compose.material.icons.rounded.Tune
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
|
|
@ -32,7 +31,6 @@ import nuvio.composeapp.generated.resources.compose_settings_page_integrations
|
|||
import nuvio.composeapp.generated.resources.compose_settings_page_licenses_attributions
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_notifications
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_playback
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_streams
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_supporters_contributors
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_account_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_appearance_description
|
||||
|
|
@ -44,7 +42,6 @@ import nuvio.composeapp.generated.resources.compose_settings_root_downloads_titl
|
|||
import nuvio.composeapp.generated.resources.compose_settings_root_general_section
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_integrations_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_notifications_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_streams_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_switch_profile_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_switch_profile_title
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_trakt_description
|
||||
|
|
@ -62,7 +59,6 @@ import org.jetbrains.compose.resources.stringResource
|
|||
internal fun LazyListScope.settingsRootContent(
|
||||
isTablet: Boolean,
|
||||
onPlaybackClick: () -> Unit,
|
||||
onStreamsClick: () -> Unit,
|
||||
onAppearanceClick: () -> Unit,
|
||||
onAdvancedClick: () -> Unit,
|
||||
onNotificationsClick: () -> Unit,
|
||||
|
|
@ -156,14 +152,6 @@ internal fun LazyListScope.settingsRootContent(
|
|||
onClick = onPlaybackClick,
|
||||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_streams),
|
||||
description = stringResource(Res.string.compose_settings_root_streams_description),
|
||||
icon = Icons.Rounded.Style,
|
||||
isTablet = isTablet,
|
||||
onClick = onStreamsClick,
|
||||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_integrations),
|
||||
description = stringResource(Res.string.compose_settings_root_integrations_description),
|
||||
|
|
|
|||
|
|
@ -545,7 +545,6 @@ private fun MobileSettingsScreen(
|
|||
settingsRootContent(
|
||||
isTablet = false,
|
||||
onPlaybackClick = { onPageChange(SettingsPage.Playback) },
|
||||
onStreamsClick = { onPageChange(SettingsPage.Streams) },
|
||||
onAppearanceClick = { onPageChange(SettingsPage.Appearance) },
|
||||
onAdvancedClick = { onPageChange(SettingsPage.Advanced) },
|
||||
onNotificationsClick = { onPageChange(SettingsPage.Notifications) },
|
||||
|
|
@ -609,6 +608,10 @@ private fun MobileSettingsScreen(
|
|||
onLiquidGlassNativeTabBarToggle = onLiquidGlassNativeTabBarToggle,
|
||||
selectedAppLanguage = selectedAppLanguage,
|
||||
onAppLanguageSelected = onAppLanguageSelected,
|
||||
onHomescreenClick = onHomescreenClick,
|
||||
onMetaScreenClick = onMetaScreenClick,
|
||||
onStreamsClick = { onPageChange(SettingsPage.Streams) },
|
||||
onCollectionsClick = onCollectionsClick,
|
||||
onContinueWatchingClick = onContinueWatchingClick,
|
||||
onPosterCustomizationClick = { onPageChange(SettingsPage.PosterCustomization) },
|
||||
)
|
||||
|
|
@ -640,9 +643,6 @@ private fun MobileSettingsScreen(
|
|||
showPluginsEntry = AppFeaturePolicy.pluginsEnabled,
|
||||
onAddonsClick = onAddonsClick,
|
||||
onPluginsClick = onPluginsClick,
|
||||
onHomescreenClick = onHomescreenClick,
|
||||
onMetaScreenClick = onMetaScreenClick,
|
||||
onCollectionsClick = onCollectionsClick,
|
||||
)
|
||||
SettingsPage.Addons -> addonsSettingsContent()
|
||||
SettingsPage.Plugins -> if (AppFeaturePolicy.pluginsEnabled) pluginsSettingsContent() else addonsSettingsContent()
|
||||
|
|
@ -944,7 +944,6 @@ private fun TabletSettingsScreen(
|
|||
settingsRootContent(
|
||||
isTablet = true,
|
||||
onPlaybackClick = { openInlinePage(SettingsPage.Playback) },
|
||||
onStreamsClick = { openInlinePage(SettingsPage.Streams) },
|
||||
onAppearanceClick = { openInlinePage(SettingsPage.Appearance) },
|
||||
onAdvancedClick = { openInlinePage(SettingsPage.Advanced) },
|
||||
onNotificationsClick = { openInlinePage(SettingsPage.Notifications) },
|
||||
|
|
@ -1012,6 +1011,10 @@ private fun TabletSettingsScreen(
|
|||
onLiquidGlassNativeTabBarToggle = onLiquidGlassNativeTabBarToggle,
|
||||
selectedAppLanguage = selectedAppLanguage,
|
||||
onAppLanguageSelected = onAppLanguageSelected,
|
||||
onHomescreenClick = { openInlinePage(SettingsPage.Homescreen) },
|
||||
onMetaScreenClick = { openInlinePage(SettingsPage.MetaScreen) },
|
||||
onStreamsClick = { openInlinePage(SettingsPage.Streams) },
|
||||
onCollectionsClick = onCollectionsClick,
|
||||
onContinueWatchingClick = { openInlinePage(SettingsPage.ContinueWatching) },
|
||||
onPosterCustomizationClick = { openInlinePage(SettingsPage.PosterCustomization) },
|
||||
)
|
||||
|
|
@ -1043,9 +1046,6 @@ private fun TabletSettingsScreen(
|
|||
showPluginsEntry = AppFeaturePolicy.pluginsEnabled,
|
||||
onAddonsClick = { openInlinePage(SettingsPage.Addons) },
|
||||
onPluginsClick = { openInlinePage(SettingsPage.Plugins) },
|
||||
onHomescreenClick = { openInlinePage(SettingsPage.Homescreen) },
|
||||
onMetaScreenClick = { openInlinePage(SettingsPage.MetaScreen) },
|
||||
onCollectionsClick = onCollectionsClick,
|
||||
)
|
||||
SettingsPage.Addons -> addonsSettingsContent()
|
||||
SettingsPage.Plugins -> if (AppFeaturePolicy.pluginsEnabled) pluginsSettingsContent() else addonsSettingsContent()
|
||||
|
|
|
|||
|
|
@ -471,8 +471,8 @@ internal fun settingsSearchEntries(
|
|||
key = "collections",
|
||||
title = collectionsPage,
|
||||
description = stringResource(Res.string.settings_content_discovery_collections_description),
|
||||
page = contentDiscoveryPage,
|
||||
section = stringResource(Res.string.settings_content_discovery_section_home),
|
||||
page = layoutPage,
|
||||
section = stringResource(Res.string.settings_appearance_section_home),
|
||||
category = generalCategory,
|
||||
icon = Icons.Rounded.CollectionsBookmark,
|
||||
target = SettingsSearchTarget.Collections,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import androidx.compose.foundation.lazy.LazyListScope
|
|||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.Delete
|
||||
import androidx.compose.material.icons.rounded.Style
|
||||
import androidx.compose.material.icons.rounded.Visibility
|
||||
import androidx.compose.material3.BasicAlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
|
|
@ -118,14 +117,12 @@ internal fun LazyListScope.streamsSettingsContent(isTablet: Boolean) {
|
|||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.settings_stream_badge_position_title),
|
||||
description = badgePlacementLabel,
|
||||
icon = Icons.Rounded.Style,
|
||||
isTablet = isTablet,
|
||||
onClick = { showBadgePositionDialog = true },
|
||||
)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.settings_stream_badge_urls_title),
|
||||
description = badgeRulesPreview(currentRules),
|
||||
icon = Icons.Rounded.Style,
|
||||
isTablet = isTablet,
|
||||
onClick = { showBadgeImportDialog = true },
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue