Skip to content

Commit

Permalink
Add Notifications management settings (API 26+) (#156)
Browse files Browse the repository at this point in the history
* Add Notifications management settings (API 26+) 

Added feature french translation.

close #155

* Fix Notifications management settings behaviors.

fix #155
  • Loading branch information
Moncef AOUDIA authored and AlvaroBrey committed Nov 5, 2018
1 parent 1aacd00 commit 1f3722f
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ interface NotificationPrefsContract {
fun requestRingtone(reqCode: Int, ringtoneType: Int, currentValue: Uri?)
fun setNotificationRingtoneText(text: String)
fun setInsistentRingtoneText(text: String)
fun setVisibleNotificationManagementPref(visible: Boolean)
}

interface Presenter : IPresenter<View> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import android.content.Intent
import android.content.SharedPreferences
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.support.v7.preference.Preference
Expand All @@ -42,6 +43,7 @@ class NotificationPrefsFragment :
private const val TAG = "NotificationPrefsFragm"
}

private val applicationPackageName: String by lazy { activity!!.packageName as String }
override val fragmentTitle: Int = R.string.pref_header_notifications
override val presenter: NotificationPrefsContract.Presenter by lazy {
NotificationPrefsPresenter(
Expand All @@ -67,6 +69,14 @@ class NotificationPrefsFragment :
presenter.selectInsistentRingtone()
return true
}
PreferenceKeys.SETTINGS_NOTIFICATION_MANAGEMENT.key() -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
.putExtra(Settings.EXTRA_APP_PACKAGE, applicationPackageName)
startActivity(intent)
}
return true
}
}
return super.onPreferenceTreeClick(preference)
}
Expand Down Expand Up @@ -123,5 +133,19 @@ class NotificationPrefsFragment :
insistentNotificationPref.summary = text
}

override fun setVisibleNotificationManagementPref(visible: Boolean){
findPreference(PreferenceKeys.SETTINGS_NOTIFICATION_TONE.key()).apply{
isEnabled = !visible
isVisible = !visible
}
findPreference(PreferenceKeys.SETTINGS_NOTIFICATION_VIBRATION.key()).apply{
isEnabled = !visible
isVisible = !visible
}
findPreference(PreferenceKeys.SETTINGS_NOTIFICATION_MANAGEMENT.key()).apply{
isEnabled = visible
isVisible = visible
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ package es.usc.citius.servando.calendula.settings.notifications
import android.content.Intent
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
import android.provider.Settings
import es.usc.citius.servando.calendula.modules.ModuleManager
import es.usc.citius.servando.calendula.modules.modules.StockModule
Expand All @@ -47,6 +48,12 @@ class NotificationPrefsPresenter(
view.hideStockPref()
}
updateRingtoneSummaries()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
view.setVisibleNotificationManagementPref(true)
} else {
view.setVisibleNotificationManagementPref(false)
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public enum PreferenceKeys {
SETTINGS_DATABASE_UPDATE(R.string.prefkey_settings_database_update),
SETTINGS_NOTIFICATION_TONE(R.string.prefkey_settings_notification_tone),
SETTINGS_NOTIFICATION_VIBRATION(R.string.prefkey_settings_notification_vibration),
SETTINGS_NOTIFICATION_MANAGEMENT(R.string.prefkey_settings_notification_management),
SETTINGS_INSISTENT_NOTIFICATION_TONE(R.string.prefkey_settings_insistent_notification_tone),
SETTINGS_STOCK_ALERT_DAYS(R.string.prefkey_settings_stock_alert_days),
SETTINGS_DEFAULTS_LOADED(R.string.prefkey_settings_defaults_loaded),
Expand Down
2 changes: 2 additions & 0 deletions Calendula/src/main/res/values-fr/strings_translatable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,8 @@ Vous verrez toutes leurs prises sur l'écran d'accueil."</string>
<string name="pref_notification_vibration_alarm_audible">"Seulement quand l'alarme est audible"</string>
<string name="pref_notification_vibration_alarm_silent">"Seulement Quand l'alarme est silencieuse"</string>
<string name="pref_notification_vibration_never">"Jamais"</string>
<string name="pref_notification_management">"Gérer les notifications"</string>
<string name="pref_notification_management_sum">"Paramètres d'importance, de son et de vibration"</string>
<string name="pref_alarm_repeat_five_min">"5 min"</string>
<string name="pref_alarm_repeat_fifteen_min">"15 min"</string>
<string name="pref_alarm_repeat_thirty_min">"30 min"</string>
Expand Down
1 change: 1 addition & 0 deletions Calendula/src/main/res/values/strings_preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@

<string name="prefkey_settings_notification_tone" translatable="false">pref_notification_tone</string>
<string name="prefkey_settings_notification_vibration" translatable="false">pref_notification_vibration</string>
<string name="prefkey_settings_notification_management" translatable="false">pref_notification_management</string>
<string name="prefkey_settings_stock_alert_days" translatable="false">stock_alert_days</string>
<string name="prefkey_settings_database_update" translatable="false">prescriptions_database_update</string>
<string name="prefkey_settings_defaults_loaded" translatable="false">pref_defaults_loaded</string>
Expand Down
2 changes: 2 additions & 0 deletions Calendula/src/main/res/values/strings_translatable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,8 @@ You will see all their intakes in the home screen."</string>
<string name="pref_notification_vibration_alarm_audible">"When alarm is audible only"</string>
<string name="pref_notification_vibration_alarm_silent">"When alarm is silent only"</string>
<string name="pref_notification_vibration_never">"Never"</string>
<string name="pref_notification_management">"Manage notifications"</string>
<string name="pref_notification_management_sum">"Importance, sound and vibration settings"</string>
<string name="pref_alarm_repeat_five_min">"5 min"</string>
<string name="pref_alarm_repeat_fifteen_min">"15 min"</string>
<string name="pref_alarm_repeat_thirty_min">"30 min"</string>
Expand Down
9 changes: 6 additions & 3 deletions Calendula/src/main/res/xml/pref_notifications.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,12 @@
<SwitchPreference
android:defaultValue="true"
android:key="@string/prefkey_settings_alarm_notifications"
android:title="@string/pref_title_new_alarm_notification"/>

android:title="@string/pref_title_new_alarm_notification" />
<Preference
android:dependency="@string/prefkey_settings_alarm_notifications"
android:key="@string/prefkey_settings_notification_management"
android:summary="@string/pref_notification_management_sum"
android:title="@string/pref_notification_management" />
<Preference
android:dependency="@string/prefkey_settings_alarm_notifications"
android:key="@string/prefkey_settings_notification_tone"
Expand Down Expand Up @@ -84,7 +88,6 @@
android:summary="@string/pref_notification_tone_sum"
android:title="@string/pref_insistent_notification_tone"/>


<ListPreference
android:defaultValue="7"
android:entries="@array/pref_stock"
Expand Down

0 comments on commit 1f3722f

Please sign in to comment.