@ -30,9 +30,11 @@ import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.Switch
import android.widget.TextView
import androidx.fragment.app.Fragment
import com.afollestad.aesthetic.Aesthetic
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.callbacks.onDismiss
import com.afollestad.materialdialogs.color.colorChooser
import com.afollestad.materialdialogs.customview.customView
import com.afollestad.materialdialogs.list.listItems
@ -67,6 +69,7 @@ class SettingsFragment : Fragment() {
private lateinit var linLayoutPrimaryColor : LinearLayout
private lateinit var linLayoutAccentColor : LinearLayout
private lateinit var switchBuffet : Switch
private lateinit var txtViewCourse : TextView
override fun onCreateView ( inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ) : View ? {
@ -80,6 +83,8 @@ class SettingsFragment : Fragment() {
linLayoutPrimaryColor = view . findViewById ( R . id . linLayout _PrimaryColor )
linLayoutAccentColor = view . findViewById ( R . id . linLayout _AccentColor )
switchBuffet = view . findViewById ( R . id . switch _buffet )
// if we call txtView_Course via KAE view binding it'll result in a NPE in the onDismissed call
txtViewCourse = view . findViewById ( R . id . txtView _Course )
initActions ( )
@ -128,7 +133,11 @@ class SettingsFragment : Fragment() {
}
linLayoutCourse . setOnClickListener {
selectCourse ( context !! )
selectCourse ( context !! ) . show {
onDismiss {
txtViewCourse . text = cCourse . courseName // update txtView after the dialog is dismissed
}
}
}
linLayoutAbout . setOnClickListener {
@ -229,21 +238,21 @@ class SettingsFragment : Fragment() {
}
fun selectCourse ( context : Context ) {
fun selectCourse ( context : Context ) : MaterialDialog {
val courseNameList = ArrayList < String > ( )
coursesList . forEach { ( _ , courseName ) ->
courseNameList . add ( courseName )
}
// open a new dialog
MaterialDialog ( context )
// return a new course selection dialog
return MaterialDialog ( context )
. title ( R . string . select _course )
. listItems ( items = courseNameList ) { _ , index , _ ->
val dialog = MaterialDialog ( context ) . cancelable ( false )
val loa dingD ialog = MaterialDialog ( context ) . cancelable ( false )
. cancelOnTouchOutside ( false )
. customView ( R . layout . dialog _loading )
dialog . show ( )
loa dingD ialog. show ( )
GlobalScope . launch ( Dispatchers . Default ) {
PreferencesController . saveCourse ( context , coursesList [ index ] ) // save the course
@ -259,13 +268,11 @@ class SettingsFragment : Fragment() {
CacheController . readTimetable ( cCourse . courseName , 1 , context )
withContext ( Dispatchers . Main ) {
dialog . dismiss ( )
txtView _Course . text = cCourse . courseName // update txtView
loadingDialog . dismiss ( )
}
}
}
. show ( )
}
}