make grades notification clickable
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Jannik 2020-09-10 18:26:42 +02:00
parent 6388dfe54a
commit 36568e9682
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
6 changed files with 28 additions and 10 deletions

View File

@ -90,10 +90,11 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
// based on the intent we get, call readBalance or open a Fragment
when (intent.action) {
NfcAdapter.ACTION_TECH_DISCOVERED -> NFCMensaCard.readBalance(intent, this)
"org.mosad.seil0.projectlaogai.fragments.MensaFragment" -> activeFragment = MensaFragment()
"org.mosad.seil0.projectlaogai.fragments.TimeTableFragment" -> activeFragment = TimeTableFragment()
"org.mosad.seil0.projectlaogai.fragments.MoodleFragment" -> activeFragment = MoodleFragment()
"org.mosad.seil0.projectlaogai.fragments.GradesFragment" -> activeFragment = GradesFragment()
getString(R.string.intent_action_mensaFragment) -> activeFragment = MensaFragment()
getString(R.string.intent_action_timetableFragment) -> activeFragment = TimetableFragment()
getString(R.string.intent_action_moodleFragment) -> activeFragment = MoodleFragment()
getString(R.string.intent_action_gradesFragment) -> activeFragment = GradesFragment()
else -> activeFragment = HomeFragment()
}
// open the activeFragment, default is the HomeFragment
@ -154,7 +155,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
activeFragment = when(item.itemId) {
R.id.nav_home -> HomeFragment()
R.id.nav_mensa -> MensaFragment()
R.id.nav_timetable -> TimeTableFragment()
R.id.nav_timetable -> TimetableFragment()
R.id.nav_moodle -> MoodleFragment()
R.id.nav_grades -> GradesFragment()
R.id.nav_settings -> SettingsFragment()

View File

@ -44,7 +44,7 @@ import org.mosad.seil0.projectlaogai.util.NotRetardedCalendar
* The timetable controller class
* contains all needed parts to display and the timetable detail screen
*/
class TimeTableFragment : Fragment() {
class TimetableFragment : Fragment() {
private lateinit var scrollViewTimetable: ScrollView
private lateinit var faBtnAddSubject: FloatingActionButton

View File

@ -22,12 +22,15 @@
package org.mosad.seil0.projectlaogai.worker
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.work.Worker
import androidx.work.WorkerParameters
import kotlinx.coroutines.runBlocking
import org.mosad.seil0.projectlaogai.MainActivity
import org.mosad.seil0.projectlaogai.R
import org.mosad.seil0.projectlaogai.controller.GradesController
import org.mosad.seil0.projectlaogai.controller.cache.CacheController
@ -46,7 +49,6 @@ class GradesUpdateWorker(val context: Context, params: WorkerParameters): Worker
}
// TODO show updating notification, for debugging
println("doing work ...")
val notificationIdDBG = NotificationUtils.getId()
val builderDBG = NotificationCompat.Builder(context, CHANNEL_ID_GRADES)
.setSmallIcon(R.drawable.ic_grading_black_24dp)
@ -68,17 +70,26 @@ class GradesUpdateWorker(val context: Context, params: WorkerParameters): Worker
val diff = GradesController().diffGrades(oldGrades, newGrades)
// show message
if (diff.isNotEmpty()) {
if (diff.isNotEmpty() || diff.isEmpty()) {
val text = if (diff.size < 2) {
context.getString(R.string.notification_grades_single_desc, diff.first().name)
} else {
context.getString(R.string.notification_grades_multiple_desc, diff.first().name, (diff.size - 1))
}
val intent = Intent(context, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
action = context.getString(R.string.intent_action_gradesFragment)
}
val pendingIntent: PendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
val builder = NotificationCompat.Builder(context, CHANNEL_ID_GRADES)
.setSmallIcon(R.drawable.ic_grading_black_24dp)
.setContentTitle(context.getString(R.string.notification_grades))
.setContentText(text)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
// if there are multiple subjects, use BigText
if (diff.size > 1)

View File

@ -21,7 +21,7 @@
android:shortcutLongLabel="@string/shortcut_timetable_long"
android:shortcutDisabledMessage="@string/shortcut_timetable_disabled">
<intent
android:action="org.mosad.seil0.projectlaogai.fragments.TimeTableFragment"
android:action="org.mosad.seil0.projectlaogai.fragments.TimetableFragment"
android:targetPackage="org.mosad.seil0.projectlaogai"
android:targetClass="org.mosad.seil0.projectlaogai.MainActivity" />
<categories android:name="android.shortcut.conversation" />

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.TimeTableFragment"
tools:context=".fragments.TimetableFragment"
android:background="?themePrimary">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout

View File

@ -141,6 +141,12 @@
<string name="save_key_user_email" translatable="false">org.mosad.seil0.projectlaogai.user_email</string>
<string name="save_key_user_password" translatable="false">org.mosad.seil0.projectlaogai.user_password</string>
<!-- intent actions -->
<string name="intent_action_mensaFragment" translatable="false">org.mosad.seil0.projectlaogai.fragments.MensaFragment</string>
<string name="intent_action_timetableFragment" translatable="false">org.mosad.seil0.projectlaogai.fragments.TimetableFragment</string>
<string name="intent_action_moodleFragment" translatable="false">org.mosad.seil0.projectlaogai.fragments.MoodleFragment</string>
<string name="intent_action_gradesFragment" translatable="false">org.mosad.seil0.projectlaogai.fragments.GradesFragment</string>
<string-array name="syncInterval">
<item>Manually</item>
<item>1 Hour</item>