mirror of
https://github.com/Matte23/circolapp.git
synced 2025-12-06 07:29:10 +00:00
Add option to change school from SettingsActivity
This commit is contained in:
@@ -22,11 +22,9 @@ import android.os.Bundle
|
|||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.*
|
||||||
import androidx.preference.Preference
|
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
|
||||||
import kotlinx.android.synthetic.main.settings_activity.*
|
import kotlinx.android.synthetic.main.settings_activity.*
|
||||||
|
import net.underdesk.circolapp.server.ServerAPI
|
||||||
import net.underdesk.circolapp.works.PollWork
|
import net.underdesk.circolapp.works.PollWork
|
||||||
|
|
||||||
class SettingsActivity : AppCompatActivity() {
|
class SettingsActivity : AppCompatActivity() {
|
||||||
@@ -46,8 +44,17 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.root_preferences, rootKey)
|
setPreferencesFromResource(R.xml.root_preferences, rootKey)
|
||||||
|
|
||||||
|
val schoolPreference = findPreference<ListPreference>("school")
|
||||||
|
schoolPreference?.let { setSchoolListPreference(it) }
|
||||||
|
val schoolPreferenceListener =
|
||||||
|
Preference.OnPreferenceChangeListener { _, value ->
|
||||||
|
ServerAPI.changeServer(value.toString().toInt())
|
||||||
|
true
|
||||||
|
}
|
||||||
|
schoolPreference?.onPreferenceChangeListener = schoolPreferenceListener
|
||||||
|
|
||||||
val darkThemePreference = findPreference<Preference>("dark_theme")
|
val darkThemePreference = findPreference<Preference>("dark_theme")
|
||||||
val listener =
|
val themePreferenceListener =
|
||||||
Preference.OnPreferenceChangeListener { _, value ->
|
Preference.OnPreferenceChangeListener { _, value ->
|
||||||
when (value) {
|
when (value) {
|
||||||
"auto" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
"auto" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||||
@@ -56,7 +63,7 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
darkThemePreference?.onPreferenceChangeListener = listener
|
darkThemePreference?.onPreferenceChangeListener = themePreferenceListener
|
||||||
|
|
||||||
val pollIntervalPreference = findPreference<EditTextPreference>("poll_interval")
|
val pollIntervalPreference = findPreference<EditTextPreference>("poll_interval")
|
||||||
pollIntervalPreference?.setOnBindEditTextListener { editText ->
|
pollIntervalPreference?.setOnBindEditTextListener { editText ->
|
||||||
@@ -74,5 +81,20 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
pollIntervalPreference?.onPreferenceChangeListener = notificationPrefChangedListener
|
pollIntervalPreference?.onPreferenceChangeListener = notificationPrefChangedListener
|
||||||
notificationPreference?.onPreferenceChangeListener = notificationPrefChangedListener
|
notificationPreference?.onPreferenceChangeListener = notificationPrefChangedListener
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setSchoolListPreference(listPreference: ListPreference) {
|
||||||
|
val servers = ServerAPI.Companion.Servers.values()
|
||||||
|
val entryValues = arrayListOf<CharSequence>()
|
||||||
|
val entryNames = arrayListOf<CharSequence>()
|
||||||
|
|
||||||
|
for (i in servers.indices) {
|
||||||
|
entryValues.add(i.toString())
|
||||||
|
entryNames.add(ServerAPI.getServerName(servers[i]))
|
||||||
|
}
|
||||||
|
|
||||||
|
listPreference.setDefaultValue("0")
|
||||||
|
listPreference.entryValues = entryValues.toTypedArray()
|
||||||
|
listPreference.entries = entryNames.toTypedArray()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class CircularLetterFragment :
|
|||||||
CircularLetterViewModelFactory(
|
CircularLetterViewModelFactory(
|
||||||
CircularRepository.getInstance(
|
CircularRepository.getInstance(
|
||||||
AppDatabase.getInstance(requireContext()).circularDao(),
|
AppDatabase.getInstance(requireContext()).circularDao(),
|
||||||
ServerAPI.getInstance(ServerAPI.Companion.Servers.CURIE)
|
ServerAPI.getInstance(requireContext())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class FavouritesFragment : Fragment(), MainActivity.SearchCallback {
|
|||||||
FavouritesViewModelFactory(
|
FavouritesViewModelFactory(
|
||||||
CircularRepository.getInstance(
|
CircularRepository.getInstance(
|
||||||
AppDatabase.getInstance(requireContext()).circularDao(),
|
AppDatabase.getInstance(requireContext()).circularDao(),
|
||||||
ServerAPI.getInstance(ServerAPI.Companion.Servers.CURIE)
|
ServerAPI.getInstance(requireContext())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class RemindersFragment : Fragment(), MainActivity.SearchCallback {
|
|||||||
RemindersViewModelFactory(
|
RemindersViewModelFactory(
|
||||||
CircularRepository.getInstance(
|
CircularRepository.getInstance(
|
||||||
AppDatabase.getInstance(requireContext()).circularDao(),
|
AppDatabase.getInstance(requireContext()).circularDao(),
|
||||||
ServerAPI.getInstance(ServerAPI.Companion.Servers.CURIE)
|
ServerAPI.getInstance(requireContext())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
package net.underdesk.circolapp.server
|
package net.underdesk.circolapp.server
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
import net.underdesk.circolapp.data.Circular
|
import net.underdesk.circolapp.data.Circular
|
||||||
import net.underdesk.circolapp.server.curie.CurieServer
|
import net.underdesk.circolapp.server.curie.CurieServer
|
||||||
import net.underdesk.circolapp.server.porporato.PorporatoServer
|
import net.underdesk.circolapp.server.porporato.PorporatoServer
|
||||||
|
|
||||||
class ServerAPI(
|
class ServerAPI(
|
||||||
private val server: Server
|
private var server: Server
|
||||||
) {
|
) {
|
||||||
suspend fun getCircularsFromServer(): Pair<List<Circular>, Result> {
|
suspend fun getCircularsFromServer(): Pair<List<Circular>, Result> {
|
||||||
val newCircularsAvailable = server.newCircularsAvailable()
|
val newCircularsAvailable = server.newCircularsAvailable()
|
||||||
@@ -37,6 +39,10 @@ class ServerAPI(
|
|||||||
return server.getCircularsFromServer()
|
return server.getCircularsFromServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun changeServer(server: Server) {
|
||||||
|
this.server = server
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
enum class Servers {
|
enum class Servers {
|
||||||
CURIE, PORPORATO
|
CURIE, PORPORATO
|
||||||
@@ -46,20 +52,38 @@ class ServerAPI(
|
|||||||
SUCCESS, ERROR
|
SUCCESS, ERROR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getServerName(server: Servers) = when (server) {
|
||||||
|
Servers.CURIE -> "Liceo scientifico Maria Curie"
|
||||||
|
Servers.PORPORATO -> "Liceo G.F. Porporato"
|
||||||
|
}
|
||||||
|
|
||||||
@Volatile
|
@Volatile
|
||||||
private var instance: ServerAPI? = null
|
private var instance: ServerAPI? = null
|
||||||
|
|
||||||
fun getInstance(server: Servers): ServerAPI {
|
fun getInstance(server: Servers): ServerAPI {
|
||||||
return instance ?: synchronized(this) {
|
return instance ?: synchronized(this) {
|
||||||
instance ?: createServerAPI(server).also { instance = it }
|
instance ?: ServerAPI(createServer(server)).also { instance = it }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createServerAPI(server: Servers): ServerAPI {
|
fun getInstance(context: Context): ServerAPI {
|
||||||
return when (server) {
|
val server = Servers.values()[
|
||||||
Servers.CURIE -> ServerAPI(CurieServer())
|
PreferenceManager.getDefaultSharedPreferences(context).getString("school", "0")
|
||||||
Servers.PORPORATO -> ServerAPI(PorporatoServer())
|
?.toInt() ?: 0
|
||||||
}
|
]
|
||||||
|
|
||||||
|
return instance ?: synchronized(this) {
|
||||||
|
instance ?: ServerAPI(createServer(server)).also { instance = it }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun changeServer(index: Int) {
|
||||||
|
instance?.changeServer(createServer(Servers.values()[index]))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createServer(server: Servers) = when (server) {
|
||||||
|
Servers.CURIE -> CurieServer()
|
||||||
|
Servers.PORPORATO -> PorporatoServer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class PollWork(appContext: Context, workerParams: WorkerParameters) :
|
|||||||
override suspend fun doWork(): Result = coroutineScope {
|
override suspend fun doWork(): Result = coroutineScope {
|
||||||
val circularRepository = CircularRepository.getInstance(
|
val circularRepository = CircularRepository.getInstance(
|
||||||
AppDatabase.getInstance(applicationContext).circularDao(),
|
AppDatabase.getInstance(applicationContext).circularDao(),
|
||||||
ServerAPI.getInstance(ServerAPI.Companion.Servers.CURIE)
|
ServerAPI.getInstance(applicationContext)
|
||||||
)
|
)
|
||||||
|
|
||||||
val result = circularRepository.updateCirculars()
|
val result = circularRepository.updateCirculars()
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
<string name="preferences_general_header">Generale</string>
|
<string name="preferences_general_header">Generale</string>
|
||||||
<string name="preference_notifications_header">Notifiche</string>
|
<string name="preference_notifications_header">Notifiche</string>
|
||||||
|
<string name="preferences_school">Scuola</string>
|
||||||
<string name="preferences_dark_theme">Tema scuro</string>
|
<string name="preferences_dark_theme">Tema scuro</string>
|
||||||
<string name="preferences_notify_new_circulars">Mostra notifiche</string>
|
<string name="preferences_notify_new_circulars">Mostra notifiche</string>
|
||||||
<string name="preferences_poll_interval">Intervallo di sincronizzazione</string>
|
<string name="preferences_poll_interval">Intervallo di sincronizzazione</string>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
<string name="preferences_general_header">General</string>
|
<string name="preferences_general_header">General</string>
|
||||||
<string name="preference_notifications_header">Notifications</string>
|
<string name="preference_notifications_header">Notifications</string>
|
||||||
|
<string name="preferences_school">School</string>
|
||||||
<string name="preferences_dark_theme">Dark theme</string>
|
<string name="preferences_dark_theme">Dark theme</string>
|
||||||
<string name="preferences_notify_new_circulars">Show notifications</string>
|
<string name="preferences_notify_new_circulars">Show notifications</string>
|
||||||
<string name="preferences_poll_interval">Synchronization interval</string>
|
<string name="preferences_poll_interval">Synchronization interval</string>
|
||||||
|
|||||||
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
<PreferenceCategory app:title="@string/preferences_general_header">
|
<PreferenceCategory app:title="@string/preferences_general_header">
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
app:key="school"
|
||||||
|
app:title="@string/preferences_school"
|
||||||
|
app:useSimpleSummaryProvider="true" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
app:defaultValue="auto"
|
app:defaultValue="auto"
|
||||||
app:entries="@array/dark_theme_entries"
|
app:entries="@array/dark_theme_entries"
|
||||||
|
|||||||
Reference in New Issue
Block a user