diff --git a/android/BOINC/src/edu/berkeley/boinc/PrefsActivity.java b/android/BOINC/src/edu/berkeley/boinc/PrefsActivity.java index 1be9ddb8e0..d1a4cd5af5 100644 --- a/android/BOINC/src/edu/berkeley/boinc/PrefsActivity.java +++ b/android/BOINC/src/edu/berkeley/boinc/PrefsActivity.java @@ -172,7 +172,7 @@ public class PrefsActivity extends FragmentActivity { case R.string.prefs_show_notification_header: //app pref appPrefs.setShowNotification(isSet); populateLayout(); // updates status text - ClientNotification.getInstance().enable(getApplicationContext(), isSet); + ClientNotification.getInstance().update(getApplicationContext()); break; case R.string.prefs_show_advanced_header: //app pref appPrefs.setShowAdvanced(isSet); diff --git a/android/BOINC/src/edu/berkeley/boinc/client/ClientNotification.java b/android/BOINC/src/edu/berkeley/boinc/client/ClientNotification.java index a5b266dd9d..4b4bab575c 100644 --- a/android/BOINC/src/edu/berkeley/boinc/client/ClientNotification.java +++ b/android/BOINC/src/edu/berkeley/boinc/client/ClientNotification.java @@ -12,6 +12,8 @@ public class ClientNotification { //private static final String TAG = "ClientNotification"; private static ClientNotification clientNotification = null; + + public Notification notification; private boolean mIsEnabled = true; private int mOldComputingStatus = -1; @@ -34,7 +36,17 @@ public class ClientNotification { * @param context * @param updatedStatus new status */ - public synchronized void update(Context context, ClientStatus updatedStatus) { + public synchronized void update(Context context) { + // check whether notification is allowed in preferences + if (!Monitor.getAppPrefs().getShowNotification()) { + hide(context); + return; + } + + // get current client status + ClientStatus updatedStatus = Monitor.getClientStatus(); + + // update notification if (clientNotification.mOldComputingStatus == -1 || updatedStatus.computingStatus.intValue() != clientNotification.mOldComputingStatus || (updatedStatus.computingStatus == ClientStatus.COMPUTING_STATUS_SUSPENDED && updatedStatus.computingSuspendReason != clientNotification.mOldSuspendReason)) { @@ -45,21 +57,6 @@ public class ClientNotification { } } - /** - * Set notification enabled/disabled - * @param context - * @param enabled - */ - public synchronized void enable(Context context, boolean enabled) { - clientNotification.mIsEnabled = enabled; - if (clientNotification.mIsEnabled) { - if (clientNotification.mOldComputingStatus != -1) - updateNotification(context, clientNotification.mOldComputingStatus); - } else { - hide(context); - } - } - private void updateNotification(Context context, int status) { switch(status) { case ClientStatus.COMPUTING_STATUS_NEVER: @@ -85,7 +82,7 @@ public class ClientNotification { Integer notificationId = context.getResources().getInteger(R.integer.autostart_notification_id); // Set the icon, scrolling text and time-stamp - Notification notification = new Notification( + notification = new Notification( icon, statusText, System.currentTimeMillis()); diff --git a/android/BOINC/src/edu/berkeley/boinc/client/Monitor.java b/android/BOINC/src/edu/berkeley/boinc/client/Monitor.java index 32c4fd41ff..2e560feab9 100644 --- a/android/BOINC/src/edu/berkeley/boinc/client/Monitor.java +++ b/android/BOINC/src/edu/berkeley/boinc/client/Monitor.java @@ -964,7 +964,7 @@ public class Monitor extends Service { if( (status != null) && (state != null) && (state.results != null) && (state.projects != null) && (transfers != null)) { Monitor.getClientStatus().setClientStatus(status, state.results, state.projects, transfers); // Update status bar notification - ClientNotification.getInstance().update(getApplicationContext(), getClientStatus()); + ClientNotification.getInstance().update(getApplicationContext()); } else { Log.d(TAG, "client status connection problem"); }