Skip to content

Commit b8dcf3f

Browse files
committed
* Added system alerts
* Fix for crash when showing location progress
1 parent 59297a9 commit b8dcf3f

File tree

9 files changed

+54
-21
lines changed

9 files changed

+54
-21
lines changed

app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ repositories {
3939

4040
def versionMajor = 0
4141
def versionMinor = 6
42-
def versionPatch = 2
42+
def versionPatch = 3
4343
def versionBuild = 0 // bump for dog food builds, public betas, etc.
4444

4545
def ALARM_CODE() {

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/Configuration.kt

+10
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ constructor(private val sharedPreferences: DPreference) {
3939
get() = this.sharedPreferences.getPrefString(PREF_ALARM_MODE, MODE_DISARM)
4040
set(value) = this.sharedPreferences.setPrefString(PREF_ALARM_MODE, value)
4141

42+
var systemAlerts: Boolean
43+
get() = this.sharedPreferences.getPrefBoolean(PREF_SYSTEM_NOTIFICATIONS, false)
44+
set(value) = this.sharedPreferences.setPrefBoolean(PREF_SYSTEM_NOTIFICATIONS, value)
45+
4246
var inactivityTime: Long
4347
get() = this.sharedPreferences.getPrefLong(PREF_INACTIVITY_TIME, 300000)
4448
set(value) = this.sharedPreferences.setPrefLong(PREF_INACTIVITY_TIME, value)
@@ -99,6 +103,10 @@ constructor(private val sharedPreferences: DPreference) {
99103
return sharedPreferences.getPrefBoolean(PREF_MODULE_ALERTS, false)
100104
}
101105

106+
fun hasSystemAlerts(): Boolean {
107+
return sharedPreferences.getPrefBoolean(PREF_SYSTEM_NOTIFICATIONS, false)
108+
}
109+
102110
fun setAlertsModule(value: Boolean) {
103111
this.sharedPreferences.setPrefBoolean(PREF_MODULE_ALERTS, value)
104112
}
@@ -221,6 +229,7 @@ constructor(private val sharedPreferences: DPreference) {
221229
sharedPreferences.removePreference(PREF_DELAY_TIME)
222230
sharedPreferences.removePreference(PREF_AWAY_PENDING_TIME)
223231
sharedPreferences.removePreference(PREF_HOME_PENDING_TIME)
232+
sharedPreferences.removePreference(PREF_SYSTEM_NOTIFICATIONS)
224233
}
225234

226235
companion object {
@@ -242,6 +251,7 @@ constructor(private val sharedPreferences: DPreference) {
242251
@JvmField val PREF_INACTIVITY_TIME = "pref_inactivity_time"
243252
@JvmField val PREF_MODULE_NOTIFICATION = "pref_module_notification"
244253
@JvmField val PREF_MODULE_TSS = "pref_module_tss"
254+
@JvmField val PREF_SYSTEM_NOTIFICATIONS = "pref_system_notifications"
245255
@JvmField val PREF_MODULE_ALERTS = "pref_module_alerts"
246256
@JvmField val PREF_MAIL_TO = "pref_mail_to"
247257
@JvmField val PREF_MAIL_FROM = "pref_mail_from"

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/activities/MainActivity.kt

+6-7
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,11 @@ class MainActivity : BaseActivity(), ViewPager.OnPageChangeListener, ControlsFra
125125
this@MainActivity.runOnUiThread({
126126
when (state) {
127127
AlarmUtils.STATE_DISARM -> {
128-
//TODO CLEAR NOTIFICATIONS
129128
resetInactivityTimer()
130-
val notifications = NotificationUtils(this@MainActivity)
131-
notifications.clearNotification()
129+
if(viewModel.hasSystemAlerts()) {
130+
val notifications = NotificationUtils(this@MainActivity)
131+
notifications.clearNotification()
132+
}
132133
}
133134
AlarmUtils.STATE_ARM_AWAY,
134135
AlarmUtils.STATE_ARM_HOME -> {
@@ -137,16 +138,14 @@ class MainActivity : BaseActivity(), ViewPager.OnPageChangeListener, ControlsFra
137138
AlarmUtils.STATE_TRIGGERED -> {
138139
awakenDeviceForAction()
139140
stopDisconnectTimer()
140-
if(viewModel.getAlarmMode() == AlarmUtils.MODE_TRIGGERED){
141-
// TODO alarm notification
141+
if(viewModel.showSystemTriggeredAlert()){
142142
val notifications = NotificationUtils(this@MainActivity)
143143
notifications.createAlarmNotification(getString(R.string.text_notification_trigger_title), getString(R.string.text_notification_trigger_description))
144144
}
145145
}
146146
AlarmUtils.STATE_PENDING -> {
147147
awakenDeviceForAction()
148-
if(viewModel.getAlarmMode() == AlarmUtils.MODE_ARM_HOME || viewModel.getAlarmMode() == AlarmUtils.MODE_ARM_AWAY){
149-
// TODO alarm notification
148+
if(viewModel.showSystemPendingAlert()){
150149
val notifications = NotificationUtils(this@MainActivity)
151150
notifications.createAlarmNotification(getString(R.string.text_notification_entry_title), getString(R.string.text_notification_entry_description))
152151
}

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/NotificationsSettingsFragment.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ package com.thanksmister.iot.mqtt.alarmpanel.ui.fragments
2020

2121
import android.content.Context
2222
import android.content.SharedPreferences
23-
import android.os.Build
2423
import android.os.Bundle
2524
import android.support.v7.preference.CheckBoxPreference
2625
import android.support.v7.preference.EditTextPreference
2726
import android.support.v7.preference.Preference
2827
import android.support.v7.preference.PreferenceFragmentCompat
29-
import android.support.v7.preference.PreferenceScreen
3028
import android.text.TextUtils
3129
import android.view.View
3230
import android.widget.Toast
@@ -45,6 +43,7 @@ class NotificationsSettingsFragment : PreferenceFragmentCompat(), SharedPreferen
4543
@Inject lateinit var configuration: Configuration
4644

4745
private var topicPreference: EditTextPreference? = null
46+
private var systemPreference: CheckBoxPreference? = null
4847
private var notificationsPreference: CheckBoxPreference? = null
4948
private var tssPreference: CheckBoxPreference? = null
5049
private var alertsPreference: CheckBoxPreference? = null
@@ -90,11 +89,13 @@ class NotificationsSettingsFragment : PreferenceFragmentCompat(), SharedPreferen
9089
notificationsPreference = findPreference(Configuration.PREF_MODULE_NOTIFICATION) as CheckBoxPreference
9190
tssPreference = findPreference(Configuration.PREF_MODULE_TSS) as CheckBoxPreference
9291
alertsPreference = findPreference(Configuration.PREF_MODULE_ALERTS) as CheckBoxPreference
92+
systemPreference = findPreference(Configuration.PREF_SYSTEM_NOTIFICATIONS) as CheckBoxPreference
9393
descriptionPreference = findPreference("pref_description")
9494

9595
notificationsPreference!!.isChecked = configuration.hasNotifications()
9696
tssPreference!!.isChecked = configuration.hasTssModule()
9797
alertsPreference!!.isChecked = configuration.hasAlertsModule()
98+
systemPreference!!.isChecked = configuration.hasSystemAlerts()
9899

99100
if (!TextUtils.isEmpty(mqttOptions!!.getNotificationTopic())) {
100101
topicPreference!!.text = mqttOptions!!.getNotificationTopic()
@@ -135,6 +136,10 @@ class NotificationsSettingsFragment : PreferenceFragmentCompat(), SharedPreferen
135136
val alerts = alertsPreference!!.isChecked
136137
configuration.setAlertsModule(alerts)
137138
}
139+
Configuration.PREF_SYSTEM_NOTIFICATIONS -> {
140+
val checked = systemPreference!!.isChecked
141+
configuration.systemAlerts = checked
142+
}
138143
}
139144
}
140145
}

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/WeatherSettingsFragment.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import com.thanksmister.iot.mqtt.alarmpanel.utils.LocationUtils
4949
import timber.log.Timber
5050

5151
import com.thanksmister.iot.mqtt.alarmpanel.R.xml.preferences_weather
52+
import com.thanksmister.iot.mqtt.alarmpanel.ui.activities.SettingsActivity
5253
import com.thanksmister.iot.mqtt.alarmpanel.utils.DialogUtils
5354
import dagger.android.support.AndroidSupportInjection
5455
import javax.inject.Inject
@@ -248,7 +249,7 @@ class WeatherSettingsFragment : PreferenceFragmentCompat(), SharedPreferences.On
248249
private fun setUpLocationMonitoring() {
249250
Timber.d("setUpLocationMonitoring")
250251
if (isAdded) {
251-
dialogUtils.showProgressDialog(getString(R.string.progress_location), false)
252+
Toast.makeText(activity as BaseActivity, getString(R.string.progress_location), Toast.LENGTH_SHORT).show()
252253
locationManager = activity!!.getSystemService(Context.LOCATION_SERVICE) as LocationManager
253254
val criteria = Criteria()
254255
criteria.accuracy = Criteria.ACCURACY_COARSE
@@ -261,7 +262,6 @@ class WeatherSettingsFragment : PreferenceFragmentCompat(), SharedPreferences.On
261262
}
262263
} catch (e: SecurityException) {
263264
Timber.e("Location manager could not use network provider", e)
264-
dialogUtils.hideProgressDialog()
265265
Toast.makeText(activity, R.string.toast_invalid_provider, Toast.LENGTH_SHORT).show()
266266
}
267267
}

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/utils/DialogUtils.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ class DialogUtils(base: Context?) : ContextWrapper(base), LifecycleObserver {
104104
}
105105
}
106106

107-
fun showProgressDialog(message: String, modal: Boolean) {
107+
fun showProgressDialog(activity: AppCompatActivity, message: String, modal: Boolean) {
108108
if (progressDialog == null) {
109-
progressDialog = ProgressDialog(this)
109+
progressDialog = ProgressDialog(activity)
110110
progressDialog?.setProgressStyle(ProgressDialog.STYLE_SPINNER)
111111
progressDialog?.setMessage(message)
112112
progressDialog?.setCancelable(modal)

app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/viewmodel/MessageViewModel.kt

+12
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,18 @@ constructor(application: Application, private val dataSource: MessageDao, privat
108108
return configuration.alarmMode
109109
}
110110

111+
fun hasSystemAlerts(): Boolean {
112+
return configuration.hasSystemAlerts()
113+
}
114+
115+
fun showSystemTriggeredAlert(): Boolean {
116+
return (getAlarmMode() == AlarmUtils.MODE_TRIGGERED) && hasSystemAlerts()
117+
}
118+
119+
fun showSystemPendingAlert(): Boolean {
120+
return (getAlarmMode() == AlarmUtils.MODE_ARM_HOME || getAlarmMode() == AlarmUtils.MODE_ARM_AWAY) && hasSystemAlerts()
121+
}
122+
111123
fun isAlarmTriggeredMode(): Boolean {
112124
return getAlarmMode() == MODE_TRIGGERED
113125
|| getAlarmMode() == MODE_HOME_TRIGGERED_PENDING

app/src/main/res/values/strings.xml

+3-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
<string name="preference_web_description">This is an experimental feature. The web page is rendered with Android\'s version of the Chrome Browser and may render differently depending on your Android SDK and WebView versions.</string>
9090

9191
<string name="preference_title_notification">Notifications</string>
92-
<string name="preference_summary_notification">Show a notification if the alarm is triggered.</string>
92+
<string name="preference_summary_notification">Show a system notification if the alarm is triggered or entry detected.</string>
9393

9494
<string name="preference_title_inactivity">Start screen saver after…</string>
9595
<string name="preference_summary_inactivity_seconds">After %1$s seconds of inactivity screen dims.</string>
@@ -101,6 +101,7 @@
101101
<string name="preference_summary_mqtt_notifications">Display or speak notifications from MQTT messages.</string>
102102

103103
<string name="preference_title_alert">Alert Notifications</string>
104+
<string name="preference_title_system_notifications">System Notifications</string>
104105
<string name="preference_summary_alert">Use an alert dialog to show the notification content.</string>
105106

106107
<string name="preference_tts_voice">TTS Voice</string>
@@ -214,7 +215,7 @@
214215
<string name="text_camera_failed_session">Capture session failed, do you have a camera?</string>
215216
<string name="text_error_camera_device">Camera error, couldn\'t open the device.</string>
216217
<string name="text_camera_image_subject">Alarm Panel &lt;%1$s&gt;</string>
217-
<string name="pref_mqtt_settings_category">MQTT Settings</string>
218+
<string name="pref_mqtt_settings_category">MQTT Notifications</string>
218219
<string name="dialog_loading">Loading…</string>
219220
<string name="pref_time_update_title">Update Time</string>
220221
<string name="pref_time_title">Time Settings</string>

app/src/main/res/xml/preferences_notifications.xml

+11-5
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@
2222

2323
<PreferenceCategory android:title="@string/preference_title_notifications">
2424

25+
<CheckBoxPreference
26+
android:key="pref_system_notifications"
27+
android:summary="@string/preference_summary_notification"
28+
android:title="@string/preference_title_system_notifications"/>
29+
30+
</PreferenceCategory>
31+
32+
<PreferenceCategory android:title="@string/pref_mqtt_settings_category">
33+
2534
<CheckBoxPreference
2635
android:key="pref_module_notification"
2736
android:summary="@string/preference_title_mqtt_notifications"
@@ -36,13 +45,9 @@
3645
<CheckBoxPreference
3746
android:key="pref_module_alerts"
3847
android:enabled="false"
39-
android:summary="@string/preference_summary_alert"
48+
android:summary="@string/preference_title_alert"
4049
android:title="@string/preference_summary_alert" />
4150

42-
</PreferenceCategory>
43-
44-
<PreferenceCategory android:title="@string/pref_mqtt_settings_category">
45-
4651
<EditTextPreference
4752
android:key="pref_notification_topic"
4853
android:negativeButtonText="@android:string/cancel"
@@ -59,4 +64,5 @@
5964

6065
</PreferenceCategory>
6166

67+
6268
</PreferenceScreen>

0 commit comments

Comments
 (0)