teapod/app/src/main/java/org/mosad/teapod/ui/fragments/AccountFragment.kt

125 lines
4.2 KiB
Kotlin
Raw Normal View History

package org.mosad.teapod.ui.fragments
2020-10-08 22:20:20 +02:00
import android.os.Bundle
import android.util.Log
2020-10-08 22:20:20 +02:00
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
2020-10-14 20:58:42 +02:00
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.list.listItemsSingleChoice
2020-10-13 21:27:05 +02:00
import de.psdev.licensesdialog.LicensesDialog
2020-10-08 22:20:20 +02:00
import kotlinx.android.synthetic.main.fragment_account.*
import org.mosad.teapod.BuildConfig
import org.mosad.teapod.MainActivity
2020-10-08 22:20:20 +02:00
import org.mosad.teapod.R
import org.mosad.teapod.parser.AoDParser
import org.mosad.teapod.preferences.EncryptedPreferences
import org.mosad.teapod.preferences.Preferences
import org.mosad.teapod.ui.components.LoginDialog
import org.mosad.teapod.util.DataTypes.Theme
2020-10-08 22:20:20 +02:00
class AccountFragment : Fragment() {
2020-10-08 22:20:20 +02:00
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_account, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
text_account_login.text = EncryptedPreferences.login
text_info_about_desc.text = getString(R.string.info_about_desc, BuildConfig.VERSION_NAME, getString(R.string.build_time))
text_theme_selected.text = when (Preferences.theme) {
Theme.DARK -> getString(R.string.theme_dark)
else -> getString(R.string.theme_light)
}
switch_secondary.isChecked = Preferences.preferSecondary
switch_autoplay.isChecked = Preferences.autoplay
initActions()
}
private fun initActions() {
linear_account_login.setOnClickListener {
showLoginDialog(true)
}
linear_theme.setOnClickListener {
showThemeDialog()
}
linear_about.setOnClickListener {
2020-10-14 20:58:42 +02:00
MaterialDialog(requireContext())
.title(R.string.info_about)
.message(R.string.info_about_dialog)
2020-10-13 21:27:05 +02:00
.show()
}
text_licenses.setOnClickListener {
2020-11-23 09:53:44 +01:00
val dialogCss = when (Preferences.theme) {
Theme.DARK -> R.string.license_dialog_style_dark
2020-11-23 09:53:44 +01:00
else -> R.string.license_dialog_style_light
}
val themeId = when (Preferences.theme) {
Theme.DARK -> R.style.LicensesDialogTheme_Dark
2020-11-23 09:53:44 +01:00
else -> R.style.AppTheme_Light
}
2020-10-13 21:27:05 +02:00
LicensesDialog.Builder(requireContext())
.setNotices(R.raw.notices)
.setTitle(R.string.licenses)
.setIncludeOwnLicense(true)
2020-11-23 09:53:44 +01:00
.setThemeResourceId(themeId)
.setNoticesCssStyle(dialogCss)
2020-10-13 21:27:05 +02:00
.build()
.show()
}
switch_secondary.setOnClickListener {
Preferences.savePreferSecondary(requireContext(), switch_secondary.isChecked)
}
switch_autoplay.setOnClickListener {
Preferences.saveAutoplay(requireContext(), switch_autoplay.isChecked)
}
2020-10-08 22:20:20 +02:00
}
private fun showLoginDialog(firstTry: Boolean) {
LoginDialog(requireContext(), firstTry).positiveButton {
EncryptedPreferences.saveCredentials(login, password, context)
2020-10-19 19:59:53 +02:00
if (!AoDParser.login()) {
showLoginDialog(false)
Log.w(javaClass.name, "Login failed, please try again.")
}
}.show {
login = EncryptedPreferences.login
password = ""
}
}
private fun showThemeDialog() {
val themes = listOf(
resources.getString(R.string.theme_light),
resources.getString(R.string.theme_dark)
)
MaterialDialog(requireContext()).show {
title(R.string.theme)
listItemsSingleChoice(items = themes, initialSelection = Preferences.theme.ordinal) { _, index, _ ->
when(index) {
0 -> Preferences.saveTheme(context, Theme.LIGHT)
1 -> Preferences.saveTheme(context, Theme.DARK)
else -> Preferences.saveTheme(context, Theme.LIGHT)
}
(activity as MainActivity).restart()
}
}
}
2020-10-08 22:20:20 +02:00
}