Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1bf88711 authored by Marek Walczak's avatar Marek Walczak Committed by rbox
Browse files

Forward port "Add option to hide AlarmClock Icon in StatusBar"

From http://review.cyanogenmod.org/#/c/29106/

Change-Id: Ia4eb6ed32040eb5858dbb2d52f7e7773a0a46b0d
parent 3c1bf428
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -185,6 +185,12 @@
    <!-- Label for the Settings activity displayed on-screen when that activity must be represented to the user. -->
    <string name="settings">Settings</string>

    <!-- Setting title for showing/hiding the alarm status bar icon -->
    <string name="show_status_bar_icon_title">Show icon</string>

    <!-- Setting summary for showing/hiding the alarm statusbar icon -->
    <string name="show_status_bar_icon_summary">Show an icon in the status bar when an alarm is set</string>

    <!-- Setting title for changing the snooze duration. -->
    <string name="snooze_duration_title">Snooze length</string>

+6 −0
Original line number Diff line number Diff line
@@ -65,5 +65,11 @@
            android:entries="@array/volume_button_setting_entries"
            android:entryValues="@array/volume_button_setting_values"
            android:defaultValue="0" />

        <CheckBoxPreference
            android:key="show_status_bar_icon"
            android:title="@string/show_status_bar_icon_title"
            android:summary="@string/show_status_bar_icon_summary"
            android:defaultValue="true"  />
    </PreferenceCategory>
</PreferenceScreen>
+10 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.text.format.DateUtils;
import android.view.Menu;
import android.view.MenuItem;

import com.android.deskclock.alarms.AlarmNotifications;
import com.android.deskclock.worldclock.Cities;

import java.util.ArrayList;
@@ -49,6 +50,8 @@ public class SettingsActivity extends PreferenceActivity

    public static final String KEY_ALARM_IN_SILENT_MODE =
            "alarm_in_silent_mode";
    public static final String KEY_SHOW_STATUS_BAR_ICON =
            "show_status_bar_icon";
    public static final String KEY_ALARM_SNOOZE =
            "snooze_duration";
    public static final String KEY_VOLUME_BEHAVIOR =
@@ -173,6 +176,10 @@ public class SettingsActivity extends PreferenceActivity
            final ListPreference listPref = (ListPreference) pref;
            final int idx = listPref.findIndexOfValue((String) newValue);
            listPref.setSummary(listPref.getEntries()[idx]);
        } else if (KEY_SHOW_STATUS_BAR_ICON.equals(pref.getKey())) {
            // Check if any alarms are active. If yes and
            // we allow showing the alarm icon, the icon will be shown.
            AlarmNotifications.updateStatusBarIcon(getApplicationContext(), (Boolean) newValue);
        }
        return true;
    }
@@ -221,6 +228,9 @@ public class SettingsActivity extends PreferenceActivity
        listPref.setSummary(listPref.getEntry());
        listPref.setOnPreferenceChangeListener(this);

        CheckBoxPreference hideStatusbarIcon = (CheckBoxPreference) findPreference(KEY_SHOW_STATUS_BAR_ICON);
        hideStatusbarIcon.setOnPreferenceChangeListener(this);

        SnoozeLengthDialog snoozePref = (SnoozeLengthDialog) findPreference(KEY_ALARM_SNOOZE);
        snoozePref.setSummary();
    }
+27 −4
Original line number Diff line number Diff line
@@ -20,14 +20,18 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.text.TextUtils;

import com.android.deskclock.AlarmClockFragment;
import com.android.deskclock.AlarmUtils;
import com.android.deskclock.DeskClock;
import com.android.deskclock.Log;
import com.android.deskclock.R;
import com.android.deskclock.SettingsActivity;
import com.android.deskclock.provider.Alarm;
import com.android.deskclock.provider.AlarmInstance;

@@ -39,10 +43,12 @@ public final class AlarmNotifications {

    public static void broadcastNextAlarm(Context context, AlarmInstance instance)  {
        String timeString = "";
        // Read the icon state preference before showing the icon, default to visible
        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        boolean showStatusIcon = false;
        if (instance != null) {
            timeString = AlarmUtils.getFormattedTime(context, instance.getAlarmTime());
            showStatusIcon = true;
            showStatusIcon = prefs.getBoolean(SettingsActivity.KEY_SHOW_STATUS_BAR_ICON, true);
        }

        // Set and notify next alarm text to system
@@ -50,9 +56,7 @@ public final class AlarmNotifications {
        Settings.System.putString(context.getContentResolver(),
                Settings.System.NEXT_ALARM_FORMATTED,
                timeString);
        Intent alarmChanged = new Intent(SYSTEM_ALARM_CHANGE_ACTION);
        alarmChanged.putExtra("alarmSet", showStatusIcon);
        context.sendBroadcast(alarmChanged);
        setStatusBarIcon(context, showStatusIcon);
    }

    public static void showLowPriorityNotification(Context context, AlarmInstance instance) {
@@ -261,4 +265,23 @@ public final class AlarmNotifications {
                context.getSystemService(Context.NOTIFICATION_SERVICE);
        nm.cancel(instance.hashCode());
    }

    public static void updateStatusBarIcon(Context context, boolean showStatusIcon) {
        String nextAlarm = getNextAlarm(context);
        if (!TextUtils.isEmpty(nextAlarm)) {
            setStatusBarIcon(context, showStatusIcon);
        }
    }

    private static String getNextAlarm(Context context) {
        String nextAlarm = Settings.System.getString(context.getContentResolver(),
                                  Settings.System.NEXT_ALARM_FORMATTED);
        return nextAlarm;
    }

    private static void setStatusBarIcon(Context context, boolean showStatusIcon) {
        Intent alarmChanged = new Intent(SYSTEM_ALARM_CHANGE_ACTION);
        alarmChanged.putExtra("alarmSet", showStatusIcon);
        context.sendBroadcast(alarmChanged);
    }
}