From 76830a526baa39c679361cfb6b16306eb87780f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Qu=E1=BA=BF=20T=C3=B9ng?= <47247560+ZoeMeow1027@users.noreply.github.com> Date: Mon, 23 Sep 2024 01:28:37 +0700 Subject: [PATCH 1/3] Update night work :)) --- .idea/inspectionProfiles/Project_Default.xml | 24 ++ app/build.gradle | 68 ++++-- app/libs/dutwrapper-1.11.1-patch1.jar | Bin 0 -> 58608 bytes .../dutschedule/activity/BaseActivity.kt | 13 +- .../activity/PermissionsActivity.kt | 2 +- .../zoemeow/dutschedule/di/LocaleService.kt | 105 +++++++++ .../repository/FileModuleRepository.kt | 4 +- .../ui/component/{base => }/ButtonBase.kt | 2 +- .../ui/component/{base => }/CheckboxOption.kt | 2 +- .../ui/component/{base => }/DataAdjuster.kt | 2 +- .../ui/component/{base => }/DialogBase.kt | 4 +- .../{base => }/DialogCheckboxButton.kt | 2 +- .../component/{base => }/DialogRadioButton.kt | 2 +- .../ui/component/{base => }/DividerItem.kt | 2 +- .../{base => }/OptionCheckBoxItem.kt | 2 +- .../ui/component/{base => }/OptionItem.kt | 2 +- .../component/{base => }/OptionSwitchItem.kt | 2 +- .../component/{base => }/OutlinedTextBox.kt | 2 +- .../component/{base => }/RadioButtonOption.kt | 2 +- .../ui/component/{base => }/SimpleCardItem.kt | 2 +- .../{base => }/SwitchWithTextInSurface.kt | 2 +- .../ui/component/{base => }/Tag.kt | 2 +- .../ui/component/news/NewsPopup.kt | 150 ------------ .../ui/view/account/AccountInformation.kt | 2 +- .../dutschedule/ui/view/account/MainView.kt | 8 +- .../dutschedule/ui/view/account/SubjectFee.kt | 2 +- .../ui/view/account/SubjectInformation.kt | 4 +- .../ui/view/account/TrainingResult.kt | 9 +- .../ui/view/account/TrainingSubjectResult.kt | 5 +- .../account/controls}/AccountInfoBanner.kt | 2 +- .../controls}/AccountSubjectFeeInformation.kt | 4 +- .../controls}/AccountSubjectInformation.kt | 2 +- .../AccountSubjectMoreInformation.kt | 4 +- .../account/controls}/LoginBox.kt | 2 +- .../account/controls}/LogoutDialog.kt | 4 +- .../account/controls}/SubjectResult.kt | 4 +- .../ui/view/main/MainViewDashboard.kt | 10 +- .../ui/view/main/MainViewTabView.kt | 2 +- .../ui/view/main/NotificationScaffold.kt | 2 +- .../controls}/AffectedLessonsSummaryItem.kt | 2 +- .../main/controls}/DateAndTimeSummaryItem.kt | 2 +- .../main/controls}/LessonsTodaySummaryItem.kt | 2 +- .../main => view/main/controls}/NavButton.kt | 4 +- .../main/controls}/NotificationItem.kt | 2 +- .../main/controls}/SchoolNewsSummaryItem.kt | 2 +- .../main/controls}/SummaryItem.kt | 4 +- .../controls}/UpdateAvailableSummaryItem.kt | 2 +- .../ui/view/miscellaneous/ExternalLinks.kt | 2 +- .../controls}/ClickableExternalLinks.kt | 2 +- .../dutschedule/ui/view/news/MainView.kt | 3 +- .../dutschedule/ui/view/news/NewsDetail.kt | 2 +- .../dutschedule/ui/view/news/NewsSearch.kt | 4 +- .../news/controls}/NewsDetailScreen.kt | 6 +- .../news/controls}/NewsListItem.kt | 2 +- .../news/controls}/NewsListPage.kt | 2 +- .../ui/view/news/controls/NewsPopup.kt | 214 ++++++++++++++++++ .../controls}/NewsSearchOptionAndHistory.kt | 3 +- .../news/controls}/NewsSearchResult.kt | 2 +- .../controls}/PermissionInformation.kt | 2 +- .../ui/view/settings/AboutSettings.kt | 2 +- .../ui/view/settings/ExperimentSettings.kt | 22 +- .../ui/view/settings/LanguageSettings.kt | 145 ++++++------ .../dutschedule/ui/view/settings/MainView.kt | 17 +- .../view/settings/NewsNotificationSettings.kt | 70 +++--- .../settings/ParseNewsSubjectNotification.kt | 2 +- .../ui/view/settings/WallpaperSettings.kt | 8 +- .../settings/controls}/AddASubjectFilter.kt | 4 +- .../settings/controls}/ContentRegion.kt | 2 +- .../controls}/DeleteASubjectFilterDialog.kt | 4 +- .../controls}/DeleteAllSubjectFilterDialog.kt | 4 +- .../controls}/DialogAppThemeSettings.kt | 8 +- .../controls}/DialogSchoolYearSettings.kt | 6 +- .../ui/view/settings/controls/LanguageItem.kt | 57 +++++ .../settings/controls}/SliderWithValue.kt | 4 +- .../dutschedule/utils/ActivityUtils.kt | 20 ++ .../res/drawable/ic_outline_encrypted_24.xml | 5 + app/src/main/res/resources.properties | 2 +- app/src/main/res/values-vi/strings.xml | 5 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/xml/locales_config.xml | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- settings.gradle | 12 +- 83 files changed, 718 insertions(+), 422 deletions(-) create mode 100644 app/libs/dutwrapper-1.11.1-patch1.jar create mode 100644 app/src/main/java/io/zoemeow/dutschedule/di/LocaleService.kt rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/ButtonBase.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/CheckboxOption.kt (96%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/DataAdjuster.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/DialogBase.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/DialogCheckboxButton.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/DialogRadioButton.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/DividerItem.kt (91%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/OptionCheckBoxItem.kt (94%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/OptionItem.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/OptionSwitchItem.kt (96%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/OutlinedTextBox.kt (93%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/RadioButtonOption.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/SimpleCardItem.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/SwitchWithTextInSurface.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/component/{base => }/Tag.kt (96%) delete mode 100644 app/src/main/java/io/zoemeow/dutschedule/ui/component/news/NewsPopup.kt rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/AccountInfoBanner.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/AccountSubjectFeeInformation.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/AccountSubjectInformation.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/AccountSubjectMoreInformation.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/LoginBox.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/LogoutDialog.kt (93%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/account => view/account/controls}/SubjectResult.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/AffectedLessonsSummaryItem.kt (96%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/DateAndTimeSummaryItem.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/LessonsTodaySummaryItem.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/NavButton.kt (95%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/NotificationItem.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/SchoolNewsSummaryItem.kt (95%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/SummaryItem.kt (91%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/main => view/main/controls}/UpdateAvailableSummaryItem.kt (96%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/helpandexternallink => view/miscellaneous/controls}/ClickableExternalLinks.kt (95%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/news => view/news/controls}/NewsDetailScreen.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/news => view/news/controls}/NewsListItem.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/news => view/news/controls}/NewsListPage.kt (98%) create mode 100644 app/src/main/java/io/zoemeow/dutschedule/ui/view/news/controls/NewsPopup.kt rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/news => view/news/controls}/NewsSearchOptionAndHistory.kt (99%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/news => view/news/controls}/NewsSearchResult.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/permissionrequest => view/permissionrequest/controls}/PermissionInformation.kt (98%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/AddASubjectFilter.kt (97%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/ContentRegion.kt (94%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/DeleteASubjectFilterDialog.kt (95%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/DeleteAllSubjectFilterDialog.kt (95%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/DialogAppThemeSettings.kt (94%) rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/DialogSchoolYearSettings.kt (98%) create mode 100644 app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/controls/LanguageItem.kt rename app/src/main/java/io/zoemeow/dutschedule/ui/{component/settings => view/settings/controls}/SliderWithValue.kt (97%) create mode 100644 app/src/main/res/drawable/ic_outline_encrypted_24.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 44ca2d9..b67486e 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -1,6 +1,30 @@ \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 5d77963..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/icon.svg b/.idea/icon.svg deleted file mode 100644 index db2cdb5..0000000 --- a/.idea/icon.svg +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index b67486e..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index 6d0ee1c..0000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml deleted file mode 100644 index f8051a6..0000000 --- a/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 8978d23..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml deleted file mode 100644 index 1ad4fcf..0000000 --- a/.idea/runConfigurations/app.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index c7cc539..37971dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,35 +6,58 @@ ## Known issues - `Your current wallpaper` option in app background settings will be disabled on Android 14 and later. You can check why in `Issue` tab in repository. +## 2.0-draft23 (1882) +- Just a version about improve codes :) + +
+More details for developments + +- [Implemented] Updated dependencies to latest. + - [Changed] Updated `dutwrapper` dependency with `jar` file (due to GitHub Packages limitation). + - [Changed] Updated AGP to 8.7.0. +- [Changed] Permission Request activity has been merged with Miscellaneous activity. +
+ ## 2.0-draft22 (1702) +- [Changed] Add a button to copy all information to clipboard in `Training Result` -> `Subject Result`. +- [Fixed] Fix a issue cause save settings slower than expected when enable background image. + +
+More details for developments + - [Implemented] Updated dependencies to latest. - [Changed] Updated `dutwrapper` dependency with GitHub Packages. - [Changed] Removed all deprecated functions due to updated dependencies. -- [Changed] Add a button to copy all information to clipboard in `Training Result` -> `Subject Result`. -- [Fixed] Fix a issue cause save settings slower than expected when enable background image. +
## 2.0-draft21 (1653) - [Changed] Wallpaper settings and background opacity/component opacity will be grouped into one. - [Fixed] Fix a issue cause account session remains even after logged out. ## 2.0-draft20 (1638) -- [Implemented] Updated dependencies to latest. - - [Changed] Need to modify any file to update functions about `dutwrapper` dependency. - [Changed] This application will no longer direct links when URL Protocol is used (ex: example://,...). - A option that enable them will be available in future version. +
+More details for developments + +- [Implemented] Updated dependencies to latest. + - [Changed] Need to modify any file to update functions about `dutwrapper` dependency. +
+ ## 2.0-draft19 (1605) - [Reworked] Account Training Subject Result screen. +- [Fixed] Account Training Result score isn't readable when in dark mode. + +
+More details for developments + - [Implemented] Update dependencies to latest. - This will resolve crash app when sv.dut.udn.vn is not reachable. -- [Fixed] Account Training Result score isn't readable when in dark mode. - [Changed] Removed ~~NewsGlobalGroupByDate~~, ~~NewsSubjectGroupByDate~~. +
## 2.0-draft18 (1448) -- [Implemented] Update dependencies to latest - - Gradle to 8.8 - - AGP to 8.5.0 - - This will resolve login issue when server rebooted - [Implemented] When you're failed when logging in but done it before, this will show a option for you to re-login instead. - [Implemented] Improve Vietnamese strings - [Changed] SchoolYearChooser will choose between two arrows instead of ComboBox @@ -45,22 +68,36 @@ - [Changed] Main Screen (tab mode) - Remove SnackbarState in Notifications (fixes duplicate SnackbarState) +
+More details for developments + +- [Implemented] Update dependencies to latest + - Gradle to 8.8 + - AGP to 8.5.0 + - This will resolve login issue when server rebooted +
+ ## 2.0-draft17 (1404) -- [Reworked] Subject Fee (not final yet). - [New] News notification settings: Change your preferences about news notifications. - [New] Add a option to get current school year from Internet. - To access that, please go to `Settings` -> `Experiment Settings` -> `Current School Year`. +- [Reworked] Subject Fee (not final yet). - [Implemented] Login screen will let you relogin if previous attempt was failed. - You can clear previous login to attempt with another account. - [Implemented] Now you can turn off notifications about news global and news subject. - In news subject notifications, you can choose about "All", "Match your filter" and "Off". - News filter settings will now only shown when enabled (this mean it will hidden at default). - [Implemented] Update Vietnamese strings for most screens, but not done yet. -- [Implemented] Optimized codes and updated dependencies to latest. - - Updated dependencies to latest to fix issues about Account feature. - [Fixed] [#24](https://github.com/ZoeMeow1027/DutSchedule/issues/24). - [Known Issue] Some settings won't load after update. You might need to reconfig them in settings. I'm sorry about that. +
+More details for developments + +- [Implemented] Optimized codes and updated dependencies to latest. + - Updated dependencies to latest to fix issues about Account feature. +
+ ## 2.0-draft16 (1063) - AccountActivity: - Add option to refresh login when previous is failed. diff --git a/app/build.gradle b/app/build.gradle index 68baa7f..ef4ed7a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { applicationId "io.zoemeow.dutschedule" minSdk 21 targetSdkVersion 35 - versionCode 1702 + versionCode 1882 versionName "2.0-draft22" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -65,19 +65,19 @@ dependencies { implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.6' implementation 'androidx.activity:activity-compose:1.9.2' - implementation platform('androidx.compose:compose-bom:2024.09.02') - implementation "androidx.compose.ui:ui:1.7.2" - implementation "androidx.compose.ui:ui-tooling-preview:1.7.2" - implementation platform('androidx.compose:compose-bom:2024.09.02') + implementation platform('androidx.compose:compose-bom:2024.09.03') + implementation "androidx.compose.ui:ui:1.7.3" + implementation "androidx.compose.ui:ui-tooling-preview:1.7.3" + implementation platform('androidx.compose:compose-bom:2024.09.03') implementation 'androidx.compose.ui:ui-graphics' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.2.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' - androidTestImplementation platform('androidx.compose:compose-bom:2024.09.02') - androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.7.2" - androidTestImplementation platform('androidx.compose:compose-bom:2024.09.02') - debugImplementation "androidx.compose.ui:ui-tooling:1.7.2" - debugImplementation "androidx.compose.ui:ui-test-manifest:1.7.2" + androidTestImplementation platform('androidx.compose:compose-bom:2024.09.03') + androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.7.3" + androidTestImplementation platform('androidx.compose:compose-bom:2024.09.03') + debugImplementation "androidx.compose.ui:ui-tooling:1.7.3" + debugImplementation "androidx.compose.ui:ui-test-manifest:1.7.3" implementation "androidx.appcompat:appcompat:1.7.0" implementation "androidx.appcompat:appcompat-resources:1.7.0" @@ -85,7 +85,7 @@ dependencies { implementation 'androidx.core:core-splashscreen:1.2.0-alpha02' // https://mvnrepository.com/artifact/androidx.navigation/navigation-compose - implementation 'androidx.navigation:navigation-compose:2.8.1' + implementation 'androidx.navigation:navigation-compose:2.8.2' // https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-viewmodel-ktx runtimeOnly 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.6' @@ -94,7 +94,7 @@ dependencies { runtimeOnly 'androidx.lifecycle:lifecycle-viewmodel-compose:2.8.6' // https://mvnrepository.com/artifact/androidx.fragment/fragment-ktx - runtimeOnly 'androidx.fragment:fragment-ktx:1.8.3' + runtimeOnly 'androidx.fragment:fragment-ktx:1.8.4' // Material design implementation 'com.google.android.material:material:1.12.0' diff --git a/app/src/main/java/io/zoemeow/dutschedule/GlobalVariables.kt b/app/src/main/java/io/zoemeow/dutschedule/GlobalVariables.kt index 09da369..df6d901 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/GlobalVariables.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/GlobalVariables.kt @@ -4,8 +4,8 @@ import androidx.compose.ui.unit.dp class GlobalVariables { companion object { - const val LINK_FORGOT_PASSWORD = "https://github.com/ZoeMeow1027/DutSchedule/wiki/Changing-Password-In-DUT#qu%C3%AAn-m%E1%BA%ADt-kh%E1%BA%A9u" const val LINK_REPOSITORY = "https://github.com/ZoeMeow1027/DutSchedule" + const val LINK_FORGOT_PASSWORD = "${LINK_REPOSITORY}/wiki/Changing-Password-In-DUT#qu%C3%AAn-m%E1%BA%ADt-kh%E1%BA%A9u" const val LINK_REPOSITORY_LICENSE = "${LINK_REPOSITORY}/blob/stable/LICENSE" const val LINK_REPOSITORY_CREDITS = "${LINK_REPOSITORY}?tab=readme-ov-file#credits-and-license" const val LINK_REPOSITORY_RELEASE = "${LINK_REPOSITORY}/releases" diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/components/ButtonBase.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/components/ButtonBase.kt index 11bf637..02cdb80 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/components/ButtonBase.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/components/ButtonBase.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables @Composable fun ButtonBase( @@ -37,7 +38,7 @@ fun ButtonBase( content: @Composable RowScope.() -> Unit, isOutlinedButton: Boolean = false, horizontalArrangement: Arrangement.Horizontal = Arrangement.Center, - cornerSize: Dp = 5.dp, + cornerSize: Dp = GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE, opacity: Float = 1f ) { Surface( @@ -48,7 +49,7 @@ fun ButtonBase( if (opacity == 1f) 2.dp else 0.dp, MaterialTheme.colorScheme.inversePrimary ), - shape = RoundedCornerShape(5.dp) + shape = RoundedCornerShape(cornerSize) ) .run { if (isEnabled) return@run this.clickable { clicked?.let { it() } } diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/components/DialogBase.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/components/DialogBase.kt index c63a0a3..be6980f 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/components/DialogBase.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/components/DialogBase.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties +import io.zoemeow.dutschedule.GlobalVariables @Composable fun DialogBase( @@ -67,7 +68,7 @@ fun DialogBase( indication = null, ) { }, color = MaterialTheme.colorScheme.secondaryContainer, - shape = RoundedCornerShape(10.dp), + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE), content = { Column( horizontalAlignment = Alignment.Start, @@ -105,86 +106,3 @@ fun DialogBase( ) } } - -@Composable -fun DialogBaseLegacy( - content: @Composable () -> Unit, - actionButtons: @Composable (RowScope.() -> Unit)? = null, - title: String, - padding: PaddingValues = PaddingValues(0.dp), - isVisible: Boolean = false, - canDismiss: Boolean = true, - dismissClicked: (() -> Unit)? = null, - isTitleCentered: Boolean = false, - fillMaxWidth: Boolean = true, - fillMaxHeight: Boolean = false, - enterTransition: EnterTransition = fadeIn(animationSpec = tween(200)), - exitTransition: ExitTransition = fadeOut(animationSpec = tween(200)), -) { - val modifier: MutableState = remember { - mutableStateOf( - Modifier.padding(padding) - ) - } - modifier.value = - if (fillMaxWidth) modifier.value.fillMaxWidth() else modifier.value.wrapContentWidth() - modifier.value = - if (fillMaxHeight) modifier.value.fillMaxHeight() else modifier.value.wrapContentHeight() - - AnimatedVisibility( - visible = isVisible, - enter = enterTransition, - exit = exitTransition, - content = { - Surface( - modifier = Modifier - .fillMaxSize() - .clickable { - if (canDismiss) { - dismissClicked?.let { it() } - } - }, - color = MaterialTheme.colorScheme.background.copy(alpha = 0.7f), - content = { - Surface( - color = MaterialTheme.colorScheme.secondaryContainer, - modifier = modifier.value - .clip(RoundedCornerShape(7.dp)) - .clickable { }, - content = { - Column( - horizontalAlignment = Alignment.Start, - verticalArrangement = Arrangement.Top, - modifier = Modifier.padding(20.dp), - ) { - Column( - horizontalAlignment = if (isTitleCentered) Alignment.CenterHorizontally else Alignment.Start, - verticalArrangement = Arrangement.Top, - modifier = Modifier.fillMaxWidth(), - ) { - Text( - title, - style = TextStyle(fontSize = 27.sp), - modifier = Modifier.padding(bottom = 15.dp) - ) - } - content() - actionButtons?.let { - Row( - horizontalArrangement = Arrangement.End, - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight() - .padding(top = 10.dp), - content = it, - ) - } - } - }, - ) - } - ) - } - ) -} \ No newline at end of file diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/components/SimpleCardItem.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/components/SimpleCardItem.kt index eee7ed3..1ff96ab 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/components/SimpleCardItem.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/components/SimpleCardItem.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables @Composable fun SimpleCardItem( @@ -38,7 +39,7 @@ fun SimpleCardItem( .fillMaxWidth() .wrapContentHeight() .padding(padding) - .clip(RoundedCornerShape(7.dp)) + .clip(RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE)) .background(MaterialTheme.colorScheme.secondaryContainer.copy(alpha = opacity)) .run { if (clicked != null) return@run this.clickable { clicked() } diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/MainViewDashboard.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/MainViewDashboard.kt index a4e7f2a..dcfa7b0 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/MainViewDashboard.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/MainViewDashboard.kt @@ -80,7 +80,7 @@ fun Activity_MainView_Dashboard( topBar = { TopAppBar( title = { Text(text = context.getString(R.string.app_name)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/controls/NotificationItem.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/controls/NotificationItem.kt index 9f492db..0ee995e 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/controls/NotificationItem.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/main/controls/NotificationItem.kt @@ -28,6 +28,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.model.NotificationHistory import io.zoemeow.dutschedule.utils.CustomDateUtils @@ -51,7 +52,7 @@ fun NotificationItem( ) { Surface( modifier = modifier.clickable { onClick?.let { it() } }, - shape = RoundedCornerShape(5.dp), + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE), color = MaterialTheme.colorScheme.secondaryContainer.copy(alpha = opacity), content = { Row( diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/PermissionRequest.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/PermissionRequest.kt index 35475d9..668471a 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/PermissionRequest.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/PermissionRequest.kt @@ -17,21 +17,20 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.model.AppearanceState -import io.zoemeow.dutschedule.ui.view.permissionrequest.controls.PermissionInformation +import io.zoemeow.dutschedule.ui.view.miscellaneous.controls.PermissionInformation import io.zoemeow.dutschedule.utils.PermissionUtils @OptIn(ExperimentalMaterial3Api::class) @@ -46,19 +45,16 @@ fun Activity_Miscellaneous_PermissionRequest( onMessageReceived: ((String, Boolean) -> Unit)? = null, onBack: (() -> Unit)? = null ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - Scaffold( modifier = Modifier - .fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + .fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(text = context.getString(R.string.activity_permissionrequest_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors(containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent), + colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent), navigationIcon = { IconButton( onClick = { @@ -72,8 +68,7 @@ fun Activity_Miscellaneous_PermissionRequest( ) } ) - }, - scrollBehavior = scrollBehavior + } ) }, bottomBar = { diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/ClickableExternalLinks.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/ClickableExternalLinks.kt index e375f7f..b9e66ea 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/ClickableExternalLinks.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/ClickableExternalLinks.kt @@ -12,6 +12,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.model.HelpLinkInfo @Composable @@ -28,7 +29,7 @@ fun ClickableExternalLinks( else return@run this }, color = MaterialTheme.colorScheme.secondaryContainer.copy(alpha = opacity), - shape = RoundedCornerShape(10.dp) + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE) ) { Column( modifier = Modifier.padding(horizontal = 15.dp, vertical = 10.dp) diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/permissionrequest/controls/PermissionInformation.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/PermissionInformation.kt similarity index 91% rename from app/src/main/java/io/zoemeow/dutschedule/ui/view/permissionrequest/controls/PermissionInformation.kt rename to app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/PermissionInformation.kt index 2dc19b3..341c732 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/permissionrequest/controls/PermissionInformation.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/miscellaneous/controls/PermissionInformation.kt @@ -1,4 +1,4 @@ -package io.zoemeow.dutschedule.ui.view.permissionrequest.controls +package io.zoemeow.dutschedule.ui.view.miscellaneous.controls import android.content.Context import androidx.compose.foundation.BorderStroke @@ -27,10 +27,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.R @Composable -fun PermissionInformation( + fun PermissionInformation( context: Context, title: String, permissionCode: String? = null, @@ -47,9 +48,9 @@ fun PermissionInformation( .wrapContentHeight() .border( border = BorderStroke(3.dp, if (isGranted) Color.Green else if (isRequired) Color.Red else Color(0xFFfc9003)), - shape = RoundedCornerShape(7.dp), + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE), ) - .clip(shape = RoundedCornerShape(7.dp)) + .clip(shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE)) .clickable { clicked?.let { it() } }, color = MaterialTheme.colorScheme.onSecondary.copy(alpha = opacity), content = { @@ -74,7 +75,7 @@ fun PermissionInformation( modifier = Modifier.padding(vertical = 5.dp), color = if (isGranted) Color.Green else Color.Red, contentColor = if (isGranted) Color.Black else Color.White, - shape = RoundedCornerShape(15.dp) + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE) ) { Row( modifier = Modifier.padding(horizontal = 10.dp, vertical = 3.dp), diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/MainView.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/MainView.kt index 04e76bf..af711b0 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/MainView.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/MainView.kt @@ -30,6 +30,7 @@ import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.Tab import androidx.compose.material3.Text import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults @@ -43,6 +44,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.google.android.material.tabs.TabLayout import com.google.gson.Gson import io.dutwrapper.dutwrapper.News.NewsItem import io.zoemeow.dutschedule.R diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/NewsDetail.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/NewsDetail.kt index 9e16ccf..a16856e 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/NewsDetail.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/NewsDetail.kt @@ -12,17 +12,16 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -46,18 +45,15 @@ fun Activity_News_NewsDetail( onMessageReceived: (String, Boolean, String?, (() -> Unit)?) -> Unit, // (msg, forceDismissBefore, actionText, action) onBack: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - Scaffold( - modifier = Modifier.fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.news_detail_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -74,8 +70,7 @@ fun Activity_News_NewsDetail( ) } ) - }, - scrollBehavior = scrollBehavior + } ) }, floatingActionButton = { diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/controls/NewsListItem.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/controls/NewsListItem.kt index 0dbfb90..aa5c698 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/controls/NewsListItem.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/news/controls/NewsListItem.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.utils.CustomDateUtils @Composable @@ -33,7 +34,7 @@ fun NewsListItem( .fillMaxWidth() .padding(vertical = 5.dp) // https://www.android--code.com/2021/09/jetpack-compose-box-rounded-corners_25.html - .clip(RoundedCornerShape(10.dp)) + .clip(RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE)) //.background(MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 1.0f)) .clickable { onClick?.let { it() } diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/AboutSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/AboutSettings.kt index 4dd0e60..45dc6c9 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/AboutSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/AboutSettings.kt @@ -23,6 +23,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -49,19 +50,15 @@ fun Activity_Settings_AboutApplication( onLinkClicked: ((String) -> Unit)? = null, onBack: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - Scaffold( - modifier = Modifier - .fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_about_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -78,8 +75,7 @@ fun Activity_Settings_AboutApplication( ) } ) - }, - scrollBehavior = scrollBehavior + } ) } ) { paddingValues -> diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ExperimentSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ExperimentSettings.kt index f3d2463..65fa374 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ExperimentSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ExperimentSettings.kt @@ -13,18 +13,17 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.model.AppearanceState @@ -46,19 +45,17 @@ fun Activity_Settings_ExperimentSettings( onMessageReceived: (String, Boolean, String?, (() -> Unit)?) -> Unit, // (msg, forceDismissBefore, actionText, action) onBack: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() val dialogSchoolYear = remember { mutableStateOf(false) } Scaffold( - modifier = Modifier.fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_experiment_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -75,8 +72,7 @@ fun Activity_Settings_ExperimentSettings( ) } ) - }, - scrollBehavior = scrollBehavior + } ) }, content = { diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/LanguageSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/LanguageSettings.kt index b0f5194..d45559b 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/LanguageSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/LanguageSettings.kt @@ -14,19 +14,18 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.di.LocaleService @@ -46,20 +45,17 @@ fun Activity_Settings_AppLanguageSettings( onNotificationRegister: () -> Unit, onBack: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() val pendingTag = remember { mutableStateOf("") } Scaffold( - modifier = Modifier - .fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_applanguage_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -76,8 +72,7 @@ fun Activity_Settings_AppLanguageSettings( ) } ) - }, - scrollBehavior = scrollBehavior + } ) }, content = { diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/MainView.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/MainView.kt index 9fe7f28..b8b1a1b 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/MainView.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/MainView.kt @@ -19,11 +19,11 @@ import androidx.compose.material.icons.filled.Notifications import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -32,7 +32,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp import io.zoemeow.dutschedule.BuildConfig @@ -61,20 +60,17 @@ fun Activity_Settings( onMessageReceived: ((String, Boolean, String?, (() -> Unit)?) -> Unit)? = null, onBack: (() -> Unit)? = null ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - val dialogAppTheme: MutableState = remember { mutableStateOf(false) } Scaffold( - modifier = Modifier.fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { snackBarHostState?.let { SnackbarHost(hostState = it) } }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -93,8 +89,7 @@ fun Activity_Settings( } ) } - }, - scrollBehavior = scrollBehavior + } ) }, content = { diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/NewsNotificationSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/NewsNotificationSettings.kt index d920698..54880a8 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/NewsNotificationSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/NewsNotificationSettings.kt @@ -25,7 +25,6 @@ import androidx.compose.material3.ElevatedButton import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Slider @@ -34,6 +33,7 @@ import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SuggestionChip import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -43,7 +43,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.zoemeow.dutschedule.R @@ -55,8 +54,8 @@ import io.zoemeow.dutschedule.ui.components.OptionItem import io.zoemeow.dutschedule.ui.components.RadioButtonOption import io.zoemeow.dutschedule.ui.components.SimpleCardItem import io.zoemeow.dutschedule.ui.components.SwitchWithTextInSurface -import io.zoemeow.dutschedule.ui.view.settings.controls.Dialog_Settings_NewsNotificationSettings_Add import io.zoemeow.dutschedule.ui.view.settings.controls.ContentRegion +import io.zoemeow.dutschedule.ui.view.settings.controls.Dialog_Settings_NewsNotificationSettings_Add import io.zoemeow.dutschedule.ui.view.settings.controls.Dialog_Settings_NewsNotificationSettings_ClearAll import io.zoemeow.dutschedule.ui.view.settings.controls.Dialog_Settings_NewsNotificationSettings_Delete @@ -80,7 +79,6 @@ fun Activity_Settings_NewsNotificationSettings( onSubjectFilterDelete: ((SubjectCode) -> Unit)? = null, onSubjectFilterClear: (() -> Unit)? = null ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() val durationTemp = remember { mutableIntStateOf(fetchNewsInBackgroundDuration) } @@ -91,8 +89,7 @@ fun Activity_Settings_NewsNotificationSettings( val dialogDeleteAll = remember { mutableStateOf(false) } Scaffold( - modifier = Modifier.fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { snackBarHostState?.let { SnackbarHost(hostState = it) @@ -101,9 +98,9 @@ fun Activity_Settings_NewsNotificationSettings( containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_newsnotify_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -120,8 +117,7 @@ fun Activity_Settings_NewsNotificationSettings( ) } ) - }, - scrollBehavior = scrollBehavior + } ) } ) { paddingValues -> diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ParseNewsSubjectNotification.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ParseNewsSubjectNotification.kt index 3a02c3f..6e18186 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ParseNewsSubjectNotification.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/ParseNewsSubjectNotification.kt @@ -16,22 +16,22 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.model.AppearanceState import io.zoemeow.dutschedule.ui.components.SwitchWithTextInSurface @@ -46,18 +46,15 @@ fun Activity_Settings_ParseNewsSubjectNotification( onChange: () -> Unit, onBack: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - Scaffold( - modifier = Modifier.fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_parsenewssubject_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -74,8 +71,7 @@ fun Activity_Settings_ParseNewsSubjectNotification( ) } ) - }, - scrollBehavior = scrollBehavior + } ) }, content = { @@ -89,7 +85,7 @@ fun Activity_Settings_ParseNewsSubjectNotification( .fillMaxWidth() .padding(horizontal = 20.dp) .padding(bottom = 5.dp), - shape = RoundedCornerShape(30.dp), + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE), color = MaterialTheme.colorScheme.secondaryContainer.copy( alpha = appearanceState.componentOpacity ), diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/WallpaperSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/WallpaperSettings.kt index 7d93adc..4bbef88 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/WallpaperSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/WallpaperSettings.kt @@ -14,16 +14,15 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -50,12 +49,8 @@ fun Activity_Settings_WallpaperAndControlsSettings( valueComponentOpacity: Float = 1f, onValueComponentOpacityChanged: ((Float) -> Unit)? = null ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() - Scaffold( - modifier = Modifier - .fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.fillMaxSize(), snackbarHost = { snackBarHostState?.let { SnackbarHost(hostState = it) @@ -64,9 +59,9 @@ fun Activity_Settings_WallpaperAndControlsSettings( containerColor = appearanceState.containerColor, contentColor = appearanceState.contentColor, topBar = { - LargeTopAppBar( + TopAppBar( title = { Text(context.getString(R.string.settings_wallpaperandcontrols_title)) }, - colors = TopAppBarDefaults.largeTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = Color.Transparent, scrolledContainerColor = Color.Transparent ), @@ -83,8 +78,7 @@ fun Activity_Settings_WallpaperAndControlsSettings( ) } ) - }, - scrollBehavior = scrollBehavior + } ) } ) { paddingValues -> diff --git a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/controls/DialogSchoolYearSettings.kt b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/controls/DialogSchoolYearSettings.kt index 7889eda..589f151 100644 --- a/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/controls/DialogSchoolYearSettings.kt +++ b/app/src/main/java/io/zoemeow/dutschedule/ui/view/settings/controls/DialogSchoolYearSettings.kt @@ -28,6 +28,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import io.dutwrapper.dutwrapper.Utils +import io.zoemeow.dutschedule.GlobalVariables import io.zoemeow.dutschedule.R import io.zoemeow.dutschedule.model.ProcessState import io.zoemeow.dutschedule.model.account.SchoolYearItem @@ -108,7 +109,7 @@ fun DialogSchoolYearSettings( ) Surface( modifier = Modifier.fillMaxWidth(), - shape = RoundedCornerShape(10.dp) + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE) ) { Column( modifier = Modifier.padding(10.dp) @@ -139,7 +140,7 @@ fun DialogSchoolYearSettings( } Surface( modifier = Modifier.fillMaxWidth().padding(top = 10.dp, bottom = 7.dp), - shape = RoundedCornerShape(10.dp) + shape = RoundedCornerShape(GlobalVariables.ROUNDED_CORNER_SHAPE_SIZE) ) { Column( modifier = Modifier.padding(10.dp) diff --git a/build.gradle b/build.gradle index 9fa9314..360d4ec 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '8.6.1' apply false + id 'com.android.application' version '8.7.0' apply false id 'org.jetbrains.kotlin.android' version '2.0.0' apply false id 'com.google.dagger.hilt.android' version '2.51.1' apply false id 'org.jetbrains.kotlin.plugin.compose' version '2.0.0'