From aa68ba3ae8ca292257c939c10e3e20791259df9a Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Sat, 19 Oct 2024 21:41:39 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Small=20UI=20changes=20&=20Code?= =?UTF-8?q?=20reformat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Reformatted code (naming, packages) * Small UI changes --- .../java/ua/acclorite/book_story/Activity.kt | 8 +- .../util/UIViewModel.kt} | 8 +- .../AnimatedVisibility.kt} | 4 +- .../AsyncImage.kt} | 4 +- .../CircularCheckbox.kt} | 6 +- .../components/{ => common}/GoBackButton.kt | 12 ++- .../IconButton.kt} | 14 ++-- .../LazyColumnWithScrollbar.kt} | 8 +- .../components/{ => common}/LazyGridHeader.kt | 2 +- .../SearchTextField.kt} | 19 +++-- .../SelectionContainer.kt} | 35 ++++----- .../{CustomSnackbar.kt => common/Snackbar.kt} | 11 ++- .../{CustomTooltip.kt => common/Tooltip.kt} | 6 +- .../DialogWithContent.kt} | 6 +- .../DialogWithLazyColumn.kt} | 6 +- .../SelectableDialogItem.kt | 19 +++-- .../ModalBottomSheet.kt} | 7 +- .../ModalBottomSheetTabRow.kt} | 6 +- .../ModalDrawer.kt} | 14 ++-- .../ModalDrawerSelectableItem.kt} | 6 +- .../ModalDrawerTitleItem.kt} | 6 +- .../NavigationBar.kt} | 8 +- .../NavigationBarItem.kt} | 12 +-- .../NavigationRail.kt} | 8 +- .../NavigationRailItem.kt} | 12 +-- .../components/settings}/ChipsWithTitle.kt | 6 +- .../settings}/ColorPickerWithTitle.kt | 10 +-- .../settings}/SegmentedButtonWithTitle.kt | 10 +-- .../components/settings}/SliderWithTitle.kt | 7 +- .../components/settings}/SwitchWIthTitle.kt | 2 +- .../CollapsibleTopAppBarScrollBehavior.kt} | 21 +----- .../TopAppBar.kt} | 24 +++--- ...GeneralConstants.kt => CommonConstants.kt} | 0 .../core/navigation/Navigation.kt | 8 +- .../core/navigation/NavigationBottomSheet.kt | 4 +- .../core/navigation/NavigationIconButton.kt | 4 +- .../core/util/CollectionExtensions.kt | 5 ++ .../presentation/core/util/Extensions.kt | 75 ------------------- .../core/util/LifecycleExtensions.kt | 24 ++++++ .../core/util/ModifierExtensions.kt | 22 ++++++ .../core/util/PrimitiveExtensions.kt | 28 +++++++ .../util/{Toast.kt => ToastExtensions.kt} | 0 .../presentation/data/MainViewModel.kt | 4 +- .../presentation/screens/about/AboutScreen.kt | 16 ++-- .../about/components/AboutUpdateDialog.kt | 4 +- .../about/components/badges/AboutBadgeItem.kt | 6 +- .../screens/about/data/AboutViewModel.kt | 4 +- .../about/nested/credits/CreditsScreen.kt | 16 ++-- .../nested/license_info/LicenseInfoScreen.kt | 20 ++--- .../license_info/data/LicenseInfoViewModel.kt | 4 +- .../about/nested/licenses/LicensesScreen.kt | 22 +++--- .../nested/licenses/data/LicensesViewModel.kt | 4 +- .../screens/book_info/BookInfoScreen.kt | 8 +- .../components/BookInfoBackground.kt | 4 +- .../components/BookInfoInfoSection.kt | 4 +- .../components/BookInfoMoreBottomSheet.kt | 4 +- .../book_info/components/BookInfoTopBar.kt | 22 +++--- .../BookInfoChangeCoverBottomSheet.kt | 4 +- .../BookInfoDetailsBottomSheet.kt | 4 +- .../dialog/BookInfoConfirmUpdateDialog.kt | 4 +- .../components/dialog/BookInfoDeleteDialog.kt | 4 +- .../components/dialog/BookInfoMoveDialog.kt | 6 +- .../book_info/data/BookInfoViewModel.kt | 4 +- .../components/BrowseEmptyPlaceholder.kt | 14 ++-- .../BrowseStoragePermissionDialog.kt | 4 +- .../adding_dialog/BrowseAddingDialog.kt | 4 +- .../adding_dialog/BrowseAddingDialogItem.kt | 4 +- .../BrowseFilterBottomSheet.kt | 12 +-- .../BrowseFilterBottomSheetTabRow.kt | 4 +- .../layout/grid/BrowseGridDirectoryItem.kt | 4 +- .../layout/grid/BrowseGridFileItem.kt | 4 +- .../layout/grid/BrowseGridLayout.kt | 2 +- .../components/layout/list/BrowseListItem.kt | 6 +- .../browse/components/top_bar/BrowseTopBar.kt | 44 +++++------ .../top_bar/BrowseTopBarDirectoryPath.kt | 4 +- .../screens/browse/data/BrowseViewModel.kt | 4 +- .../presentation/screens/help/HelpScreen.kt | 20 ++--- .../help/components/HelpClickableNote.kt | 4 +- .../screens/help/data/HelpViewModel.kt | 4 +- .../screens/history/HistoryScreen.kt | 44 +++++------ .../HistoryDeleteWholeHistoryDialog.kt | 4 +- .../screens/history/components/HistoryItem.kt | 8 +- .../screens/history/data/HistoryViewModel.kt | 4 +- .../screens/library/LibraryScreen.kt | 10 +-- .../library/components/LibraryBookItem.kt | 4 +- .../library/components/LibraryTopBar.kt | 36 ++++----- .../components/dialog/LibraryDeleteDialog.kt | 4 +- .../components/dialog/LibraryMoveDialog.kt | 6 +- .../screens/library/data/LibraryViewModel.kt | 4 +- .../screens/reader/ReaderScreen.kt | 14 ++-- .../reader/components/ReaderChaptersDrawer.kt | 12 +-- .../reader/components/ReaderUpdateDialog.kt | 4 +- .../components/app_bar/ReaderBottomBar.kt | 6 +- .../reader/components/app_bar/ReaderTopBar.kt | 14 ++-- .../ReaderSettingsBottomSheet.kt | 12 +-- .../ReaderSettingsBottomSheetTabRow.kt | 4 +- .../screens/reader/data/ReaderViewModel.kt | 4 +- .../screens/settings/SettingsScreen.kt | 16 ++-- .../components/SettingsCategoryTitle.kt} | 6 +- .../components/SettingsSubcategory.kt | 3 +- .../settings/data/SettingsViewModel.kt | 4 +- .../nested/appearance/AppearanceSettings.kt | 16 ++-- .../settings/AbsoluteDarkSetting.kt | 2 +- .../components/settings/ColorPresetSetting.kt | 20 ++--- .../components/settings/DarkThemeSetting.kt | 2 +- .../settings/FastColorPresetChangeSetting.kt | 2 +- .../components/settings/PureDarkSetting.kt | 2 +- .../settings/ThemeContrastSetting.kt | 2 +- .../components/settings/ThemeSetting.kt | 8 +- .../settings/nested/browse/BrowseSettings.kt | 16 ++-- .../settings/BrowseFilesStructureSetting.kt | 2 +- .../settings/BrowseGridSizeSetting.kt | 2 +- .../settings/BrowseLayoutSetting.kt | 2 +- .../BrowsePinFavoriteDirectoriesSetting.kt | 2 +- .../nested/general/GeneralSettings.kt | 16 ++-- .../components/settings/AppLanguageSetting.kt | 2 +- .../settings/CheckForUpdatesSetting.kt | 6 +- .../settings/DoublePressExitSetting.kt | 2 +- .../settings/nested/reader/ReaderSettings.kt | 16 ++-- .../components/ReaderSettingsCategory.kt | 4 +- .../settings/CheckForTextUpdateSetting.kt | 2 +- .../CheckForTextUpdateToastSetting.kt | 2 +- .../settings/CutoutPaddingSetting.kt | 2 +- .../settings/DoubleClickTranslationSetting.kt | 2 +- .../components/settings/FontFamilySetting.kt | 2 +- .../components/settings/FontSizeSetting.kt | 2 +- .../components/settings/FontStyleSetting.kt | 2 +- .../components/settings/FullscreenSetting.kt | 2 +- .../settings/HideBarsOnFastScrollSetting.kt | 2 +- .../settings/KeepScreenOnSetting.kt | 2 +- .../settings/LetterSpacingSetting.kt | 2 +- .../components/settings/LineHeightSetting.kt | 2 +- .../settings/ParagraphHeightSetting.kt | 2 +- .../settings/ParagraphIndentationSetting.kt | 2 +- .../PerceptionExpanderPaddingSetting.kt | 2 +- .../settings/PerceptionExpanderSetting.kt | 2 +- .../PerceptionExpanderThicknessSetting.kt | 2 +- .../settings/ScreenOrientationSetting.kt | 2 +- .../components/settings/SidePaddingSetting.kt | 2 +- .../settings/TextAlignmentSetting.kt | 2 +- .../settings/VerticalPaddingSetting.kt | 2 +- .../start/components/StartLanguageScreen.kt | 6 +- .../components/StartNavigationScreenItem.kt | 8 +- .../components/StartNavigationTransition.kt | 4 +- .../permissions/StartPermissionsScreen.kt | 4 +- .../screens/start/data/StartViewModel.kt | 4 +- .../book_story/presentation/ui/Transitions.kt | 10 +-- app/src/main/res/values-ar/strings.xml | 5 -- app/src/main/res/values-de/strings.xml | 5 -- app/src/main/res/values-es/strings.xml | 5 -- app/src/main/res/values-fr/strings.xml | 5 -- app/src/main/res/values-pl/strings.xml | 5 -- app/src/main/res/values-tr/strings.xml | 5 -- app/src/main/res/values-uk/strings.xml | 10 +-- app/src/main/res/values-zh-rCN/strings.xml | 5 -- app/src/main/res/values/strings.xml | 10 +-- 156 files changed, 611 insertions(+), 672 deletions(-) rename app/src/main/java/ua/acclorite/book_story/{presentation/core/util/UiViewModel.kt => domain/util/UIViewModel.kt} (72%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomAnimatedVisibility.kt => common/AnimatedVisibility.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomCoverImage.kt => common/AsyncImage.kt} (91%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomCheckbox.kt => common/CircularCheckbox.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{ => common}/GoBackButton.kt (71%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomIconButton.kt => common/IconButton.kt} (91%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomLazyColumn.kt => common/LazyColumnWithScrollbar.kt} (94%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{ => common}/LazyGridHeader.kt (84%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomSearchTextField.kt => common/SearchTextField.kt} (81%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomSelectionContainer.kt => common/SelectionContainer.kt} (91%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomSnackbar.kt => common/Snackbar.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CustomTooltip.kt => common/Tooltip.kt} (91%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_dialog/CustomDialogWithContent.kt => dialog/DialogWithContent.kt} (98%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_dialog/CustomDialogWithLazyColumn.kt => dialog/DialogWithLazyColumn.kt} (98%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_dialog => dialog}/SelectableDialogItem.kt (84%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_bottom_sheet/CustomBottomSheet.kt => modal_bottom_sheet/ModalBottomSheet.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_bottom_sheet/CustomBottomSheetTabRow.kt => modal_bottom_sheet/ModalBottomSheetTabRow.kt} (90%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_drawer/CustomModalDrawer.kt => modal_drawer/ModalDrawer.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_drawer/CustomModalDrawerSelectableItem.kt => modal_drawer/ModalDrawerSelectableItem.kt} (92%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_drawer/CustomModalDrawerTitleItem.kt => modal_drawer/ModalDrawerTitleItem.kt} (90%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{bottom_navigation_bar/BottomNavigationBar.kt => navigation_bar/NavigationBar.kt} (86%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{bottom_navigation_bar/BottomNavigationItem.kt => navigation_bar/NavigationBarItem.kt} (88%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_navigation_rail/CustomNavigationRail.kt => navigation_rail/NavigationRail.kt} (93%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{custom_navigation_rail/CustomNavigationRailItem.kt => navigation_rail/NavigationRailItem.kt} (89%) rename app/src/main/java/ua/acclorite/book_story/presentation/{screens/settings/components => core/components/settings}/ChipsWithTitle.kt (89%) rename app/src/main/java/ua/acclorite/book_story/presentation/{screens/settings/components => core/components/settings}/ColorPickerWithTitle.kt (94%) rename app/src/main/java/ua/acclorite/book_story/presentation/{screens/settings/components => core/components/settings}/SegmentedButtonWithTitle.kt (94%) rename app/src/main/java/ua/acclorite/book_story/presentation/{screens/settings/components => core/components/settings}/SliderWithTitle.kt (96%) rename app/src/main/java/ua/acclorite/book_story/presentation/{screens/settings/components => core/components/settings}/SwitchWIthTitle.kt (97%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{CollapsibleUntilExitScrollBehavior.kt => top_bar/CollapsibleTopAppBarScrollBehavior.kt} (89%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/components/{AnimatedTopAppBar.kt => top_bar/TopAppBar.kt} (91%) rename app/src/main/java/ua/acclorite/book_story/presentation/core/constants/{GeneralConstants.kt => CommonConstants.kt} (100%) create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/util/CollectionExtensions.kt delete mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/util/LifecycleExtensions.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt rename app/src/main/java/ua/acclorite/book_story/presentation/core/util/{Toast.kt => ToastExtensions.kt} (100%) rename app/src/main/java/ua/acclorite/book_story/presentation/{core/components/CategoryTitle.kt => screens/settings/components/SettingsCategoryTitle.kt} (87%) diff --git a/app/src/main/java/ua/acclorite/book_story/Activity.kt b/app/src/main/java/ua/acclorite/book_story/Activity.kt index 607307d8..dd704c8d 100644 --- a/app/src/main/java/ua/acclorite/book_story/Activity.kt +++ b/app/src/main/java/ua/acclorite/book_story/Activity.kt @@ -19,8 +19,8 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import androidx.lifecycle.compose.collectAsStateWithLifecycle import dagger.hilt.android.AndroidEntryPoint -import ua.acclorite.book_story.presentation.core.components.bottom_navigation_bar.BottomNavigationBar -import ua.acclorite.book_story.presentation.core.components.custom_navigation_rail.CustomNavigationRail +import ua.acclorite.book_story.presentation.core.components.navigation_bar.NavigationBar +import ua.acclorite.book_story.presentation.core.components.navigation_rail.NavigationRail import ua.acclorite.book_story.presentation.core.navigation.NavigationHost import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.data.MainEvent @@ -131,10 +131,10 @@ class Activity : AppCompatActivity() { Screen.Browse.getRoute() ), bottomBar = { - BottomNavigationBar() + NavigationBar() }, navigationRail = { - CustomNavigationRail() + NavigationRail() } ) { // Library diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/UiViewModel.kt b/app/src/main/java/ua/acclorite/book_story/domain/util/UIViewModel.kt similarity index 72% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/util/UiViewModel.kt rename to app/src/main/java/ua/acclorite/book_story/domain/util/UIViewModel.kt index 4af333e6..ac82b684 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/UiViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/util/UIViewModel.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.util +package ua.acclorite.book_story.domain.util import androidx.compose.runtime.Composable import androidx.compose.runtime.State @@ -8,18 +8,18 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import kotlinx.coroutines.flow.StateFlow -abstract class UiViewModel : ViewModel() { +abstract class UIViewModel : ViewModel() { abstract val state: StateFlow abstract fun onEvent(event: E) companion object { @Composable - inline fun , S, E> getState(): State { + inline fun , S, E> getState(): State { return hiltViewModel().state.collectAsStateWithLifecycle() } @Composable - inline fun , S, E> getEvent(): (E) -> Unit { + inline fun , S, E> getEvent(): (E) -> Unit { return hiltViewModel()::onEvent } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomAnimatedVisibility.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AnimatedVisibility.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomAnimatedVisibility.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AnimatedVisibility.kt index fd45619c..99f7fe5d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomAnimatedVisibility.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AnimatedVisibility.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.EnterTransition @@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier * FIXED: This bug was fixed. I preserved initial code, if the bug happens again. */ @Composable -fun CustomAnimatedVisibility( +fun AnimatedVisibility( modifier: Modifier = Modifier, visible: Boolean, enter: EnterTransition, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCoverImage.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AsyncImage.kt similarity index 91% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCoverImage.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AsyncImage.kt index fcbb222f..040d5d11 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCoverImage.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/AsyncImage.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import android.net.Uri import androidx.compose.runtime.Composable @@ -14,7 +14,7 @@ import ua.acclorite.book_story.R * Custom Cover Image. Has smooth appearing. */ @Composable -fun CustomCoverImage( +fun AsyncImage( uri: Uri, animationDurationMillis: Int = 100, contentDescription: String? = stringResource(id = R.string.cover_image_content_desc), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCheckbox.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/CircularCheckbox.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCheckbox.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/CircularCheckbox.kt index cf253a96..59386c50 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomCheckbox.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/CircularCheckbox.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R /** - * Custom Checkbox. Has a Circle shape. + * Checkbox. Has a Circle shape. * * @param modifier Modifier. * @param selected Whether checked or not. @@ -26,7 +26,7 @@ import ua.acclorite.book_story.R * @param size Size of the checkbox icon(not the whole checkbox). */ @Composable -fun CustomCheckbox( +fun CircularCheckbox( modifier: Modifier = Modifier, selected: Boolean, containerColor: Color, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/GoBackButton.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/GoBackButton.kt similarity index 71% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/GoBackButton.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/GoBackButton.kt index a45604a7..9d9d8f42 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/GoBackButton.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/GoBackButton.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowBack @@ -8,15 +8,19 @@ import ua.acclorite.book_story.domain.util.OnNavigate /** * Go back arrow button. - * Prevents double or triple clicking on it while going back action is performed. + * Prevents double or triple clicking while going back action is performed. * * @param onNavigate [OnNavigate]. * @param enabled Whether this button is enabled. * @param customOnClick Call before going back. */ @Composable -fun GoBackButton(onNavigate: OnNavigate, enabled: Boolean = true, customOnClick: () -> Unit = {}) { - CustomIconButton( +fun GoBackButton( + onNavigate: OnNavigate, + enabled: Boolean = true, + customOnClick: () -> Unit = {} +) { + IconButton( icon = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = R.string.go_back_content_desc, disableOnClick = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomIconButton.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/IconButton.kt similarity index 91% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomIconButton.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/IconButton.kt index 8cb79827..fcc48ea1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomIconButton.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/IconButton.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.annotation.DrawableRes import androidx.annotation.StringRes @@ -18,7 +18,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource /** - * Custom Icon Button. + * Icon Button. * Can be disabled after click, so user can't press button fast 2 or 3 times. * * @param modifier [Modifier]. @@ -30,7 +30,7 @@ import androidx.compose.ui.res.stringResource * @param onClick OnClick callback. */ @Composable -fun CustomIconButton( +fun IconButton( modifier: Modifier = Modifier, icon: ImageVector, @StringRes contentDescription: Int, @@ -40,7 +40,7 @@ fun CustomIconButton( onClick: () -> Unit ) { var isClicked by remember { mutableStateOf(false) } - CustomTooltip(text = stringResource(id = contentDescription), enabled = enabled) { + Tooltip(text = stringResource(id = contentDescription), enabled = enabled) { IconButton( enabled = enabled && !isClicked, modifier = Modifier.focusProperties { @@ -64,7 +64,7 @@ fun CustomIconButton( } /** - * Custom Icon Button. + * Icon Button. * Can be disabled after click, so user can't press button fast 2 or 3 times. * * @param modifier [Modifier]. @@ -76,7 +76,7 @@ fun CustomIconButton( * @param onClick OnClick callback. */ @Composable -fun CustomIconButton( +fun IconButton( modifier: Modifier = Modifier, @DrawableRes icon: Int, @StringRes contentDescription: Int, @@ -86,7 +86,7 @@ fun CustomIconButton( onClick: () -> Unit ) { var isClicked by remember { mutableStateOf(false) } - CustomTooltip(text = stringResource(id = contentDescription)) { + Tooltip(text = stringResource(id = contentDescription)) { IconButton( enabled = enabled && !isClicked, modifier = Modifier.focusProperties { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomLazyColumn.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt similarity index 94% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomLazyColumn.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt index 7122ab86..ae19e9aa 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomLazyColumn.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -18,8 +18,8 @@ import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideSecondaryScrollbar /** - * Custom Lazy Column. - * Has scrollbar. + * Lazy Column. + * Has a scrollbar. * * @param modifier Modifier. * @param state [LazyListState]. @@ -30,7 +30,7 @@ import ua.acclorite.book_story.presentation.core.constants.provideSecondaryScrol * @param content Content of the column. */ @Composable -fun CustomLazyColumn( +fun LazyColumnWithScrollbar( modifier: Modifier = Modifier, state: LazyListState = rememberLazyListState(), scrollbarSettings: ScrollbarSettings = Constants.provideSecondaryScrollbar(), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyGridHeader.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyGridHeader.kt similarity index 84% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyGridHeader.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyGridHeader.kt index ea7791b2..fc62e385 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyGridHeader.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyGridHeader.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridItemScope diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSearchTextField.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt similarity index 81% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSearchTextField.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt index 24c8ac93..ffde80d7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSearchTextField.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxHeight @@ -12,21 +12,28 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.style.TextOverflow +import ua.acclorite.book_story.R /** - * Custom Search Text Field. Used in main screens for searching. + * Search Text Field. + * Used in main screens for searching. + * + * @param modifier Modifier to apply. + * @param query Search query. + * @param onQueryChange Callback to change [query]. + * @param onSearch Search action (refresh list, fetch filtered books etc..). */ @Composable -fun CustomSearchTextField( +fun SearchTextField( modifier: Modifier = Modifier, query: String, onQueryChange: (String) -> Unit, - onSearch: () -> Unit, - placeholder: String + onSearch: () -> Unit ) { val keyboardManager = LocalSoftwareKeyboardController.current @@ -59,7 +66,7 @@ fun CustomSearchTextField( ) { if (query.isEmpty()) { Text( - placeholder, + text = stringResource(id = R.string.search_field_empty), color = MaterialTheme.colorScheme.onSurfaceVariant, style = MaterialTheme.typography.titleLarge, maxLines = 1, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSelectionContainer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SelectionContainer.kt similarity index 91% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSelectionContainer.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SelectionContainer.kt index 80c9236b..dc8f5aa0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSelectionContainer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SelectionContainer.kt @@ -1,6 +1,6 @@ @file:Suppress("DEPRECATION") -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import android.content.ClipData import android.content.ClipboardManager @@ -35,9 +35,10 @@ private const val MENU_ITEM_TRANSLATE = 3 private const val MENU_ITEM_DICTIONARY = 4 /** - * Custom Text ActionMode callback. Used in pair with [CustomSelectionToolbar]. Follow [TextToolbar] for more info. + * Text ActionMode callback. + * Used in pair with [SelectionToolbar]. Follow [TextToolbar] for more info. */ -private class CustomTextActionModeCallback( +private class TextActionModeCallback( private val context: Context, var rect: Rect = Rect.Zero, var onCopyRequested: (() -> Unit)? = null, @@ -99,10 +100,10 @@ private class CustomTextActionModeCallback( } /** - * Floating [CustomTextActionModeCallback]. + * Floating [TextActionModeCallback]. */ private class FloatingTextActionModeCallback( - val callback: CustomTextActionModeCallback + val callback: TextActionModeCallback ) : ActionMode.Callback2() { override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean { return callback.onActionItemClicked(mode, item) @@ -132,10 +133,10 @@ private class FloatingTextActionModeCallback( } /** - * Custom Selection Toolbar. - * Used in pair with [CustomSelectionContainer] to display custom toolbar. + * Selection Toolbar. + * Used in pair with [SelectionContainer] to display custom toolbar. */ -private class CustomSelectionToolbar( +private class SelectionToolbar( private val view: View, context: Context, private val onCopyRequest: (() -> Unit)?, @@ -145,7 +146,7 @@ private class CustomSelectionToolbar( private val onDictionaryRequest: ((String) -> Unit)? ) : TextToolbar { private var actionMode: ActionMode? = null - private val callback = CustomTextActionModeCallback(context = context) + private val callback = TextActionModeCallback(context = context) val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager @@ -244,7 +245,7 @@ private class CustomSelectionToolbar( } /** - * Custom selection container. + * Selection container. * * @param onCopyRequested Callback for when the copy option is clicked. * @param onTranslateRequested Callback for when the translate option is clicked. @@ -252,7 +253,7 @@ private class CustomSelectionToolbar( * @param content Selection container content. */ @Composable -fun CustomSelectionContainer( +fun SelectionContainer( onCopyRequested: (() -> Unit), onShareRequested: ((String) -> Unit), onWebSearchRequested: ((String) -> Unit), @@ -263,8 +264,8 @@ fun CustomSelectionContainer( val view = LocalView.current val context = LocalContext.current - val customSelectionToolbar = remember { - CustomSelectionToolbar( + val selectionToolbar = remember { + SelectionToolbar( view = view, context = context, @@ -285,17 +286,17 @@ fun CustomSelectionContainer( } ) } - val isToolbarHidden = remember(customSelectionToolbar.status) { + val isToolbarHidden = remember(selectionToolbar.status) { derivedStateOf { - customSelectionToolbar.status == TextToolbarStatus.Hidden + selectionToolbar.status == TextToolbarStatus.Hidden } } CompositionLocalProvider( - LocalTextToolbar provides customSelectionToolbar + LocalTextToolbar provides selectionToolbar ) { SelectionContainer(Modifier.fillMaxSize()) { content(isToolbarHidden.value) } } -} +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSnackbar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Snackbar.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSnackbar.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Snackbar.kt index 3fc3a35f..c4782565 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomSnackbar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Snackbar.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn @@ -34,18 +34,18 @@ import androidx.compose.ui.unit.dp import kotlin.math.roundToInt /** - * Custom Snackbar with vertical Swipe-To-Dismiss and animation. + * Snackbar with vertical Swipe-To-Dismiss and animation. * It is recommended to put it in Scaffold bottomBar(this way padding is the same at all sides) * + * @param modifier Modifier to be applied. * @param snackbarState Regular [SnackbarHostState], use ..remember { SnackbarHostState() } */ @Composable -fun CustomSnackbar(modifier: Modifier = Modifier, snackbarState: SnackbarHostState) { +fun Snackbar(modifier: Modifier = Modifier, snackbarState: SnackbarHostState) { var showSnackbar by remember { mutableStateOf(false) } var snackbarData by remember { mutableStateOf(snackbarState.currentSnackbarData) } var offset by remember { mutableFloatStateOf(0f) } - val density = LocalDensity.current val mutableInteractionSource = remember { MutableInteractionSource() } val isDragged by mutableInteractionSource.collectIsDraggedAsState() @@ -56,7 +56,6 @@ fun CustomSnackbar(modifier: Modifier = Modifier, snackbarState: SnackbarHostSta } } - LaunchedEffect(offset, isDragged) { val offsetDp = with(density) { offset.toDp() } if (offsetDp > 35.dp && !isDragged) { @@ -81,7 +80,7 @@ fun CustomSnackbar(modifier: Modifier = Modifier, snackbarState: SnackbarHostSta showSnackbar = true } - CustomAnimatedVisibility( + AnimatedVisibility( visible = showSnackbar, enter = slideInVertically(tween(350)) { it } + fadeIn(tween(350)), exit = slideOutVertically(tween(200)) { it } + fadeOut(tween(100)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomTooltip.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt similarity index 91% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomTooltip.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt index ee4a553f..9ea2adf4 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CustomTooltip.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.PlainTooltip @@ -11,7 +11,7 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp /** - * Custom Tooltip. + * Tooltip. * Shows [text] on long press. * * @param text Text to show. @@ -21,7 +21,7 @@ import androidx.compose.ui.unit.dp */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun CustomTooltip( +fun Tooltip( text: String, padding: Dp = 14.dp, enabled: Boolean = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithContent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithContent.kt similarity index 98% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithContent.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithContent.kt index cdf5aec1..267ed07c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithContent.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithContent.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_dialog +package ua.acclorite.book_story.presentation.core.components.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -38,7 +38,7 @@ import androidx.compose.ui.window.DialogWindowProvider import ua.acclorite.book_story.R /** - * Custom Dialog with custom content. + * Dialog with custom content. * * @param modifier Modifier to be applied. * @param drawableIcon Drawable icon to show(1/2). @@ -56,7 +56,7 @@ import ua.acclorite.book_story.R */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun CustomDialogWithContent( +fun DialogWithContent( modifier: Modifier = Modifier, drawableIcon: Painter? = null, imageVectorIcon: ImageVector? = null, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithLazyColumn.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithLazyColumn.kt similarity index 98% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithLazyColumn.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithLazyColumn.kt index 58e1d507..4a216bec 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/CustomDialogWithLazyColumn.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithLazyColumn.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_dialog +package ua.acclorite.book_story.presentation.core.components.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -40,7 +40,7 @@ import ua.acclorite.book_story.R /** - * Custom Dialog with lazy column. + * Dialog with lazy column. * * @param modifier Modifier to be applied. * @param drawableIcon Drawable icon to show(1/2). @@ -58,7 +58,7 @@ import ua.acclorite.book_story.R */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun CustomDialogWithLazyColumn( +fun DialogWithLazyColumn( modifier: Modifier = Modifier, drawableIcon: Painter? = null, imageVectorIcon: ImageVector? = null, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/SelectableDialogItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt similarity index 84% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/SelectableDialogItem.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt index cf2efe48..6c1c6b1e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_dialog/SelectableDialogItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_dialog +package ua.acclorite.book_story.presentation.core.components.dialog import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row @@ -19,7 +19,13 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp /** - * Selectable dialog item. Perfectly combines with [CustomDialogWithLazyColumn]. + * Selectable dialog item. + * Perfectly combines with [DialogWithLazyColumn]. + * + * @param selected Whether item is selected. + * @param title Title of the item. + * @param horizontalPadding Horizontal padding of the item. + * @param onClick OnClick callback. */ @Composable fun SelectableDialogItem( @@ -53,11 +59,4 @@ fun SelectableDialogItem( overflow = TextOverflow.Ellipsis ) } -} - - - - - - - +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheet.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheet.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheet.kt index 426c0496..d737c1b2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheet.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet +package ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ColumnScope @@ -16,7 +16,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape /** - * Custom Bottom Sheet. Fixes bugs with [ModalBottomSheet]. + * Bottom Sheet. + * Fixes bugs with [ModalBottomSheet]. * * @param modifier [Modifier]. * @param hasFixedHeight Whether the bottom sheet has fixed height passed through [modifier] or not. @@ -29,7 +30,7 @@ import androidx.compose.ui.graphics.Shape */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun CustomBottomSheet( +fun ModalBottomSheet( modifier: Modifier = Modifier, hasFixedHeight: Boolean = false, scrimColor: Color = BottomSheetDefaults.ScrimColor, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheetTabRow.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt similarity index 90% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheetTabRow.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt index b5a12abd..24339e9b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_bottom_sheet/CustomBottomSheetTabRow.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet +package ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.ExperimentalMaterial3Api @@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow /** - * Custom Primary Row. Used in BottomSheet in pair with HorizontalPager. + * Primary Tab Row. Used in BottomSheet in pair with HorizontalPager. * Better to not use too many tabs, as they will overflow. * * @param selectedTabIndex Selected index, typically pager.currentPage. @@ -21,7 +21,7 @@ import androidx.compose.ui.text.style.TextOverflow */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun CustomBottomSheetTabRow( +fun ModalBottomSheetTabRow( selectedTabIndex: Int, tabs: List, onClick: (index: Int) -> Unit diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawer.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt index 358d7ecb..20909fcd 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_drawer +package ua.acclorite.book_story.presentation.core.components.modal_drawer import androidx.activity.compose.BackHandler import androidx.compose.animation.core.animateDpAsState @@ -31,14 +31,14 @@ import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar import ua.acclorite.book_story.presentation.core.util.noRippleClickable /** - * Custom Modal Drawer. + * Modal Drawer. * Follows Material3 guidelines. Does not require to wrap screen's content and works independently. * Do not wrap in if(show) { ... }, use [show]. * Should be placed at the bottom of the composable to be shown at top. @@ -50,7 +50,7 @@ import ua.acclorite.book_story.presentation.core.util.noRippleClickable * @param content Content inside drawer. */ @Composable -fun CustomModalDrawer( +fun ModalDrawer( show: Boolean, startIndex: Int = 0, onDismissRequest: () -> Unit, @@ -85,7 +85,7 @@ fun CustomModalDrawer( else Modifier.noRippleClickable(onClick = onDismissRequest) ) ) { - CustomAnimatedVisibility( + AnimatedVisibility( visible = show, enter = slideInHorizontally { (-it + with(density) { -20.dp.toPx() }).toInt() }, exit = slideOutHorizontally { (-it + with(density) { -20.dp.toPx() }).toInt() } @@ -125,7 +125,7 @@ fun CustomModalDrawer( .systemBarsPadding() ) { header() - CustomLazyColumn( + LazyColumnWithScrollbar( state = rememberLazyListState(startIndex), modifier = Modifier.fillMaxSize(), scrollbarSettings = Constants.providePrimaryScrollbar(), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerSelectableItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerSelectableItem.kt similarity index 92% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerSelectableItem.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerSelectableItem.kt index 500a14af..5fc8279f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerSelectableItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerSelectableItem.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_drawer +package ua.acclorite.book_story.presentation.core.components.modal_drawer import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.util.Selected /** - * Custom Modal Drawer Selectable Item. + * Modal Drawer Selectable Item. * Can be selected. * * @param modifier Modifier to be applied. @@ -29,7 +29,7 @@ import ua.acclorite.book_story.domain.util.Selected * @param content Content of the item. */ @Composable -fun CustomModalDrawerSelectableItem( +fun ModalDrawerSelectableItem( modifier: Modifier = Modifier, selected: Selected, enabled: Boolean = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerTitleItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt similarity index 90% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerTitleItem.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt index d602fe4e..b1a8d4e0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_drawer/CustomModalDrawerTitleItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_drawer +package ua.acclorite.book_story.presentation.core.components.modal_drawer import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -14,14 +14,14 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp /** - * Custom Modal Drawer Title Item. + * Modal Drawer Title Item. * Usually displayed at the top of the drawer. * * @param modifier Modifier to be applied. * @param title Title to be shown. */ @Composable -fun CustomModalDrawerTitleItem( +fun ModalDrawerTitleItem( modifier: Modifier = Modifier, title: String ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBar.kt similarity index 86% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationBar.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBar.kt index 6bf14af3..aa702cea 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBar.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.bottom_navigation_bar +package ua.acclorite.book_story.presentation.core.components.navigation_bar import androidx.compose.material3.NavigationBar import androidx.compose.runtime.Composable @@ -13,10 +13,10 @@ import ua.acclorite.book_story.presentation.core.constants.provideNavigationItem import ua.acclorite.book_story.presentation.core.navigation.LocalNavigatorInstance /** - * Bottom navigation bar, uses default [NavigationBar]. + * Navigation bar, uses default [NavigationBar]. */ @Composable -fun BottomNavigationBar() { +fun NavigationBar() { var currentScreen: Route? by remember { mutableStateOf(null) } val navigator = LocalNavigatorInstance.current @@ -34,7 +34,7 @@ fun BottomNavigationBar() { NavigationBar { Constants.provideNavigationItems().forEach { - BottomNavigationBarItem( + NavigationBarItem( item = it, isSelected = currentScreen == navigator.run { it.screen.getRoute() } ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt similarity index 88% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationItem.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt index 2a19034b..e91f5046 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/bottom_navigation_bar/BottomNavigationItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.bottom_navigation_bar +package ua.acclorite.book_story.presentation.core.components.navigation_bar import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween @@ -14,10 +14,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.model.NavigationItem -import ua.acclorite.book_story.presentation.core.components.CustomTooltip +import ua.acclorite.book_story.presentation.core.components.common.Tooltip /** - * Bottom Navigation Bar Item, uses default [NavigationBarItem]. + * Navigation Bar Item. * * @param modifier Modifier. * @param item [NavigationItem]. @@ -25,7 +25,7 @@ import ua.acclorite.book_story.presentation.core.components.CustomTooltip * @param onClick OnClick callback. */ @Composable -fun RowScope.BottomNavigationBarItem( +fun RowScope.NavigationBarItem( modifier: Modifier = Modifier, item: NavigationItem, isSelected: Boolean, @@ -33,7 +33,7 @@ fun RowScope.BottomNavigationBarItem( ) { NavigationBarItem( label = { - CustomTooltip( + Tooltip( text = stringResource(id = item.tooltip), padding = 64.dp ) { @@ -47,7 +47,7 @@ fun RowScope.BottomNavigationBarItem( selected = isSelected, onClick = { onClick() }, icon = { - CustomTooltip( + Tooltip( text = stringResource(id = item.tooltip), padding = 32.dp ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRail.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRail.kt similarity index 93% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRail.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRail.kt index 90cc8d9a..8ec490a7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRail.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRail.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_navigation_rail +package ua.acclorite.book_story.presentation.core.components.navigation_rail import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -29,10 +29,10 @@ import ua.acclorite.book_story.presentation.core.constants.provideNavigationItem import ua.acclorite.book_story.presentation.core.navigation.LocalNavigatorInstance /** - * Custom Navigation Rail. It is used to be shown on Tablets. + * Navigation Rail. It is used to be shown on Tablets. */ @Composable -fun CustomNavigationRail() { +fun NavigationRail() { var currentScreen: Route? by remember { mutableStateOf(null) } val navigator = LocalNavigatorInstance.current val layoutDirection = LocalLayoutDirection.current @@ -72,7 +72,7 @@ fun CustomNavigationRail() { horizontalAlignment = Alignment.CenterHorizontally ) { Constants.provideNavigationItems().forEach { - CustomNavigationRailItem( + NavigationRailItem( item = it, isSelected = currentScreen == navigator.run { it.screen.getRoute() } ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRailItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt similarity index 89% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRailItem.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt index 47652e97..d1d8ee96 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/custom_navigation_rail/CustomNavigationRailItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components.custom_navigation_rail +package ua.acclorite.book_story.presentation.core.components.navigation_rail import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween @@ -13,10 +13,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.model.NavigationItem -import ua.acclorite.book_story.presentation.core.components.CustomTooltip +import ua.acclorite.book_story.presentation.core.components.common.Tooltip /** - * Custom Navigation Rail item. + * Navigation Rail item. * * @param modifier Modifier. * @param item [NavigationItem]. @@ -24,7 +24,7 @@ import ua.acclorite.book_story.presentation.core.components.CustomTooltip * @param onClick OnClick callback. */ @Composable -fun CustomNavigationRailItem( +fun NavigationRailItem( modifier: Modifier = Modifier, item: NavigationItem, isSelected: Boolean, @@ -32,7 +32,7 @@ fun CustomNavigationRailItem( ) { NavigationRailItem( label = { - CustomTooltip( + Tooltip( text = stringResource(id = item.tooltip), padding = 48.dp ) { @@ -46,7 +46,7 @@ fun CustomNavigationRailItem( selected = isSelected, onClick = { onClick() }, icon = { - CustomTooltip( + Tooltip( text = stringResource(id = item.tooltip), padding = 16.dp ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ChipsWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt similarity index 89% rename from app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ChipsWithTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt index 6fb3713b..2fdfe029 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ChipsWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.screens.settings.components +package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,7 +15,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.model.ButtonItem -import ua.acclorite.book_story.presentation.core.components.CategoryTitle +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle /** * Chips with title. Use list of [ButtonItem]s to display chips. @@ -35,7 +35,7 @@ fun ChipsWithTitle( .fillMaxWidth() .padding(horizontal = horizontalPadding, vertical = verticalPadding) ) { - CategoryTitle(title = title, padding = 0.dp) + SettingsCategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(8.dp)) FlowRow( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ColorPickerWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ColorPickerWithTitle.kt similarity index 94% rename from app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ColorPickerWithTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ColorPickerWithTitle.kt index e448ee32..8e3f530d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/ColorPickerWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ColorPickerWithTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.screens.settings.components +package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -30,8 +30,8 @@ import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.debounce import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle /** * Color picker with title. @@ -71,7 +71,7 @@ fun ColorPickerWithTitle( .fillMaxWidth() .padding(vertical = verticalPadding, horizontal = horizontalPadding) ) { - CategoryTitle( + SettingsCategoryTitle( title = title, padding = 0.dp ) @@ -133,7 +133,7 @@ private fun RevertibleSlider( ) Spacer(modifier = Modifier.width(10.dp)) - CustomIconButton( + IconButton( modifier = Modifier.size(28.dp), icon = Icons.Default.History, contentDescription = R.string.revert_content_desc, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SegmentedButtonWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt similarity index 94% rename from app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SegmentedButtonWithTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt index d4db0109..4fa50253 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SegmentedButtonWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.screens.settings.components +package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.animation.expandHorizontally import androidx.compose.animation.fadeIn @@ -39,8 +39,8 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle /** * Segmented Button with Title. @@ -70,7 +70,7 @@ fun SegmentedButtonWithTitle( .fillMaxWidth() .padding(horizontal = horizontalPadding, vertical = verticalPadding) ) { - CategoryTitle(title = title, padding = 0.dp) + SettingsCategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(8.dp)) @@ -151,7 +151,7 @@ private fun SegmentedButton( .padding(horizontal = 18.dp), verticalAlignment = Alignment.CenterVertically ) { - CustomAnimatedVisibility( + AnimatedVisibility( visible = button.selected, enter = expandHorizontally() + slideInVertically(initialOffsetY = { it / 2 }) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SliderWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt similarity index 96% rename from app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SliderWithTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt index dcba5e1d..32b81524 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SliderWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.screens.settings.components +package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column @@ -24,6 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import kotlin.math.roundToInt /** @@ -69,7 +70,7 @@ fun SliderWithTitle( verticalAlignment = Alignment.CenterVertically ) { Column(Modifier.fillMaxWidth(0.2f)) { - CategoryTitle(title = title, padding = 0.dp) + SettingsCategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(4.dp)) Text( text = placeholder.value, @@ -157,7 +158,7 @@ fun SliderWithTitle( verticalAlignment = Alignment.CenterVertically ) { Column(Modifier.fillMaxWidth(0.2f)) { - CategoryTitle(title = title, padding = 0.dp) + SettingsCategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(4.dp)) Text( text = placeholder.value, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SwitchWIthTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt similarity index 97% rename from app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SwitchWIthTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt index 7a141b7b..fbed5c46 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SwitchWIthTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.screens.settings.components +package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CollapsibleUntilExitScrollBehavior.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/CollapsibleTopAppBarScrollBehavior.kt similarity index 89% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CollapsibleUntilExitScrollBehavior.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/CollapsibleTopAppBarScrollBehavior.kt index 4718eba5..ba903443 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CollapsibleUntilExitScrollBehavior.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/CollapsibleTopAppBarScrollBehavior.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.top_bar import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState @@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.collectLatest */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState( +fun TopAppBarDefaults.collapsibleTopAppBarScrollBehavior( listState: LazyListState? = null ): Pair { val lazyListState = listState ?: rememberLazyListState() @@ -40,19 +40,4 @@ fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState( } return scrollBehavior to lazyListState -} - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/AnimatedTopAppBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/TopAppBar.kt similarity index 91% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/AnimatedTopAppBar.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/TopAppBar.kt index 5079633d..bbcc45c8 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/AnimatedTopAppBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/top_bar/TopAppBar.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.core.components.top_bar import androidx.compose.animation.core.Spring import androidx.compose.animation.core.animateFloatAsState @@ -23,8 +23,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.lerp import ua.acclorite.book_story.domain.util.ID +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility -data class AnimatedTopAppBarData( +data class TopAppBarData( val contentID: ID, val contentNavigationIcon: @Composable () -> Unit, val contentTitle: @Composable () -> Unit, @@ -32,7 +33,7 @@ data class AnimatedTopAppBarData( ) /** - * Animated top app bar. + * Top app bar. * Has up to 3 different top bars inside it. Follow [TopAppBar] for more info. * * @param containerColor Container color of the TopBar. @@ -40,12 +41,12 @@ data class AnimatedTopAppBarData( * @param scrollBehavior [TopAppBarScrollBehavior]. * @param isTopBarScrolled Whether isScrolled state should be forced or not. * @param shownTopBar [ID] of the top bar to show. - * @param topBars Pass a list of all [AnimatedTopAppBarData] to show. + * @param topBars Pass a list of all [TopAppBarData] to show. * @param customContent Custom content below [TopAppBar]. */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun AnimatedTopAppBar( +fun TopAppBar( containerColor: Color = MaterialTheme.colorScheme.surface, scrolledContainerColor: Color = MaterialTheme.colorScheme.surfaceContainer, @@ -53,7 +54,7 @@ fun AnimatedTopAppBar( isTopBarScrolled: Boolean?, shownTopBar: ID, - topBars: List, + topBars: List, customContent: @Composable ColumnScope.() -> Unit = {} ) { val animatedContainerColor = lerp( @@ -74,7 +75,7 @@ fun AnimatedTopAppBar( ) { Box(modifier = Modifier.fillMaxWidth()) { topBars.forEach { data -> - CustomAnimatedVisibility( + AnimatedVisibility( visible = data.contentID == shownTopBar, enter = fadeIn(spring(stiffness = Spring.StiffnessMediumLow)), exit = fadeOut(spring(stiffness = Spring.StiffnessMediumLow)) @@ -97,11 +98,4 @@ fun AnimatedTopAppBar( } customContent() } -} - - - - - - - +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/GeneralConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt similarity index 100% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/constants/GeneralConstants.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/Navigation.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/Navigation.kt index c35a1ae2..9cf13e19 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/Navigation.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/Navigation.kt @@ -49,7 +49,7 @@ import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable import ua.acclorite.book_story.domain.util.OnNavigate import ua.acclorite.book_story.domain.util.Route -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.ui.Transitions private const val CURRENT_SCREEN = "current_screen" @@ -320,7 +320,7 @@ class Navigator @AssistedInject constructor( } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = shouldShow, enter = if (!useBackAnimation) enterAnim else backEnterAnim, exit = if (!useBackAnimation) exitAnim else backExitAnim @@ -372,7 +372,7 @@ class Navigator @AssistedInject constructor( } val showNavigationBottomSheet = showNavigationBottomSheet.collectAsState() - CustomAnimatedVisibility( + AnimatedVisibility( visible = showNavigation.value, enter = if (useBackAnimation) backEnterBarAnim else enterBarAnim, @@ -428,7 +428,7 @@ class Navigator @AssistedInject constructor( /** * Custom Navigation Host. Contains [Navigator.composable]s in [content]. - * Based on [CustomAnimatedVisibility]. + * Based on [AnimatedVisibility]. * * @param startScreen Start Screen. Be sure to pass [Screen] that uses in one of your [Navigator.composable]s. * @param colorBetweenAnimations The color, that using between animations, recommended to set this to background or navigation bar color. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationBottomSheet.kt index a8b08d5e..34709e29 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationBottomSheet.kt @@ -10,7 +10,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.util.Position -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet /** * Navigation Bottom Sheet. @@ -23,7 +23,7 @@ import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet. fun NavigationBottomSheet(onDismissRequest: () -> Unit) { val onNavigate = LocalNavigator.current - CustomBottomSheet( + ModalBottomSheet( modifier = Modifier.fillMaxWidth(), onDismissRequest = onDismissRequest ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationIconButton.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationIconButton.kt index d60023ad..e305a560 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationIconButton.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/navigation/NavigationIconButton.kt @@ -4,7 +4,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert import androidx.compose.runtime.Composable import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton /** * Navigation Icon Button. @@ -15,7 +15,7 @@ fun NavigationIconButton( onClick: Navigator.() -> Unit = { showNavigationBottomSheet() } ) { val navigator = LocalNavigatorInstance.current - CustomIconButton( + IconButton( icon = Icons.Default.MoreVert, contentDescription = R.string.more_content_desc, disableOnClick = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/CollectionExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/CollectionExtensions.kt new file mode 100644 index 00000000..2dacb37d --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/CollectionExtensions.kt @@ -0,0 +1,5 @@ +package ua.acclorite.book_story.presentation.core.util + +fun MutableList.addAll(calculation: () -> List) { + addAll(calculation()) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt deleted file mode 100644 index f0c8f715..00000000 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt +++ /dev/null @@ -1,75 +0,0 @@ -package ua.acclorite.book_story.presentation.core.util - -import android.content.Intent -import androidx.activity.ComponentActivity -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.combinedClickable -import androidx.compose.ui.Modifier - -fun String.removeTrailingZero(): String { - if (!this.contains('.')) - return this - return this - .dropLastWhile { it == '0' } - .dropLastWhile { it == '.' } -} - -fun Double.removeDigits(digits: Int) = "%.${digits}f".format(this).replace(",", ".") - -fun Intent.launchActivity( - activity: ComponentActivity, - createChooser: Boolean = false, - openInNewWindow: Boolean = true, - error: () -> Unit -) { - val intent = if (createChooser) Intent.createChooser(this, "") else this - if (openInNewWindow) { - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - } - - try { - activity.baseContext.startActivity(intent) - } catch (e: Exception) { - e.printStackTrace() - error() - return - } -} - -fun Float.calculateProgress(digits: Int): String { - return (this * 100) - .toDouble() - .removeDigits(digits) - .removeTrailingZero() - .dropWhile { it == '-' } -} - -fun Float.coerceAndPreventNaN(): Float { - if (isNaN()) return 0f - return this.coerceIn(0f, 1f) -} - -@OptIn(ExperimentalFoundationApi::class) -fun Modifier.noRippleClickable( - enabled: Boolean = true, - onLongClick: (() -> Unit)? = null, - onDoubleClick: (() -> Unit)? = null, - onClick: () -> Unit -): Modifier { - return this.combinedClickable( - indication = null, - interactionSource = null, - enabled = enabled, - onLongClick = onLongClick, - onDoubleClick = onDoubleClick, - onClick = onClick - ) -} - -fun String.clearMarkdown(): String { - return replace(Regex("_|\\*\\*"), "") -} - -fun MutableList.addAll(calculation: () -> List) { - addAll(calculation()) -} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/LifecycleExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/LifecycleExtensions.kt new file mode 100644 index 00000000..974fbe83 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/LifecycleExtensions.kt @@ -0,0 +1,24 @@ +package ua.acclorite.book_story.presentation.core.util + +import android.content.Intent +import androidx.activity.ComponentActivity + +fun Intent.launchActivity( + activity: ComponentActivity, + createChooser: Boolean = false, + openInNewWindow: Boolean = true, + error: () -> Unit +) { + val intent = if (createChooser) Intent.createChooser(this, "") else this + if (openInNewWindow) { + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + } + + try { + activity.baseContext.startActivity(intent) + } catch (e: Exception) { + e.printStackTrace() + error() + return + } +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt new file mode 100644 index 00000000..853014e1 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt @@ -0,0 +1,22 @@ +package ua.acclorite.book_story.presentation.core.util + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.combinedClickable +import androidx.compose.ui.Modifier + +@OptIn(ExperimentalFoundationApi::class) +fun Modifier.noRippleClickable( + enabled: Boolean = true, + onLongClick: (() -> Unit)? = null, + onDoubleClick: (() -> Unit)? = null, + onClick: () -> Unit +): Modifier { + return this.combinedClickable( + indication = null, + interactionSource = null, + enabled = enabled, + onLongClick = onLongClick, + onDoubleClick = onDoubleClick, + onClick = onClick + ) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt new file mode 100644 index 00000000..241f3190 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt @@ -0,0 +1,28 @@ +package ua.acclorite.book_story.presentation.core.util + +fun String.removeTrailingZero(): String { + if (!this.contains('.')) + return this + return this + .dropLastWhile { it == '0' } + .dropLastWhile { it == '.' } +} + +fun Double.removeDigits(digits: Int) = "%.${digits}f".format(this).replace(",", ".") + +fun Float.calculateProgress(digits: Int): String { + return (this * 100) + .toDouble() + .removeDigits(digits) + .removeTrailingZero() + .dropWhile { it == '-' } +} + +fun Float.coerceAndPreventNaN(): Float { + if (isNaN()) return 0f + return this.coerceIn(0f, 1f) +} + +fun String.clearMarkdown(): String { + return replace(Regex("_|\\*\\*"), "") +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Toast.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ToastExtensions.kt similarity index 100% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/util/Toast.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/core/util/ToastExtensions.kt diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt index 0b345c1a..56d71bff 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt @@ -17,11 +17,11 @@ import ua.acclorite.book_story.domain.use_case.data_store.ChangeLanguage import ua.acclorite.book_story.domain.use_case.data_store.GetAllSettings import ua.acclorite.book_story.domain.use_case.data_store.SetDatastore import ua.acclorite.book_story.domain.use_case.remote.CheckForUpdates +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.constants.provideMainState -import ua.acclorite.book_story.presentation.core.util.UiViewModel import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.toBrowseFilesStructure import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.toBrowseLayout import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.toBrowseSortOrder @@ -42,7 +42,7 @@ class MainViewModel @Inject constructor( private val changeLanguage: ChangeLanguage, private val checkForUpdates: CheckForUpdates, private val getAllSettings: GetAllSettings -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/AboutScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/AboutScreen.kt index b0df1024..709fab5e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/AboutScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/AboutScreen.kt @@ -28,9 +28,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideContributorsPage import ua.acclorite.book_story.presentation.core.constants.provideIssuesPage @@ -58,7 +58,7 @@ private fun AboutScreen() { val onNavigate = LocalNavigator.current val context = LocalContext.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() if (state.value.showUpdateDialog) { AboutUpdateDialog() @@ -67,7 +67,7 @@ private fun AboutScreen() { Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -78,7 +78,7 @@ private fun AboutScreen() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -86,11 +86,11 @@ private fun AboutScreen() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { item { Spacer(modifier = Modifier.height(16.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/AboutUpdateDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/AboutUpdateDialog.kt index af80cce6..a65d1412 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/AboutUpdateDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/AboutUpdateDialog.kt @@ -7,7 +7,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideReleasesPage import ua.acclorite.book_story.presentation.core.util.showToast @@ -27,7 +27,7 @@ fun AboutUpdateDialog() { state.value.updateInfo!! } - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.update_query, update.tagName), imageVectorIcon = Icons.Default.Update, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadgeItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadgeItem.kt index e92f79fc..2687aca9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadgeItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadgeItem.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.model.Badge -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton /** * About Badge Item. @@ -20,7 +20,7 @@ fun AboutBadgeItem( onClick: () -> Unit ) { if (badge.imageVector == null && badge.drawable != null) { - CustomIconButton( + IconButton( modifier = Modifier.size(22.dp), icon = badge.drawable, contentDescription = badge.contentDescription, @@ -30,7 +30,7 @@ fun AboutBadgeItem( onClick() } } else if (badge.imageVector != null && badge.drawable == null) { - CustomIconButton( + IconButton( modifier = Modifier.size(22.dp), icon = badge.imageVector, contentDescription = badge.contentDescription, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/data/AboutViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/data/AboutViewModel.kt index d15c260c..4edc7c4d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/data/AboutViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/data/AboutViewModel.kt @@ -12,14 +12,14 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.use_case.remote.CheckForUpdates -import ua.acclorite.book_story.presentation.core.util.UiViewModel +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject @HiltViewModel class AboutViewModel @Inject constructor( private val checkForUpdates: CheckForUpdates, -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt index 6586035b..93c5fe18 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt @@ -18,9 +18,9 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideCredits import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator @@ -41,12 +41,12 @@ private fun CreditsScreen() { val onNavigate = LocalNavigator.current val context = LocalContext.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -57,7 +57,7 @@ private fun CreditsScreen() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -65,11 +65,11 @@ private fun CreditsScreen() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { items(Constants.provideCredits(), key = { it.name }) { CreditItem(credit = it) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt index 93ef7e41..2a5742ca 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt @@ -33,10 +33,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.core.util.showToast @@ -76,7 +76,7 @@ private fun LicenseInfoScreen() { val context = LocalContext.current val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() val licenses = remember(state.value.license?.licenses) { state.value.license?.licenses?.toList() } @@ -84,7 +84,7 @@ private fun LicenseInfoScreen() { Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -105,7 +105,7 @@ private fun LicenseInfoScreen() { }, actions = { if (state.value.license?.website?.isNotBlank() == true) { - CustomIconButton( + IconButton( icon = Icons.Outlined.Language, contentDescription = R.string.open_in_web_content_desc, disableOnClick = false @@ -130,7 +130,7 @@ private fun LicenseInfoScreen() { } } }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -141,11 +141,11 @@ private fun LicenseInfoScreen() { DefaultTransition( visible = state.value.license != null ) { - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second, + state = lazyListState, contentPadding = PaddingValues(horizontal = 16.dp), verticalArrangement = Arrangement.spacedBy(8.dp) ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/data/LicenseInfoViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/data/LicenseInfoViewModel.kt index bfefc895..6ab654c7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/data/LicenseInfoViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/data/LicenseInfoViewModel.kt @@ -13,14 +13,14 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import ua.acclorite.book_story.presentation.core.util.UiViewModel +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject @HiltViewModel class LicenseInfoViewModel @Inject constructor( -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt index f2f5a9ff..92b1f1c6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt @@ -25,10 +25,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.screens.about.nested.licenses.components.LicenseItem @@ -53,14 +53,14 @@ private fun LicensesScreen() { val state = LicensesViewModel.getState() val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState( - state.value.listState + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior( + listState = state.value.listState ) Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -71,7 +71,7 @@ private fun LicensesScreen() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -79,16 +79,16 @@ private fun LicensesScreen() { ) } ) { paddingValues -> - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.licenses.isNotEmpty(), enter = fadeIn(tween(300)), exit = fadeOut(tween(300)) ) { - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { item { Spacer(modifier = Modifier.height(12.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/data/LicensesViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/data/LicensesViewModel.kt index 3a3b770b..3a0ed54b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/data/LicensesViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/data/LicensesViewModel.kt @@ -11,13 +11,13 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.util.UiViewModel +import ua.acclorite.book_story.domain.util.UIViewModel import javax.inject.Inject @HiltViewModel class LicensesViewModel @Inject constructor( -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt index d335bdb2..f9c7cb7e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt @@ -44,8 +44,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomSnackbar +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.Snackbar import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.screens.book_info.components.BookInfoBackground @@ -146,7 +146,7 @@ private fun BookInfoScreen(snackbarState: SnackbarHostState) { ) }, bottomBar = { - CustomSnackbar( + Snackbar( modifier = Modifier.padding(bottom = 70.dp), snackbarState = snackbarState ) @@ -212,7 +212,7 @@ private fun BookInfoScreen(snackbarState: SnackbarHostState) { contentDescription = stringResource(id = R.string.continue_reading_content_desc), Modifier.size(24.dp) ) - CustomAnimatedVisibility( + AnimatedVisibility( visible = !listState.canScrollBackward, enter = fadeIn() + expandHorizontally(), exit = fadeOut() + shrinkHorizontally() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoBackground.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoBackground.kt index 22715939..706bdefe 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoBackground.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoBackground.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CustomCoverImage +import ua.acclorite.book_story.presentation.core.components.common.AsyncImage /** * Background of the BookInfoScreen. @@ -21,7 +21,7 @@ import ua.acclorite.book_story.presentation.core.components.CustomCoverImage fun BookInfoBackground(height: Dp, image: Uri) { val background = MaterialTheme.colorScheme.surface - CustomCoverImage( + AsyncImage( uri = image, animationDurationMillis = 300, contentDescription = null, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoInfoSection.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoInfoSection.kt index d23c131d..619d174d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoInfoSection.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoInfoSection.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomCoverImage +import ua.acclorite.book_story.presentation.core.components.common.AsyncImage import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewModel @@ -73,7 +73,7 @@ fun BookInfoInfoSection() { ) ) { if (state.value.book.coverImage != null) { - CustomCoverImage( + AsyncImage( uri = state.value.book.coverImage!!, modifier = Modifier .fillMaxSize() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoMoreBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoMoreBottomSheet.kt index c143c3cf..8b98f437 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoMoreBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoMoreBottomSheet.kt @@ -11,7 +11,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.util.Position -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.core.navigation.NavigationItem import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewModel @@ -26,7 +26,7 @@ import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewM fun BookInfoMoreBottomSheet(snackbarState: SnackbarHostState) { val onEvent = BookInfoViewModel.getEvent() - CustomBottomSheet( + ModalBottomSheet( modifier = Modifier.fillMaxWidth(), onDismissRequest = { onEvent(BookInfoEvent.OnShowHideMoreBottomSheet(false)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoTopBar.kt index d404d48f..26c6d43e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/BookInfoTopBar.kt @@ -19,11 +19,11 @@ import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBar -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBarData -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent @@ -56,14 +56,14 @@ fun BookInfoTopBar( val firstVisibleItemIndex by remember { derivedStateOf { listState.firstVisibleItemIndex } } - AnimatedTopAppBar( + TopAppBar( containerColor = MaterialTheme.colorScheme.surface.copy(0f), scrollBehavior = null, isTopBarScrolled = listState.canScrollBackward, shownTopBar = 0, topBars = listOf( - AnimatedTopAppBarData( + TopAppBarData( contentID = 0, contentNavigationIcon = { if ( @@ -71,7 +71,7 @@ fun BookInfoTopBar( state.value.editAuthor || state.value.editDescription ) { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = R.string.exit_editing_content_desc, disableOnClick = true @@ -108,7 +108,7 @@ fun BookInfoTopBar( } }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Outlined.Refresh, contentDescription = R.string.refresh_book_content_desc, disableOnClick = false, @@ -132,14 +132,14 @@ fun BookInfoTopBar( onEvent(BookInfoEvent.OnShowHideMoreBottomSheet(true)) } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.editTitle || state.value.editAuthor || state.value.editDescription, enter = Transitions.DefaultTransitionIn, exit = fadeOut(tween(200)) ) { - CustomIconButton( + IconButton( icon = Icons.Outlined.Done, contentDescription = R.string.apply_changes_content_desc, disableOnClick = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/change_cover_bottom_sheet/BookInfoChangeCoverBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/change_cover_bottom_sheet/BookInfoChangeCoverBottomSheet.kt index d3a50c9c..80d66374 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/change_cover_bottom_sheet/BookInfoChangeCoverBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/change_cover_bottom_sheet/BookInfoChangeCoverBottomSheet.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewModel @@ -62,7 +62,7 @@ fun BookInfoChangeCoverBottomSheet() { onEvent(BookInfoEvent.OnCheckCoverReset) } - CustomBottomSheet( + ModalBottomSheet( modifier = Modifier.fillMaxWidth(), onDismissRequest = { onEvent(BookInfoEvent.OnShowHideChangeCoverBottomSheet) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/details_bottom_sheet/BookInfoDetailsBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/details_bottom_sheet/BookInfoDetailsBottomSheet.kt index 2f96396f..e6d180aa 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/details_bottom_sheet/BookInfoDetailsBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/details_bottom_sheet/BookInfoDetailsBottomSheet.kt @@ -10,7 +10,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewModel @@ -55,7 +55,7 @@ fun BookInfoDetailsBottomSheet() { else "" } - CustomBottomSheet( + ModalBottomSheet( modifier = Modifier.fillMaxWidth(), onDismissRequest = { onEvent(BookInfoEvent.OnShowHideDetailsBottomSheet) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoConfirmUpdateDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoConfirmUpdateDialog.kt index a074bcdd..fe03d856 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoConfirmUpdateDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoConfirmUpdateDialog.kt @@ -7,7 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoViewModel import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent @@ -28,7 +28,7 @@ fun BookInfoConfirmUpdateDialog(snackbarHostState: SnackbarHostState) { val onHistoryEvent = HistoryViewModel.getEvent() val context = LocalContext.current - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.confirm_update), imageVectorIcon = Icons.Default.Update, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoDeleteDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoDeleteDialog.kt index 8b0f042e..47a88a4b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoDeleteDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoDeleteDialog.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent @@ -30,7 +30,7 @@ fun BookInfoDeleteDialog() { val onNavigate = LocalNavigator.current val context = LocalContext.current - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.delete_book), imageVectorIcon = Icons.Outlined.DeleteOutline, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt index 73aea6bd..4db2273c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt @@ -10,8 +10,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.Category -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn -import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithLazyColumn +import ua.acclorite.book_story.presentation.core.components.dialog.SelectableDialogItem import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent @@ -42,7 +42,7 @@ fun BookInfoMoveDialog() { onEvent(BookInfoEvent.OnSelectCategory(categories[0])) } - CustomDialogWithLazyColumn( + DialogWithLazyColumn( title = stringResource(id = R.string.move_book), imageVectorIcon = Icons.AutoMirrored.Outlined.DriveFileMove, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt index 07349229..5f1dfa79 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt @@ -35,8 +35,8 @@ import ua.acclorite.book_story.domain.use_case.book.UpdateCoverImageOfBook import ua.acclorite.book_story.domain.use_case.history.InsertHistory import ua.acclorite.book_story.domain.util.Resource import ua.acclorite.book_story.domain.util.UIText +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import java.util.Date import javax.inject.Inject import kotlin.math.roundToInt @@ -53,7 +53,7 @@ class BookInfoViewModel @Inject constructor( private val canResetCover: CanResetCover, private val resetCoverImage: ResetCoverImage, private val checkForTextUpdate: CheckForTextUpdate, -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseEmptyPlaceholder.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseEmptyPlaceholder.kt index 88a0f2cf..682dad13 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseEmptyPlaceholder.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseEmptyPlaceholder.kt @@ -9,9 +9,9 @@ import androidx.compose.ui.res.stringResource import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.PermissionState import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty -import ua.acclorite.book_story.presentation.core.components.is_messages.IsError +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.placeholder.EmptyPlaceholder +import ua.acclorite.book_story.presentation.core.components.placeholder.ErrorPlaceholder import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent @@ -35,13 +35,13 @@ fun BoxScope.BrowseEmptyPlaceholder( val onEvent = BrowseViewModel.getEvent() val onNavigate = LocalNavigator.current - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.isError, modifier = Modifier.align(Alignment.Center), enter = Transitions.DefaultTransitionIn, exit = Transitions.NoExitAnimation ) { - IsError( + ErrorPlaceholder( modifier = Modifier.align(Alignment.Center), errorMessage = stringResource(id = R.string.error_permission), icon = painterResource(id = R.drawable.error), @@ -53,7 +53,7 @@ fun BoxScope.BrowseEmptyPlaceholder( } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = !state.value.isLoading && isFilesEmpty && !state.value.isError @@ -63,7 +63,7 @@ fun BoxScope.BrowseEmptyPlaceholder( enter = Transitions.DefaultTransitionIn, exit = Transitions.NoExitAnimation ) { - IsEmpty( + EmptyPlaceholder( message = stringResource(id = R.string.browse_empty), icon = painterResource(id = R.drawable.empty_browse), actionTitle = stringResource(id = R.string.get_help), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseStoragePermissionDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseStoragePermissionDialog.kt index cb7a63af..7a8448e3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseStoragePermissionDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/BrowseStoragePermissionDialog.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.res.stringResource import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.PermissionState import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent import ua.acclorite.book_story.presentation.screens.browse.data.BrowseViewModel @@ -26,7 +26,7 @@ fun BrowseStoragePermissionDialog( val activity = LocalContext.current as ComponentActivity val onEvent = BrowseViewModel.getEvent() - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.storage_permission), description = stringResource(id = R.string.storage_permission_description), actionText = stringResource(id = R.string.grant), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt index 4a4e055b..cad8c71f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.NullableBook -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithLazyColumn import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent @@ -39,7 +39,7 @@ fun BrowseAddingDialog() { val onLibraryEvent = LibraryViewModel.getEvent() val onNavigate = LocalNavigator.current - CustomDialogWithLazyColumn( + DialogWithLazyColumn( title = stringResource(id = R.string.add_books), imageVectorIcon = Icons.Default.AddChart, description = stringResource(id = R.string.add_books_description), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialogItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialogItem.kt index 098ed6fd..9fed3ddc 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialogItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialogItem.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.NullableBook import ua.acclorite.book_story.domain.util.Selected -import ua.acclorite.book_story.presentation.core.components.CustomCheckbox +import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox /** * Adding dialog item. @@ -62,7 +62,7 @@ fun BrowseAddingDialogItem(result: Pair, onClick: (Boole } Row { Spacer(modifier = Modifier.width(24.dp)) - CustomCheckbox( + CircularCheckbox( selected = result.second, containerColor = MaterialTheme.colorScheme.surfaceContainerHigh ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheet.kt index f13af609..73b0def3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheet.kt @@ -9,8 +9,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent import ua.acclorite.book_story.presentation.screens.browse.data.BrowseViewModel import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories.BrowseFilterSubcategory @@ -37,7 +37,7 @@ fun BrowseFilterBottomSheet() { ) } - CustomBottomSheet( + ModalBottomSheet( hasFixedHeight = true, modifier = Modifier .fillMaxWidth() @@ -55,7 +55,7 @@ fun BrowseFilterBottomSheet() { HorizontalPager(state = pagerState, modifier = Modifier.fillMaxSize()) { page -> when (page) { 0 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { BrowseGeneralSubcategory( showTitle = false, showDivider = false, @@ -66,7 +66,7 @@ fun BrowseFilterBottomSheet() { } 1 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { BrowseFilterSubcategory( showTitle = false, showDivider = false, @@ -77,7 +77,7 @@ fun BrowseFilterBottomSheet() { } 2 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { BrowseSortSubcategory( showTitle = false, showDivider = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheetTabRow.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheetTabRow.kt index 5bac31e0..f93fb417 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheetTabRow.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/filter_bottom_sheet/BrowseFilterBottomSheetTabRow.kt @@ -4,7 +4,7 @@ import androidx.compose.foundation.pager.PagerState import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheetTabRow +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheetTabRow import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent /** @@ -25,7 +25,7 @@ fun BrowseFilterBottomSheetTabRow( stringResource(id = R.string.sort_tab) ) - CustomBottomSheetTabRow( + ModalBottomSheetTabRow( selectedTabIndex = pagerState.currentPage, tabs = tabItems ) { index -> diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridDirectoryItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridDirectoryItem.kt index 91c91129..63acf75e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridDirectoryItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridDirectoryItem.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.SelectableFile -import ua.acclorite.book_story.presentation.core.components.CustomCheckbox +import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.ui.DefaultTransition import java.text.SimpleDateFormat @@ -73,7 +73,7 @@ fun BrowseGridDirectoryItem( .align(Alignment.TopStart) .padding(12.dp) ) { - CustomCheckbox( + CircularCheckbox( selected = file.isSelected, containerColor = MaterialTheme.colorScheme.surface, size = 18.dp diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridFileItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridFileItem.kt index 212b3cf3..6c2d6e70 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridFileItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridFileItem.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.SelectableFile -import ua.acclorite.book_story.presentation.core.components.CustomCheckbox +import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox import ua.acclorite.book_story.presentation.ui.DefaultTransition import java.text.SimpleDateFormat import java.util.Date @@ -76,7 +76,7 @@ fun BrowseGridFileItem(file: SelectableFile, hasSelectedFiles: Boolean) { visible = hasSelectedFiles, modifier = Modifier.align(Alignment.TopStart) ) { - CustomCheckbox( + CircularCheckbox( selected = file.isSelected, containerColor = MaterialTheme.colorScheme.surface, size = 18.dp, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt index 07528488..a48d5283 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt @@ -11,7 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.model.SelectableFile -import ua.acclorite.book_story.presentation.core.components.header +import ua.acclorite.book_story.presentation.core.components.common.header import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem import ua.acclorite.book_story.presentation.screens.browse.data.BrowseViewModel import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListItem.kt index 9c74f7cb..e8b33420 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListItem.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.SelectableFile -import ua.acclorite.book_story.presentation.core.components.CustomCheckbox +import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.ui.FadeTransitionPreservingSpace @@ -68,7 +68,7 @@ fun BrowseListItem( Row(verticalAlignment = Alignment.CenterVertically) { Spacer(modifier = Modifier.width(16.dp)) - CustomCheckbox( + CircularCheckbox( selected = file.isSelected, containerColor = MaterialTheme.colorScheme.surface, size = 18.dp @@ -87,7 +87,7 @@ fun BrowseListItem( Box(contentAlignment = Alignment.Center) { FadeTransitionPreservingSpace(hasSelectedFiles) { - CustomCheckbox( + CircularCheckbox( selected = file.isSelected, containerColor = MaterialTheme.colorScheme.surface, size = 18.dp diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBar.kt index dbad4435..d8ad0973 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBar.kt @@ -25,10 +25,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.SelectableFile -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBar -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBarData -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.CustomSearchTextField +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton import ua.acclorite.book_story.presentation.data.MainViewModel import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent @@ -76,7 +76,7 @@ fun BrowseTopBar(filteredFiles: List) { } } - AnimatedTopAppBar( + TopAppBar( scrollBehavior = null, isTopBarScrolled = isScrolled.value || state.value.hasSelectedItems, @@ -87,7 +87,7 @@ fun BrowseTopBar(filteredFiles: List) { else -> 0 }, topBars = listOf( - AnimatedTopAppBarData( + TopAppBarData( contentID = 0, contentNavigationIcon = {}, contentTitle = { @@ -98,14 +98,14 @@ fun BrowseTopBar(filteredFiles: List) { ) }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Default.Search, contentDescription = R.string.search_content_desc, disableOnClick = true ) { onEvent(BrowseEvent.OnSearchShowHide) } - CustomIconButton( + IconButton( icon = Icons.Default.FilterList, contentDescription = R.string.filter_content_desc, disableOnClick = false, @@ -123,10 +123,10 @@ fun BrowseTopBar(filteredFiles: List) { } ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 1, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowBack, contentDescription = R.string.go_back_content_desc, disableOnClick = false, @@ -143,14 +143,14 @@ fun BrowseTopBar(filteredFiles: List) { ) }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Default.Search, contentDescription = R.string.search_content_desc, disableOnClick = true ) { onEvent(BrowseEvent.OnSearchShowHide) } - CustomIconButton( + IconButton( icon = Icons.Default.FilterList, contentDescription = R.string.filter_content_desc, disableOnClick = false, @@ -168,10 +168,10 @@ fun BrowseTopBar(filteredFiles: List) { } ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 2, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowBack, contentDescription = R.string.exit_search_content_desc, disableOnClick = true @@ -180,7 +180,7 @@ fun BrowseTopBar(filteredFiles: List) { } }, contentTitle = { - CustomSearchTextField( + SearchTextField( modifier = Modifier .focusRequester(focusRequester) .onGloballyPositioned { @@ -192,11 +192,7 @@ fun BrowseTopBar(filteredFiles: List) { }, onSearch = { onEvent(BrowseEvent.OnSearch) - }, - placeholder = stringResource( - id = R.string.search_query, - stringResource(id = R.string.files) - ) + } ) }, contentActions = { @@ -204,10 +200,10 @@ fun BrowseTopBar(filteredFiles: List) { } ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 3, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.Default.Clear, contentDescription = R.string.clear_selected_items_content_desc, disableOnClick = true @@ -226,7 +222,7 @@ fun BrowseTopBar(filteredFiles: List) { ) }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Default.SelectAll, contentDescription = R.string.select_all_files_content_desc, disableOnClick = false, @@ -238,7 +234,7 @@ fun BrowseTopBar(filteredFiles: List) { ) ) } - CustomIconButton( + IconButton( icon = Icons.Default.Check, contentDescription = R.string.add_files_content_desc, disableOnClick = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt index ebfcbe4d..15ff82e3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.data.MainViewModel import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent @@ -84,7 +84,7 @@ fun BrowseTopBarDirectoryPath() { } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = !state.value.hasSelectedItems && !state.value.hasSearched && !state.value.isError diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/data/BrowseViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/data/BrowseViewModel.kt index 3fbc6e70..d780556e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/data/BrowseViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/data/BrowseViewModel.kt @@ -29,8 +29,8 @@ import ua.acclorite.book_story.domain.use_case.book.InsertBook import ua.acclorite.book_story.domain.use_case.favorite_directory.UpdateFavoriteDirectory import ua.acclorite.book_story.domain.use_case.file_system.GetBookFromFile import ua.acclorite.book_story.domain.use_case.file_system.GetFilesFromDevice +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import ua.acclorite.book_story.presentation.core.util.launchActivity import ua.acclorite.book_story.presentation.data.MainState import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure @@ -44,7 +44,7 @@ class BrowseViewModel @Inject constructor( private val getFilesFromDevice: GetFilesFromDevice, private val insertBook: InsertBook, private val updateFavoriteDirectory: UpdateFavoriteDirectory, -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt index b6a43592..9aa73dd4 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt @@ -29,10 +29,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.util.Position -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideHelpTips import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator @@ -74,12 +74,12 @@ private fun HelpScreen() { val onStartEvent = StartViewModel.getEvent() val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -94,7 +94,7 @@ private fun HelpScreen() { }, actions = { if (!state.value.fromStart) { - CustomIconButton( + IconButton( icon = Icons.Outlined.RestartAlt, contentDescription = R.string.reset_start_content_desc, disableOnClick = false @@ -108,7 +108,7 @@ private fun HelpScreen() { } } }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -140,11 +140,11 @@ private fun HelpScreen() { } } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(paddingValues), - state = scrollState.second + state = lazyListState ) { item { Spacer(modifier = Modifier.height(16.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/HelpClickableNote.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/HelpClickableNote.kt index a13db8ee..9edfcd11 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/HelpClickableNote.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/HelpClickableNote.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomTooltip +import ua.acclorite.book_story.presentation.core.components.common.Tooltip import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.ui.ExpandingTransition @@ -33,7 +33,7 @@ fun HelpClickableNote(text: AnnotatedString) { val showNote = rememberSaveable { mutableStateOf(true) } Column(Modifier.padding(horizontal = 18.dp)) { - CustomTooltip(text = stringResource(R.string.note_content_desc)) { + Tooltip(text = stringResource(R.string.note_content_desc)) { Icon( imageVector = Icons.Outlined.Info, modifier = Modifier diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpViewModel.kt index e8dd68d7..b460f05c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpViewModel.kt @@ -5,13 +5,13 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update -import ua.acclorite.book_story.presentation.core.util.UiViewModel +import ua.acclorite.book_story.domain.util.UIViewModel import javax.inject.Inject @HiltViewModel class HelpViewModel @Inject constructor( -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt index 5f96d870..ea4271cc 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt @@ -36,14 +36,13 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBar -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBarData -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.CustomSearchTextField -import ua.acclorite.book_story.presentation.core.components.CustomSnackbar -import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.common.Snackbar +import ua.acclorite.book_story.presentation.core.components.placeholder.EmptyPlaceholder +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton import ua.acclorite.book_story.presentation.core.navigation.Screen @@ -53,6 +52,7 @@ import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent import ua.acclorite.book_story.presentation.screens.history.data.HistoryViewModel import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent import ua.acclorite.book_story.presentation.screens.library.data.LibraryViewModel +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import ua.acclorite.book_story.presentation.ui.DefaultTransition import ua.acclorite.book_story.presentation.ui.Transitions @@ -98,7 +98,7 @@ private fun HistoryScreen() { .pullRefresh(refreshState), containerColor = MaterialTheme.colorScheme.surface, topBar = { - AnimatedTopAppBar( + TopAppBar( scrollBehavior = null, isTopBarScrolled = state.value.listState.canScrollBackward, @@ -107,21 +107,21 @@ private fun HistoryScreen() { else -> 0 }, topBars = listOf( - AnimatedTopAppBarData( + TopAppBarData( contentID = 0, contentNavigationIcon = {}, contentTitle = { Text(stringResource(id = R.string.history_screen)) }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Default.Search, contentDescription = R.string.search_content_desc, disableOnClick = true, ) { onEvent(HistoryEvent.OnSearchShowHide) } - CustomIconButton( + IconButton( icon = Icons.Outlined.DeleteSweep, contentDescription = R.string.delete_whole_history_content_desc, disableOnClick = false, @@ -136,10 +136,10 @@ private fun HistoryScreen() { } ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 1, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowBack, contentDescription = R.string.exit_search_content_desc, disableOnClick = true @@ -148,7 +148,7 @@ private fun HistoryScreen() { } }, contentTitle = { - CustomSearchTextField( + SearchTextField( modifier = Modifier .focusRequester(focusRequester) .onGloballyPositioned { @@ -160,11 +160,7 @@ private fun HistoryScreen() { }, onSearch = { onEvent(HistoryEvent.OnSearch) - }, - placeholder = stringResource( - id = R.string.search_query, - stringResource(id = R.string.history) - ) + } ) }, contentActions = { @@ -175,7 +171,7 @@ private fun HistoryScreen() { ) }, bottomBar = { - CustomSnackbar(snackbarState = snackbarState) + Snackbar(snackbarState = snackbarState) } ) { paddingValues -> Box( @@ -199,7 +195,7 @@ private fun HistoryScreen() { Spacer(modifier = Modifier.height(8.dp)) } - CategoryTitle( + SettingsCategoryTitle( modifier = Modifier.animateItem(), title = when (groupedHistory.title) { "today" -> stringResource(id = R.string.today) @@ -263,7 +259,7 @@ private fun HistoryScreen() { } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = !state.value.isLoading && state.value.history.isEmpty() && !state.value.isRefreshing, @@ -271,7 +267,7 @@ private fun HistoryScreen() { enter = Transitions.DefaultTransitionIn, exit = fadeOut(tween(0)) ) { - IsEmpty( + EmptyPlaceholder( modifier = Modifier.align(Alignment.Center), message = stringResource(id = R.string.history_empty), icon = painterResource(id = R.drawable.empty_history) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryDeleteWholeHistoryDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryDeleteWholeHistoryDialog.kt index 05914f4a..61eedbd5 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryDeleteWholeHistoryDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryDeleteWholeHistoryDialog.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent import ua.acclorite.book_story.presentation.screens.history.data.HistoryViewModel @@ -22,7 +22,7 @@ fun HistoryDeleteWholeHistoryDialog() { val onEvent = HistoryViewModel.getEvent() val onLibraryEvent = LibraryViewModel.getEvent() - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.delete_history), imageVectorIcon = Icons.Outlined.DeleteOutline, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryItem.kt index fefe6e3a..cbe9f2d5 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/components/HistoryItem.kt @@ -32,8 +32,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.History -import ua.acclorite.book_story.presentation.core.components.CustomCoverImage -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.AsyncImage +import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.util.noRippleClickable import java.text.SimpleDateFormat import java.util.Date @@ -88,7 +88,7 @@ fun HistoryItem( ) ) { if (history.book?.coverImage != null) { - CustomCoverImage( + AsyncImage( uri = history.book.coverImage, modifier = Modifier .fillMaxSize() @@ -141,7 +141,7 @@ fun HistoryItem( } } Box(modifier = Modifier.weight(0.11f), contentAlignment = Alignment.CenterEnd) { - CustomIconButton( + IconButton( icon = Icons.Outlined.Delete, contentDescription = R.string.delete_history_element_content_desc, disableOnClick = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/data/HistoryViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/data/HistoryViewModel.kt index 38e5bb6a..7ec882fa 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/data/HistoryViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/data/HistoryViewModel.kt @@ -21,8 +21,8 @@ import ua.acclorite.book_story.domain.use_case.history.DeleteHistory import ua.acclorite.book_story.domain.use_case.history.DeleteWholeHistory import ua.acclorite.book_story.domain.use_case.history.GetHistory import ua.acclorite.book_story.domain.use_case.history.InsertHistory +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date @@ -36,7 +36,7 @@ class HistoryViewModel @Inject constructor( private val deleteWholeHistory: DeleteWholeHistory, private val deleteHistory: DeleteHistory, private val getBooksById: GetBooksById -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt index 204840e5..cdfe43f5 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt @@ -46,9 +46,9 @@ import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.Book import ua.acclorite.book_story.domain.model.Category import ua.acclorite.book_story.domain.util.Selected -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.header -import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.header +import ua.acclorite.book_story.presentation.core.components.placeholder.EmptyPlaceholder import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.core.util.showToast @@ -208,7 +208,7 @@ private fun LibraryScreen( } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = !state.value.isLoading && !state.value.isRefreshing && books.isEmpty(), @@ -216,7 +216,7 @@ private fun LibraryScreen( enter = Transitions.DefaultTransitionIn, exit = fadeOut(tween(0)) ) { - IsEmpty( + EmptyPlaceholder( message = stringResource(id = R.string.library_empty), icon = painterResource(id = R.drawable.empty_library), modifier = Modifier.align(Alignment.Center), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryBookItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryBookItem.kt index 64017981..07932412 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryBookItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryBookItem.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.Book import ua.acclorite.book_story.domain.util.Selected -import ua.acclorite.book_story.presentation.core.components.CustomCoverImage +import ua.acclorite.book_story.presentation.core.components.common.AsyncImage import ua.acclorite.book_story.presentation.core.util.calculateProgress /** @@ -101,7 +101,7 @@ fun LibraryBookItem( ) ) { if (book.first.coverImage != null) { - CustomCoverImage( + AsyncImage( uri = book.first.coverImage!!, modifier = Modifier .fillMaxSize() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryTopBar.kt index 690bbd7d..eed56e0e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/LibraryTopBar.kt @@ -31,17 +31,17 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBar -import ua.acclorite.book_story.presentation.core.components.AnimatedTopAppBarData -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.core.components.CustomSearchTextField +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar +import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent import ua.acclorite.book_story.presentation.screens.library.data.LibraryViewModel /** * Library Top Bar. - * Contains [AnimatedTopAppBar] and [LibraryTabRow]. + * Contains [TopAppBar] and [LibraryTabRow]. * * @param pagerState [PagerState]. */ @@ -52,7 +52,7 @@ fun LibraryTopBar(pagerState: PagerState) { val onEvent = LibraryViewModel.getEvent() val focusRequester = remember { FocusRequester() } - AnimatedTopAppBar( + TopAppBar( scrollBehavior = null, isTopBarScrolled = state.value.hasSelectedItems, @@ -62,7 +62,7 @@ fun LibraryTopBar(pagerState: PagerState) { else -> 0 }, topBars = listOf( - AnimatedTopAppBarData( + TopAppBarData( contentID = 0, contentNavigationIcon = {}, contentTitle = { @@ -83,7 +83,7 @@ fun LibraryTopBar(pagerState: PagerState) { } }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.Default.Search, contentDescription = R.string.search_content_desc, disableOnClick = true, @@ -94,10 +94,10 @@ fun LibraryTopBar(pagerState: PagerState) { } ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 1, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowBack, contentDescription = R.string.exit_search_content_desc, disableOnClick = true @@ -108,7 +108,7 @@ fun LibraryTopBar(pagerState: PagerState) { } }, contentTitle = { - CustomSearchTextField( + SearchTextField( modifier = Modifier .focusRequester(focusRequester) .onGloballyPositioned { @@ -120,11 +120,7 @@ fun LibraryTopBar(pagerState: PagerState) { }, onSearch = { onEvent(LibraryEvent.OnSearch) - }, - placeholder = stringResource( - id = R.string.search_query, - stringResource(id = R.string.books) - ) + } ) }, contentActions = { @@ -132,10 +128,10 @@ fun LibraryTopBar(pagerState: PagerState) { }, ), - AnimatedTopAppBarData( + TopAppBarData( contentID = 2, contentNavigationIcon = { - CustomIconButton( + IconButton( icon = Icons.Default.Clear, contentDescription = R.string.clear_selected_items_content_desc, disableOnClick = true @@ -154,7 +150,7 @@ fun LibraryTopBar(pagerState: PagerState) { ) }, contentActions = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Outlined.DriveFileMove, contentDescription = R.string.move_books_content_desc, enabled = !state.value.isLoading @@ -165,7 +161,7 @@ fun LibraryTopBar(pagerState: PagerState) { ) { onEvent(LibraryEvent.OnShowHideMoveDialog) } - CustomIconButton( + IconButton( icon = Icons.Outlined.Delete, contentDescription = R.string.delete_books_content_desc, enabled = !state.value.isLoading diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryDeleteDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryDeleteDialog.kt index 0bc80a32..ae2dae40 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryDeleteDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryDeleteDialog.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent import ua.acclorite.book_story.presentation.screens.browse.data.BrowseViewModel @@ -26,7 +26,7 @@ fun LibraryDeleteDialog() { val onBrowseEvent = BrowseViewModel.getEvent() val onHistoryEvent = HistoryViewModel.getEvent() - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.delete_books), imageVectorIcon = Icons.Outlined.DeleteOutline, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt index 8a65d29e..583565af 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt @@ -9,8 +9,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.Category -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn -import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithLazyColumn +import ua.acclorite.book_story.presentation.core.components.dialog.SelectableDialogItem import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent import ua.acclorite.book_story.presentation.screens.history.data.HistoryViewModel @@ -27,7 +27,7 @@ fun LibraryMoveDialog(pagerState: PagerState) { val onEvent = LibraryViewModel.getEvent() val onHistoryEvent = HistoryViewModel.getEvent() - CustomDialogWithLazyColumn( + DialogWithLazyColumn( title = stringResource(id = R.string.move_books), imageVectorIcon = Icons.AutoMirrored.Outlined.DriveFileMove, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/data/LibraryViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/data/LibraryViewModel.kt index b4761ea5..58f019ed 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/data/LibraryViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/data/LibraryViewModel.kt @@ -18,8 +18,8 @@ import ua.acclorite.book_story.domain.use_case.book.DeleteBooks import ua.acclorite.book_story.domain.use_case.book.GetBooks import ua.acclorite.book_story.domain.use_case.book.UpdateBook import ua.acclorite.book_story.domain.use_case.history.InsertHistory +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import java.util.Date import javax.inject.Inject @@ -29,7 +29,7 @@ class LibraryViewModel @Inject constructor( private val updateBook: UpdateBook, private val deleteBooks: DeleteBooks, private val insertHistory: InsertHistory -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt index b8c95ddd..526bbd4a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt @@ -59,9 +59,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.Chapter -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomSelectionContainer -import ua.acclorite.book_story.presentation.core.components.is_messages.IsError +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.SelectionContainer +import ua.acclorite.book_story.presentation.core.components.placeholder.ErrorPlaceholder import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator @@ -381,7 +381,7 @@ private fun ReaderScreen(lazyListState: LazyListState) { .nestedScroll(nestedScrollConnection), containerColor = MaterialTheme.colorScheme.surface, topBar = { - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.showMenu, enter = slideInVertically { -it }, exit = slideOutVertically { -it } @@ -390,7 +390,7 @@ private fun ReaderScreen(lazyListState: LazyListState) { } }, bottomBar = { - CustomAnimatedVisibility( + AnimatedVisibility( modifier = Modifier.fillMaxWidth(), visible = state.value.showMenu, enter = slideInVertically { it }, @@ -400,7 +400,7 @@ private fun ReaderScreen(lazyListState: LazyListState) { } } ) { - CustomSelectionContainer( + SelectionContainer( onCopyRequested = { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { context.getString(R.string.copied) @@ -537,7 +537,7 @@ private fun ReaderScreen(lazyListState: LazyListState) { horizontalAlignment = Alignment.CenterHorizontally ) { if (!state.value.loading) { - IsError( + ErrorPlaceholder( errorMessage = state.value.errorMessage!!.asString(), icon = painterResource(id = R.drawable.error), actionTitle = stringResource(id = R.string.go_back), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt index bca45750..ab82aa19 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt @@ -11,9 +11,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawer -import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerSelectableItem -import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerTitleItem +import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawer +import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawerSelectableItem +import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawerTitleItem import ua.acclorite.book_story.presentation.core.util.calculateProgress import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent import ua.acclorite.book_story.presentation.screens.history.data.HistoryViewModel @@ -33,12 +33,12 @@ fun ReaderChaptersDrawer() { val onLibraryEvent = LibraryViewModel.getEvent() val onHistoryEvent = HistoryViewModel.getEvent() - CustomModalDrawer( + ModalDrawer( show = state.value.showChaptersDrawer, startIndex = state.value.currentChapter?.index ?: 0, onDismissRequest = { onEvent(ReaderEvent.OnShowHideChaptersDrawer(false)) }, header = { - CustomModalDrawerTitleItem( + ModalDrawerTitleItem( title = stringResource(id = R.string.chapters) ) } @@ -48,7 +48,7 @@ fun ReaderChaptersDrawer() { chapter.index == state.value.currentChapter?.index } - CustomModalDrawerSelectableItem( + ModalDrawerSelectableItem( selected = selected, onClick = { onEvent( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderUpdateDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderUpdateDialog.kt index c20971ec..9947076a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderUpdateDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderUpdateDialog.kt @@ -7,7 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderViewModel @@ -22,7 +22,7 @@ fun ReaderUpdateDialog() { val onNavigate = LocalNavigator.current val context = LocalContext.current - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.update_book), imageVectorIcon = Icons.Rounded.Upgrade, description = stringResource( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderBottomBar.kt index 8335c00e..5ed4eda1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderBottomBar.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.util.Direction -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.util.calculateProgress import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent @@ -112,7 +112,7 @@ fun ReaderBottomBar() { visible = arrowDirection == Direction.START, startDirection = true ) { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowBack, contentDescription = R.string.checkpoint_back_content_desc, modifier = Modifier.size(24.dp), @@ -143,7 +143,7 @@ fun ReaderBottomBar() { visible = arrowDirection == Direction.END, startDirection = false ) { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Default.ArrowForward, contentDescription = R.string.checkpoint_forward_content_desc, modifier = Modifier.size(24.dp), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderTopBar.kt index deb9c42f..55a09be6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/app_bar/ReaderTopBar.kt @@ -36,8 +36,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomIconButton +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.core.util.noRippleClickable @@ -91,7 +91,7 @@ fun ReaderTopBar() { ) { TopAppBar( navigationIcon = { - CustomIconButton( + IconButton( icon = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = R.string.go_back_content_desc, disableOnClick = true @@ -167,7 +167,7 @@ fun ReaderTopBar() { } }, actions = { - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.checkingForUpdate || state.value.updateFound, enter = fadeIn(), exit = shrinkHorizontally() + fadeOut() @@ -177,7 +177,7 @@ fun ReaderTopBar() { contentAlignment = Alignment.Center ) { if (state.value.updateFound) { - CustomIconButton( + IconButton( icon = Icons.Rounded.Upgrade, contentDescription = R.string.update_text_content_desc, color = MaterialTheme.colorScheme.primary, @@ -202,7 +202,7 @@ fun ReaderTopBar() { } if (state.value.currentChapter != null) { - CustomIconButton( + IconButton( icon = Icons.Rounded.Menu, contentDescription = R.string.chapters_content_desc, disableOnClick = false, @@ -214,7 +214,7 @@ fun ReaderTopBar() { } } - CustomIconButton( + IconButton( icon = Icons.Default.Settings, contentDescription = R.string.open_reader_settings_content_desc, disableOnClick = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt index 1f087936..386616e6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt @@ -19,8 +19,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheet +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.data.MainViewModel import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderViewModel @@ -73,7 +73,7 @@ fun ReaderSettingsBottomSheet() { ) } - CustomBottomSheet( + ModalBottomSheet( hasFixedHeight = true, scrimColor = animatedScrimColor, modifier = Modifier @@ -89,7 +89,7 @@ fun ReaderSettingsBottomSheet() { HorizontalPager(state = pagerState) { page -> when (page) { 0 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { PaddingSubcategory( titleColor = { MaterialTheme.colorScheme.onSurface }, topPadding = 22.dp, @@ -115,7 +115,7 @@ fun ReaderSettingsBottomSheet() { } 1 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { FontSubcategory( titleColor = { MaterialTheme.colorScheme.onSurface }, topPadding = 16.dp, @@ -136,7 +136,7 @@ fun ReaderSettingsBottomSheet() { } 2 -> { - CustomLazyColumn(Modifier.fillMaxSize()) { + LazyColumnWithScrollbar(Modifier.fillMaxSize()) { ColorsSubcategory( showTitle = false, showDivider = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheetTabRow.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheetTabRow.kt index d1aebfe1..6de90271 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheetTabRow.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheetTabRow.kt @@ -4,7 +4,7 @@ import androidx.compose.foundation.pager.PagerState import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_bottom_sheet.CustomBottomSheetTabRow +import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheetTabRow import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderViewModel @@ -23,7 +23,7 @@ fun ReaderSettingsBottomSheetTabRow(pagerState: PagerState) { stringResource(id = R.string.color_tab) ) - CustomBottomSheetTabRow( + ModalBottomSheetTabRow( selectedTabIndex = pagerState.currentPage, tabs = tabItems ) { index -> diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt index da3322d4..448f173f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt @@ -34,8 +34,8 @@ import ua.acclorite.book_story.domain.use_case.book.UpdateBook import ua.acclorite.book_story.domain.use_case.history.GetLatestHistory import ua.acclorite.book_story.domain.util.Resource import ua.acclorite.book_story.domain.util.UIText +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import ua.acclorite.book_story.presentation.core.util.coerceAndPreventNaN import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject @@ -49,7 +49,7 @@ class ReaderViewModel @Inject constructor( private val getLatestHistory: GetLatestHistory, private val getBookById: GetBookById, private val checkForTextUpdate: CheckForTextUpdate -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/SettingsScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/SettingsScreen.kt index 952f4dfa..a275acde 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/SettingsScreen.kt @@ -24,9 +24,9 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryItem @@ -40,12 +40,12 @@ fun SettingsScreenRoot() { @Composable private fun SettingsScreen() { val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -56,7 +56,7 @@ private fun SettingsScreen() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -64,11 +64,11 @@ private fun SettingsScreen() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { item { Spacer(modifier = Modifier.height(16.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CategoryTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsCategoryTitle.kt similarity index 87% rename from app/src/main/java/ua/acclorite/book_story/presentation/core/components/CategoryTitle.kt rename to app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsCategoryTitle.kt index 4f89ad39..faace75d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/CategoryTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsCategoryTitle.kt @@ -1,4 +1,4 @@ -package ua.acclorite.book_story.presentation.core.components +package ua.acclorite.book_story.presentation.screens.settings.components import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme @@ -15,10 +15,10 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp /** - * Category Title. Used to name a category. + * Settings Category Title. Used to name a category. */ @Composable -fun CategoryTitle( +fun SettingsCategoryTitle( modifier: Modifier = Modifier, title: String, color: Color = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsSubcategory.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsSubcategory.kt index aa99096f..69d4893e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsSubcategory.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/components/SettingsSubcategory.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.coerceAtLeast import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CategoryTitle /** * Settings Subcategory. @@ -38,7 +37,7 @@ fun LazyListScope.SettingsSubcategory( ) { item { if (showTitle) { - CategoryTitle( + SettingsCategoryTitle( title = title.invoke(), color = titleColor.invoke(), modifier = Modifier diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/data/SettingsViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/data/SettingsViewModel.kt index fde46eb6..a834905d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/data/SettingsViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/data/SettingsViewModel.kt @@ -26,9 +26,9 @@ import ua.acclorite.book_story.domain.use_case.color_preset.SelectColorPreset import ua.acclorite.book_story.domain.use_case.color_preset.UpdateColorPreset import ua.acclorite.book_story.domain.util.ID import ua.acclorite.book_story.domain.util.UIText +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideDefaultColorPreset -import ua.acclorite.book_story.presentation.core.util.UiViewModel import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject import kotlin.random.Random @@ -41,7 +41,7 @@ class SettingsViewModel @Inject constructor( private val deleteColorPreset: DeleteColorPreset, private val selectColorPreset: SelectColorPreset, private val reorderColorPresets: ReorderColorPresets -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/AppearanceSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/AppearanceSettings.kt index bec41193..288afa4e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/AppearanceSettings.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/AppearanceSettings.kt @@ -17,9 +17,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.AppearanceSettingsCategory @@ -32,12 +32,12 @@ fun AppearanceSettingsRoot() { @Composable private fun AppearanceSettings() { val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars) .imePadding(), containerColor = MaterialTheme.colorScheme.surface, @@ -49,7 +49,7 @@ private fun AppearanceSettings() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -57,11 +57,11 @@ private fun AppearanceSettings() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( modifier = Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { AppearanceSettingsCategory() } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/AbsoluteDarkSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/AbsoluteDarkSetting.kt index c28b6211..abd1b616 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/AbsoluteDarkSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/AbsoluteDarkSetting.kt @@ -4,9 +4,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle import ua.acclorite.book_story.presentation.ui.ExpandingTransition import ua.acclorite.book_story.presentation.ui.isDark import ua.acclorite.book_story.presentation.ui.isPureDark diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt index 089833cd..420d01a0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt @@ -60,10 +60,10 @@ import sh.calvin.reorderable.rememberReorderableLazyListState import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ColorPreset import ua.acclorite.book_story.domain.util.Selected -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomIconButton -import ua.acclorite.book_story.presentation.screens.settings.components.ColorPickerWithTitle +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.settings.ColorPickerWithTitle +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent import ua.acclorite.book_story.presentation.screens.settings.data.SettingsViewModel import ua.acclorite.book_story.presentation.ui.FadeTransitionPreservingSpace @@ -97,7 +97,7 @@ fun ColorPresetSetting( .fillMaxWidth() .padding(vertical = verticalPadding) ) { - CategoryTitle( + SettingsCategoryTitle( title = stringResource(id = R.string.color_preset_option), padding = horizontalPadding ) @@ -313,7 +313,7 @@ private fun ReorderableCollectionItemScope.ColorPresetSettingItem( .padding(horizontal = 16.dp, vertical = 10.dp), verticalAlignment = Alignment.CenterVertically ) { - CustomAnimatedVisibility( + AnimatedVisibility( visible = isSelected, enter = if (enableAnimation) expandHorizontally() + fadeIn() else Transitions.NoEnterAnimation, @@ -338,7 +338,7 @@ private fun ReorderableCollectionItemScope.ColorPresetSettingItem( maxLines = 1 ) - CustomAnimatedVisibility( + AnimatedVisibility( visible = isSelected && canDrag, enter = if (enableAnimation) expandHorizontally() + fadeIn() else Transitions.NoEnterAnimation, @@ -437,7 +437,7 @@ private fun ColorPresetSettingConfigurationItem( Spacer(modifier = Modifier.width(12.dp)) FadeTransitionPreservingSpace(visible = canDelete) { - CustomIconButton( + IconButton( modifier = Modifier.size(24.dp), icon = Icons.Default.DeleteOutline, contentDescription = R.string.delete_color_preset_content_desc, @@ -449,7 +449,7 @@ private fun ColorPresetSettingConfigurationItem( } } - CustomIconButton( + IconButton( modifier = Modifier.size(24.dp), icon = Icons.Default.Shuffle, contentDescription = R.string.shuffle_color_preset_content_desc, @@ -459,7 +459,7 @@ private fun ColorPresetSettingConfigurationItem( onShuffle() } - CustomIconButton( + IconButton( modifier = Modifier.size(24.dp), icon = Icons.Default.Add, contentDescription = R.string.create_color_preset_content_desc, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/DarkThemeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/DarkThemeSetting.kt index ad1dc1ca..a64d1221 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/DarkThemeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/DarkThemeSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.ui.DarkTheme /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/FastColorPresetChangeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/FastColorPresetChangeSetting.kt index f4b0dca5..64d08864 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/FastColorPresetChangeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/FastColorPresetChangeSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.appearance. import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Fast Color Preset Change setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/PureDarkSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/PureDarkSetting.kt index 77389ffd..1004f0b1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/PureDarkSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/PureDarkSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.ui.ExpandingTransition import ua.acclorite.book_story.presentation.ui.PureDark import ua.acclorite.book_story.presentation.ui.isDark diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeContrastSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeContrastSetting.kt index 1dc1d881..8b10f1ee 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeContrastSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeContrastSetting.kt @@ -9,9 +9,9 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.ui.BookStoryTheme import ua.acclorite.book_story.presentation.ui.ExpandingTransition import ua.acclorite.book_story.presentation.ui.Theme diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt index 730a3f96..70f6f5a5 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt @@ -39,12 +39,12 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.util.UIText -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideThemes import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import ua.acclorite.book_story.presentation.ui.Theme import ua.acclorite.book_story.presentation.ui.ThemeContrast import ua.acclorite.book_story.presentation.ui.animatedColorScheme @@ -73,7 +73,7 @@ fun ThemeSetting( .fillMaxWidth() .padding(vertical = verticalPadding) ) { - CategoryTitle( + SettingsCategoryTitle( title = stringResource(id = R.string.app_theme_option), padding = horizontalPadding ) @@ -172,7 +172,7 @@ private fun ThemeSettingItem( ) Spacer(modifier = Modifier.width(8.dp)) - CustomAnimatedVisibility( + AnimatedVisibility( visible = selected, enter = scaleIn(tween(300), initialScale = 0.5f) + fadeIn(tween(300)), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/BrowseSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/BrowseSettings.kt index 3bd72268..e2bd3f9f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/BrowseSettings.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/BrowseSettings.kt @@ -17,9 +17,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.BrowseSettingsCategory @@ -32,12 +32,12 @@ fun BrowseSettingsRoot() { @Composable private fun BrowseSettings() { val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars) .imePadding(), containerColor = MaterialTheme.colorScheme.surface, @@ -49,7 +49,7 @@ private fun BrowseSettings() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -57,11 +57,11 @@ private fun BrowseSettings() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { BrowseSettingsCategory() } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilesStructureSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilesStructureSetting.kt index ca5b56df..55cde3cd 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilesStructureSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilesStructureSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseGridSizeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseGridSizeSetting.kt index 86807e30..5370d671 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseGridSizeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseGridSizeSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.browse.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout import ua.acclorite.book_story.presentation.ui.ExpandingTransition diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseLayoutSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseLayoutSetting.kt index ce8fc29c..5d5523b2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseLayoutSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseLayoutSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowsePinFavoriteDirectoriesSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowsePinFavoriteDirectoriesSetting.kt index 8f04ca17..1e00b1cb 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowsePinFavoriteDirectoriesSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowsePinFavoriteDirectoriesSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.browse.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure import ua.acclorite.book_story.presentation.ui.ExpandingTransition diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/GeneralSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/GeneralSettings.kt index ea8e34e5..396fde92 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/GeneralSettings.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/GeneralSettings.kt @@ -16,9 +16,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.screens.settings.nested.general.components.GeneralSettingsCategory @@ -32,12 +32,12 @@ fun GeneralSettingsRoot() { @Composable private fun GeneralSettings() { val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -48,7 +48,7 @@ private fun GeneralSettings() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -56,11 +56,11 @@ private fun GeneralSettings() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { GeneralSettingsCategory() } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/AppLanguageSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/AppLanguageSetting.kt index f67a6dae..53940f62 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/AppLanguageSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/AppLanguageSetting.kt @@ -5,11 +5,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideLanguages import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.ChipsWithTitle /** * App Language setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt index f3a9f3d9..6d2b0811 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt @@ -13,10 +13,10 @@ import androidx.compose.ui.res.stringResource import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberPermissionState import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithContent +import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithContent +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent import ua.acclorite.book_story.presentation.screens.settings.data.SettingsViewModel @@ -39,7 +39,7 @@ fun CheckForUpdatesSetting() { val showConfirmation = remember { mutableStateOf(false) } if (showConfirmation.value) { - CustomDialogWithContent( + DialogWithContent( title = stringResource(id = R.string.enable_check_for_updates), description = stringResource(id = R.string.enable_check_for_updates_description), actionText = stringResource(id = R.string.enable), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/DoublePressExitSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/DoublePressExitSetting.kt index 421b8f65..f479a9d1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/DoublePressExitSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/DoublePressExitSetting.kt @@ -4,9 +4,9 @@ import android.annotation.SuppressLint import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Double Press Exit setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt index 8fc70a5d..d9210413 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt @@ -16,9 +16,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn -import ua.acclorite.book_story.presentation.core.components.GoBackButton -import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState +import ua.acclorite.book_story.presentation.core.components.common.GoBackButton +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.top_bar.collapsibleTopAppBarScrollBehavior import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.ReaderSettingsCategory @@ -31,12 +31,12 @@ fun ReaderSettingsRoot() { @Composable private fun ReaderSettings() { val onNavigate = LocalNavigator.current - val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() + val (scrollBehavior, lazyListState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior() Scaffold( Modifier .fillMaxSize() - .nestedScroll(scrollState.first.nestedScrollConnection) + .nestedScroll(scrollBehavior.nestedScrollConnection) .windowInsetsPadding(WindowInsets.navigationBars), containerColor = MaterialTheme.colorScheme.surface, topBar = { @@ -47,7 +47,7 @@ private fun ReaderSettings() { navigationIcon = { GoBackButton(onNavigate = onNavigate) }, - scrollBehavior = scrollState.first, + scrollBehavior = scrollBehavior, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.surface, scrolledContainerColor = MaterialTheme.colorScheme.surfaceContainer @@ -55,11 +55,11 @@ private fun ReaderSettings() { ) } ) { paddingValues -> - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .padding(top = paddingValues.calculateTopPadding()), - state = scrollState.second + state = lazyListState ) { ReaderSettingsCategory() } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/ReaderSettingsCategory.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/ReaderSettingsCategory.kt index d66eafc0..f57c352c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/ReaderSettingsCategory.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/ReaderSettingsCategory.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CategoryTitle +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.FontSubcategory import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.MiscSubcategory import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.PaddingSubcategory @@ -21,7 +21,7 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.reader.compo * Reader Settings Category. * Contains all Reader settings. * - * @param titleColor Color that [CategoryTitle] has. + * @param titleColor Color that [SettingsCategoryTitle] has. * @param topPadding Top padding to be applied. * @param bottomPadding Bottom padding to be applied. */ diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateSetting.kt index 8e757280..af6efe9e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Check for Text Update setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateToastSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateToastSetting.kt index 20a97807..e6c2840d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateToastSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CheckForTextUpdateToastSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle import ua.acclorite.book_story.presentation.ui.ExpandingTransition /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CutoutPaddingSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CutoutPaddingSetting.kt index 52eed384..2329637b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CutoutPaddingSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/CutoutPaddingSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Cutout Padding setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/DoubleClickTranslationSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/DoubleClickTranslationSetting.kt index 87e30aea..95995c04 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/DoubleClickTranslationSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/DoubleClickTranslationSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Double Click Translation setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontFamilySetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontFamilySetting.kt index bff0001f..255e35c2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontFamilySetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontFamilySetting.kt @@ -7,11 +7,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.ChipsWithTitle /** * Font Family setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontSizeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontSizeSetting.kt index 6e5d9049..dae88296 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontSizeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontSizeSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Font Size setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontStyleSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontStyleSetting.kt index b03d9abb..868d4047 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontStyleSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FontStyleSetting.kt @@ -7,11 +7,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle /** * Font Style setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FullscreenSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FullscreenSetting.kt index 830c041a..86f0530a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FullscreenSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/FullscreenSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Fullscreen setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/HideBarsOnFastScrollSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/HideBarsOnFastScrollSetting.kt index 0c87df08..b5a20cfc 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/HideBarsOnFastScrollSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/HideBarsOnFastScrollSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Hide Bars On Fast Scroll setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/KeepScreenOnSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/KeepScreenOnSetting.kt index c05e0f85..1fd98d4d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/KeepScreenOnSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/KeepScreenOnSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Keep Screen On setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LetterSpacingSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LetterSpacingSetting.kt index ccae6980..65d14056 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LetterSpacingSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LetterSpacingSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Letter Spacing setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LineHeightSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LineHeightSetting.kt index da0573b3..bfcbe527 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LineHeightSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/LineHeightSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Line Height setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphHeightSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphHeightSetting.kt index df195895..6e6ddc1c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphHeightSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphHeightSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Paragraph Height setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphIndentationSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphIndentationSetting.kt index e5f4b865..e873c74f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphIndentationSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ParagraphIndentationSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.ReaderTextAlignment import ua.acclorite.book_story.presentation.ui.ExpandingTransition diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderPaddingSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderPaddingSetting.kt index b0fad0d9..6e63986f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderPaddingSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderPaddingSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Perception Expander Padding setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderSetting.kt index 7a302ade..4dea3caf 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle /** * Perception Expander setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderThicknessSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderThicknessSetting.kt index 75df6c7f..ea2dc03c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderThicknessSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/PerceptionExpanderThicknessSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Perception Expander Thickness setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ScreenOrientationSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ScreenOrientationSetting.kt index 34106e95..b2745e66 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ScreenOrientationSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/ScreenOrientationSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.ChipsWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.ReaderScreenOrientation /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/SidePaddingSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/SidePaddingSetting.kt index 5505754c..75823e28 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/SidePaddingSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/SidePaddingSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Side Padding setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/TextAlignmentSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/TextAlignmentSetting.kt index 81445f73..eaeb8f75 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/TextAlignmentSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/TextAlignmentSetting.kt @@ -5,9 +5,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem +import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.ReaderTextAlignment /** diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/VerticalPaddingSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/VerticalPaddingSetting.kt index f2f353cf..b0a93bda 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/VerticalPaddingSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/components/settings/VerticalPaddingSetting.kt @@ -3,9 +3,9 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.reader.comp import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainViewModel -import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle /** * Vertical Padding setting. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt index 99a513ec..4d780dc0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt @@ -10,9 +10,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.model.ButtonItem -import ua.acclorite.book_story.presentation.core.components.CategoryTitle -import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem +import ua.acclorite.book_story.presentation.core.components.dialog.SelectableDialogItem import ua.acclorite.book_story.presentation.data.MainEvent +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle /** * Language settings. @@ -23,7 +23,7 @@ fun LazyListScope.startLanguageScreen( ) { item { Spacer(modifier = Modifier.height(16.dp)) - CategoryTitle( + SettingsCategoryTitle( title = stringResource(id = R.string.start_language_preferences), color = MaterialTheme.colorScheme.primary ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationScreenItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationScreenItem.kt index 4466174d..8dcc4ff2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationScreenItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationScreenItem.kt @@ -7,8 +7,8 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility -import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar import ua.acclorite.book_story.presentation.screens.start.data.StartNavigationScreen import ua.acclorite.book_story.presentation.screens.start.data.StartViewModel import ua.acclorite.book_story.presentation.ui.Transitions @@ -24,14 +24,14 @@ fun StartNavigationScreenItem( val state = StartViewModel.getState() val listState = rememberLazyListState() - CustomAnimatedVisibility( + AnimatedVisibility( visible = state.value.currentScreen == screen, enter = if (state.value.useBackAnimation) Transitions.BackSlidingTransitionIn else Transitions.SlidingTransitionIn, exit = if (state.value.useBackAnimation) Transitions.BackSlidingTransitionOut else Transitions.SlidingTransitionOut ) { - CustomLazyColumn( + LazyColumnWithScrollbar( Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.surfaceContainerLow), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationTransition.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationTransition.kt index 148e9a5d..546d39e8 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationTransition.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartNavigationTransition.kt @@ -10,7 +10,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.screens.start.data.StartViewModel import ua.acclorite.book_story.presentation.ui.Transitions @@ -28,7 +28,7 @@ fun StartNavigationTransition( ) { val state = StartViewModel.getState() - CustomAnimatedVisibility( + AnimatedVisibility( visible = visible, enter = if (state.value.useBackAnimation) Transitions.BackSlidingTransitionIn else Transitions.SlidingTransitionIn, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionsScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionsScreen.kt index 6cef7267..6ef2740b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionsScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionsScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.core.components.CategoryTitle +import ua.acclorite.book_story.presentation.screens.settings.components.SettingsCategoryTitle import ua.acclorite.book_story.presentation.screens.start.data.StartState /** @@ -24,7 +24,7 @@ fun LazyListScope.startPermissionsScreen( Spacer(modifier = Modifier.height(16.dp)) } item { - CategoryTitle( + SettingsCategoryTitle( modifier = Modifier, title = stringResource(id = R.string.start_permissions_preferences), color = MaterialTheme.colorScheme.primary diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt index 89e5bc3f..1d6c4f31 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt @@ -19,8 +19,8 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.yield +import ua.acclorite.book_story.domain.util.UIViewModel import ua.acclorite.book_story.presentation.core.navigation.Screen -import ua.acclorite.book_story.presentation.core.util.UiViewModel import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject @@ -28,7 +28,7 @@ import javax.inject.Inject @HiltViewModel class StartViewModel @Inject constructor( -) : UiViewModel() { +) : UIViewModel() { companion object { @Composable diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/ui/Transitions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/ui/Transitions.kt index e75811f5..4a9f4580 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/ui/Transitions.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/ui/Transitions.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp -import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility +import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import kotlin.math.roundToInt object Transitions { @@ -54,7 +54,7 @@ fun DefaultTransition( modifier: Modifier = Modifier, content: @Composable () -> Unit ) { - CustomAnimatedVisibility( + AnimatedVisibility( visible = visible, modifier = modifier, enter = Transitions.DefaultTransitionIn, @@ -71,7 +71,7 @@ fun SlidingTransition( content: @Composable () -> Unit ) { val density = LocalDensity.current - CustomAnimatedVisibility( + AnimatedVisibility( visible = visible, modifier = modifier, enter = slideInVertically(tween(300)) { @@ -90,7 +90,7 @@ fun ExpandingTransition( modifier: Modifier = Modifier, content: @Composable () -> Unit ) { - CustomAnimatedVisibility( + AnimatedVisibility( visible = visible, modifier = modifier, enter = expandVertically(tween(400)) + @@ -117,7 +117,7 @@ fun HorizontalExpandingTransition( else shrinkHorizontally() + fadeOut() + slideOutHorizontally { it } } - CustomAnimatedVisibility( + AnimatedVisibility( visible = visible, modifier = modifier, enter = enterAnimation, diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 066bcb14..d5e91bf0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -71,7 +71,6 @@ حدث خطأ ما. من فضلك تحقق إن كان ملف الكتاب ليس تالف. قم بتوسيع مجموعة كتب مكتبتك باستخدام تنزيلاتك تم اختيار %1$s - البحث عن %1$s… لغة التطبيق السمات، الألوان خط @@ -83,14 +82,10 @@ نص نعم، اذهب إلى المساعدة الألوان - تحميل تم تفعيل لا - الملفات تم اختيار «%1$s» - الكتب - التاريخ غير معروف حذف نقل diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 584da368..e6455400 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -29,7 +29,6 @@ Lesen Sie Ihre Lieblingsbücher und sortieren Sie sie nach Kategorien Lassen Sie Ihr letztes gelesenes Buch die Seiten einer neuen großartigen Geschichte Ihrer Lesereise öffnen %1$s ausgewählt - Suche %1$s… Dateipfad: %1$s %1$s aktualisieren Ausgewählt «%1$s» @@ -52,12 +51,8 @@ Bestätigen Nächste Nein - Herunterladen Fertig Aktivieren - Bücher - Dateien - Verlauf Unbekannt Sie müssen mehr lesen! Weiter so! diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 998ad0ef..797b9f1c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -30,7 +30,6 @@ No se encontró ninguna aplicación de navegador. Fuente cerrada %1$s seleccionado - Buscar %1$s… Cancelar Conceder Necesito ayuda @@ -38,7 +37,6 @@ Mover Reintentar ¡Necesitas leer más! - historial ¡Bien hecho, has leído todo el libro! Cambiar portada Elegir nueva portada de sus fotos @@ -115,14 +113,11 @@ Copiar Confirmar Hecho - archivos Deshacer Siguiente No Sí, ir a Ayuda Diccionario - Descargar - libros Habilitar Desconocido Borrar portada diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index d224aabb..a805759f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -33,7 +33,6 @@ Élargissez la collection de livres de la librairie par vos téléchargements Lisez vos livres préférés et classez-les par catégories %1$s sélectionné - Chercher %1$s… Chemin de fichier: %1$s Mise à jour %1$s Préréglage %1$s @@ -53,13 +52,10 @@ Prochain Oui, allez vers l\'aide Non - Télécharger Fini Activer Recherche Web Partager - Fichiers - Livres Inconnu Continuez! Vous devez lire plus! @@ -276,7 +272,6 @@ J\'ai besoin d\'aide Ajouter Ajouter un livre - Historique Couleurs Paramètres Générales Trier diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e7aaa1cd..2f5c70da 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -13,12 +13,9 @@ Potwierdź Dalej Nie - Pobierz Gotowe Włącz Udostępnij - książki - historia Nieznany Autor Ogólne @@ -42,7 +39,6 @@ Usuń Rozpocznij Dodaj - pliki Sortuj Czerwony Ogólne @@ -94,7 +90,6 @@ Przeczytaj swoje ulubione książki i posortuj je między kategoriami Niech ostatnia czytana książka otworzy strony nowej wspaniałej historii twojej czytelniczej podróży Wybrano %1$s - Wyszukaj %1$s… Ścieżka pliku: %1$s Zaktualizuj %1$s Wyszukiwanie w sieci diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 89dd8153..9fd9a10b 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -48,7 +48,6 @@ Favori kitaplarınızı okuyun ve kategoriler arasında sıralayın Son okuduğunuz kitabın, okuma yolculuğunuzun yeni harika hikayesinin sayfalarını açmasına izin verin %1$s seçildi - %1$s ara… Dosya yolu: %1$s %1$s güncelle Ön ayar %1$s @@ -74,14 +73,10 @@ İleri Evet, Yardım\'a git Hayır - İndir Tamam Etkinleştir Web\'de ara Paylaş - dosyalar - kitaplar - geçmiş Bilinmiyor Daha fazla okumanız gerekiyor! Devam edin! diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3a8684cf..b6eff671 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -117,6 +117,9 @@ Закритий код + + Пошук… + Розширюйте книжковий арсенал бібліотеки своїми завантаженнями @@ -130,7 +133,6 @@ %1$s обрано - Знайти %1$s… Шлях до файлу: %1$s Оновлення %1$s Пресет %1$s @@ -158,18 +160,12 @@ Далі Так, перейти в Допомога Ні - Завантажити Готово Увімкнути Веб-пошук Поділитися Продовжити - - файли - книги - історію - Невідомий Вам потрібно читати більше! diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9dad8cd1..5080f4ae 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,11 +4,9 @@ 删除阅读历史? 删除书? - 下载 启用 网络搜索 分享 - 文件 完成 从你的图库中选择新封面 删除封面图片 @@ -53,7 +51,6 @@ 通过您的下载来拓展库中的书集 阅读您喜欢的书并对其进行分类 让您读完的最后一本书为您打开阅读之旅的新篇章 - 搜索 %1$s… 文件路径:%1$s 已选择《%1$s》 授予 @@ -63,7 +60,6 @@ 重试 确认 下一个 - 历史 未知 干得好,你已经读完了整本书! 修改封面图片 @@ -86,7 +82,6 @@ 翻译 复制 已选择 %1$s - 开始 启用检查更新? 删除书? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4d9c365a..5c6de783 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -119,6 +119,9 @@ Closed source + + Search… + Expand the library\'s book collection with your downloads @@ -131,7 +134,6 @@ %1$s selected - Search %1$s… File path: %1$s Update %1$s Preset %1$s @@ -159,18 +161,12 @@ Next Yes, go to Help No - Download Done Enable Web search Share Proceed - - files - books - history - Unknown You need to read more!