diff --git a/app/src/main/java/com/denizk0461/studip/data/Misc.kt b/app/src/main/java/com/denizk0461/studip/data/Misc.kt
index 81797e7..2aeea6b 100644
--- a/app/src/main/java/com/denizk0461/studip/data/Misc.kt
+++ b/app/src/main/java/com/denizk0461/studip/data/Misc.kt
@@ -1,7 +1,9 @@
package com.denizk0461.studip.data
+import android.content.Context
import android.content.res.Resources
import android.util.TypedValue
+import android.widget.Toast
import androidx.annotation.AttrRes
import com.denizk0461.studip.R
@@ -30,24 +32,52 @@ fun Resources.Theme.getThemedColor(@AttrRes id: Int): Int = TypedValue().also {
resolveAttribute(id, value, true)
}.data
-object Misc {
+/**
+ * Present the user with a toast.
+ *
+ * @param text text to display
+ */
+fun showToast(context: Context, text: String) {
+ Toast.makeText(context, text, Toast.LENGTH_SHORT).show()
+}
-// private val timeslotAcademicQuarter = mapOf(
-// "6:00" to "6:15",
-// "8:00" to "7:45",
-// "8:00" to "8:15",
-// "10:00" to "9:45",
-// "10:00" to "10:15",
-// "12:00" to "11:45",
-// "12:00" to "12:15",
-// "14:00" to "13:45",
-// "14:00" to "14:15",
-// "16:00" to "15:45",
-// "16:00" to "16:15",
-// "18:00" to "17:45",
-// "18:00" to "18:15",
-// "20:00" to "19:45",
-// "20:00" to "20:15",
-// "22:00" to "21:45",
-// )
-}
\ No newline at end of file
+/**
+ * Provides a conversion method between a timestamp ending in a full hour, and one with an academic
+ * quarter applied.
+ */
+val timeslotsAcademicQuarter = listOf(
+ "4:00",
+ "6:00",
+ "8:00",
+ "10:00",
+ "12:00",
+ "14:00",
+ "16:00",
+ "18:00",
+ "20:00",
+ "22:00",
+)
+
+val timeslotsAcademicQuarterStart = mapOf(
+ "4:00" to "4:15",
+ "6:00" to "6:15",
+ "8:00" to "8:15",
+ "10:00" to "10:15",
+ "12:00" to "12:15",
+ "14:00" to "14:15",
+ "16:00" to "16:15",
+ "18:00" to "18:15",
+ "20:00" to "20:15",
+)
+
+val timeslotsAcademicQuarterEnd = mapOf(
+ "6:00" to "5:45",
+ "8:00" to "7:45",
+ "10:00" to "9:45",
+ "12:00" to "11:45",
+ "14:00" to "13:45",
+ "16:00" to "15:45",
+ "18:00" to "17:45",
+ "20:00" to "19:45",
+ "22:00" to "21:45",
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/denizk0461/studip/db/AppRepository.kt b/app/src/main/java/com/denizk0461/studip/db/AppRepository.kt
index 1b371da..30e593e 100644
--- a/app/src/main/java/com/denizk0461/studip/db/AppRepository.kt
+++ b/app/src/main/java/com/denizk0461/studip/db/AppRepository.kt
@@ -197,7 +197,8 @@ class AppRepository(app: Application) {
* @param pref preference to retrieve
* @return whether the user set this preference
*/
- fun getBooleanPreference(pref: SettingsPreferences): Boolean = prefs.getBoolean(pref.key, false)
+ fun getBooleanPreference(pref: SettingsPreferences, defaultValue: Boolean = false): Boolean =
+ prefs.getBoolean(pref.key, defaultValue)
/**
* Retrieves ta user-set integer preference.
diff --git a/app/src/main/java/com/denizk0461/studip/sheet/DevCodeSheet.kt b/app/src/main/java/com/denizk0461/studip/sheet/DevCodeSheet.kt
index b2a3f5c..77ea14b 100644
--- a/app/src/main/java/com/denizk0461/studip/sheet/DevCodeSheet.kt
+++ b/app/src/main/java/com/denizk0461/studip/sheet/DevCodeSheet.kt
@@ -7,6 +7,7 @@ import android.util.Base64
import android.view.View
import android.widget.Toast
import com.denizk0461.studip.R
+import com.denizk0461.studip.data.showToast
import com.denizk0461.studip.data.viewBinding
import com.denizk0461.studip.databinding.SheetDevCodeBinding
import java.nio.charset.StandardCharsets
@@ -60,43 +61,34 @@ class DevCodeSheet(
"QkJVT0s/".d() -> launchLink("aHR0cHM6Ly95b3V0dS5iZS90Rm1PMm1TY0tHNA==".d())
"NEVENT" -> { // nuke events
nukeEvents()
- showToast("Nuked all events")
+ showToast(context, "Nuked all events")
}
"NCANTE" -> { // nuke canteens
nukeOfferCanteens()
- showToast("Nuked all canteens")
+ showToast(context, "Nuked all canteens")
}
"NDATES" -> { // nuke dates
nukeOfferDates()
- showToast("Nuked all dates")
+ showToast(context, "Nuked all dates")
}
"NCATEG" -> { // nuke categories
nukeOfferCategories()
- showToast("Nuked all categories")
+ showToast(context, "Nuked all categories")
}
"NITEMS" -> { // nuke items
nukeOfferItems()
- showToast("Nuked all items")
+ showToast(context, "Nuked all items")
}
"NEVERY" -> { // nuke everything
nukeEverything()
- showToast("Nuked everything")
+ showToast(context, "Nuked everything")
}
- else -> showToast("code is invalid")
+ else -> showToast(context, "code is invalid")
}
dismiss()
}
}
- /**
- * Present the user with a toast.
- *
- * @param text text to display
- */
- private fun showToast(text: String) {
- Toast.makeText(context, text, Toast.LENGTH_SHORT).show()
- }
-
/**
* Launches a web link.
*
@@ -104,7 +96,7 @@ class DevCodeSheet(
*/
private fun launchLink(link: String) {
// Let the user know they accomplished something with their life
- showToast("✨")
+ showToast(context, "✨")
// Give the user a slight dopamine boost
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)))
diff --git a/app/src/main/java/com/denizk0461/studip/sheet/ScheduleUpdateSheet.kt b/app/src/main/java/com/denizk0461/studip/sheet/ScheduleUpdateSheet.kt
index 9d69f09..e459d64 100644
--- a/app/src/main/java/com/denizk0461/studip/sheet/ScheduleUpdateSheet.kt
+++ b/app/src/main/java/com/denizk0461/studip/sheet/ScheduleUpdateSheet.kt
@@ -1,11 +1,17 @@
package com.denizk0461.studip.sheet
import android.os.Bundle
+import android.os.Handler
import android.util.Log
import android.view.View
import androidx.fragment.app.FragmentActivity
+import androidx.transition.TransitionManager
import com.denizk0461.studip.R
import com.denizk0461.studip.data.parseToMinutes
+import com.denizk0461.studip.data.showToast
+import com.denizk0461.studip.data.timeslotsAcademicQuarter
+import com.denizk0461.studip.data.timeslotsAcademicQuarterEnd
+import com.denizk0461.studip.data.timeslotsAcademicQuarterStart
import com.denizk0461.studip.data.viewBinding
import com.denizk0461.studip.databinding.SheetScheduleUpdateBinding
import com.denizk0461.studip.dialog.TimePickerFragment
@@ -40,6 +46,34 @@ class ScheduleUpdateSheet(
binding.editTextLecturers.setText(event.lecturer)
binding.editTextRoom.setText(event.room)
+ // Show academic quarter suggestion if it is applicable
+ binding.buttonAcademicQuarter.visibility = if (
+ timeslotsAcademicQuarter.contains(timeslotStart) &&
+ timeslotsAcademicQuarter.contains(timeslotEnd)
+ ) {
+ binding.buttonAcademicQuarter.setOnClickListener {
+ try {
+ val newStart = timeslotsAcademicQuarterStart[timeslotStart]
+ ?: throw NullPointerException()
+ val newEnd = timeslotsAcademicQuarterEnd[timeslotEnd]
+ ?: throw NullPointerException()
+
+ timeslotStart = newStart
+ binding.buttonTimeStart.text = newStart
+ timeslotEnd = newEnd
+ binding.buttonTimeEnd.text = newEnd
+
+ TransitionManager.beginDelayedTransition(binding.sheet)
+ binding.buttonAcademicQuarter.visibility = View.GONE
+ } catch (e: NullPointerException) {
+ showToast(context, getString(R.string.sheet_schedule_update_hint_quarter_error))
+ }
+ }
+ View.VISIBLE
+ } else {
+ View.GONE
+ }
+
// Prepare timestamp buttons
binding.buttonTimeStart.text = timeslotStart
binding.buttonTimeStart.setOnClickListener {
diff --git a/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt b/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt
index e3d23ad..f617da4 100644
--- a/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt
+++ b/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt
@@ -70,7 +70,7 @@ class CanteenViewModel(app: Application) : AppViewModel(app) {
* This value determines whether the user wants to have allergens marked.
*/
val preferenceAllergen: Boolean
- get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN)
+ get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN, defaultValue = true)
var preferenceCanteen: Int
get() = repo.getIntPreference(SettingsPreferences.CANTEEN)
diff --git a/app/src/main/java/com/denizk0461/studip/viewmodel/SettingsViewModel.kt b/app/src/main/java/com/denizk0461/studip/viewmodel/SettingsViewModel.kt
index 24caf91..e47779a 100644
--- a/app/src/main/java/com/denizk0461/studip/viewmodel/SettingsViewModel.kt
+++ b/app/src/main/java/com/denizk0461/studip/viewmodel/SettingsViewModel.kt
@@ -60,7 +60,7 @@ class SettingsViewModel(app: Application) : AppViewModel(app) {
* This value determines whether the user wants to have allergens marked.
*/
var preferenceAllergen: Boolean
- get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN)
+ get() = repo.getBooleanPreference(SettingsPreferences.ALLERGEN, defaultValue = true)
set(newValue) { repo.setPreference(SettingsPreferences.ALLERGEN, newValue) }
/**
diff --git a/app/src/main/res/drawable/lightbulb.xml b/app/src/main/res/drawable/lightbulb.xml
new file mode 100644
index 0000000..1a19e7c
--- /dev/null
+++ b/app/src/main/res/drawable/lightbulb.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/font/ibm_regular.ttf b/app/src/main/res/font/ibm_regular.ttf
new file mode 100644
index 0000000..02d682c
Binary files /dev/null and b/app/src/main/res/font/ibm_regular.ttf differ
diff --git a/app/src/main/res/layout/sheet_dev_code.xml b/app/src/main/res/layout/sheet_dev_code.xml
index 8e9f91d..ee19ef7 100644
--- a/app/src/main/res/layout/sheet_dev_code.xml
+++ b/app/src/main/res/layout/sheet_dev_code.xml
@@ -35,7 +35,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
- android:fontFamily="serif-monospace"
+ android:fontFamily="@font/ibm_regular"
android:inputType="textNoSuggestions"
android:textSize="24sp"/>
diff --git a/app/src/main/res/layout/sheet_schedule_update.xml b/app/src/main/res/layout/sheet_schedule_update.xml
index 2bdcb28..3d5b767 100644
--- a/app/src/main/res/layout/sheet_schedule_update.xml
+++ b/app/src/main/res/layout/sheet_schedule_update.xml
@@ -1,5 +1,6 @@
+
+
+ android:gravity="end"
+ android:layout_marginBottom="8dp">
Veranstaltungstitel
Dozierende(r)
Raum
+ Auf akademisches Viertel umstellen
+ Sorry, ein Fehler ist aufgetreten!
Kein Angebot
Für diesen Tag sind keine Angebote vorhanden
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 81c45cf..aff62c3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -20,6 +20,8 @@
Lecturer(s)
Room
–
+ Change to academic quarter
+ Sorry, an error occurred!
No offers
There are no offers available for this day