From d4cef4f25d56af93afd2dacb54b8db0a059675f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20D=C3=BCzg=C3=B6ren?= Date: Sun, 2 Jun 2019 17:57:57 +0200 Subject: [PATCH] Version 2.0.2 - card background now customisable, tablet layout changed --- app/build.gradle | 4 +- .../denizd/substitutionplan/CardAdapter.kt | 77 ++++--- .../denizd/substitutionplan/DataFetcher.kt | 15 +- .../com/denizd/substitutionplan/FirstTime.kt | 6 +- .../denizd/substitutionplan/FoodFragment.kt | 143 +++++++------ .../java/com/denizd/substitutionplan/Main.kt | 56 +++-- .../substitutionplan/NotificationService.kt | 13 +- .../substitutionplan/PersonalFragment.kt | 4 - .../denizd/substitutionplan/PlanFragment.kt | 34 ++- .../substitutionplan/SettingsFragment.kt | 47 ++--- .../com/denizd/substitutionplan/SubstDao.kt | 6 +- .../substitutionplan/SubstRepository.kt | 6 +- .../denizd/substitutionplan/SubstViewModel.kt | 6 +- app/src/main/res/layout/bg_colour_picker.xml | 125 +++++++++++ app/src/main/res/layout/colour_picker.xml | 196 ------------------ app/src/main/res/layout/content_settings.xml | 2 +- app/src/main/res/layout/course_card.xml | 9 +- app/src/main/res/values-night/colors.xml | 13 +- app/src/main/res/values-sw600dp/attr.xml | 4 + app/src/main/res/values/attr.xml | 4 + app/src/main/res/values/attrs.xml | 18 -- app/src/main/res/values/colors.xml | 33 +-- app/src/main/res/values/styles.xml | 8 +- 23 files changed, 379 insertions(+), 450 deletions(-) delete mode 100644 app/src/main/java/com/denizd/substitutionplan/PersonalFragment.kt create mode 100644 app/src/main/res/layout/bg_colour_picker.xml delete mode 100644 app/src/main/res/layout/colour_picker.xml create mode 100644 app/src/main/res/values-sw600dp/attr.xml create mode 100644 app/src/main/res/values/attr.xml delete mode 100644 app/src/main/res/values/attrs.xml diff --git a/app/build.gradle b/app/build.gradle index 43a7ed5..c62bbb4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.denizd.substitutionplan" minSdkVersion 21 targetSdkVersion 28 - versionCode 12 - versionName "2.0.0" + versionCode 14 + versionName "2.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt index a02276e..b6ae668 100644 --- a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt @@ -8,11 +8,12 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.card.MaterialCardView class CardAdapter(private var mSubst: List) : RecyclerView.Adapter() { - var colour = 0 - var colorCheck = "" + private var colour = 0 + private var colorCheck = "" class CardViewHolder (view: View) : RecyclerView.ViewHolder(view) { var mImageView: ImageView = itemView.findViewById(R.id.iconView) @@ -22,10 +23,7 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter) { - mSubst = subst + var mCard = itemView.findViewById(R.id.planCard) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder { @@ -35,7 +33,7 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter) : RecyclerView.Adapter prefs.getInt("colGerman", 0) - "mat", "map" -> prefs.getInt("colMaths", 0) - "eng", "enp", "ena" -> prefs.getInt("colEnglish", 0) - "spo", "spp", "spth" -> prefs.getInt("colPhysEd", 0) - "pol", "pop" -> prefs.getInt("colPolitics", 0) - "dar", "dap" -> prefs.getInt("colTheatre", 0) - "phy", "php" -> prefs.getInt("colPhysics", 0) - "bio", "bip" -> prefs.getInt("colBiology", 0) - "che", "chp" -> prefs.getInt("colChemistry", 0) - "phi", "psp" -> prefs.getInt("colPhilosophy", 0) - "laa", "laf", "lat" -> prefs.getInt("colLatin", 0) - "spa", "spf" -> prefs.getInt("colSpanish", 0) - "fra", "frf", "frz" -> prefs.getInt("colFrench", 0) - "inf" -> prefs.getInt("colCompsci", 0) - "ges" -> prefs.getInt("colHistory", 0) - "rel" -> prefs.getInt("colReligion", 0) - "geg" -> prefs.getInt("colGeography", 0) - "kun" -> prefs.getInt("colArts", 0) - "mus" -> prefs.getInt("colMusic", 0) - "tue" -> prefs.getInt("colTurkish", 0) - "chi" -> prefs.getInt("colChinese", 0) - "gll" -> prefs.getInt("colGLL", 0) - "wat" -> prefs.getInt("colWAT", 0) - "för" -> prefs.getInt("colForder", 0) - "met" -> prefs.getInt("colWP", 0) + "deu", "dep", "daz", "fda" -> prefs.getInt("bgGerman", 0) + "mat", "map" -> prefs.getInt("bgMaths", 0) + "eng", "enp", "ena" -> prefs.getInt("bgEnglish", 0) + "spo", "spp", "spth" -> prefs.getInt("bgPhysEd", 0) + "pol", "pop" -> prefs.getInt("bgPolitics", 0) + "dar", "dap" -> prefs.getInt("bgTheatre", 0) + "phy", "php" -> prefs.getInt("bgPhysics", 0) + "bio", "bip", "nw1", "nw2", "nw3", "nw4" -> prefs.getInt("bgBiology", 0) + "che", "chp" -> prefs.getInt("bgChemistry", 0) + "phi", "psp" -> prefs.getInt("bgPhilosophy", 0) + "laa", "laf", "lat" -> prefs.getInt("bgLatin", 0) + "spa", "spf" -> prefs.getInt("bgSpanish", 0) + "fra", "frf", "frz" -> prefs.getInt("bgFrench", 0) + "inf" -> prefs.getInt("bgCompsci", 0) + "ges" -> prefs.getInt("bgHistory", 0) + "rel" -> prefs.getInt("bgReligion", 0) + "geg" -> prefs.getInt("bgGeography", 0) + "kun" -> prefs.getInt("bgArts", 0) + "mus" -> prefs.getInt("bgMusic", 0) + "tue" -> prefs.getInt("bgTurkish", 0) + "chi" -> prefs.getInt("bgChinese", 0) + "gll" -> prefs.getInt("bgGLL", 0) + "wat" -> prefs.getInt("bgWAT", 0) + "för" -> prefs.getInt("bgForder", 0) + "met", "wpb" -> prefs.getInt("bgWP", 0) else -> 0 } } catch (e: StringIndexOutOfBoundsException) { try { colorCheck = holder.mCourse.text.toString().toLowerCase().substring(0, 2) colour = when (colorCheck) { - "nw" -> prefs.getInt("colBiology", 0) - "wp" -> prefs.getInt("colWP", 0) + "nw" -> prefs.getInt("bgBiology", 0) + "wp" -> prefs.getInt("bgWP", 0) else -> 0 } } catch (e2: StringIndexOutOfBoundsException) { colour = 0 } - } finally { - if (colour == 0) { - colour = R.color.textcolor - } } - holder.mImageView.drawable.setTint(ContextCompat.getColor(holder.mImageView.context, colour)) - holder.mCourse.setTextColor(ContextCompat.getColor(holder.mCourse.context, colour)) + if (colour != 0) { + holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, colour)) + } else { + holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, R.color.lightbackground)) + } } override fun getItemCount(): Int = mSubst.size diff --git a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt index 178ffa9..4aa3396 100644 --- a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt +++ b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt @@ -38,9 +38,9 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte private var menu = ismenu /* booleans to improve performance when fetching data - "plan" is required to fetch the substitution data - "menu" is required to fetch the food menu - "jobservice" is required to send a notification + "plan" = true is required to fetch the substitution data + "menu" = true is required to fetch the food menu + "jobservice" = true is required to send a notification "jobservice" = true has no effect unless "plan" is also true */ @@ -77,7 +77,6 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte private val handler = Handler(Looper.getMainLooper()) override fun doInBackground(vararg params: Void?): Void? { - try { mView?.let { v: View -> pullToRefresh = v.findViewById(R.id.pullToRefresh) @@ -209,7 +208,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte val subst = Subst(drawable, groupS[i].toString(), dateS[i].toString(), timeS[i].toString(), courseS[i].toString(), roomS[i].toString(), additionalS[i].toString(), priority) priority-- - substViewModel.insert(subst) + substViewModel.insertSubst(subst) if (jobservice) { if (prefs.getString("courses", "").isEmpty() && prefs.getString("classes", "").isNotEmpty()) { @@ -296,9 +295,11 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte } - } catch (e: NullPointerException) { + } catch (e: Exception) { mView?.let { v: View -> - pullToRefresh.isRefreshing = false + try { + pullToRefresh.isRefreshing = false + } catch (ignored: Exception) {} val snackbarview = v.findViewById(R.id.coordination) Snackbar.make(snackbarview, mContext.getText(R.string.nointernet), Snackbar.LENGTH_LONG) .setAction("Action", null).show() diff --git a/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt b/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt index cbdca6f..a4c18bb 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt +++ b/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt @@ -129,11 +129,7 @@ class FirstTime : AppCompatActivity(R.layout.activity_first_time) { } private fun createDialog(title: String, text: String) { - val alertDialog = if (prefs.getInt("themeInt", 0) == 1) { - AlertDialog.Builder(context, R.style.AlertDialogCustomDark) - } else { - AlertDialog.Builder(context, R.style.AlertDialogCustomLight) - } + val alertDialog = AlertDialog.Builder(context, R.style.AlertDialog) val dialogView = LayoutInflater.from(context).inflate(R.layout.simple_dialog, null) val dialogTitle = dialogView.findViewById(R.id.textviewtitle) val dialogText = dialogView.findViewById(R.id.dialogtext) diff --git a/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt b/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt index a1964a1..bd49f72 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt @@ -15,6 +15,7 @@ import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.google.android.material.snackbar.Snackbar import com.madapps.prefrences.EasyPrefrences import org.jsoup.Jsoup import org.jsoup.nodes.Document @@ -79,6 +80,7 @@ class FoodFragment : Fragment(R.layout.food_layout) { adapter: FoodAdapter, foodArrayList: ArrayList, swipeRefreshLayout: SwipeRefreshLayout, rootView: View) : AsyncTask() { + private val mContext = context private val mRecyclerView = recyclerView private val mEasyPrefs = easyPrefs private val mAdapter = adapter @@ -91,96 +93,107 @@ class FoodFragment : Fragment(R.layout.food_layout) { val mRootView = rootView private val fadeOut = AnimationUtils.loadAnimation(context, R.anim.fade_out) private val handler = Handler(Looper.getMainLooper()) + private var exceptionOccured = false override fun doInBackground(vararg params: Void?): Void? { - docFood = Jsoup.connect("https://djd4rkn355.github.io/food.html").get() - foodElements = docFood.select("th") + try { + docFood = Jsoup.connect("https://djd4rkn355.github.io/food.html").get() + foodElements = docFood.select("th") - progressBar = mRootView.findViewById(R.id.progressBar) + progressBar = mRootView.findViewById(R.id.progressBar) - progressBar.max = foodElements.size + progressBar.max = foodElements.size - var foodInt = 0 - while (foodInt in 0 until foodElements.size) { - try { // what a mess this is! - if (foodElements[foodInt].text().contains("Montag") || - foodElements[foodInt].text().contains("Dienstag") || - foodElements[foodInt].text().contains("Mittwoch") || - foodElements[foodInt].text().contains("Donnerstag") || - foodElements[foodInt].text().contains("Freitag")) { + var foodInt = 0 + while (foodInt in 0 until foodElements.size) { + try { // what a mess this is! + if (foodElements[foodInt].text().contains("Montag") || + foodElements[foodInt].text().contains("Dienstag") || + foodElements[foodInt].text().contains("Mittwoch") || + foodElements[foodInt].text().contains("Donnerstag") || + foodElements[foodInt].text().contains("Freitag")) { - if (foodElements[foodInt + 3].text().contains("Montag") || - foodElements[foodInt + 3].text().contains("Dienstag") || - foodElements[foodInt + 3].text().contains("Mittwoch") || - foodElements[foodInt + 3].text().contains("Donnerstag") || - foodElements[foodInt + 3].text().contains("Freitag") || - foodElements[foodInt + 3].text().contains("von")) { + if (foodElements[foodInt + 3].text().contains("Montag") || + foodElements[foodInt + 3].text().contains("Dienstag") || + foodElements[foodInt + 3].text().contains("Mittwoch") || + foodElements[foodInt + 3].text().contains("Donnerstag") || + foodElements[foodInt + 3].text().contains("Freitag") || + foodElements[foodInt + 3].text().contains("von")) { + foodList.add(foodElements[foodInt].text() + "\n" + + foodElements[foodInt + 1].text() + "\n" + + foodElements[foodInt + 2].text()) + foodInt += 2 + } else if (foodElements[foodInt + 2].text().contains("Montag") || + foodElements[foodInt + 2].text().contains("Dienstag") || + foodElements[foodInt + 2].text().contains("Mittwoch") || + foodElements[foodInt + 2].text().contains("Donnerstag") || + foodElements[foodInt + 2].text().contains("Freitag") || + foodElements[foodInt + 2].text().contains("von")) { + foodList.add(foodElements[foodInt].text() + "\n" + + foodElements[foodInt + 1].text()) + foodInt += 1 + } + + } else { + foodList.add(foodElements[foodInt].text()) + } + } catch (e: IndexOutOfBoundsException) { + try { foodList.add(foodElements[foodInt].text() + "\n" + foodElements[foodInt + 1].text() + "\n" + foodElements[foodInt + 2].text()) - foodInt += 2 - } else if (foodElements[foodInt + 2].text().contains("Montag") || - foodElements[foodInt + 2].text().contains("Dienstag") || - foodElements[foodInt + 2].text().contains("Mittwoch") || - foodElements[foodInt + 2].text().contains("Donnerstag") || - foodElements[foodInt + 2].text().contains("Freitag") || - foodElements[foodInt + 2].text().contains("von")) { + break + } catch (e1: IndexOutOfBoundsException) { foodList.add(foodElements[foodInt].text() + "\n" + foodElements[foodInt + 1].text()) - foodInt += 1 + break } - - } else { - foodList.add(foodElements[foodInt].text()) - } - } catch (e: IndexOutOfBoundsException) { - try { - foodList.add(foodElements[foodInt].text() + "\n" - + foodElements[foodInt + 1].text() + "\n" - + foodElements[foodInt + 2].text()) - break - } catch (e1: IndexOutOfBoundsException) { - foodList.add(foodElements[foodInt].text() + "\n" - + foodElements[foodInt + 1].text()) - break } + foodInt++ + progressBar.progress = foodInt } - foodInt++ - progressBar.progress = foodInt - } - progressBar.progress = 100 + progressBar.progress = 100 - mEasyPrefs.putListString("foodListPrefs", foodList) + mEasyPrefs.putListString("foodListPrefs", foodList) + } catch (e: Exception) { exceptionOccured = true } return null } override fun onPostExecute(result: Void?) { super.onPostExecute(result) - try { - mRecyclerView.removeAllViews() - mFoodArrayList.removeAll(mFoodArrayList) - } catch (ignored: NullPointerException) {} + if (!exceptionOccured) { + try { + mRecyclerView.removeAllViews() + mFoodArrayList.removeAll(mFoodArrayList) + } catch (ignored: NullPointerException) {} - val foodListPopulation = ArrayList(mEasyPrefs.getListString("foodListPrefs")) + val foodListPopulation = ArrayList(mEasyPrefs.getListString("foodListPrefs")) - for (i in 0 until foodListPopulation.size) { - mFoodArrayList.add(Food(foodListPopulation[i])) - mAdapter.setFood(mFoodArrayList) - } - - mRecyclerView.scheduleLayoutAnimation() - pullToRefresh.isRefreshing = false - - handler.postDelayed({ progressBar.startAnimation(fadeOut) }, 200) - fadeOut.setAnimationListener(object: Animation.AnimationListener { - override fun onAnimationStart(arg0: Animation) {} - override fun onAnimationRepeat(arg0: Animation) {} - override fun onAnimationEnd(arg0: Animation) { - progressBar.progress = 0 + for (i in 0 until foodListPopulation.size) { + mFoodArrayList.add(Food(foodListPopulation[i])) + mAdapter.setFood(mFoodArrayList) } - }) + + mRecyclerView.scheduleLayoutAnimation() + pullToRefresh.isRefreshing = false + + handler.postDelayed({ progressBar.startAnimation(fadeOut) }, 200) + fadeOut.setAnimationListener(object: Animation.AnimationListener { + override fun onAnimationStart(arg0: Animation) {} + override fun onAnimationRepeat(arg0: Animation) {} + override fun onAnimationEnd(arg0: Animation) { + progressBar.progress = 0 + } + }) + } else { + pullToRefresh.isRefreshing = false + val snackbarview = mRootView.findViewById(R.id.coordination) + Snackbar.make(snackbarview, mContext.getText(R.string.nointernet), Snackbar.LENGTH_LONG) + .setAction("Action", null).show() + + } } } diff --git a/app/src/main/java/com/denizd/substitutionplan/Main.kt b/app/src/main/java/com/denizd/substitutionplan/Main.kt index a7cb0e0..d785054 100644 --- a/app/src/main/java/com/denizd/substitutionplan/Main.kt +++ b/app/src/main/java/com/denizd/substitutionplan/Main.kt @@ -42,8 +42,8 @@ import java.util.* class Main : AppCompatActivity(R.layout.activity_main) { - var bottomSheetExpanded = false - lateinit var bottomSheetBehaviour: BottomSheetBehavior<*> + private var bottomSheetExpanded = false + private lateinit var bottomSheetBehaviour: BottomSheetBehavior<*> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -144,10 +144,7 @@ class Main : AppCompatActivity(R.layout.activity_main) { if (info.manufacturer.contains("Huawei") || info.manufacturer.contains("Honor") || info.manufacturer.contains("Xiaomi")) { - val alertDialog = when (prefs.getInt("themeInt", 0)) { - 1 -> AlertDialog.Builder(context, R.style.AlertDialogCustomDark) - else -> AlertDialog.Builder(context, R.style.AlertDialogCustomLight) - } + val alertDialog = AlertDialog.Builder(context, R.style.AlertDialog) val dialogView = LayoutInflater.from(context).inflate(R.layout.secret_dialog, null) val title = dialogView.findViewById(R.id.textviewtitle) title.text = getString(R.string.chinaTitle) @@ -160,13 +157,6 @@ class Main : AppCompatActivity(R.layout.activity_main) { } } - val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - val statusMobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).state - val statusWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).state - if (statusMobile != NetworkInfo.State.CONNECTED && statusWifi != NetworkInfo.State.CONNECTED) { - Snackbar.make(contextView, getText(R.string.nointernet), Snackbar.LENGTH_LONG).show() - } - if (prefs.getBoolean("greeting", false)) { if (prefs.getString("username", "").isNotEmpty()) { val animationIn = AnimationUtils.loadAnimation(context, R.anim.chip_slide_in) @@ -192,7 +182,7 @@ class Main : AppCompatActivity(R.layout.activity_main) { else -> greetings[1] + prefs.getString("username", "") + "." } } - else -> getString(R.string.error) + else -> ";)" // getString(R.string.error) } handler.postDelayed({ @@ -293,26 +283,32 @@ class Main : AppCompatActivity(R.layout.activity_main) { bottomNav.setOnNavigationItemReselectedListener { item: MenuItem -> when (item.itemId) { - R.id.plan, R.id.personal-> { - val recyclerView = findViewById(R.id.linearRecycler) - recyclerView.post { - recyclerView.smoothScrollToPosition(0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } + R.id.plan, R.id.personal -> { + try { + val recyclerView = findViewById(R.id.linearRecycler) + recyclerView.post { + recyclerView.smoothScrollToPosition(0) + bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED + } + } catch (e: NullPointerException) {} } R.id.menu -> { - val recyclerView = findViewById(R.id.linear_food) - recyclerView.post { - recyclerView.smoothScrollToPosition(0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } + try { + val recyclerView = findViewById(R.id.linear_food) + recyclerView.post { + recyclerView.smoothScrollToPosition(0) + bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED + } + } catch (e: NullPointerException) {} } R.id.settings -> { - val nsv = findViewById(R.id.nsvsettings) - nsv.post { - nsv.smoothScrollTo(0, 0) - bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED - } + try { + val nsv = findViewById(R.id.nsvsettings) + nsv.post { + nsv.smoothScrollTo(0, 0) + bottomSheetBehaviour.state = BottomSheetBehavior.STATE_COLLAPSED + } + } catch (e: NullPointerException) {} } } appbarlayout.setExpanded(true) diff --git a/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt b/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt index 84a6193..7660a90 100644 --- a/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt +++ b/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt @@ -2,7 +2,11 @@ package com.denizd.substitutionplan import android.app.job.JobParameters import android.app.job.JobService +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkInfo import android.preference.PreferenceManager +import com.google.android.material.snackbar.Snackbar import java.io.IOException import java.lang.NullPointerException import java.net.MalformedURLException @@ -26,10 +30,15 @@ class NotificationService : JobService() { private fun doBackgroundWork(params: JobParameters) { val prefs = PreferenceManager.getDefaultSharedPreferences(context) val edit = prefs.edit() + val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val statusMobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).state + val statusWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).state Thread(Runnable { if (jobCancelled) { return@Runnable + } else if (statusMobile != NetworkInfo.State.CONNECTED && statusWifi != NetworkInfo.State.CONNECTED) { + return@Runnable } if (prefs.getBoolean("notif", false)) { edit.putInt("notificationTestNumberDev", prefs.getInt("notificationTestNumberDev", 0) + 1).apply() @@ -40,9 +49,7 @@ class NotificationService : JobService() { DataFetcher(true, true, true, context, application, null).execute() edit.putString("time", connection.getHeaderField("Last-Modified")).apply() } - } catch (ignored: NullPointerException) {} - catch (ignored: IOException) {} - catch (ignored: MalformedURLException) {} + } catch (ignored: Exception) {} } jobFinished(params, false) }).start() diff --git a/app/src/main/java/com/denizd/substitutionplan/PersonalFragment.kt b/app/src/main/java/com/denizd/substitutionplan/PersonalFragment.kt deleted file mode 100644 index 9150efb..0000000 --- a/app/src/main/java/com/denizd/substitutionplan/PersonalFragment.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.denizd.substitutionplan - -class PersonalFragment { -} \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt index 0d5ec51..cc3a7a4 100644 --- a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt @@ -18,7 +18,9 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import java.util.* import kotlin.collections.ArrayList -class PlanFragment() : Fragment(R.layout.plan) { // isPersonal: Boolean + + +class PlanFragment : Fragment(R.layout.plan) { private lateinit var recyclerView: RecyclerView private lateinit var mAdapter: CardAdapter private lateinit var layoutManager: GridLayoutManager @@ -45,10 +47,19 @@ class PlanFragment() : Fragment(R.layout.plan) { // isPersonal: Boolean override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - val grid = when (newConfig.orientation) { - Configuration.ORIENTATION_PORTRAIT -> 1 - else -> 2 + val tabletSize = resources.getBoolean(R.bool.isTablet) + val grid = if (tabletSize) { + when (newConfig.orientation) { + Configuration.ORIENTATION_PORTRAIT -> 2 + else -> 3 + } + } else { + when (newConfig.orientation) { + Configuration.ORIENTATION_PORTRAIT -> 1 + else -> 2 + } } + layoutManager = GridLayoutManager(mContext, grid) recyclerView.layoutManager = layoutManager } @@ -68,10 +79,19 @@ class PlanFragment() : Fragment(R.layout.plan) { // isPersonal: Boolean recyclerView = view.findViewById(R.id.linearRecycler) recyclerView.hasFixedSize() - val grid = when (resources.configuration.orientation) { - Configuration.ORIENTATION_PORTRAIT -> 1 - else -> 2 + val tabletSize = resources.getBoolean(R.bool.isTablet) + val grid = if (tabletSize) { + when (resources.configuration.orientation) { + Configuration.ORIENTATION_PORTRAIT -> 2 + else -> 3 + } + } else { + when (resources.configuration.orientation) { + Configuration.ORIENTATION_PORTRAIT -> 1 + else -> 2 + } } + layoutManager = GridLayoutManager(mContext, grid) recyclerView.layoutManager = layoutManager diff --git a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt index 49e7530..6678f7c 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt @@ -260,11 +260,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen } private fun createDialog(title: String, text: String) { - val alertDialog = if (prefs.getInt("themeInt", 0) == 1) { - AlertDialog.Builder(mContext, R.style.AlertDialogCustomDark) - } else { - AlertDialog.Builder(mContext, R.style.AlertDialogCustomLight) - } + 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) @@ -279,10 +275,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen val courses = arrayOf(getString(R.string.courseDeu), getString(R.string.courseEng), getString(R.string.courseFra), getString(R.string.courseSpa), getString(R.string.courseLat), getString(R.string.courseTue), getString(R.string.courseChi), getString(R.string.courseKun), getString(R.string.courseMus), getString(R.string.courseDar), getString(R.string.courseGeg), getString(R.string.courseGes), getString(R.string.coursePol), getString(R.string.coursePhi), getString(R.string.courseRel), getString(R.string.courseMat), getString(R.string.courseBio), getString(R.string.courseChe), getString(R.string.coursePhy), getString(R.string.courseInf), getString(R.string.courseSpo), getString(R.string.courseGll), getString(R.string.courseWat), getString(R.string.courseFor), getString(R.string.courseWp)) val coursesIcons = intArrayOf(R.drawable.ic_german, R.drawable.ic_english, R.drawable.ic_french, R.drawable.ic_spanish, R.drawable.ic_latin, R.drawable.ic_turkish, R.drawable.ic_chinese, R.drawable.ic_arts, R.drawable.ic_music, R.drawable.ic_drama, R.drawable.ic_geography, R.drawable.ic_history, R.drawable.ic_politics, R.drawable.ic_philosophy, R.drawable.ic_religion, R.drawable.ic_maths, R.drawable.ic_biology, R.drawable.ic_chemistry, R.drawable.ic_physics, R.drawable.ic_compsci, R.drawable.ic_pe, R.drawable.ic_gll, R.drawable.ic_wat, R.drawable.ic_help, R.drawable.ic_pencil) - val colourCustomiserBuilder = when (prefs.getInt("themeInt", 0)) { - 1 -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomDark) - else -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomLight) - } + val colourCustomiserBuilder = AlertDialog.Builder(mContext, R.style.AlertDialog) val dialogView = LayoutInflater.from(mContext).inflate(R.layout.empty_dialog, null) val titleText = dialogView.findViewById(R.id.empty_textviewtitle) @@ -301,32 +294,29 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen val courseNoLangTxt = coursesNoLang[i] val courseTxt = courses[i] - if (prefs.getInt("col" + coursesNoLang[i], 0) != 0) { - itemText.setTextColor(ContextCompat.getColor(mContext, prefs.getInt("col$courseNoLangTxt", 0))) - itemImage.drawable.setTint(ContextCompat.getColor(mContext, prefs.getInt("col$courseNoLangTxt", 0))) + if (prefs.getInt("bg" + coursesNoLang[i], 0) != 0) { +// itemText.setTextColor(ContextCompat.getColor(mContext, prefs.getInt("col$courseNoLangTxt", 0))) + itemImage.drawable.setTint(ContextCompat.getColor(mContext, prefs.getInt("bg$courseNoLangTxt", 0))) } layout.setOnClickListener { - val colourPickerBuilder = when (prefs.getInt("themeInt", 0)) { - 1 -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomDark) - else -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomLight) - } + val colourPickerBuilder = AlertDialog.Builder(mContext, R.style.AlertDialog) val pickerDialogView = LayoutInflater.from(mContext).inflate(R.layout.empty_dialog, null) val pickerTitleText = pickerDialogView.findViewById(R.id.empty_textviewtitle) val pickerLayout = pickerDialogView.findViewById(R.id.empty_linearlayout) pickerTitleText.text = courseTxt - val picker = LayoutInflater.from(mContext).inflate(R.layout.colour_picker, null) + val picker = LayoutInflater.from(mContext).inflate(R.layout.bg_colour_picker, null) pickerLayout.addView(picker) colourPickerBuilder.setView(pickerDialogView) val colourPickerDialog: AlertDialog = colourPickerBuilder.create() - val buttons = arrayOf(picker.findViewById(R.id.colourRed), picker.findViewById(R.id.colourPink), picker.findViewById(R.id.colourPurple), picker.findViewById(R.id.colourDeepPurple), picker.findViewById(R.id.colourLavender), picker.findViewById(R.id.colourIndigo), picker.findViewById(R.id.colourBlue), picker.findViewById(R.id.colourLightBlue), picker.findViewById(R.id.colourTeal), picker.findViewById(R.id.colourGreen), picker.findViewById(R.id.colourYellow), picker.findViewById(R.id.colourOrange), picker.findViewById(R.id.colourNeonRed), picker.findViewById(R.id.colourNeonPink), picker.findViewById(R.id.colourNeonPurple), picker.findViewById(R.id.colourNeonDeepPurple), picker.findViewById(R.id.colourNeonBlue), picker.findViewById(R.id.colourNeonGreen), picker.findViewById(R.id.colourNeonYellow), picker.findViewById(R.id.colourNeonOrange), picker.findViewById(R.id.colourNone)) - val colours = intArrayOf(R.color.red, R.color.pink, R.color.purple, R.color.deeppurple, R.color.lavender, R.color.indigo, R.color.blue, R.color.lightblue, R.color.teal, R.color.green, R.color.yellow, R.color.orange, R.color.neonred, R.color.neonpink, R.color.neonpurple, R.color.neondeeppurple, R.color.neonblue, R.color.neongreen, R.color.neonyellow, R.color.neonorange, 0) + val buttons = arrayOf(picker.findViewById(R.id.def), picker.findViewById(R.id.red), picker.findViewById(R.id.orange), picker.findViewById(R.id.yellow), picker.findViewById(R.id.green), picker.findViewById(R.id.teal), picker.findViewById(R.id.cyan), picker.findViewById(R.id.blue), picker.findViewById(R.id.purple), picker.findViewById(R.id.pink), picker.findViewById(R.id.brown), picker.findViewById(R.id.grey)) + val colours = intArrayOf(0, R.color.bgred, R.color.bgorange, R.color.bgyellow, R.color.bggreen, R.color.bgteal, R.color.bgcyan, R.color.bgblue, R.color.bgpurple, R.color.bgpink, R.color.bgbrown, R.color.bggrey) for (i2 in 0 until buttons.size) { buttons[i2].setOnClickListener { - edit.putInt("col$courseNoLangTxt", colours[i2]).apply() + edit.putInt("bg$courseNoLangTxt", colours[i2]).apply() colourPickerDialog.dismiss() } } @@ -344,7 +334,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen buttonClearAll.setOnClickListener { for (course in coursesNoLang) { - edit.putInt("col$course", 0) + edit.putInt("bg$course", 0) } edit.apply() Toast.makeText(mContext, getString(R.string.allcolourscleared), @@ -363,10 +353,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen model = deviceInfo.model } - val alertDialog = when (prefs.getInt("themeInt", 0)) { - 1 -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomDark) - else -> AlertDialog.Builder(mContext, R.style.AlertDialogCustomLight) - } + val alertDialog = AlertDialog.Builder(mContext, R.style.AlertDialog) val dialogView = LayoutInflater.from(mContext).inflate(R.layout.edittext_dialog, null) val dialogEditText = dialogView.findViewById(R.id.dialog_edittext) val dialogButton = dialogView.findViewById