add "Manage Lessons" Dialog to Settings, minor style fixes

* initially select the current theme in the select theme dialog
* set the correct accent color for all dialogs (needs to be done manually for every dialog)
This commit is contained in:
Jannik 2020-06-07 14:59:04 +02:00
parent 18ca435764
commit bdfeb46faf
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
7 changed files with 95 additions and 21 deletions

View File

@ -34,10 +34,13 @@ import android.widget.TextView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.afollestad.aesthetic.Aesthetic import com.afollestad.aesthetic.Aesthetic
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.WhichButton
import com.afollestad.materialdialogs.actions.getActionButton
import com.afollestad.materialdialogs.callbacks.onDismiss import com.afollestad.materialdialogs.callbacks.onDismiss
import com.afollestad.materialdialogs.color.colorChooser import com.afollestad.materialdialogs.color.colorChooser
import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.customview.customView
import com.afollestad.materialdialogs.list.listItems import com.afollestad.materialdialogs.list.listItems
import com.afollestad.materialdialogs.list.listItemsMultiChoice
import com.afollestad.materialdialogs.list.listItemsSingleChoice import com.afollestad.materialdialogs.list.listItemsSingleChoice
import de.psdev.licensesdialog.LicensesDialog import de.psdev.licensesdialog.LicensesDialog
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
@ -63,6 +66,7 @@ class SettingsFragment : Fragment() {
private lateinit var linLayoutUser: LinearLayout private lateinit var linLayoutUser: LinearLayout
private lateinit var linLayoutCourse: LinearLayout private lateinit var linLayoutCourse: LinearLayout
private lateinit var linLayoutManageLessons: LinearLayout
private lateinit var linLayoutAbout: LinearLayout private lateinit var linLayoutAbout: LinearLayout
private lateinit var linLayoutLicence: LinearLayout private lateinit var linLayoutLicence: LinearLayout
private lateinit var linLayoutTheme: LinearLayout private lateinit var linLayoutTheme: LinearLayout
@ -71,12 +75,15 @@ class SettingsFragment : Fragment() {
private lateinit var switchBuffet: Switch private lateinit var switchBuffet: Switch
private lateinit var txtViewCourse: TextView private lateinit var txtViewCourse: TextView
private var selectedTheme = DataTypes.Theme.Light
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.fragment_settings, container, false) val view: View = inflater.inflate(R.layout.fragment_settings, container, false)
linLayoutUser = view.findViewById(R.id.linLayout_User) linLayoutUser = view.findViewById(R.id.linLayout_User)
linLayoutCourse = view.findViewById(R.id.linLayout_Course) linLayoutCourse = view.findViewById(R.id.linLayout_Course)
linLayoutManageLessons = view.findViewById(R.id.linLayout_ManageLessons)
linLayoutAbout = view.findViewById(R.id.linLayout_About) linLayoutAbout = view.findViewById(R.id.linLayout_About)
linLayoutLicence = view.findViewById(R.id.linLayout_Licence) linLayoutLicence = view.findViewById(R.id.linLayout_Licence)
linLayoutTheme = view.findViewById(R.id.linLayout_Theme) linLayoutTheme = view.findViewById(R.id.linLayout_Theme)
@ -105,18 +112,21 @@ class SettingsFragment : Fragment() {
when(outValue.string) { when(outValue.string) {
"light" -> { "light" -> {
switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryLight, activity!!.theme)) switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryLight, activity!!.theme))
txtView_SelectedTheme.text = resources.getString(R.string.themeLight) selectedTheme = DataTypes.Theme.Light
selectedTheme.string = resources.getString(R.string.themeLight)
} }
"dark" -> { "dark" -> {
switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryDark, activity!!.theme)) switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryDark, activity!!.theme))
txtView_SelectedTheme.text = resources.getString(R.string.themeDark) selectedTheme = DataTypes.Theme.Dark
selectedTheme.string = resources.getString(R.string.themeDark)
} }
"black" -> { "black" -> {
switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryDark, activity!!.theme)) switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryDark, activity!!.theme))
txtView_SelectedTheme.text = resources.getString(R.string.themeBlack) selectedTheme = DataTypes.Theme.Black
selectedTheme.string = resources.getString(R.string.themeBlack)
} }
} }
txtView_SelectedTheme.text = selectedTheme.string
} }
/** /**
@ -140,6 +150,21 @@ class SettingsFragment : Fragment() {
} }
} }
linLayoutManageLessons.setOnClickListener {
val myItems = listOf("Hello", "World")
MaterialDialog(context!!).show {
title(R.string.manage_lessons)
listItemsMultiChoice(items = myItems)
positiveButton(R.string.delete) {
//TODO call delete action
}
negativeButton(R.string.cancel)
getActionButton(WhichButton.POSITIVE).updateTextColor(cColorAccent)
getActionButton(WhichButton.NEGATIVE).updateTextColor(cColorAccent)
}
}
linLayoutAbout.setOnClickListener { linLayoutAbout.setOnClickListener {
// open a new info dialog // open a new info dialog
MaterialDialog(context!!) MaterialDialog(context!!)
@ -180,10 +205,10 @@ class SettingsFragment : Fragment() {
resources.getString(R.string.themeDark), resources.getString(R.string.themeDark),
resources.getString(R.string.themeBlack) resources.getString(R.string.themeBlack)
) )
MaterialDialog(context!!)
.title(R.string.theme) MaterialDialog(context!!).show {
.show { title(R.string.theme)
listItemsSingleChoice(items = themes) { _, index, _ -> listItemsSingleChoice(items = themes, initialSelection = selectedTheme.ordinal) { _, index, _ ->
Aesthetic.config { Aesthetic.config {
when (index) { when (index) {
0 -> activityTheme(R.style.AppTheme_Light) 0 -> activityTheme(R.style.AppTheme_Light)
@ -200,7 +225,6 @@ class SettingsFragment : Fragment() {
linLayoutPrimaryColor.setOnClickListener { linLayoutPrimaryColor.setOnClickListener {
// open a new color chooser dialog // open a new color chooser dialog
MaterialDialog(context!!) MaterialDialog(context!!)
.title(R.string.primary_color)
.colorChooser(DataTypes().primaryColors, allowCustomArgb = true, initialSelection = cColorPrimary) { _, color -> .colorChooser(DataTypes().primaryColors, allowCustomArgb = true, initialSelection = cColorPrimary) { _, color ->
view_PrimaryColor.setBackgroundColor(color) view_PrimaryColor.setBackgroundColor(color)
Aesthetic.config { Aesthetic.config {
@ -208,17 +232,19 @@ class SettingsFragment : Fragment() {
colorPrimaryDark(color) colorPrimaryDark(color)
apply() apply()
} }
PreferencesController.saveColorPrimary(context!!, color) PreferencesController.saveColorPrimary(context!!, color)
} }
.positiveButton(R.string.select) .show {
.show() title(R.string.primary_color)
positiveButton(R.string.select)
getActionButton(WhichButton.POSITIVE).updateTextColor(cColorAccent)
}
} }
linLayoutAccentColor.setOnClickListener { linLayoutAccentColor.setOnClickListener {
// open a new color chooser dialog // open a new color chooser dialog
MaterialDialog(context!!) MaterialDialog(context!!)
.title(R.string.accent_color)
.colorChooser(DataTypes().accentColors, allowCustomArgb = true, initialSelection = cColorAccent) { _, color -> .colorChooser(DataTypes().accentColors, allowCustomArgb = true, initialSelection = cColorAccent) { _, color ->
view_AccentColor.setBackgroundColor(color) view_AccentColor.setBackgroundColor(color)
Aesthetic.config { Aesthetic.config {
@ -228,8 +254,11 @@ class SettingsFragment : Fragment() {
PreferencesController.saveColorAccent(context!!, color) PreferencesController.saveColorAccent(context!!, color)
} }
.positiveButton(R.string.select) .show{
.show() title(R.string.accent_color)
positiveButton(R.string.select)
getActionButton(WhichButton.POSITIVE).updateTextColor(cColorAccent)
}
} }
switchBuffet.setOnClickListener { switchBuffet.setOnClickListener {

View File

@ -29,12 +29,15 @@ import android.view.ViewGroup
import android.widget.ScrollView import android.widget.ScrollView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.WhichButton
import com.afollestad.materialdialogs.actions.getActionButton
import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.floatingactionbutton.FloatingActionButton
import kotlinx.android.synthetic.main.fragment_timetable.* import kotlinx.android.synthetic.main.fragment_timetable.*
import kotlinx.coroutines.* import kotlinx.coroutines.*
import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.R
import org.mosad.seil0.projectlaogai.controller.CacheController import org.mosad.seil0.projectlaogai.controller.CacheController
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables
import org.mosad.seil0.projectlaogai.controller.PreferencesController
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
@ -82,7 +85,10 @@ class TimeTableFragment : Fragment() {
// show the AddLessonDialog if the ftaBtn is clicked // show the AddLessonDialog if the ftaBtn is clicked
faBtnAddLesson.setOnClickListener { faBtnAddLesson.setOnClickListener {
AddLessonDialog(context!!).initAddLessonDialog().show() AddLessonDialog(context!!).initAddLessonDialog().show{
getActionButton(WhichButton.POSITIVE).updateTextColor(PreferencesController.cColorAccent)
getActionButton(WhichButton.NEGATIVE).updateTextColor(PreferencesController.cColorAccent)
}
} }
// hide the btnCardValue if the user is scrolling down // hide the btnCardValue if the user is scrolling down

View File

@ -23,12 +23,12 @@
package org.mosad.seil0.projectlaogai.hsoparser package org.mosad.seil0.projectlaogai.hsoparser
import android.graphics.Color import android.graphics.Color
import org.mosad.seil0.projectlaogai.R
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
class DataTypes { class DataTypes {
val times = val times = arrayOf("8.00 - 9.30", "9.45 - 11.15", "11.35 - 13.05", "14.00 -15.30", "15.45 - 17.15", "17.30 - 19.00")
arrayOf("8.00 - 9.30", "9.45 - 11.15", "11.35 - 13.05", "14.00 -15.30", "15.45 - 17.15", "17.30 - 19.00")
val primaryColors = intArrayOf( val primaryColors = intArrayOf(
Color.parseColor("#E53935"), Color.parseColor("#E53935"),
@ -72,6 +72,12 @@ class DataTypes {
Color.parseColor("#000000") Color.parseColor("#000000")
) )
enum class Theme(var string: String) {
Light("Light"),
Dark("Dark"),
Black("Black")
}
init { init {
// do something // do something
} }

View File

@ -74,7 +74,7 @@ class AddLessonDialog(_context: Context) {
// TODO save lesson // TODO save lesson
// TODO refresh timetable (add a function to show additional lessons) // TODO refresh timetable (add a function to show additional lessons)
} }
.negativeButton(R.string.cancel) { } .negativeButton(R.string.cancel)
// initialize the spinners // initialize the spinners
spinnerCourses = dialog.getCustomView().findViewById(R.id.spinner_Courses) spinnerCourses = dialog.getCustomView().findViewById(R.id.spinner_Courses)

View File

@ -93,6 +93,33 @@
android:layout_height="1dp" android:layout_height="1dp"
android:background="?dividerColor" android:background="?dividerColor"
/> />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="7dp"
android:id="@+id/linLayout_ManageLessons">
<TextView
android:id="@+id/txtView_ManageLessons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/manage_lessons"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txtView_ManageLessonsDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/manage_lessons_desc" />
</LinearLayout>
<View
android:id="@+id/divider7"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?dividerColor"
/>
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -42,6 +42,8 @@
<string name="info">Info</string> <string name="info">Info</string>
<string name="user">Benutzer</string> <string name="user">Benutzer</string>
<string name="course_desc">Tippe um den Kurs zu ändern</string> <string name="course_desc">Tippe um den Kurs zu ändern</string>
<string name="manage_lessons">Bearbeite Zusätzliche Vorlesungen</string>
<string name="manage_lessons_desc">Tippe um zusätzliche Vorlesungen zu bearbeiten</string>
<string name="about_dialog_heading">Über</string> <string name="about_dialog_heading">Über</string>
<string name="licenses">Lizenzen</string> <string name="licenses">Lizenzen</string>
<string name="theme">Design</string> <string name="theme">Design</string>
@ -58,6 +60,7 @@
<string name="select_course">Wähle deinen Studiengang</string> <string name="select_course">Wähle deinen Studiengang</string>
<string name="loading_timetable">lade Stundenplan …</string> <string name="loading_timetable">lade Stundenplan …</string>
<string name="add">hinzufügen</string> <string name="add">hinzufügen</string>
<string name="delete">löschen</string>
<string name="cancel">abbrechen</string> <string name="cancel">abbrechen</string>
<string name="select">auswählen</string> <string name="select">auswählen</string>
<string name="close">schließen</string> <string name="close">schließen</string>

View File

@ -44,10 +44,12 @@
<string name="info">Info</string> <string name="info">Info</string>
<string name="user">User</string> <string name="user">User</string>
<string name="course_desc">Tap to change course</string> <string name="course_desc">Tap to change course</string>
<string name="about_dialog_heading">About</string> <string name="manage_lessons">Manage Additional Lessons</string>
<string name="about_dialog_text" translatable="false">"This software is made by @Seil0 and is published under the terms and conditions of GPL 3. For further information visit \ngit.mosad.xyz/Seil0/ProjectLaogai \n\n© 2018-2020 seil0@mosad.xyz "</string> <string name="manage_lessons_desc">Tap to manage additional lessons</string>
<string name="about_txtView" translatable="false">hso App by @Seil0</string> <string name="about_txtView" translatable="false">hso App by @Seil0</string>
<string name="about_version" translatable="false">Version %1$s (%2$s)</string> <string name="about_version" translatable="false">Version %1$s (%2$s)</string>
<string name="about_dialog_heading">About</string>
<string name="about_dialog_text" translatable="false">"This software is made by @Seil0 and is published under the terms and conditions of GPL 3. For further information visit \ngit.mosad.xyz/Seil0/ProjectLaogai \n\n© 2018-2020 seil0@mosad.xyz "</string>
<string name="licenses">Licenses</string> <string name="licenses">Licenses</string>
<string name="theme">Theme</string> <string name="theme">Theme</string>
<string name="themeLight">Light</string> <string name="themeLight">Light</string>
@ -63,6 +65,7 @@
<string name="select_course">Select your course</string> <string name="select_course">Select your course</string>
<string name="loading_timetable">loading timetable …</string> <string name="loading_timetable">loading timetable …</string>
<string name="add">add</string> <string name="add">add</string>
<string name="delete">delete</string>
<string name="cancel">@android:string/cancel</string> <string name="cancel">@android:string/cancel</string>
<string name="select">select</string> <string name="select">select</string>
<string name="close">close</string> <string name="close">close</string>