Archived
Refactored preference functions so that view models cannot access preferences directly, instead having to use get/set methods, which also solves a potential bug source of defining different default values for certain properties in different view models
This commit is contained in:
@@ -198,7 +198,7 @@ class StwParser(application: Application) {
|
|||||||
*
|
*
|
||||||
* Hence, getIntPreference() + 2
|
* Hence, getIntPreference() + 2
|
||||||
*/
|
*/
|
||||||
repo.getIntPreference(SettingsPreferences.PRICING) + 2
|
repo.getPreferencePricing() + 2
|
||||||
),
|
),
|
||||||
dietaryPreferences = prefs.deconstruct(),
|
dietaryPreferences = prefs.deconstruct(),
|
||||||
allergens = filteredText.second,
|
allergens = filteredText.second,
|
||||||
|
|||||||
@@ -46,8 +46,10 @@ class AppRepository(app: Application) {
|
|||||||
*/
|
*/
|
||||||
fun getRepositoryInstance(app: Application): AppRepository {
|
fun getRepositoryInstance(app: Application): AppRepository {
|
||||||
if (!::repo.isInitialized) {
|
if (!::repo.isInitialized) {
|
||||||
|
synchronized(Object::class.java) {
|
||||||
repo = AppRepository(app)
|
repo = AppRepository(app)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return repo
|
return repo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -251,7 +253,144 @@ class AppRepository(app: Application) {
|
|||||||
*/
|
*/
|
||||||
fun insertItems(items: List<OfferItem>) { dao.insertItems(items) }
|
fun insertItems(items: List<OfferItem>) { dao.insertItems(items) }
|
||||||
|
|
||||||
// --- settings preferences --- //
|
// --- user-set preferences --- //
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines which allergens the user wants to have displayed or hidden.
|
||||||
|
*/
|
||||||
|
fun getPreferenceAllergenConfig(): String = getStringPreference(
|
||||||
|
SettingsPreferences.ALLERGEN_CONFIG,
|
||||||
|
defaultValue = AllergenPreferences.TEMPLATE,
|
||||||
|
)
|
||||||
|
/**
|
||||||
|
* This value determines how many allergens the user wants to have displayed or hidden.
|
||||||
|
*/
|
||||||
|
fun getPreferenceAllergenConfigCount(): Int = getPreferenceAllergenConfig().run {
|
||||||
|
if (isBlank()) 0 else split(",").count()
|
||||||
|
}
|
||||||
|
fun setPreferenceAllergenConfig(newValue: String) {
|
||||||
|
setPreference(SettingsPreferences.ALLERGEN_CONFIG, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user wants to have allergens marked.
|
||||||
|
*/
|
||||||
|
fun getPreferenceAllergen(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.ALLERGEN,
|
||||||
|
defaultValue = true,
|
||||||
|
)
|
||||||
|
fun setPreferenceAllergen(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.ALLERGEN, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines which canteen the user has selected.
|
||||||
|
*/
|
||||||
|
fun getPreferenceColour(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.COLOUR_PREFS,
|
||||||
|
defaultValue = true,
|
||||||
|
)
|
||||||
|
fun setPreferenceColour(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.COLOUR_PREFS, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines which canteen the user has selected.
|
||||||
|
*/
|
||||||
|
fun getPreferenceCanteen(): Int = getIntPreference(
|
||||||
|
SettingsPreferences.CANTEEN,
|
||||||
|
)
|
||||||
|
fun setPreferenceCanteen(newValue: Int) {
|
||||||
|
setPreference(SettingsPreferences.CANTEEN, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user has opened the canteen fragment before.
|
||||||
|
*/
|
||||||
|
fun getPreferenceHasOpenedCanteen(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.HAS_OPENED_CANTEEN,
|
||||||
|
)
|
||||||
|
fun setPreferenceHasOpenedCanteen(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.HAS_OPENED_CANTEEN, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user wants to have the next course in their schedule
|
||||||
|
* highlighted.
|
||||||
|
*/
|
||||||
|
fun getPreferenceCourseHighlighting(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.COURSE_HIGHLIGHTING,
|
||||||
|
defaultValue = true,
|
||||||
|
)
|
||||||
|
fun setPreferenceCourseHighlighting(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.COURSE_HIGHLIGHTING, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user wants their timetable to launch with the current day.
|
||||||
|
*/
|
||||||
|
fun getPreferenceCurrentDay(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.CURRENT_DAY,
|
||||||
|
defaultValue = true,
|
||||||
|
)
|
||||||
|
fun setPreferenceCurrentDay(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.CURRENT_DAY, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether the user is launching the app for the first time.
|
||||||
|
*/
|
||||||
|
fun getPreferenceFirstLaunch(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.FIRST_LAUNCH,
|
||||||
|
defaultValue = true,
|
||||||
|
)
|
||||||
|
fun setPreferenceFirstLaunch(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.FIRST_LAUNCH, 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.
|
||||||
|
*/
|
||||||
|
fun getPreferenceLaunchFragment(): Int = getIntPreference(
|
||||||
|
SettingsPreferences.LAUNCH_FRAGMENT_ON_START,
|
||||||
|
)
|
||||||
|
fun setPreferenceLaunchFragment(newValue: Int) {
|
||||||
|
setPreference(SettingsPreferences.LAUNCH_FRAGMENT_ON_START, 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.
|
||||||
|
*/
|
||||||
|
fun getPreferencePricing(): Int = getIntPreference(
|
||||||
|
SettingsPreferences.PRICING,
|
||||||
|
)
|
||||||
|
fun setPreferencePricing(newValue: Int) {
|
||||||
|
setPreference(SettingsPreferences.PRICING, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user opts into submitting crash reports.
|
||||||
|
*/
|
||||||
|
fun getPreferenceDataHandling(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.DATA_HANDLING,
|
||||||
|
)
|
||||||
|
fun setPreferenceDataHandling(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.DATA_HANDLING, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This value determines whether the user has enabled experimental settings.
|
||||||
|
*/
|
||||||
|
fun getPreferenceExperimentalSettingsEnabled(): Boolean = getBooleanPreference(
|
||||||
|
SettingsPreferences.EXPERIMENTAL_ENABLED,
|
||||||
|
)
|
||||||
|
fun setPreferenceExperimentalSettingsEnabled(newValue: Boolean) {
|
||||||
|
setPreference(SettingsPreferences.EXPERIMENTAL_ENABLED, newValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- private preference handlers preferences --- //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a user-set boolean preference.
|
* Retrieves a user-set boolean preference.
|
||||||
@@ -259,53 +398,53 @@ class AppRepository(app: Application) {
|
|||||||
* @param pref preference to retrieve
|
* @param pref preference to retrieve
|
||||||
* @return whether the user set this preference
|
* @return whether the user set this preference
|
||||||
*/
|
*/
|
||||||
fun getBooleanPreference(pref: SettingsPreferences, defaultValue: Boolean = false): Boolean =
|
private fun getBooleanPreference(pref: SettingsPreferences, defaultValue: Boolean = false): Boolean =
|
||||||
prefs.getBoolean(pref.key, defaultValue)
|
prefs.getBoolean(pref.key, defaultValue)
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves a user-set string preference.
|
|
||||||
*
|
|
||||||
* @param pref preference to retrieve
|
|
||||||
* @return string that was set
|
|
||||||
*/
|
|
||||||
fun getStringPreference(pref: SettingsPreferences, defaultValue: String = ""): String =
|
|
||||||
prefs.getString(pref.key, defaultValue) ?: ""
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves a user-set integer preference.
|
|
||||||
*
|
|
||||||
* @param pref preference to retrieve
|
|
||||||
* @return whether the user set this preference
|
|
||||||
*/
|
|
||||||
fun getIntPreference(pref: SettingsPreferences): Int = prefs.getInt(pref.key, 0)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a user-set boolean preference.
|
* Updates a user-set boolean preference.
|
||||||
*
|
*
|
||||||
* @param pref preference to set
|
* @param pref preference to set
|
||||||
* @param newValue new value to set the preference to
|
* @param newValue new value to set the preference to
|
||||||
*/
|
*/
|
||||||
fun setPreference(pref: SettingsPreferences, newValue: Boolean) {
|
private fun setPreference(pref: SettingsPreferences, newValue: Boolean) {
|
||||||
prefs.edit().putBoolean(pref.key, newValue).apply()
|
prefs.edit().putBoolean(pref.key, newValue).apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a user-set string preference.
|
||||||
|
*
|
||||||
|
* @param pref preference to retrieve
|
||||||
|
* @return string that was set
|
||||||
|
*/
|
||||||
|
private fun getStringPreference(pref: SettingsPreferences, defaultValue: String = ""): String =
|
||||||
|
prefs.getString(pref.key, defaultValue) ?: ""
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a user-set string preference.
|
* Updates a user-set string preference.
|
||||||
*
|
*
|
||||||
* @param pref preference to set
|
* @param pref preference to set
|
||||||
* @param newValue new value to set the preference to
|
* @param newValue new value to set the preference to
|
||||||
*/
|
*/
|
||||||
fun setPreference(pref: SettingsPreferences, newValue: String) {
|
private fun setPreference(pref: SettingsPreferences, newValue: String) {
|
||||||
prefs.edit().putString(pref.key, newValue).apply()
|
prefs.edit().putString(pref.key, newValue).apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a user-set integer preference.
|
||||||
|
*
|
||||||
|
* @param pref preference to retrieve
|
||||||
|
* @return whether the user set this preference
|
||||||
|
*/
|
||||||
|
private fun getIntPreference(pref: SettingsPreferences): Int = prefs.getInt(pref.key, 0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a user-set integer preference.
|
* Updates a user-set integer preference.
|
||||||
*
|
*
|
||||||
* @param pref preference to set
|
* @param pref preference to set
|
||||||
* @param newValue new value to set the preference to
|
* @param newValue new value to set the preference to
|
||||||
*/
|
*/
|
||||||
fun setPreference(pref: SettingsPreferences, newValue: Int) {
|
private fun setPreference(pref: SettingsPreferences, newValue: Int) {
|
||||||
prefs.edit().putInt(pref.key, newValue).apply()
|
prefs.edit().putInt(pref.key, newValue).apply()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.denizk0461.weserplaner.viewmodel
|
package com.denizk0461.weserplaner.viewmodel
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import com.denizk0461.weserplaner.model.AllergenPreferences
|
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
|
|
||||||
class AllergenConfigViewModel(application: Application) : AppViewModel(application) {
|
class AllergenConfigViewModel(application: Application) : AppViewModel(application) {
|
||||||
|
|
||||||
@@ -10,8 +8,6 @@ class AllergenConfigViewModel(application: Application) : AppViewModel(applicati
|
|||||||
* This value determines which allergens the user wants to have displayed or hidden.
|
* This value determines which allergens the user wants to have displayed or hidden.
|
||||||
*/
|
*/
|
||||||
var preferenceAllergenConfig: String
|
var preferenceAllergenConfig: String
|
||||||
get() = repo.getStringPreference(
|
get() = repo.getPreferenceAllergenConfig()
|
||||||
SettingsPreferences.ALLERGEN_CONFIG, defaultValue = AllergenPreferences.TEMPLATE
|
set(value) { repo.setPreferenceAllergenConfig(value) }
|
||||||
)
|
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.ALLERGEN_CONFIG, newValue) }
|
|
||||||
}
|
}
|
||||||
@@ -2,10 +2,8 @@ package com.denizk0461.weserplaner.viewmodel
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import com.denizk0461.weserplaner.model.AllergenPreferences
|
|
||||||
import com.denizk0461.weserplaner.model.CanteenOffer
|
import com.denizk0461.weserplaner.model.CanteenOffer
|
||||||
import com.denizk0461.weserplaner.model.DietaryPreferences
|
import com.denizk0461.weserplaner.model.DietaryPreferences
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
|
|
||||||
class CanteenPageViewModel(app: Application) : AppViewModel(app) {
|
class CanteenPageViewModel(app: Application) : AppViewModel(app) {
|
||||||
|
|
||||||
@@ -33,19 +31,17 @@ class CanteenPageViewModel(app: Application) : AppViewModel(app) {
|
|||||||
* This value determines which allergens the user wants to have displayed or hidden.
|
* This value determines which allergens the user wants to have displayed or hidden.
|
||||||
*/
|
*/
|
||||||
val preferenceAllergenConfig: String
|
val preferenceAllergenConfig: String
|
||||||
get() = repo.getStringPreference(
|
get() = repo.getPreferenceAllergenConfig()
|
||||||
SettingsPreferences.ALLERGEN_CONFIG, defaultValue = AllergenPreferences.TEMPLATE
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user wants to have allergens marked.
|
* This value determines whether the user wants to have allergens marked.
|
||||||
*/
|
*/
|
||||||
val preferenceAllergen: Boolean
|
val preferenceAllergen: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN, defaultValue = true)
|
get() = repo.getPreferenceAllergen()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines which canteen the user has selected.
|
* This value determines which canteen the user has selected.
|
||||||
*/
|
*/
|
||||||
val preferenceColour: Boolean
|
val preferenceColour: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.COLOUR_PREFS, defaultValue = true)
|
get() = repo.getPreferenceColour()
|
||||||
}
|
}
|
||||||
@@ -78,13 +78,13 @@ class CanteenViewModel(app: Application) : AppViewModel(app) {
|
|||||||
* This value determines which canteen the user has selected.
|
* This value determines which canteen the user has selected.
|
||||||
*/
|
*/
|
||||||
var preferenceCanteen: Int
|
var preferenceCanteen: Int
|
||||||
get() = repo.getIntPreference(SettingsPreferences.CANTEEN)
|
get() = repo.getPreferenceCanteen()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.CANTEEN, newValue) }
|
set(newValue) { repo.setPreferenceCanteen(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user has opened the canteen fragment before.
|
* This value determines whether the user has opened the canteen fragment before.
|
||||||
*/
|
*/
|
||||||
var preferenceHasOpenedCanteen: Boolean
|
var preferenceHasOpenedCanteen: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.HAS_OPENED_CANTEEN)
|
get() = repo.getPreferenceHasOpenedCanteen()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.HAS_OPENED_CANTEEN, newValue) }
|
set(newValue) { repo.setPreferenceHasOpenedCanteen(newValue) }
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@ package com.denizk0461.weserplaner.viewmodel
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
import com.denizk0461.weserplaner.model.StudIPEvent
|
import com.denizk0461.weserplaner.model.StudIPEvent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,8 +23,5 @@ class EventPageViewModel(app: Application) : AppViewModel(app) {
|
|||||||
* highlighted.
|
* highlighted.
|
||||||
*/
|
*/
|
||||||
val preferenceCourseHighlighting: Boolean
|
val preferenceCourseHighlighting: Boolean
|
||||||
get() = repo.getBooleanPreference(
|
get() = repo.getPreferenceCourseHighlighting()
|
||||||
SettingsPreferences.COURSE_HIGHLIGHTING,
|
|
||||||
defaultValue = true
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@ package com.denizk0461.weserplaner.viewmodel
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View model for [com.denizk0461.weserplaner.fragment.EventFragment]
|
* View model for [com.denizk0461.weserplaner.fragment.EventFragment]
|
||||||
@@ -22,18 +21,12 @@ class EventViewModel(app: Application) : AppViewModel(app) {
|
|||||||
* This value determines whether the user wants their timetable to launch with the current day.
|
* This value determines whether the user wants their timetable to launch with the current day.
|
||||||
*/
|
*/
|
||||||
val preferenceCurrentDay: Boolean
|
val preferenceCurrentDay: Boolean
|
||||||
get() = repo.getBooleanPreference(
|
get() = repo.getPreferenceCurrentDay()
|
||||||
SettingsPreferences.CURRENT_DAY,
|
|
||||||
defaultValue = true,
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether the user is launching the app for the first time.
|
* Determines whether the user is launching the app for the first time.
|
||||||
*/
|
*/
|
||||||
var preferenceFirstLaunch: Boolean
|
var preferenceFirstLaunch: Boolean
|
||||||
get() = repo.getBooleanPreference(
|
get() = repo.getPreferenceFirstLaunch()
|
||||||
SettingsPreferences.FIRST_LAUNCH,
|
set(value) { repo.setPreferenceFirstLaunch(value) }
|
||||||
defaultValue = true,
|
|
||||||
)
|
|
||||||
set(value) { repo.setPreference(SettingsPreferences.FIRST_LAUNCH, value) }
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.denizk0461.weserplaner.viewmodel
|
package com.denizk0461.weserplaner.viewmodel
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View model for [com.denizk0461.weserplaner.activity.MainActivity]
|
* View model for [com.denizk0461.weserplaner.activity.MainActivity]
|
||||||
@@ -15,5 +14,5 @@ class MainViewModel(application: Application) : AppViewModel(application) {
|
|||||||
* the order that the items are arranged in in the bottom nav bar.
|
* the order that the items are arranged in in the bottom nav bar.
|
||||||
*/
|
*/
|
||||||
val preferenceLaunchFragment: Int
|
val preferenceLaunchFragment: Int
|
||||||
get() = repo.getIntPreference(SettingsPreferences.LAUNCH_FRAGMENT_ON_START)
|
get() = repo.getPreferenceLaunchFragment()
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.denizk0461.weserplaner.viewmodel
|
package com.denizk0461.weserplaner.viewmodel
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import com.denizk0461.weserplaner.model.AllergenPreferences
|
|
||||||
import com.denizk0461.weserplaner.model.SettingsPreferences
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View model for [com.denizk0461.weserplaner.fragment.SettingsFragment]
|
* View model for [com.denizk0461.weserplaner.fragment.SettingsFragment]
|
||||||
@@ -15,76 +13,66 @@ class SettingsViewModel(app: Application) : AppViewModel(app) {
|
|||||||
* This value determines whether the user wants their timetable to launch with the current day.
|
* This value determines whether the user wants their timetable to launch with the current day.
|
||||||
*/
|
*/
|
||||||
var preferenceCurrentDay: Boolean
|
var preferenceCurrentDay: Boolean
|
||||||
get() = repo.getBooleanPreference(
|
get() = repo.getPreferenceCurrentDay()
|
||||||
SettingsPreferences.CURRENT_DAY,
|
set(newValue) { repo.setPreferenceCurrentDay(newValue) }
|
||||||
defaultValue = true,
|
|
||||||
)
|
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.CURRENT_DAY, newValue) }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user wants to have the next course in their schedule
|
* This value determines whether the user wants to have the next course in their schedule
|
||||||
* highlighted.
|
* highlighted.
|
||||||
*/
|
*/
|
||||||
var preferenceCourseHighlighting: Boolean
|
var preferenceCourseHighlighting: Boolean
|
||||||
get() = repo.getBooleanPreference(
|
get() = repo.getPreferenceCourseHighlighting()
|
||||||
SettingsPreferences.COURSE_HIGHLIGHTING,
|
set(newValue) { repo.setPreferenceCourseHighlighting(newValue) }
|
||||||
defaultValue = true
|
|
||||||
)
|
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.COURSE_HIGHLIGHTING, newValue) }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user wants to have allergens marked.
|
* This value determines whether the user wants to have allergens marked.
|
||||||
*/
|
*/
|
||||||
var preferenceAllergen: Boolean
|
var preferenceAllergen: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN, defaultValue = true)
|
get() = repo.getPreferenceAllergen()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.ALLERGEN, newValue) }
|
set(newValue) { repo.setPreferenceAllergen(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines how many allergens the user wants to have displayed or hidden.
|
* This value determines how many allergens the user wants to have displayed or hidden.
|
||||||
*/
|
*/
|
||||||
val preferenceAllergenConfigCount: Int
|
val preferenceAllergenConfigCount: Int
|
||||||
get() = repo.getStringPreference(
|
get() = repo.getPreferenceAllergenConfigCount()
|
||||||
SettingsPreferences.ALLERGEN_CONFIG, defaultValue = AllergenPreferences.TEMPLATE
|
|
||||||
).run {
|
|
||||||
if (isBlank()) 0 else split(",").count()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines which fragment the user wants the app to start with. Order is equal to
|
* 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.
|
* the order that the items are arranged in in the bottom nav bar.
|
||||||
*/
|
*/
|
||||||
var preferencePricing: Int
|
var preferencePricing: Int
|
||||||
get() = repo.getIntPreference(SettingsPreferences.PRICING)
|
get() = repo.getPreferencePricing()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.PRICING, newValue) }
|
set(newValue) { repo.setPreferencePricing(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines which fragment the user wants the app to start with. Order is equal to
|
* 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.
|
* the order that the items are arranged in in the bottom nav bar.
|
||||||
*/
|
*/
|
||||||
var preferenceLaunchFragment: Int
|
var preferenceLaunchFragment: Int
|
||||||
get() = repo.getIntPreference(SettingsPreferences.LAUNCH_FRAGMENT_ON_START)
|
get() = repo.getPreferenceLaunchFragment()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.LAUNCH_FRAGMENT_ON_START, newValue) }
|
set(newValue) { repo.setPreferenceLaunchFragment(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines which canteen the user has selected.
|
* This value determines which canteen the user has selected.
|
||||||
*/
|
*/
|
||||||
var preferenceColour: Boolean
|
var preferenceColour: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.COLOUR_PREFS, defaultValue = true)
|
get() = repo.getPreferenceColour()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.COLOUR_PREFS, newValue) }
|
set(newValue) { repo.setPreferenceColour(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user opts into submitting crash reports.
|
* This value determines whether the user opts into submitting crash reports.
|
||||||
*/
|
*/
|
||||||
var preferenceDataHandling: Boolean
|
var preferenceDataHandling: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.DATA_HANDLING)
|
get() = repo.getPreferenceDataHandling()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.DATA_HANDLING, newValue) }
|
set(newValue) { repo.setPreferenceDataHandling(newValue) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This value determines whether the user has enabled experimental settings.
|
* This value determines whether the user has enabled experimental settings.
|
||||||
*/
|
*/
|
||||||
var preferenceExperimentalSettingsEnabled: Boolean
|
var preferenceExperimentalSettingsEnabled: Boolean
|
||||||
get() = repo.getBooleanPreference(SettingsPreferences.EXPERIMENTAL_ENABLED)
|
get() = repo.getPreferenceExperimentalSettingsEnabled()
|
||||||
set(newValue) { repo.setPreference(SettingsPreferences.EXPERIMENTAL_ENABLED, newValue) }
|
set(newValue) { repo.setPreferenceExperimentalSettingsEnabled(newValue) }
|
||||||
|
|
||||||
// --- functions for dev codes --- //
|
// --- functions for dev codes --- //
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,8 @@
|
|||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp">
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/app_title_bar"
|
android:id="@+id/app_title_bar"
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
android:textSize="28sp"
|
android:textSize="28sp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
android:fontFamily="@font/lato_blackitalic"
|
android:fontFamily="@font/lato_blackitalic"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
|
|||||||
Reference in New Issue
Block a user