diff --git a/app/src/main/java/com/denizk0461/weserplaner/db/AppRepository.kt b/app/src/main/java/com/denizk0461/weserplaner/db/AppRepository.kt index 17ba4ea..fb085a2 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/db/AppRepository.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/db/AppRepository.kt @@ -398,6 +398,13 @@ class AppRepository(app: Application) { setPreference(SettingsPreferences.FIRST_LAUNCH, newValue) } + fun getPreferenceFeatureTimetables(): Boolean = getBooleanPreference( + SettingsPreferences.NEW_FEATURE_TIMETABLES, + ) + fun setPreferenceFeatureTimetables(newValue: Boolean) { + setPreference(SettingsPreferences.NEW_FEATURE_TIMETABLES, newValue) + } + /** * This value determines which fragment the user wants the app to start with. Order is equal to * the order that the items are arranged in in the bottom nav bar. diff --git a/app/src/main/java/com/denizk0461/weserplaner/fragment/EventFragment.kt b/app/src/main/java/com/denizk0461/weserplaner/fragment/EventFragment.kt index a18c4dd..0b6b000 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/fragment/EventFragment.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/fragment/EventFragment.kt @@ -12,6 +12,7 @@ import com.denizk0461.weserplaner.R import com.denizk0461.weserplaner.activity.FetcherActivity import com.denizk0461.weserplaner.activity.TimetableOverviewActivity import com.denizk0461.weserplaner.adapter.StudIPEventPageAdapter +import com.denizk0461.weserplaner.data.getTextSheet import com.denizk0461.weserplaner.data.showSnackBar import com.denizk0461.weserplaner.databinding.FragmentEventBinding import com.denizk0461.weserplaner.sheet.ScheduleUpdateSheet @@ -143,6 +144,22 @@ class EventFragment : AppFragment() { } ) } + + /* + * Notify the user about the new timetables feature if: + * - we haven't already done so + * - the user has used the app before (don't do this to new users) + * + * Apparently the first launch thing doesn't work but tbh it doesn't matter, I'll just + * remove this whole block with the next update or something and then it won't matter anyway + */ + if (!viewModel.getPreferenceFirstLaunch() && !viewModel.getPreferenceFeatureTimetables()) { + openBottomSheet(getTextSheet( + getString(R.string.new_feature_timetables_header), + getString(R.string.new_feature_timetables_content), + )) + viewModel.setPreferenceFeatureTimetables(true) + } } /** diff --git a/app/src/main/java/com/denizk0461/weserplaner/fragment/SettingsFragment.kt b/app/src/main/java/com/denizk0461/weserplaner/fragment/SettingsFragment.kt index 6e07989..d49dc38 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/fragment/SettingsFragment.kt @@ -496,6 +496,10 @@ class SettingsFragment : AppFragment() { viewModel.preferenceAppLayout = AppLayout.COMPACT showToast(context, "App will use compact layout") } + "CLRFTT" -> { + viewModel.setPreferenceFeatureTimetables(false) + showToast(context, "Cleared new feature: timetables flags") + } else -> showSnackBar( getString(R.string.settings_dev_codes_invalid) ) diff --git a/app/src/main/java/com/denizk0461/weserplaner/values/SettingsPreferences.kt b/app/src/main/java/com/denizk0461/weserplaner/values/SettingsPreferences.kt index c616ff1..ce46777 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/values/SettingsPreferences.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/values/SettingsPreferences.kt @@ -14,6 +14,11 @@ enum class SettingsPreferences(val key: String) { */ FIRST_LAUNCH("check_first_launch"), + /** + * Whether the user has been notified about the new timetables feature. + */ + NEW_FEATURE_TIMETABLES("new_feature_timetables"), + /** * Which allergens the user wants displayed or hidden. */ diff --git a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/EventViewModel.kt b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/EventViewModel.kt index d978f75..f3c98a3 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/EventViewModel.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/EventViewModel.kt @@ -37,4 +37,8 @@ class EventViewModel(private val app: Application) : AppViewModel(app) { */ val preferenceAppLayout: AppLayout get() = repo.getAppLayout() + + fun getPreferenceFirstLaunch(): Boolean = repo.getPreferenceFirstLaunch() + fun getPreferenceFeatureTimetables(): Boolean = repo.getPreferenceFeatureTimetables() + fun setPreferenceFeatureTimetables(newValue: Boolean) { repo.setPreferenceFeatureTimetables(newValue) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/SettingsViewModel.kt b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/SettingsViewModel.kt index fd101e9..e57505e 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/SettingsViewModel.kt @@ -103,6 +103,8 @@ class SettingsViewModel(app: Application) : AppViewModel(app) { get() = repo.getAppLayout() set(newValue) { repo.setAppLayout(newValue) } + fun setPreferenceFeatureTimetables(newValue: Boolean) { repo.setPreferenceFeatureTimetables(newValue) } + // --- functions for dev codes --- // /** diff --git a/app/src/main/res/layout/sheet_timetable_add.xml b/app/src/main/res/layout/sheet_timetable_add.xml index 7afece3..30ea6a4 100644 --- a/app/src/main/res/layout/sheet_timetable_add.xml +++ b/app/src/main/res/layout/sheet_timetable_add.xml @@ -59,7 +59,8 @@ + android:text="@string/settings_timetable_add_hint" + android:layout_marginBottom="8dp"/> Raumfinder Einstellungen + Neues Feature! + Da das neue Semester in ein paar Wochen startet, kannst du dich vorbereiten, indem du deinen neuen Stundenplan einträgst! Du kannst jetzt so viele Stundenpläne in die App eintragen wie du möchtest.\n\nGehe in die Einstellungen, um die neue \'Stundenplan\'-Option zu nutzen! + Allgemein Stud.IP-Stundenplan Mensenangebote diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e363e27..c73042a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -242,6 +242,9 @@ Room Finder Settings + Heads up, new feature! + As the new semester will start in a couple of weeks, you can prepare in advance by adding your new timetable! You can now add as many timetables to the app as you like.\n\nHead into the settings to find the new \'timetables\' option! + General Stud.IP Schedule Canteen Offers