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

View File

@ -44,7 +44,7 @@ import org.mosad.seil0.projectlaogai.util.NotRetardedCalendar
* The timetable controller class * The timetable controller class
* contains all needed parts to display and the timetable detail screen * 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 scrollViewTimetable: ScrollView
private lateinit var faBtnAddSubject: FloatingActionButton private lateinit var faBtnAddSubject: FloatingActionButton

View File

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

View File

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

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".fragments.TimeTableFragment" tools:context=".fragments.TimetableFragment"
android:background="?themePrimary"> android:background="?themePrimary">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <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_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> <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"> <string-array name="syncInterval">
<item>Manually</item> <item>Manually</item>
<item>1 Hour</item> <item>1 Hour</item>