open the proper tab at clicking the timer or alarm notification

This commit is contained in:
tibbi 2018-03-12 17:39:35 +01:00
parent b2441efee4
commit 256c686a03
7 changed files with 38 additions and 14 deletions

View File

@ -22,6 +22,7 @@
<activity <activity
android:name=".activities.SplashActivity" android:name=".activities.SplashActivity"
android:launchMode="singleTask"
android:theme="@style/SplashTheme"> android:theme="@style/SplashTheme">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
@ -37,7 +38,7 @@
<activity <activity
android:name=".activities.MainActivity" android:name=".activities.MainActivity"
android:launchMode="singleTop"/> android:launchMode="singleTask"/>
<activity <activity
android:name=".activities.SettingsActivity" android:name=".activities.SettingsActivity"

View File

@ -12,6 +12,7 @@ import com.simplemobiletools.clock.adapters.ViewPagerAdapter
import com.simplemobiletools.clock.extensions.config import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.helpers.OPEN_TAB import com.simplemobiletools.clock.helpers.OPEN_TAB
import com.simplemobiletools.clock.helpers.TABS_COUNT import com.simplemobiletools.clock.helpers.TABS_COUNT
import com.simplemobiletools.clock.helpers.TAB_CLOCK
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
import com.simplemobiletools.commons.helpers.LICENSE_STETHO import com.simplemobiletools.commons.helpers.LICENSE_STETHO
@ -89,6 +90,12 @@ class MainActivity : SimpleActivity() {
return true return true
} }
override fun onNewIntent(intent: Intent) {
if (intent.extras?.containsKey(OPEN_TAB) == true) {
viewpager.setCurrentItem(intent.getIntExtra(OPEN_TAB, TAB_CLOCK), false)
}
}
private fun storeStateVariables() { private fun storeStateVariables() {
config.apply { config.apply {
storedTextColor = textColor storedTextColor = textColor

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.clock.activities
import android.content.Intent import android.content.Intent
import com.simplemobiletools.clock.helpers.OPEN_TAB import com.simplemobiletools.clock.helpers.OPEN_TAB
import com.simplemobiletools.clock.helpers.TAB_ALARM import com.simplemobiletools.clock.helpers.TAB_ALARM
import com.simplemobiletools.clock.helpers.TAB_CLOCK
import com.simplemobiletools.commons.activities.BaseSplashActivity import com.simplemobiletools.commons.activities.BaseSplashActivity
class SplashActivity : BaseSplashActivity() { class SplashActivity : BaseSplashActivity() {
@ -14,6 +15,12 @@ class SplashActivity : BaseSplashActivity() {
startActivity(this) startActivity(this)
} }
} }
intent.extras?.containsKey(OPEN_TAB) == true -> {
Intent(this, MainActivity::class.java).apply {
putExtra(OPEN_TAB, intent.getIntExtra(OPEN_TAB, TAB_CLOCK))
startActivity(this)
}
}
else -> startActivity(Intent(this, MainActivity::class.java)) else -> startActivity(Intent(this, MainActivity::class.java))
} }
finish() finish()

View File

@ -135,7 +135,7 @@ fun Context.showRemainingTimeMessage(totalMinutes: Int) {
fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) { fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) {
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val targetMS = System.currentTimeMillis() + triggerInSeconds * 1000 val targetMS = System.currentTimeMillis() + triggerInSeconds * 1000
val pendingIntent = getPendingIntent(alarm) val pendingIntent = getOpenAppIntent(alarm)
if (isLollipopPlus()) { if (isLollipopPlus()) {
val info = AlarmManager.AlarmClockInfo(targetMS, pendingIntent) val info = AlarmManager.AlarmClockInfo(targetMS, pendingIntent)
@ -143,7 +143,7 @@ fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) {
} }
} }
fun Context.getPendingIntent(alarm: Alarm): PendingIntent { fun Context.getOpenAppIntent(alarm: Alarm): PendingIntent {
val intent = Intent(this, AlarmReceiver::class.java) val intent = Intent(this, AlarmReceiver::class.java)
intent.putExtra(ALARM_ID, alarm.id) intent.putExtra(ALARM_ID, alarm.id)
return PendingIntent.getBroadcast(this, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT) return PendingIntent.getBroadcast(this, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
@ -151,7 +151,7 @@ fun Context.getPendingIntent(alarm: Alarm): PendingIntent {
fun Context.cancelAlarmClock(alarm: Alarm) { fun Context.cancelAlarmClock(alarm: Alarm) {
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager.cancel(getPendingIntent(alarm)) alarmManager.cancel(getOpenAppIntent(alarm))
} }
fun Context.hideNotification(id: Int) { fun Context.hideNotification(id: Int) {

View File

@ -19,13 +19,15 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.clock.R import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.activities.MainActivity
import com.simplemobiletools.clock.activities.SimpleActivity import com.simplemobiletools.clock.activities.SimpleActivity
import com.simplemobiletools.clock.activities.SplashActivity
import com.simplemobiletools.clock.dialogs.MyTimePickerDialogDialog import com.simplemobiletools.clock.dialogs.MyTimePickerDialogDialog
import com.simplemobiletools.clock.dialogs.SelectAlarmSoundDialog import com.simplemobiletools.clock.dialogs.SelectAlarmSoundDialog
import com.simplemobiletools.clock.extensions.colorLeftDrawable import com.simplemobiletools.clock.extensions.colorLeftDrawable
import com.simplemobiletools.clock.extensions.config import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.extensions.hideNotification import com.simplemobiletools.clock.extensions.hideNotification
import com.simplemobiletools.clock.helpers.OPEN_TAB
import com.simplemobiletools.clock.helpers.TAB_TIMER
import com.simplemobiletools.clock.helpers.TIMER_NOTIF_ID import com.simplemobiletools.clock.helpers.TIMER_NOTIF_ID
import com.simplemobiletools.clock.receivers.TimerReceiver import com.simplemobiletools.clock.receivers.TimerReceiver
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
@ -181,14 +183,14 @@ class TimerFragment : Fragment() {
view.timer_time.text = formattedDuration view.timer_time.text = formattedDuration
if (diff == 0) { if (diff == 0) {
val pendingIntent = getNotificationClickIntent(context!!) val pendingIntent = getOpenAppIntent(context!!)
val notification = getNotification(context!!, pendingIntent) val notification = getNotification(context!!, pendingIntent)
val notificationManager = context!!.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationManager = context!!.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(TIMER_NOTIF_ID, notification) notificationManager.notify(TIMER_NOTIF_ID, notification)
Handler().postDelayed({ Handler().postDelayed({
context!!.hideNotification(TIMER_NOTIF_ID) context?.hideNotification(TIMER_NOTIF_ID)
}, context!!.config.timerMaxReminderSecs * 1000L) }, context?.config!!.timerMaxReminderSecs * 1000L)
} }
return true return true
} }
@ -237,8 +239,9 @@ class TimerFragment : Fragment() {
return PendingIntent.getBroadcast(context, TIMER_NOTIF_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT) return PendingIntent.getBroadcast(context, TIMER_NOTIF_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT)
} }
private fun getNotificationClickIntent(context: Context): PendingIntent { private fun getOpenAppIntent(context: Context): PendingIntent {
val intent = Intent(context, MainActivity::class.java) val intent = Intent(context, SplashActivity::class.java)
intent.putExtra(OPEN_TAB, TAB_TIMER)
return PendingIntent.getActivity(context, TIMER_NOTIF_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT) return PendingIntent.getActivity(context, TIMER_NOTIF_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT)
} }

View File

@ -27,7 +27,10 @@ const val OPEN_APP_INTENT_ID = 9998
const val TIMER_NOTIF_ID = 9999 const val TIMER_NOTIF_ID = 9999
const val OPEN_TAB = "open_tab" const val OPEN_TAB = "open_tab"
const val TAB_CLOCK = 0
const val TAB_ALARM = 1 const val TAB_ALARM = 1
const val TAB_STOPWATCH = 2
const val TAB_TIMER = 3
const val SORT_BY_LAP = 1 const val SORT_BY_LAP = 1
const val SORT_BY_LAP_TIME = 2 const val SORT_BY_LAP_TIME = 2

View File

@ -13,10 +13,12 @@ import android.net.Uri
import android.os.Handler import android.os.Handler
import android.support.v4.app.NotificationCompat import android.support.v4.app.NotificationCompat
import com.simplemobiletools.clock.R import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.activities.MainActivity
import com.simplemobiletools.clock.activities.SnoozeReminderActivity import com.simplemobiletools.clock.activities.SnoozeReminderActivity
import com.simplemobiletools.clock.activities.SplashActivity
import com.simplemobiletools.clock.extensions.* import com.simplemobiletools.clock.extensions.*
import com.simplemobiletools.clock.helpers.ALARM_ID import com.simplemobiletools.clock.helpers.ALARM_ID
import com.simplemobiletools.clock.helpers.OPEN_TAB
import com.simplemobiletools.clock.helpers.TAB_ALARM
import com.simplemobiletools.clock.models.Alarm import com.simplemobiletools.clock.models.Alarm
import com.simplemobiletools.clock.services.SnoozeService import com.simplemobiletools.clock.services.SnoozeService
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
@ -28,7 +30,7 @@ class AlarmReceiver : BroadcastReceiver() {
val id = intent.getIntExtra(ALARM_ID, -1) val id = intent.getIntExtra(ALARM_ID, -1)
val alarm = context.dbHelper.getAlarmWithId(id) ?: return val alarm = context.dbHelper.getAlarmWithId(id) ?: return
val pendingIntent = getPendingIntent(context, alarm) val pendingIntent = getOpenAppIntent(context, alarm)
val notification = getNotification(context, pendingIntent, alarm) val notification = getNotification(context, pendingIntent, alarm)
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(alarm.id, notification) notificationManager.notify(alarm.id, notification)
@ -89,8 +91,9 @@ class AlarmReceiver : BroadcastReceiver() {
} }
} }
private fun getPendingIntent(context: Context, alarm: Alarm): PendingIntent { private fun getOpenAppIntent(context: Context, alarm: Alarm): PendingIntent {
val intent = Intent(context, MainActivity::class.java) val intent = Intent(context, SplashActivity::class.java)
intent.putExtra(OPEN_TAB, TAB_ALARM)
return PendingIntent.getActivity(context, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT) return PendingIntent.getActivity(context, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
} }
} }