diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f3fc354..87459d3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,14 +18,14 @@ tools:ignore="GoogleAppIndexingWarning"> @@ -54,7 +54,7 @@ android:resource="@color/colorAccent" /> diff --git a/app/src/main/java/com/denizd/substitutionplan/Colour.kt b/app/src/main/java/com/denizd/substitutionplan/Colour.kt deleted file mode 100644 index cd79c71..0000000 --- a/app/src/main/java/com/denizd/substitutionplan/Colour.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.denizd.substitutionplan - -class Colour(val title: String, val titleNoLang: String, val icon: Int, val colour: Int) \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/Food.kt b/app/src/main/java/com/denizd/substitutionplan/Food.kt deleted file mode 100644 index 696dbbd..0000000 --- a/app/src/main/java/com/denizd/substitutionplan/Food.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.denizd.substitutionplan - -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "food_table") -class Food(val food: String, @PrimaryKey val priority: Int) diff --git a/app/src/main/java/com/denizd/substitutionplan/Ringtone.kt b/app/src/main/java/com/denizd/substitutionplan/Ringtone.kt deleted file mode 100644 index 0ad6b52..0000000 --- a/app/src/main/java/com/denizd/substitutionplan/Ringtone.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.denizd.substitutionplan - -import android.net.Uri - -class Ringtone(val name: String, val uri: String) \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/Subst.kt b/app/src/main/java/com/denizd/substitutionplan/Subst.kt deleted file mode 100644 index 5841603..0000000 --- a/app/src/main/java/com/denizd/substitutionplan/Subst.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.denizd.substitutionplan - -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "subst_table") -public class Subst(val group: String, val date: String, val time: String, val course: String, val room: String, val additional: String, val priority: Int) { - - @PrimaryKey(autoGenerate = true) - var id: Int = 0 -} \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt b/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt similarity index 86% rename from app/src/main/java/com/denizd/substitutionplan/FirstTime.kt rename to app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt index 11874d9..586dc4f 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FirstTime.kt +++ b/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.activities import android.content.Context import android.content.Intent @@ -20,11 +20,12 @@ import androidx.appcompat.app.AppCompatDelegate import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.ContextCompat import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat +import com.denizd.substitutionplan.R import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton import com.google.android.material.textfield.TextInputEditText import java.util.* -class FirstTime : AppCompatActivity(R.layout.activity_first_time) { +internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { private lateinit var context: Context private lateinit var prefs: SharedPreferences @@ -38,16 +39,28 @@ class FirstTime : AppCompatActivity(R.layout.activity_first_time) { AppCompatDelegate.MODE_NIGHT_NO, AppCompatDelegate.MODE_NIGHT_UNSPECIFIED -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - window.statusBarColor = ContextCompat.getColor(this, R.color.colorBackground) - window.navigationBarColor = ContextCompat.getColor(this, R.color.colorBackground) + window.statusBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) } else { - window.statusBarColor = ContextCompat.getColor(this, R.color.legacyBlack) - window.navigationBarColor = ContextCompat.getColor(this, R.color.legacyBlack) + window.statusBarColor = ContextCompat.getColor(this, + R.color.legacyBlack + ) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.legacyBlack + ) } } else -> { - window.navigationBarColor = ContextCompat.getColor(this, R.color.colorBackground) - window.statusBarColor = ContextCompat.getColor(this, R.color.colorBackground) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) + window.statusBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) // window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE } } @@ -67,10 +80,14 @@ class FirstTime : AppCompatActivity(R.layout.activity_first_time) { val helpCourses = findViewById(R.id.chipHelpCourses) helpClasses.setOnClickListener { - createDialog(getString(R.string.enterGradeHelpTitle), getString(R.string.enterGradeHelp)) + createDialog(getString(R.string.enterGradeHelpTitle), getString( + R.string.enterGradeHelp + )) } helpCourses.setOnClickListener { - createDialog(getString(R.string.enterCoursesHelpTitle), getString(R.string.enterCoursesHelp)) + createDialog(getString(R.string.enterCoursesHelpTitle), getString( + R.string.enterCoursesHelp + )) } val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater @@ -103,7 +120,9 @@ class FirstTime : AppCompatActivity(R.layout.activity_first_time) { inflater.inflate(R.layout.welcome_screen, linearInflation, true) val anim = ViewAnimationUtils.createCircularReveal(linearInflation, x, y, 0F, endRadius.toFloat()) val handler = Handler() - val animOut = AnimationUtils.loadAnimation(context, R.anim.fade_out_short) + val animOut = AnimationUtils.loadAnimation(context, + R.anim.fade_out_short + ) anim.duration = 600 val colour = findViewById(R.id.colourLayout) linearInflation.visibility = View.VISIBLE @@ -137,7 +156,9 @@ class FirstTime : AppCompatActivity(R.layout.activity_first_time) { } private fun createDialog(title: String, text: String) { - val alertDialog = AlertDialog.Builder(context, R.style.AlertDialog) + 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/Main.kt b/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt similarity index 88% rename from app/src/main/java/com/denizd/substitutionplan/Main.kt rename to app/src/main/java/com/denizd/substitutionplan/activities/Main.kt index 8d93360..6df93c3 100644 --- a/app/src/main/java/com/denizd/substitutionplan/Main.kt +++ b/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.activities import android.app.job.JobInfo import android.app.job.JobScheduler @@ -20,16 +20,21 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.RecyclerView import com.crashlytics.android.Crashlytics +import com.denizd.substitutionplan.data.MiscData +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.fragments.FoodFragment +import com.denizd.substitutionplan.fragments.GeneralPlanFragment +import com.denizd.substitutionplan.fragments.PersonalPlanFragment +import com.denizd.substitutionplan.fragments.SettingsFragment +import com.denizd.substitutionplan.services.FBPingService import com.google.android.material.appbar.AppBarLayout import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.snackbar.Snackbar -import com.google.firebase.FirebaseApp -import com.google.firebase.messaging.FirebaseMessaging import com.jaredrummler.android.device.DeviceName import java.lang.IllegalArgumentException import java.util.* -class Main : AppCompatActivity(R.layout.app_bar_main) { +internal class Main : AppCompatActivity(R.layout.app_bar_main) { private lateinit var context: Context private lateinit var prefs: SharedPreferences @@ -71,17 +76,29 @@ class Main : AppCompatActivity(R.layout.app_bar_main) { 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.statusBarColor = ContextCompat.getColor(this, R.color.colorBackground) - window.navigationBarColor = ContextCompat.getColor(this, R.color.colorBackground) + window.statusBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) } else { - window.statusBarColor = ContextCompat.getColor(this, R.color.legacyBlack) - window.navigationBarColor = ContextCompat.getColor(this, R.color.legacyBlack) + window.statusBarColor = ContextCompat.getColor(this, + R.color.legacyBlack + ) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.legacyBlack + ) } } else -> { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) - window.navigationBarColor = ContextCompat.getColor(this, R.color.colorBackground) - window.statusBarColor = ContextCompat.getColor(this, R.color.colorBackground) + window.navigationBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) + window.statusBarColor = ContextCompat.getColor(this, + R.color.colorBackground + ) } // else -> { // when (context.resources.configuration.uiMode) { @@ -114,7 +131,9 @@ class Main : AppCompatActivity(R.layout.app_bar_main) { if (info.manufacturer.contains("Huawei") || info.manufacturer.contains("Honor") || info.manufacturer.contains("Xiaomi")) { - val alertDialog = AlertDialog.Builder(context, R.style.AlertDialog) + 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.chineseDevicesTitle) @@ -223,16 +242,24 @@ class Main : AppCompatActivity(R.layout.app_bar_main) { val gen = Random() return String.format(when (Calendar.getInstance().get(Calendar.HOUR_OF_DAY)) { - in 5..10 -> resources.getStringArray(R.array.greetingsMorning)[gen.nextInt(resources.getStringArray(R.array.greetingsMorning).size)] - in 11..17 -> resources.getStringArray(R.array.greetingsNoon)[gen.nextInt(resources.getStringArray(R.array.greetingsNoon).size)] - else -> resources.getStringArray(R.array.greetingsEvening)[gen.nextInt(resources.getStringArray(R.array.greetingsEvening).size)] + in 5..10 -> resources.getStringArray(R.array.greetingsMorning)[gen.nextInt(resources.getStringArray( + R.array.greetingsMorning + ).size)] + in 11..17 -> resources.getStringArray(R.array.greetingsNoon)[gen.nextInt(resources.getStringArray( + R.array.greetingsNoon + ).size)] + else -> resources.getStringArray(R.array.greetingsEvening)[gen.nextInt(resources.getStringArray( + R.array.greetingsEvening + ).size)] }, prefs.getString("username", "")) } 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.textviewtitle).text = getString( + R.string.information + ) val dialogText = "${getString(R.string.lastUpdated)} ${prefs.getString("timeNew", "")}.\n\n${prefs.getString("informational", "")}" dialogView.findViewById(R.id.dialogtext).text = dialogText dialog.setView(dialogView).show() diff --git a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt similarity index 91% rename from app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt rename to app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt index 15369b1..5b0f1da 100644 --- a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.adapters import android.content.ActivityNotFoundException import android.net.Uri @@ -14,10 +14,13 @@ import android.widget.Toast import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView +import com.denizd.substitutionplan.data.MiscData +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.models.Subst import com.google.android.material.card.MaterialCardView import java.util.* -class CardAdapter(private var mSubst: List) : RecyclerView.Adapter() { +internal class CardAdapter(private var mSubst: List) : RecyclerView.Adapter() { private var colour = 0 private var colourString = "" @@ -70,7 +73,11 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter) : RecyclerView.Adapter) : RecyclerView.Adapter, onClickListener: OnClickListener) : RecyclerView.Adapter() { +internal class ColourAdapter(private var mColours: List, onClickListener: OnClickListener) : RecyclerView.Adapter() { val mOnClickListener = onClickListener @@ -27,7 +29,10 @@ class ColourAdapter(private var mColours: List, onClickListener: OnClick override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColourViewHolder { val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false) - return ColourViewHolder(v, mOnClickListener) + return ColourViewHolder( + v, + mOnClickListener + ) } override fun onBindViewHolder(holder: ColourViewHolder, position: Int) { diff --git a/app/src/main/java/com/denizd/substitutionplan/FoodAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt similarity index 76% rename from app/src/main/java/com/denizd/substitutionplan/FoodAdapter.kt rename to app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt index 1362e24..43f28f7 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FoodAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.adapters import android.view.LayoutInflater import android.view.View @@ -7,16 +7,14 @@ import android.widget.TextView import java.util.ArrayList import androidx.recyclerview.widget.RecyclerView +import com.denizd.substitutionplan.models.Food +import com.denizd.substitutionplan.R -class FoodAdapter(food: ArrayList) : RecyclerView.Adapter() { +internal class FoodAdapter(food: ArrayList) : RecyclerView.Adapter() { private var mFood: List? = null class CardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var mFood: TextView - - init { - mFood = itemView.findViewById(R.id.cardInfoText) - } + var mFood: TextView = itemView.findViewById(R.id.cardInfoText) } init { diff --git a/app/src/main/java/com/denizd/substitutionplan/RingtoneAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/RingtoneAdapter.kt similarity index 73% rename from app/src/main/java/com/denizd/substitutionplan/RingtoneAdapter.kt rename to app/src/main/java/com/denizd/substitutionplan/adapters/RingtoneAdapter.kt index b470917..d1f6f36 100644 --- a/app/src/main/java/com/denizd/substitutionplan/RingtoneAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/RingtoneAdapter.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.adapters import android.view.LayoutInflater import android.view.View @@ -6,17 +6,19 @@ import android.view.ViewGroup import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.models.Ringtone import com.google.android.material.card.MaterialCardView -class RingtoneAdapter(private var _ringtones: List, onClickListener: OnClickListener) : RecyclerView.Adapter() { +internal class RingtoneAdapter(private var _ringtones: List, onClickListener: OnClickListener) : RecyclerView.Adapter() { - val _onClickListener = onClickListener + private val _onClickListener = onClickListener class RingtoneViewHolder(view: View, clickListener: OnClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { val name: TextView = view.findViewById(R.id.item_text) val uri: TextView = view.findViewById(R.id.item_text_no_lang) val cardView: MaterialCardView = view.findViewById(R.id.cardView) - val _clickListener = clickListener + private val _clickListener = clickListener init { view.setOnClickListener(this) } override fun onClick(v: View?) { _clickListener.onRingtoneClick(adapterPosition, name.text.toString(), uri.text.toString()) } @@ -25,7 +27,10 @@ class RingtoneAdapter(private var _ringtones: List, onClickListener: O override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RingtoneViewHolder { val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false) - return RingtoneViewHolder(v, _onClickListener) + return RingtoneViewHolder( + v, + _onClickListener + ) } override fun onBindViewHolder(holder: RingtoneViewHolder, position: Int) { @@ -33,7 +38,9 @@ class RingtoneAdapter(private var _ringtones: List, onClickListener: O holder.name.text = currentItem.name holder.uri.text = currentItem.uri - holder.cardView.setCardBackgroundColor(ContextCompat.getColor(holder.cardView.context, R.color.colorBackground)) + holder.cardView.setCardBackgroundColor(ContextCompat.getColor(holder.cardView.context, + R.color.colorBackground + )) } override fun getItemCount(): Int = _ringtones.size diff --git a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt b/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt similarity index 81% rename from app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt rename to app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt index 2021024..7d205b8 100644 --- a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt +++ b/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.data import android.app.* import android.content.Context @@ -13,6 +13,12 @@ import android.widget.RemoteViews import androidx.core.app.NotificationCompat import androidx.core.content.ContextCompat import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.denizd.substitutionplan.database.FoodRepository +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.database.SubstRepository +import com.denizd.substitutionplan.activities.Main +import com.denizd.substitutionplan.models.Food +import com.denizd.substitutionplan.models.Subst import com.google.android.material.snackbar.Snackbar import org.jsoup.Jsoup import kotlin.collections.ArrayList @@ -26,7 +32,7 @@ import kotlin.collections.ArrayList * @param isMenu food menu will be downloaded and persisted in the database if true * @param isJobService a notification will be prepared and sent if this and isPlan is true */ -class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, context: Context, application: Application, parentView: View?) : AsyncTask() { +internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, context: Context, application: Application, parentView: View?) : AsyncTask() { private var jobService = isJobService private var plan = isPlan @@ -47,11 +53,12 @@ class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, conte override fun doInBackground(vararg params: Void?): Void? { try { + if (prefs.getBoolean("testUrls", false)) { + substUrl = "https://djd4rkn355.github.io/subst_test.html" + foodUrl = "https://djd4rkn355.github.io/food_test.html" + } + when { - prefs.getBoolean("testUrls", false) -> { - substUrl = "https://djd4rkn355.github.io/subst_test.html" - foodUrl = "https://djd4rkn355.github.io/food_test.html" - } menu -> requestFoodMenuData() plan -> requestSubstPlanAndNotification() } @@ -69,7 +76,9 @@ class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, conte } catch (e: Exception) { mView?.let { v: View -> val snackBarView = v.findViewById(R.id.coordination) - Snackbar.make(snackBarView, mContext.getString(R.string.noInternet), Snackbar.LENGTH_LONG).setBackgroundTint(ContextCompat.getColor(mContext, R.color.colorError)).show() + Snackbar.make(snackBarView, mContext.getString(R.string.noInternet), Snackbar.LENGTH_LONG).setBackgroundTint(ContextCompat.getColor(mContext, + R.color.colorError + )).show() } } return null @@ -143,15 +152,24 @@ class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, conte val group = cols[0].text() val course = cols[3].text() val additional = cols[5].text() - val subst = Subst(group = group, date = cols[1].text(), time = cols[2].text(), course = course, - room = cols[4].text(), additional = additional, priority = priority) + val subst = Subst( + group = group, date = cols[1].text(), time = cols[2].text(), course = course, + room = cols[4].text(), additional = additional, priority = priority + ) substArray.add(subst) substRepo.insert(subst) priority-- } if (jobService && prefs.getBoolean("notif", true)) { - substArray.filter { MiscData.checkPersonalSubstitutions(it, coursePreference, classPreference, false) }.forEach { substItem -> + substArray.filter { + MiscData.checkPersonalSubstitutions( + it, + coursePreference, + classPreference, + false + ) + }.forEach { substItem -> notifText += "${if (notifText.isNotEmpty()) ",\n" else ""}$substItem.course: ${if (substItem.additional.isNotEmpty()) substItem.additional else "---"}" } } @@ -170,21 +188,30 @@ class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boolean, conte openApp.flags += Intent.FLAG_ACTIVITY_CLEAR_TASK val openAppPending = PendingIntent.getActivity(mContext, 0, openApp, 0) - val notificationLayout = RemoteViews(mContext.packageName, R.layout.notification) - notificationLayout.setTextViewText(R.id.notification_title, mContext.getString(R.string.substitutionPlan)) + val notificationLayout = RemoteViews(mContext.packageName, + R.layout.notification + ) + notificationLayout.setTextViewText( + R.id.notification_title, mContext.getString( + R.string.substitutionPlan + )) notificationLayout.setTextViewText(R.id.notification_textview, notifText) val manager = mContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager MiscData.getNotificationChannel(mContext, prefs) - val notification = NotificationCompat.Builder(mContext, MiscData.notificationChannelId) + val notification = NotificationCompat.Builder(mContext, + MiscData.notificationChannelId + ) .setStyle(NotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(notificationLayout) .setSmallIcon(R.drawable.ic_avh) .setContentIntent(openAppPending) .setAutoCancel(true) - .setColor(ContextCompat.getColor(mContext, R.color.colorAccent)) + .setColor(ContextCompat.getColor(mContext, + R.color.colorAccent + )) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { val sound = if ((prefs.getString("ringtoneUri", "") ?: "").isNotEmpty()) { diff --git a/app/src/main/java/com/denizd/substitutionplan/MiscData.kt b/app/src/main/java/com/denizd/substitutionplan/data/MiscData.kt similarity index 85% rename from app/src/main/java/com/denizd/substitutionplan/MiscData.kt rename to app/src/main/java/com/denizd/substitutionplan/data/MiscData.kt index c7ab344..9b05ea6 100644 --- a/app/src/main/java/com/denizd/substitutionplan/MiscData.kt +++ b/app/src/main/java/com/denizd/substitutionplan/data/MiscData.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.data import android.annotation.TargetApi import android.app.NotificationChannel @@ -6,9 +6,11 @@ import android.app.NotificationManager import android.content.Context import android.content.SharedPreferences import android.graphics.Color +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.models.Subst import java.util.* -object MiscData { +internal object MiscData { val languageIndependentCourses = arrayOf("German", "English", "French", "Spanish", "Latin", "Turkish", "Chinese", "Arts", "Music", "Theatre", "Geography", "History", "Politics", "Philosophy", "Religion", "Maths", "Biology", "Chemistry", @@ -16,10 +18,31 @@ object MiscData { val colourNames = arrayOf("default", "red", "orange", "yellow", "green", "teal", "cyan", "blue", "purple", "pink", "brown", "grey", "pureWhite", "salmon", "tangerine", "banana", "flora", "spindrift", "sky", "orchid", "lavender", "carnation", "brown2", "pureBlack") - private val colourIntegers = 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, - R.color.bgPureWhite, R.color.bgSalmon, R.color.bgTangerine, R.color.bgBanana, R.color.bgFlora, R.color.bgSpindrift, - R.color.bgSky, R.color.bgOrchid, R.color.bgLavender, R.color.bgCarnation, R.color.bgBrown2, R.color.bgPureBlack) + private val colourIntegers = 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, + R.color.bgPureWhite, + R.color.bgSalmon, + R.color.bgTangerine, + R.color.bgBanana, + R.color.bgFlora, + R.color.bgSpindrift, + R.color.bgSky, + R.color.bgOrchid, + R.color.bgLavender, + R.color.bgCarnation, + R.color.bgBrown2, + R.color.bgPureBlack + ) const val notificationChannelId = "general" fun getColourForString(name: String): Int { @@ -128,7 +151,10 @@ object MiscData { fun getNotificationChannel(context: Context, prefs: SharedPreferences): NotificationChannel { val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager return if (!prefs.getBoolean("notifChannelCreated", false)) { - val channel = NotificationChannel(notificationChannelId, context.getString(R.string.general), NotificationManager.IMPORTANCE_DEFAULT) + val channel = NotificationChannel( + notificationChannelId, context.getString( + R.string.general + ), NotificationManager.IMPORTANCE_DEFAULT) channel.enableLights(true) channel.lightColor = Color.BLUE manager.createNotificationChannel(channel) diff --git a/app/src/main/java/com/denizd/substitutionplan/FoodRepository.kt b/app/src/main/java/com/denizd/substitutionplan/database/FoodRepository.kt similarity index 80% rename from app/src/main/java/com/denizd/substitutionplan/FoodRepository.kt rename to app/src/main/java/com/denizd/substitutionplan/database/FoodRepository.kt index 5c48960..9d4064a 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FoodRepository.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/FoodRepository.kt @@ -1,17 +1,18 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import android.app.Application import android.os.AsyncTask - import androidx.lifecycle.LiveData +import com.denizd.substitutionplan.models.Food -public class FoodRepository(application: Application) { +internal class FoodRepository(application: Application) { private val substDao: SubstDao? val allFoods: LiveData>? init { - val database = SubstDatabase.getFoodInstance(application) + val database = + SubstDatabase.getFoodInstance(application) substDao = database?.substDao() allFoods = substDao?.allFoods } diff --git a/app/src/main/java/com/denizd/substitutionplan/FoodViewModel.kt b/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt similarity index 56% rename from app/src/main/java/com/denizd/substitutionplan/FoodViewModel.kt rename to app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt index 03fd753..ed03c38 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FoodViewModel.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt @@ -1,12 +1,14 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData +import com.denizd.substitutionplan.models.Food -public class FoodViewModel(application: Application) : AndroidViewModel(application) { +internal class FoodViewModel(application: Application) : AndroidViewModel(application) { - private val repository: FoodRepository = FoodRepository(application) + private val repository: FoodRepository = + FoodRepository(application) val allFoods: LiveData>? init { diff --git a/app/src/main/java/com/denizd/substitutionplan/SubstDao.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstDao.kt similarity index 77% rename from app/src/main/java/com/denizd/substitutionplan/SubstDao.kt rename to app/src/main/java/com/denizd/substitutionplan/database/SubstDao.kt index e4d13db..c446e85 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SubstDao.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstDao.kt @@ -1,10 +1,12 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import androidx.lifecycle.LiveData import androidx.room.* +import com.denizd.substitutionplan.models.Food +import com.denizd.substitutionplan.models.Subst @Dao -public interface SubstDao { +internal interface SubstDao { @get:Query("SELECT * FROM subst_table ORDER BY priority DESC") val allSubst: LiveData> diff --git a/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt similarity index 87% rename from app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt rename to app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt index 636bf18..dcd383e 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt @@ -1,12 +1,14 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase +import com.denizd.substitutionplan.models.Food +import com.denizd.substitutionplan.models.Subst @Database(entities = [Subst::class, Food::class], version = 5, exportSchema = false) -public abstract class SubstDatabase : RoomDatabase() { +internal abstract class SubstDatabase : RoomDatabase() { abstract fun substDao(): SubstDao diff --git a/app/src/main/java/com/denizd/substitutionplan/SubstRepository.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt similarity index 88% rename from app/src/main/java/com/denizd/substitutionplan/SubstRepository.kt rename to app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt index 875c7cd..8e8c59c 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SubstRepository.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt @@ -1,17 +1,19 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import android.app.Application import android.os.AsyncTask import androidx.lifecycle.LiveData +import com.denizd.substitutionplan.models.Subst -public class SubstRepository(application: Application) { +internal class SubstRepository(application: Application) { private val substDao: SubstDao? val allSubst: LiveData>? init { - val database = SubstDatabase.getInstance(application) + val database = + SubstDatabase.getInstance(application) substDao = database?.substDao() allSubst = substDao?.allSubst } diff --git a/app/src/main/java/com/denizd/substitutionplan/SubstViewModel.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt similarity index 65% rename from app/src/main/java/com/denizd/substitutionplan/SubstViewModel.kt rename to app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt index b3fb907..273e6cd 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SubstViewModel.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt @@ -1,12 +1,14 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.database import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData +import com.denizd.substitutionplan.models.Subst -public class SubstViewModel(application: Application) : AndroidViewModel(application) { +internal class SubstViewModel(application: Application) : AndroidViewModel(application) { - private val repository: SubstRepository = SubstRepository(application) + private val repository: SubstRepository = + SubstRepository(application) val allSubst: LiveData>? init { diff --git a/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt similarity index 74% rename from app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt rename to app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt index 2530ccd..c414934 100644 --- a/app/src/main/java/com/denizd/substitutionplan/FoodFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.fragments import android.content.Context import android.content.SharedPreferences @@ -11,8 +11,13 @@ import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.denizd.substitutionplan.* +import com.denizd.substitutionplan.adapters.FoodAdapter +import com.denizd.substitutionplan.database.FoodViewModel +import com.denizd.substitutionplan.models.Food +import com.denizd.substitutionplan.data.DataFetcher -class FoodFragment : Fragment(R.layout.food_layout) { +internal class FoodFragment : Fragment(R.layout.food_layout) { private val foodArrayList = ArrayList() private val mAdapter = FoodAdapter(foodArrayList) @@ -57,12 +62,26 @@ class FoodFragment : Fragment(R.layout.food_layout) { if (prefs.getBoolean("autoRefresh", false)) { pullToRefresh.isRefreshing = true - DataFetcher(false, true, false, mContext, activity!!.application, view.rootView).execute() + DataFetcher( + false, + true, + false, + mContext, + activity!!.application, + view.rootView + ).execute() } pullToRefresh.setOnRefreshListener { pullToRefresh.isRefreshing = true - DataFetcher(false, true, false, mContext, activity!!.application, view.rootView).execute() + DataFetcher( + false, + true, + false, + mContext, + activity!!.application, + view.rootView + ).execute() } } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt similarity index 73% rename from app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt rename to app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt index eafee9f..8937e01 100644 --- a/app/src/main/java/com/denizd/substitutionplan/GeneralPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt @@ -1,10 +1,11 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.fragments import android.os.Bundle import android.view.View import androidx.lifecycle.Observer +import com.denizd.substitutionplan.models.Subst -class GeneralPlanFragment : PlanFragment() { +internal class GeneralPlanFragment : PlanFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt similarity index 76% rename from app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt rename to app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt index e817ef2..3368073 100644 --- a/app/src/main/java/com/denizd/substitutionplan/PersonalPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt @@ -1,10 +1,13 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.fragments import android.os.Bundle import android.view.View import androidx.lifecycle.Observer +import com.denizd.substitutionplan.data.MiscData +import com.denizd.substitutionplan.R +import com.denizd.substitutionplan.models.Subst -class PersonalPlanFragment : PlanFragment() { +internal class PersonalPlanFragment : PlanFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -24,7 +27,14 @@ class PersonalPlanFragment : PlanFragment() { persPlanEmpty = true recyclerView.visibility = View.VISIBLE - substitutions.filter { MiscData.checkPersonalSubstitutions(it, coursePreference, classPreference, true) }.forEach { substItem -> + substitutions.filter { + MiscData.checkPersonalSubstitutions( + it, + coursePreference, + classPreference, + true + ) + }.forEach { substItem -> planCardList.add(substItem) } persPlanEmpty = (planCardList.size == 1 && planCardList[0].date.substring(0, 3) == "psa") || planCardList.isEmpty() diff --git a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt similarity index 73% rename from app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt rename to app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt index 2efc6e0..7c429af 100644 --- a/app/src/main/java/com/denizd/substitutionplan/PlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.fragments import android.content.Context import android.content.SharedPreferences @@ -14,9 +14,14 @@ import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.denizd.substitutionplan.* +import com.denizd.substitutionplan.adapters.CardAdapter +import com.denizd.substitutionplan.database.SubstViewModel +import com.denizd.substitutionplan.models.Subst +import com.denizd.substitutionplan.data.DataFetcher import kotlin.collections.ArrayList -open class PlanFragment : Fragment(R.layout.plan) { +internal open class PlanFragment : Fragment(R.layout.plan) { lateinit var recyclerView: RecyclerView lateinit var mAdapter: CardAdapter private lateinit var layoutManager: GridLayoutManager @@ -56,39 +61,32 @@ open class PlanFragment : Fragment(R.layout.plan) { recyclerView.adapter = mAdapter if (prefs.getInt("firstTimeOpening", 0) == 1) { - if (!prefs.getBoolean("notif", false)) { - pullToRefresh.isRefreshing = true - DataFetcher(true, true, false, mContext, activity!!.application, view.rootView).execute() - prefs.edit().putInt("firstTimeOpening", 2).apply() - } + startFetch(view, pullToRefresh, true) + prefs.edit().putInt("firstTimeOpening", 2).apply() } if (prefs.getBoolean("autoRefresh", false)) { - pullToRefresh.isRefreshing = true - DataFetcher( - isPlan = true, - isMenu = false, - isJobService = false, - context = mContext, - application = activity!!.application, - parentView = view.rootView - ).execute() + startFetch(view, pullToRefresh, false) } substViewModel = ViewModelProviders.of(this).get(SubstViewModel::class.java) pullToRefresh.setOnRefreshListener { - pullToRefresh.isRefreshing = true - DataFetcher( - isPlan = true, - isMenu = false, - isJobService = false, - context = mContext, - application = activity!!.application, - parentView = view.rootView - ).execute() + startFetch(view, pullToRefresh, false) } } + private fun startFetch(view: View, pullToRefresh: SwipeRefreshLayout, refreshMenu: Boolean) { + pullToRefresh.isRefreshing = true + DataFetcher( + isPlan = true, + isMenu = refreshMenu, + isJobService = false, + context = mContext, + application = activity!!.application, + parentView = view.rootView + ).execute() + } + private fun getGridColumnCount(config: Configuration): Int { val tabletSize = resources.getBoolean(R.bool.isTablet) return if (tabletSize) { diff --git a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt similarity index 83% rename from app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt rename to app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt index 0e82b8f..f49bd54 100644 --- a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt @@ -1,4 +1,4 @@ -package com.denizd.substitutionplan +package com.denizd.substitutionplan.fragments import android.content.ActivityNotFoundException import android.content.Context @@ -24,6 +24,12 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.denizd.substitutionplan.* +import com.denizd.substitutionplan.adapters.ColourAdapter +import com.denizd.substitutionplan.adapters.RingtoneAdapter +import com.denizd.substitutionplan.data.MiscData +import com.denizd.substitutionplan.models.Colour +import com.denizd.substitutionplan.models.Ringtone import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.button.MaterialButton import com.google.android.material.textfield.TextInputEditText @@ -31,8 +37,10 @@ import com.google.firebase.messaging.FirebaseMessaging import com.jaredrummler.android.device.DeviceName import kotlin.collections.ArrayList -class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListener, - CompoundButton.OnCheckedChangeListener, ColourAdapter.OnClickListener, RingtoneAdapter.OnClickListener { +internal class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListener, + CompoundButton.OnCheckedChangeListener, + ColourAdapter.OnClickListener, + RingtoneAdapter.OnClickListener { private var name = "" private var model = "" @@ -131,22 +139,26 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen }) btnVersion.setOnLongClickListener { - Toast.makeText(mContext, getString(R.string.madeBy), Toast.LENGTH_LONG).show() + makeToast(getString(R.string.madeBy)) debugMenu() } } override fun onClick(v: View?) { when (v?.id) { - R.id.chipHelpCourses -> createDialog(getString(R.string.enterCoursesHelpTitle), getString(R.string.enterCoursesHelp)) - R.id.chipHelpClasses -> createDialog(getString(R.string.enterGradeHelpTitle), getString(R.string.enterGradeHelp)) + R.id.chipHelpCourses -> createDialog(getString(R.string.enterCoursesHelpTitle), getString( + R.string.enterCoursesHelp + )) + R.id.chipHelpClasses -> createDialog(getString(R.string.enterGradeHelpTitle), getString( + R.string.enterGradeHelp + )) R.id.btnCustomiseColours -> createColourDialog() R.id.btnCustomiseRingtone -> createRingtoneDialog() R.id.btnWebsite -> { try { customTabsIntent.launchUrl(mContext, Uri.parse("http://307.joomla.schule.bremen.de")) } catch (e: ActivityNotFoundException) { - Toast.makeText(mContext, getString(R.string.chromeCompatibleNotFound), Toast.LENGTH_LONG).show() + makeToast(getString(R.string.chromeCompatibleNotFound)) } } R.id.btnLicences -> { @@ -202,9 +214,9 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen try { cs = 7 customTabsIntent.launchUrl(mContext, Uri.parse("http://www.flussufer.de/gerd/person.htm")) - Toast.makeText(mContext, getString(R.string.dontTellHim), Toast.LENGTH_LONG).show() + makeToast(getString(R.string.dontTellHim)) } catch (e: ActivityNotFoundException) { - Toast.makeText(mContext, getString(R.string.chromeCompatibleNotFound), Toast.LENGTH_LONG).show() + makeToast(getString(R.string.chromeCompatibleNotFound)) } } } @@ -260,7 +272,9 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen } private fun createDialog(title: String, text: String) { - val alertDialog = AlertDialog.Builder(mContext, R.style.AlertDialog) + val alertDialog = AlertDialog.Builder(mContext, + R.style.AlertDialog + ) val dialogView = LayoutInflater.from(mContext).inflate(R.layout.simple_dialog, null) dialogView.findViewById(R.id.textviewtitle).text = title dialogView.findViewById(R.id.dialogtext).text = text @@ -268,7 +282,9 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen } private fun createColourDialog() { - val colourCustomiserBuilder = AlertDialog.Builder(mContext, R.style.AlertDialog) + val colourCustomiserBuilder = AlertDialog.Builder(mContext, + R.style.AlertDialog + ) val dialogView = LayoutInflater.from(mContext).inflate(R.layout.recycler_dialog, null) val titleText = dialogView.findViewById(R.id.empty_textviewtitle) @@ -279,34 +295,49 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen colourRecycler.layoutManager = GridLayoutManager(mContext, 1) colourRecycler.adapter = ColourAdapter(getColourList(), this) -// val button = LayoutInflater.from(mContext).inflate(R.layout.forever_alone_button, null) -// val buttonClearAll = button.findViewById(R.id.buttonclearallcolours) -// emptyLayout.addView(button) colourCustomiserBuilder.setView(dialogView) val colourCustomiserDialog = colourCustomiserBuilder.create() -// -// buttonClearAll.setOnClickListener { -// for (course in coursesNoLang) { -// edit.putInt("bg$course", 0) -// } -// edit.apply() -// Toast.makeText(mContext, getString(R.string.allcolourscleared), -// Toast.LENGTH_LONG).show() -// colourCustomiserDialog.cancel() -// } - colourCustomiserDialog.show() - } private fun getColourList(): ArrayList { val colours = ArrayList() val coursesNoLang = MiscData.languageIndependentCourses - 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 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 + ) for (i in 0 until coursesNoLang.size) { - colours.add(Colour(courses[i], coursesNoLang[i], coursesIcons[i], MiscData.getColourForString(prefs.getString("card${coursesNoLang[i]}", "") ?: ""))) + colours.add( + Colour( + courses[i], + coursesNoLang[i], + coursesIcons[i], + MiscData.getColourForString(prefs.getString("card${coursesNoLang[i]}", "") ?: "") + ) + ) } return colours } @@ -343,16 +374,21 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen } private fun getRingtones(): ArrayList { - lateinit var _cursor: Cursor + lateinit var ringtoneCursor: Cursor val ringtoneManager = RingtoneManager(activity).apply { setType(RingtoneManager.TYPE_NOTIFICATION) - _cursor = cursor + ringtoneCursor = cursor } val alarms = ArrayList() - while (!_cursor.isAfterLast && _cursor.moveToNext()) { - val position = _cursor.position - alarms.add(Ringtone(ringtoneManager.getRingtone(position).getTitle(mContext), ringtoneManager.getRingtoneUri(position).toString())) + while (!ringtoneCursor.isAfterLast && ringtoneCursor.moveToNext()) { + val position = ringtoneCursor.position + alarms.add( + Ringtone( + ringtoneManager.getRingtone(position).getTitle(mContext), + ringtoneManager.getRingtoneUri(position).toString() + ) + ) } return alarms } @@ -391,19 +427,14 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen colourPickerBuilder.setView(pickerDialogView) val colourPickerDialog: AlertDialog = colourPickerBuilder.create() - 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), picker.findViewById(R.id.pureWhite), picker.findViewById(R.id.salmon), - picker.findViewById(R.id.tangerine), picker.findViewById(R.id.banana), picker.findViewById(R.id.flora), - picker.findViewById(R.id.spindrift), picker.findViewById(R.id.sky), picker.findViewById(R.id.orchid), - picker.findViewById(R.id.lavender), picker.findViewById(R.id.carnation), picker.findViewById(R.id.brown2), - picker.findViewById(R.id.pureBlack)) + val buttons = intArrayOf(R.id.def, R.id.red, R.id.orange, R.id.yellow, R.id.green, + R.id.teal, R.id.cyan, R.id.blue, R.id.purple, R.id.pink, R.id.brown, R.id.grey, + R.id.pureWhite, R.id.salmon, R.id.tangerine, R.id.banana, R.id.flora, R.id.spindrift, + R.id.sky, R.id.orchid, R.id.lavender, R.id.carnation, R.id.brown2, R.id.pureBlack) val colours = MiscData.colourNames for (i2 in 0 until buttons.size) { - buttons[i2].setOnClickListener { + picker.findViewById(buttons[i2]).setOnClickListener { // prefs.edit().putInt("bg$titleNoLang", colourIntegers[i2]).apply() prefs.edit().putString("card$titleNoLang", colours[i2]).apply() val recyclerViewState = colourRecycler.layoutManager?.onSaveInstanceState() @@ -421,13 +452,19 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen model = deviceInfo.model } - val alertDialog = AlertDialog.Builder(mContext, R.style.AlertDialog) + 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