diff --git a/.idea/misc.xml b/.idea/misc.xml index 7bfef59..37a7509 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index b881d2b..b03e8e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { minSdkVersion 21 targetSdkVersion 28 versionCode 17 - versionName "2.0.5" + versionName "2.1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -20,10 +20,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } } dependencies { @@ -36,7 +32,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.11.3' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.1.0-beta01' - implementation 'com.google.android.material:material:1.1.0-alpha08' + implementation 'com.google.android.material:material:1.1.0-alpha09' implementation 'com.android.support:customtabs:28.0.0' // implementation 'androidx.core:core-ktx:1.0.2' diff --git a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt index 5694ce4..16d7626 100644 --- a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt +++ b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt @@ -21,9 +21,6 @@ import com.google.android.material.snackbar.Snackbar import org.jsoup.Jsoup import org.jsoup.select.Elements import java.lang.IndexOutOfBoundsException -import java.net.URL -import java.text.SimpleDateFormat -import java.util.* import kotlin.collections.ArrayList class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, context: Context, application: Application, parentview: View?) : AsyncTask() { @@ -139,7 +136,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte if (plan) { val substViewModel = SubstViewModel(mApplication) val doc = Jsoup.connect("https://djd4rkn355.github.io/subst_test").get() - currentTime = doc.select("h1").text() + currentTime = doc.select("h1")[0].text() if (currentTime != prefs.getString("time", "")) { val rows = doc.select("tr") val paragraphs = doc.select("p") diff --git a/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt index ec0ad61..821fcbf 100644 --- a/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt @@ -12,7 +12,6 @@ class GeneralPlanFragment : PlanFragment() { substViewModel.allSubst?.observe(this, Observer> { mAdapter.setSubst(it) recyclerView.scheduleLayoutAnimation() - bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) }) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/Main.kt b/app/src/main/java/com/denizd/substitutionplan/Main.kt index 46e8ea5..c333b2e 100644 --- a/app/src/main/java/com/denizd/substitutionplan/Main.kt +++ b/app/src/main/java/com/denizd/substitutionplan/Main.kt @@ -1,37 +1,27 @@ package com.denizd.substitutionplan -import android.app.ActivityManager import android.app.job.JobInfo import android.app.job.JobScheduler import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.SharedPreferences -import android.content.res.Configuration -import android.graphics.BitmapFactory -import android.net.ConnectivityManager -import android.net.NetworkInfo import android.os.Build import android.os.Bundle import android.os.Handler import android.preference.PreferenceManager -import android.util.AttributeSet import android.view.* import android.view.animation.Animation import android.view.animation.AnimationUtils -import android.widget.ImageView -import android.widget.LinearLayout import android.widget.TextView import androidx.appcompat.app.AlertDialog -import androidx.appcompat.widget.Toolbar import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate -import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.ContextCompat import androidx.core.widget.NestedScrollView import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.RecyclerView -import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.appbar.AppBarLayout import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomsheet.BottomSheetBehavior @@ -39,18 +29,18 @@ import com.google.android.material.chip.Chip import com.google.android.material.snackbar.Snackbar import com.jaredrummler.android.device.DeviceName import java.lang.IllegalArgumentException -import java.text.SimpleDateFormat import java.util.* -class Main : AppCompatActivity(R.layout.activity_main) { +class Main : AppCompatActivity(R.layout.app_bar_main) { - private var bottomSheetExpanded = false private lateinit var bottomSheetBehaviour: BottomSheetBehavior<*> + private lateinit var context: Context + private lateinit var prefs: SharedPreferences override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val context = this as Context - val prefs = PreferenceManager.getDefaultSharedPreferences(context) as SharedPreferences + context = this + prefs = PreferenceManager.getDefaultSharedPreferences(context) as SharedPreferences val edit = prefs.edit() val firstTime = Intent(context, FirstTime::class.java) @@ -67,19 +57,17 @@ class Main : AppCompatActivity(R.layout.activity_main) { val appbarlayout = findViewById(R.id.appbarlayout) val toolbarTxt = findViewById(R.id.toolbarTxt) - val bottomSheetRoot = findViewById(R.id.bottom_sheet) - bottomSheetBehaviour = BottomSheetBehavior.from(bottomSheetRoot) val bottomNav = findViewById(R.id.bottom_nav) - val fragmentContainer = findViewById(R.id.fragment_container) - val bottomSheetCloser = findViewById(R.id.bottom_sheet_closer) val chip = findViewById(R.id.chip) val contextView = findViewById(R.id.coordination) val window = this.window as Window - bottomSheetExpanded = bottomSheetBehaviour.state == BottomSheetBehavior.STATE_EXPANDED - setTheme(R.style.AppTheme0) + if (prefs.getBoolean("openInfo", false)) { + openInfoDialog() + } + when (prefs.getInt("themeInt", 0)) { 0 -> { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) @@ -109,42 +97,10 @@ class Main : AppCompatActivity(R.layout.activity_main) { // } // TODO theming based on system settings for Android Q } - if (!prefs.getBoolean("showinfotab", true)) { - bottomNav.menu.removeItem(R.id.openinfopanel) - } - - fragmentContainer.setOnClickListener { - bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED) - } - - bottomSheetBehaviour.setBottomSheetCallback(object: BottomSheetBehavior.BottomSheetCallback() { - override fun onStateChanged(bottomSheet: View, newState: Int) { - if (bottomSheetBehaviour.state == BottomSheetBehavior.STATE_EXPANDED) { - bottomSheetCloser.visibility = View.VISIBLE - } else if (bottomSheetBehaviour.state == BottomSheetBehavior.STATE_COLLAPSED) { - bottomSheetCloser.visibility = View.GONE - } - } - override fun onSlide(bottomSheet: View, slideOffset: Float) {} - }) - - bottomSheetCloser.setOnClickListener { - bottomSheetCloser.visibility = View.GONE - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } - if (!prefs.getBoolean("autoRefresh", false) && prefs.getInt("firstTimeOpening", 0) != 0) { try { - val oldFormat = "EEE, dd MMM yyyy HH:mm:ss zzz" - val newFormat = "yyyy-MM-dd, HH:mm:ss" - - val d = Date(prefs.getString("time", "")) - val sdf = SimpleDateFormat(oldFormat) - sdf.applyPattern(newFormat) - val newDate = sdf.format(d) - val sb = StringBuilder() - val updated = sb.append(getText(R.string.lastupdatedK)).append(newDate).toString() + val updated = sb.append(getText(R.string.lastupdatedK)).append(prefs.getString("time", "")).toString() Snackbar.make(contextView, updated, Snackbar.LENGTH_LONG).show() } catch (e: IllegalArgumentException) {} @@ -169,7 +125,7 @@ class Main : AppCompatActivity(R.layout.activity_main) { } if (prefs.getBoolean("greeting", false)) { - if (prefs.getString("username", "").isNotEmpty()) { + if ((prefs.getString("username", "") ?: "").isNotEmpty()) { val animationIn = AnimationUtils.loadAnimation(context, R.anim.chip_slide_in) val animationOut = AnimationUtils.loadAnimation(context, R.anim.chip_slide_out) val generator = Random() @@ -216,43 +172,28 @@ class Main : AppCompatActivity(R.layout.activity_main) { } if (prefs.getInt("firstTimeOpening", 0) == 0) { - - handler.postDelayed({ - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_EXPANDED - }, 600) - - handler.postDelayed({ - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - }, 2000) - edit.putInt("firstTimeOpening", prefs.getInt("firstTimeOpening", 0) + 1).apply() } - if (prefs.getBoolean("openInfo", false)) { - handler.postDelayed({ - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_EXPANDED - }, 600) - } - - val userPlan: String = if (prefs.getString("username", "").toString().isNotEmpty()) { - when (prefs.getString("username", "")[prefs.getString("username", "").length - 1].toString().toLowerCase()) { - "s", "x", "z" -> prefs.getString("username", "") + getString(R.string.nosplan) - else -> prefs.getString("username", "") + getString(R.string.splan) + val userPlan: String = if ((prefs.getString("username", "") ?: "").toString().isNotEmpty()) { + when ((prefs.getString("username", "") ?: "")[(prefs.getString("username", "") ?: "").length - 1].toString().toLowerCase()) { + "s", "x", "z" -> (prefs.getString("username", "") ?: "") + getString(R.string.nosplan) + else -> (prefs.getString("username", "") ?: "") + getString(R.string.splan) } } else { getString(R.string.personalplan) } - lateinit var fragment: Fragment + lateinit var defaultFragment: Fragment if (prefs.getBoolean("defaultPersonalised", false)) { - fragment = PersonalPlanFragment() + defaultFragment = PersonalPlanFragment() bottomNav.selectedItemId = R.id.personal toolbarTxt.text = userPlan } else { - fragment = GeneralPlanFragment() + defaultFragment = GeneralPlanFragment() bottomNav.selectedItemId = R.id.plan toolbarTxt.text = getString(R.string.app_name) } - loadFragment(fragment) + loadFragment(defaultFragment) bottomNav.setOnNavigationItemSelectedListener { item: MenuItem -> var fragmentLoading = true @@ -271,11 +212,7 @@ class Main : AppCompatActivity(R.layout.activity_main) { toolbarTxt.text = getString(R.string.foodmenu) } R.id.openinfopanel -> { - if (bottomSheetBehaviour.state == BottomSheetBehavior.STATE_COLLAPSED) { - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_EXPANDED - } else if (bottomSheetBehaviour.state == BottomSheetBehavior.STATE_EXPANDED) { - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } + openInfoDialog() fragmentLoading = false } R.id.settings -> { @@ -284,7 +221,6 @@ class Main : AppCompatActivity(R.layout.activity_main) { } } if (fragmentLoading) { - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED appbarlayout.setExpanded(true) loadFragment(fragment) } else { @@ -299,8 +235,8 @@ class Main : AppCompatActivity(R.layout.activity_main) { val recyclerView = findViewById(R.id.linearRecycler) recyclerView.post { recyclerView.smoothScrollToPosition(0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED } + appbarlayout.setExpanded(true) } catch (e: NullPointerException) {} } R.id.menu -> { @@ -308,8 +244,8 @@ class Main : AppCompatActivity(R.layout.activity_main) { val recyclerView = findViewById(R.id.linear_food) recyclerView.post { recyclerView.smoothScrollToPosition(0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED } + appbarlayout.setExpanded(true) } catch (e: NullPointerException) {} } R.id.settings -> { @@ -317,18 +253,25 @@ class Main : AppCompatActivity(R.layout.activity_main) { val nsv = findViewById(R.id.nsvsettings) nsv.post { nsv.smoothScrollTo(0, 0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED } + appbarlayout.setExpanded(true) } catch (e: NullPointerException) {} } } - appbarlayout.setExpanded(true) } } } + private fun openInfoDialog() { + val dialog = AlertDialog.Builder(context) + val dialogView = LayoutInflater.from(context).inflate(R.layout.simple_dialog, null) + dialogView.findViewById(R.id.textviewtitle).text = getString(R.string.information) + dialogView.findViewById(R.id.dialogtext).text = prefs.getString("informational", "") + dialog.setView(dialogView).show() + } + private fun loadFragment(fragment: Fragment): Boolean { - supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit() + supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit() return true } @@ -342,12 +285,4 @@ class Main : AppCompatActivity(R.layout.activity_main) { val scheduler = getSystemService(JOB_SCHEDULER_SERVICE) as JobScheduler scheduler.schedule(info) } - - override fun onBackPressed() { - if (bottomSheetBehaviour.state == BottomSheetBehavior.STATE_EXPANDED) { - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } else { - super.onBackPressed() - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt index 858817b..b02e95e 100644 --- a/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt @@ -21,17 +21,17 @@ class PersonalPlanFragment : PlanFragment() { persPlanEmpty = true recyclerView.visibility = View.VISIBLE for (i in 0 until it.size) { - if (prefs.getString("courses", "").isEmpty() && prefs.getString("classes", "").isNotEmpty()) { - if (it[i].group.isNotEmpty() && !it[i].group.equals("")) { - if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) { + if ((prefs.getString("courses", "") ?: "").isEmpty() && (prefs.getString("classes", "") ?: "").isNotEmpty()) { + if (it[i].group.isNotEmpty() && it[i].group != "") { + if ((prefs.getString("classes", "") ?: "").contains(it[i].group) || it[i].group.contains((prefs.getString("classes", "") ?: "").toString())) { planCardList.add(it[i]) persPlanEmpty = false } } - } else if (prefs.getString("classes", "").isNotEmpty() && prefs.getString("courses", "").isNotEmpty()) { - if (!it[i].group.equals("") && !it[i].course.equals("")) { - if (prefs.getString("courses", "").contains(it[i].course)) { - if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) { + } else if ((prefs.getString("classes", "") ?: "").isNotEmpty() && (prefs.getString("courses", "") ?: "").isNotEmpty()) { + if (it[i].group != "" && it[i].course != "") { + if ((prefs.getString("courses", "") ?: "").contains(it[i].course)) { + if ((prefs.getString("classes", "") ?: "").contains(it[i].group) || it[i].group.contains((prefs.getString("classes", "") ?: "").toString())) { planCardList.add(it[i]) persPlanEmpty = false } diff --git a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt index 8d103a0..f9f5bc4 100644 --- a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt @@ -10,12 +10,10 @@ import android.view.View import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import java.util.* import kotlin.collections.ArrayList open class PlanFragment : Fragment(R.layout.plan) { @@ -23,7 +21,6 @@ open class PlanFragment : Fragment(R.layout.plan) { lateinit var mAdapter: CardAdapter private lateinit var layoutManager: GridLayoutManager val planCardList = ArrayList() - lateinit var bottomSheetText: TextView lateinit var substViewModel: SubstViewModel lateinit var mContext: Context lateinit var prefs: SharedPreferences @@ -64,8 +61,6 @@ open class PlanFragment : Fragment(R.layout.plan) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val pullToRefresh = view.findViewById(R.id.pullToRefresh) - bottomSheetText = view.rootView.findViewById(R.id.bottom_sheet_text) - bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) recyclerView = view.findViewById(R.id.linearRecycler) recyclerView.hasFixedSize() @@ -100,14 +95,12 @@ open class PlanFragment : Fragment(R.layout.plan) { if (prefs.getBoolean("autoRefresh", false)) { pullToRefresh.isRefreshing = true DataFetcher(true, false, false, mContext, activity!!.application, view.rootView).execute() - bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) } substViewModel = ViewModelProviders.of(this).get(SubstViewModel::class.java) pullToRefresh.setOnRefreshListener { pullToRefresh.isRefreshing = true DataFetcher(true, false, false, mContext, activity!!.application, view.rootView).execute() - bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) } } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt index 00cc349..6ac0e2d 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt @@ -26,7 +26,7 @@ import com.google.android.material.button.MaterialButton import com.google.android.material.textfield.TextInputEditText import com.jaredrummler.android.device.DeviceName -class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListener, ColourAdapter.OnClickListener { +class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListener, CompoundButton.OnCheckedChangeListener, ColourAdapter.OnClickListener { private lateinit var name: String private lateinit var model: String @@ -59,7 +59,6 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen val switchDisableGreeting = view.findViewById(R.id.switchDisableGreeting) val switchDark = view.findViewById(R.id.switchDark) - val switchHideInfo = view.findViewById(R.id.switchHideInfo) val switchNotifications = view.findViewById(R.id.switchNotifications) val switchDefaultPlan = view.findViewById(R.id.switchDefaultPlan) val switchOpenInfo = view.findViewById(R.id.switchOpenInfo) @@ -70,13 +69,12 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen val btnCustomiseColours = view.findViewById(R.id.btnCustomiseColours) val btnVersion = view.findViewById(R.id.btnVersion) - switchDisableGreeting.setOnClickListener(this) - switchDark.setOnClickListener(this) - switchHideInfo.setOnClickListener(this) - switchNotifications.setOnClickListener(this) - switchDefaultPlan.setOnClickListener(this) - switchOpenInfo.setOnClickListener(this) - switchAutoRefresh.setOnClickListener(this) + switchDisableGreeting.setOnCheckedChangeListener(this) + switchDark.setOnCheckedChangeListener(this) + switchNotifications.setOnCheckedChangeListener(this) + switchDefaultPlan.setOnCheckedChangeListener(this) + switchOpenInfo.setOnCheckedChangeListener(this) + switchAutoRefresh.setOnCheckedChangeListener(this) helpCourses.setOnClickListener(this) helpClasses.setOnClickListener(this) btnCustomiseColours.setOnClickListener(this) @@ -91,7 +89,6 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen 1 -> true else -> false } - switchHideInfo.isChecked = prefs.getBoolean("showinfotab", true) switchNotifications.isChecked = prefs.getBoolean("notif", false) switchDefaultPlan.isChecked = prefs.getBoolean("defaultPersonalised", false) switchOpenInfo.isChecked = prefs.getBoolean("openInfo", false) @@ -136,54 +133,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen when (v?.id) { R.id.chipHelpCourses -> createDialog(getString(R.string.helpCoursesTitle), getString(R.string.helpCourses)) R.id.chipHelpClasses -> createDialog(getString(R.string.helpClassesTitle), getString(R.string.helpClasses)) - R.id.switchDisableGreeting -> { - val switchDisableGreeting = v.findViewById(R.id.switchDisableGreeting) - if (switchDisableGreeting.isChecked) edit.putBoolean("greeting", true) else edit.putBoolean("greeting", false) - } - R.id.switchDark -> { - val switchDark = v.findViewById(R.id.switchDark) - val bottomNav = v.rootView.findViewById(R.id.bottom_nav) - if (switchDark.isChecked) { - edit.putInt("themeInt", 1) - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) - window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE - window?.navigationBarColor = ContextCompat.getColor(mContext, R.color.background) - - } else { - edit.putInt("themeInt", 0) - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - window?.navigationBarColor = ContextCompat.getColor(mContext, R.color.background) - } - } - if (prefs.getBoolean("defaultPersonalised", false)) { - bottomNav.selectedItemId = R.id.personal - } else { - bottomNav.selectedItemId = R.id.plan - } - } - R.id.switchHideInfo -> { - val switchHideInfo = v.findViewById(R.id.switchHideInfo) - if (switchHideInfo.isChecked) edit.putBoolean("showinfotab", true) else edit.putBoolean("showinfotab", false) - } R.id.btnCustomiseColours -> createColourDialog() - R.id.switchNotifications -> { - val switchNotifications = v.findViewById(R.id.switchNotifications) - if (switchNotifications.isChecked) edit.putBoolean("notif", true) else edit.putBoolean("notif", false) - } - R.id.switchDefaultPlan -> { - val switchDefaultPlan = v.findViewById(R.id.switchDefaultPlan) - if (switchDefaultPlan.isChecked) edit.putBoolean("defaultPersonalised", true) else edit.putBoolean("defaultPersonalised", false) - } - R.id.switchOpenInfo -> { - val switchOpenInfo = v.findViewById(R.id.switchOpenInfo) - if (switchOpenInfo.isChecked) edit.putBoolean("openInfo", true) else edit.putBoolean("openInfo", false) - } - R.id.switchAutoRefresh -> { - val switchAutoRefresh = v.findViewById(R.id.switchAutoRefresh) - if (switchAutoRefresh.isChecked) edit.putBoolean("autoRefresh", true) else edit.putBoolean("autoRefresh", false) - } R.id.btnWebsite -> { try { customTabsIntent.launchUrl(mContext, Uri.parse("http://307.joomla.schule.bremen.de")) @@ -254,13 +204,56 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen edit.apply() } + override fun onCheckedChanged(v: CompoundButton?, isChecked: Boolean) { + if (v?.isPressed == true) { + when (v.id) { + R.id.switchDisableGreeting -> { + edit.putBoolean("greeting", isChecked) + } + R.id.switchDark -> { + val bottomNav = v.rootView.findViewById(R.id.bottom_nav) + if (isChecked) { + edit.putInt("themeInt", 1) + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE + window?.navigationBarColor = ContextCompat.getColor(mContext, R.color.background) + + } else { + edit.putInt("themeInt", 0) + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + window?.navigationBarColor = ContextCompat.getColor(mContext, R.color.background) + } + } + if (prefs.getBoolean("defaultPersonalised", false)) { + bottomNav.selectedItemId = R.id.personal + } else { + bottomNav.selectedItemId = R.id.plan + } + } + R.id.switchNotifications -> { + edit.putBoolean("notif", isChecked) + } + R.id.switchDefaultPlan -> { + edit.putBoolean("defaultPersonalised", isChecked) + } + R.id.switchOpenInfo -> { + edit.putBoolean("openInfo", isChecked) + } + R.id.switchAutoRefresh -> { + edit.putBoolean("autoRefresh", isChecked) + } + } + edit.apply() + } + } + private fun createDialog(title: String, text: String) { val alertDialog = AlertDialog.Builder(mContext, R.style.AlertDialog) val dialogView = LayoutInflater.from(mContext).inflate(R.layout.simple_dialog, null) - val dialogTitle = dialogView.findViewById(R.id.textviewtitle) - val dialogText = dialogView.findViewById(R.id.dialogtext) - dialogTitle.text = title - dialogText.text = text + dialogView.findViewById(R.id.textviewtitle).text = title + dialogView.findViewById(R.id.dialogtext).text = text alertDialog.setView(dialogView).show() } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 0580da7..0000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 5649cae..55bdb56 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -10,20 +10,18 @@ android:id="@+id/appbarlayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:theme="@style/AppThemeLight.AppBarOverlay" - app:elevation="0dp"> + android:background="@color/background" + android:elevation="0dp"> + android:elevation="0dp" + app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> - + android:layout_height="1dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + app:layout_anchor="@+id/bottom_nav" + android:layout_gravity="top" + android:background="@color/lighthintcolor" + android:clickable="false" + android:focusable="false"/> - + diff --git a/app/src/main/res/layout/bottom_sheet.xml b/app/src/main/res/layout/bottom_sheet.xml deleted file mode 100644 index eb0eb36..0000000 --- a/app/src/main/res/layout/bottom_sheet.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/content_settings.xml b/app/src/main/res/layout/content_settings.xml index bd4b7d5..5147330 100644 --- a/app/src/main/res/layout/content_settings.xml +++ b/app/src/main/res/layout/content_settings.xml @@ -143,40 +143,6 @@ app:layout_constraintStart_toStartOf="@+id/txtDark" app:layout_constraintTop_toTopOf="@+id/txtDark" /> - - - - - - - - + app:layout_constraintStart_toStartOf="@+id/txtRestart" + app:layout_constraintTop_toBottomOf="@+id/txtRestart" /> + app:layout_constraintTop_toBottomOf="@+id/txtRestart" /> diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml index 359f2e7..86b6dd6 100644 --- a/app/src/main/res/layout/list_item.xml +++ b/app/src/main/res/layout/list_item.xml @@ -13,7 +13,7 @@ android:layout_marginEnd="8dp" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" - app:cardElevation="1dp"> + app:cardElevation="0dp"> + android:layout_height="match_parent" + android:background="@color/lightbackground"> - + Versionsnummer Datenschutzerklärung AGB - Überprüfe die AGB der App - Überprüfe die Datenschutzerklärung der App + Überprüfe die AGB der App (Englisch) + Überprüfe die Datenschutzerklärung der App (Englisch) Keine Informationen verfügbar Informationen Entwickelt von Deniz :)