From e52e26168a62f34455e730adef1818fbb64eeeac Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 6 Mar 2015 14:00:56 +0100 Subject: [PATCH] quick&dirty preference screen. Allows to enable/disable SMS/K9/generic notifications --- .../gadgetbridge/ControlCenter.java | 4 +- .../gadgetbridge/K9Receiver.java | 12 +++- .../gadgetbridge/NotificationListener.java | 12 +++- .../gadgetbridge/SMSReceiver.java | 12 +++- .../gadgetbridge/SettingsActivity.java | 57 +----------------- .../res/values/strings_activity_settings.xml | 60 ++----------------- app/src/main/res/xml/pref_data_sync.xml | 21 ------- app/src/main/res/xml/pref_general.xml | 30 ---------- app/src/main/res/xml/pref_headers.xml | 3 - app/src/main/res/xml/pref_notification.xml | 48 ++++++++++----- 10 files changed, 74 insertions(+), 185 deletions(-) delete mode 100644 app/src/main/res/xml/pref_data_sync.xml diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java index 091de3e50..ef06ea94d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java @@ -90,8 +90,8 @@ public class ControlCenter extends ActionBarActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { - //Intent intent = new Intent(this, SettingsActivity.class); - //startActivity(intent); + Intent intent = new Intent(this, SettingsActivity.class); + startActivity(intent); return true; } if (id == R.id.action_debug) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/K9Receiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/K9Receiver.java index 65361cf14..109b36cbb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/K9Receiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/K9Receiver.java @@ -3,9 +3,11 @@ package nodomain.freeyourgadget.gadgetbridge; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; import android.os.PowerManager; +import android.preference.PreferenceManager; public class K9Receiver extends BroadcastReceiver { @@ -15,10 +17,16 @@ public class K9Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - PowerManager powermanager = (PowerManager) context.getSystemService(context.POWER_SERVICE); - if (powermanager.isScreenOn()) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + if (!sharedPrefs.getBoolean("notifications_k9mail", true)) { return; } + if (!sharedPrefs.getBoolean("notifications_k9mail_whenscreenon", false)) { + PowerManager powermanager = (PowerManager) context.getSystemService(context.POWER_SERVICE); + if (powermanager.isScreenOn()) { + return; + } + } // get sender and subject from the Intent String sender = intent.getStringExtra("com.fsck.k9.intent.extra.FROM"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/NotificationListener.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/NotificationListener.java index 9a82c5f43..256139277 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/NotificationListener.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/NotificationListener.java @@ -2,8 +2,10 @@ package nodomain.freeyourgadget.gadgetbridge; import android.app.Notification; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.os.PowerManager; +import android.preference.PreferenceManager; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.util.Log; @@ -28,10 +30,16 @@ public class NotificationListener extends NotificationListenerService { String source = sbn.getPackageName(); Log.i(TAG, source); - PowerManager powermanager = (PowerManager) getSystemService(POWER_SERVICE); - if (powermanager.isScreenOn() && !source.equals(getPackageName())) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + if (!sharedPrefs.getBoolean("notifications_generic", true)) { return; } + if (!sharedPrefs.getBoolean("notifications_generic_whenscreenon", false)) { + PowerManager powermanager = (PowerManager) getSystemService(POWER_SERVICE); + if (powermanager.isScreenOn()) { + return; + } + } Notification notification = sbn.getNotification(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SMSReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SMSReceiver.java index f355292ec..1c95d9660 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SMSReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SMSReceiver.java @@ -3,8 +3,10 @@ package nodomain.freeyourgadget.gadgetbridge; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.os.PowerManager; +import android.preference.PreferenceManager; import android.telephony.SmsMessage; public class SMSReceiver extends BroadcastReceiver { @@ -12,10 +14,16 @@ public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - PowerManager powermanager = (PowerManager) context.getSystemService(context.POWER_SERVICE); - if (powermanager.isScreenOn()) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + if (!sharedPrefs.getBoolean("notifications_sms", true)) { return; } + if (!sharedPrefs.getBoolean("notifications_sms_whenscreenon", false)) { + PowerManager powermanager = (PowerManager) context.getSystemService(context.POWER_SERVICE); + if (powermanager.isScreenOn()) { + return; + } + } Bundle bundle = intent.getExtras(); if (bundle != null) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SettingsActivity.java index 2395a1fdd..d4f194c21 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/SettingsActivity.java @@ -3,9 +3,6 @@ package nodomain.freeyourgadget.gadgetbridge; import android.annotation.TargetApi; import android.content.Context; import android.content.res.Configuration; -import android.media.Ringtone; -import android.media.RingtoneManager; -import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.ListPreference; @@ -14,8 +11,6 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; -import android.preference.RingtonePreference; -import android.text.TextUtils; import java.util.List; @@ -51,6 +46,7 @@ public class SettingsActivity extends PreferenceActivity { * Shows the simplified settings UI if the device configuration if the * device configuration dictates that a simplified, single-pane UI should be * shown. + * shown. */ private void setupSimplePreferencesScreen() { if (!isSimplePreferences(this)) { @@ -69,19 +65,12 @@ public class SettingsActivity extends PreferenceActivity { getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_notification); - // Add 'data and sync' preferences, and a corresponding header. - fakeHeader = new PreferenceCategory(this); - fakeHeader.setTitle(R.string.pref_header_data_sync); - getPreferenceScreen().addPreference(fakeHeader); - addPreferencesFromResource(R.xml.pref_data_sync); // Bind the summaries of EditText/List/Dialog/Ringtone preferences to // their values. When their values change, their summaries are updated // to reflect the new value, per the Android Design guidelines. - bindPreferenceSummaryToValue(findPreference("example_text")); - bindPreferenceSummaryToValue(findPreference("example_list")); - bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone")); - bindPreferenceSummaryToValue(findPreference("sync_frequency")); + //bindPreferenceSummaryToValue(findPreference("notifications_sms")); + //bindPreferenceSummaryToValue(findPreference("notifications_sms_whenscreenon")); } /** @@ -146,27 +135,6 @@ public class SettingsActivity extends PreferenceActivity { ? listPreference.getEntries()[index] : null); - } else if (preference instanceof RingtonePreference) { - // For ringtone preferences, look up the correct display value - // using RingtoneManager. - if (TextUtils.isEmpty(stringValue)) { - // Empty values correspond to 'silent' (no ringtone). - preference.setSummary(R.string.pref_ringtone_silent); - - } else { - Ringtone ringtone = RingtoneManager.getRingtone( - preference.getContext(), Uri.parse(stringValue)); - - if (ringtone == null) { - // Clear the summary if there was a lookup error. - preference.setSummary(null); - } else { - // Set the summary to reflect the new ringtone display - // name. - String name = ringtone.getTitle(preference.getContext()); - preference.setSummary(name); - } - } } else { // For all other preferences, set the summary to the value's @@ -236,23 +204,4 @@ public class SettingsActivity extends PreferenceActivity { bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone")); } } - - /** - * This fragment shows data and sync preferences only. It is used when the - * activity is showing a two-pane settings UI. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public static class DataSyncPreferenceFragment extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.pref_data_sync); - - // Bind the summaries of EditText/List/Dialog/Ringtone preferences - // to their values. When their values change, their summaries are - // updated to reflect the new value, per the Android Design - // guidelines. - bindPreferenceSummaryToValue(findPreference("sync_frequency")); - } - } } diff --git a/app/src/main/res/values/strings_activity_settings.xml b/app/src/main/res/values/strings_activity_settings.xml index 2686b04f7..71f0071c9 100644 --- a/app/src/main/res/values/strings_activity_settings.xml +++ b/app/src/main/res/values/strings_activity_settings.xml @@ -1,60 +1,12 @@ + General Settings - - General - - Enable social recommendations - Recommendations for people to contact - based on your message history - - - Display name - John Smith - - Add friends to messages - - Always - When possible - Never - - - 1 - 0 - -1 - - - - Data & sync - - Sync frequency - - 15 minutes - 30 minutes - 1 hour - 3 hours - 6 hours - Never - - - 15 - 30 - 60 - 180 - 360 - -1 - - - System sync settings - - + Notifications - - New message notifications - - Ringtone - Silent - - Vibrate + Notification for SMS + Notification for K9-Mail + Generic notification support + … also when screen is on diff --git a/app/src/main/res/xml/pref_data_sync.xml b/app/src/main/res/xml/pref_data_sync.xml deleted file mode 100644 index ffda831c4..000000000 --- a/app/src/main/res/xml/pref_data_sync.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index c49cbed20..2288e8280 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -1,33 +1,3 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml index 2996b9999..f91f7682b 100644 --- a/app/src/main/res/xml/pref_headers.xml +++ b/app/src/main/res/xml/pref_headers.xml @@ -9,7 +9,4 @@ android:fragment="nodomain.freeyourgadget.gadgetbridge.SettingsActivity$NotificationPreferenceFragment" android:title="@string/pref_header_notifications" /> -
- diff --git a/app/src/main/res/xml/pref_notification.xml b/app/src/main/res/xml/pref_notification.xml index b4b8cae99..7a6dd2caf 100644 --- a/app/src/main/res/xml/pref_notification.xml +++ b/app/src/main/res/xml/pref_notification.xml @@ -3,25 +3,43 @@ - - - - - + + + + + + + + + + + +