Blissify: Statusbar clock date customization (2/2)

Signed-off-by: Jackeagle <jackeagle102@gmail.com>
Change-Id: I286a19ae1e397c12920ad253f5cb955eeeda0522
Signed-off-by: Jackeagle <jackeagle102@gmail.com>
diff --git a/res/values/bliss_arrays.xml b/res/values/bliss_arrays.xml
index 6bfe538..ab0ab0e 100644
--- a/res/values/bliss_arrays.xml
+++ b/res/values/bliss_arrays.xml
@@ -198,9 +198,9 @@
     </string-array>
 
     <string-array name="qs_clock_position_entries" translatable="false">
-        <item>@string/status_bar_clock_position_right</item>
-        <item>@string/status_bar_clock_position_left</item>
-        <item>@string/status_bar_clock_position_hidden</item>
+        <item>@string/status_bar_clock_style_right</item>
+        <item>@string/status_bar_clock_style_left</item>
+        <item>@string/status_bar_clock_style_hidden</item>
     </string-array>
 
     <string-array name="qs_clock_position_values" translatable="false">
@@ -209,107 +209,56 @@
         <item>3</item>
     </string-array>
 
-    <!-- Status bar -->
-    <string-array name="status_bar_clock_position_entries" translatable="false">
-        <item>@string/status_bar_clock_position_right</item>
-        <item>@string/status_bar_clock_position_center</item>
-        <item>@string/status_bar_clock_position_left</item>
-        <item>@string/status_bar_clock_position_hidden</item>
+    <!-- Statusbar Clock -->
+    <string-array name="status_bar_clock_style_entries" translatable="false">
+        <item>@string/status_bar_clock_style_left</item>
+        <item>@string/status_bar_clock_style_center</item>
+        <item>@string/status_bar_clock_style_right</item>
     </string-array>
 
-    <string-array name="status_bar_clock_position_entries_rtl" translatable="false">
-        <item>@string/status_bar_clock_position_left</item>
-        <item>@string/status_bar_clock_position_center</item>
-        <item>@string/status_bar_clock_position_right</item>
-        <item>@string/status_bar_clock_position_hidden</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_values" translatable="false">
+    <string-array name="status_bar_clock_style_values" translatable="false">
         <item>0</item>
         <item>1</item>
         <item>2</item>
-        <item>3</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_values_rtl" translatable="false">
-        <item>2</item>
-        <item>1</item>
-        <item>0</item>
-        <item>3</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_entries_notch" translatable="false">
-        <item>@string/status_bar_clock_position_right</item>
-        <item>@string/status_bar_clock_position_left</item>
-        <item>@string/status_bar_clock_position_hidden</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_entries_notch_rtl" translatable="false">
-        <item>@string/status_bar_clock_position_left</item>
-        <item>@string/status_bar_clock_position_right</item>
-        <item>@string/status_bar_clock_position_hidden</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_values_notch" translatable="false">
-        <item>0</item>
-        <item>2</item>
-        <item>3</item>
-    </string-array>
-
-    <string-array name="status_bar_clock_position_values_notch_rtl" translatable="false">
-        <item>2</item>
-        <item>0</item>
-        <item>3</item>
     </string-array>
 
     <string-array name="status_bar_am_pm_entries" translatable="false">
         <item>@string/status_bar_am_pm_hidden</item>
-        <item>@string/status_bar_am_pm_normal</item>
         <item>@string/status_bar_am_pm_small</item>
+        <item>@string/status_bar_am_pm_normal</item>
     </string-array>
 
     <string-array name="status_bar_am_pm_values" translatable="false">
-        <item>2</item>
-        <item>0</item>
-        <item>1</item>
-    </string-array>
-
-    <string-array name="clock_date_position_entries" translatable="false">
-        <item>@string/clock_date_left</item>
-        <item>@string/clock_date_right</item>
-    </string-array>
-
-    <string-array name="clock_date_position_values" translatable="false">
-        <item>0</item>
-        <item>1</item>
-    </string-array>
-
-    <!-- Statusbar date -->
-    <string-array name="status_bar_date_entries">
-        <item>@string/status_bar_date_none</item>
-        <item>@string/status_bar_date_small</item>
-        <item>@string/status_bar_date_normal</item>
-    </string-array>
-
-    <string-array name="status_bar_date_values" translatable="false">
         <item>0</item>
         <item>1</item>
         <item>2</item>
     </string-array>
 
-    <string-array name="status_bar_date_style_entries">
-        <item>@string/status_bar_date_style_normal</item>
-        <item>@string/status_bar_date_style_lowercase</item>
-        <item>@string/status_bar_date_style_uppercase</item>
+    <string-array name="clock_date_display_entries">
+        <item>@string/clock_date_display_none</item>
+        <item>@string/clock_date_display_small</item>
+        <item>@string/clock_date_display_normal</item>
     </string-array>
 
-    <string-array name="status_bar_date_style_values" translatable="false">
+    <string-array name="clock_date_display_values" translatable="false">
         <item>0</item>
         <item>1</item>
         <item>2</item>
     </string-array>
 
-    <string-array name="status_bar_date_format_entries_values" translatable="false">
+    <string-array name="clock_date_style_entries">
+        <item>@string/clock_date_style_normal</item>
+        <item>@string/clock_date_style_lowercase</item>
+        <item>@string/clock_date_style_uppercase</item>
+    </string-array>
+
+    <string-array name="clock_date_style_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+    </string-array>
+
+    <string-array name="clock_date_format_entries_values">
         <item>dd/MM/yy</item>
         <item>MM/dd/yy</item>
         <item>yyyy-MM-dd</item>
@@ -328,7 +277,17 @@
         <item>EEE MMMM dd</item>
         <item>EEEE dd/MM</item>
         <item>EEEE MM/dd</item>
-        <item>@string/status_bar_date_format_custom</item>
+        <item>@string/clock_date_format_custom</item>
+    </string-array>
+
+    <string-array name="clock_date_position_entries" translatable="false">
+        <item>@string/clock_date_left</item>
+        <item>@string/clock_date_right</item>
+    </string-array>
+
+    <string-array name="clock_date_position_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
     </string-array>
 
     <string-array name="status_bar_battery_style_entries" translatable="false">
@@ -1978,4 +1937,5 @@
         <item>1</item>
         <item>2</item>
     </string-array>
+
 </resources>
diff --git a/res/values/bliss_strings.xml b/res/values/bliss_strings.xml
index 2b68e78..cd7de78 100644
--- a/res/values/bliss_strings.xml
+++ b/res/values/bliss_strings.xml
@@ -195,51 +195,37 @@
     <string name="status_bar_system_icons_title">System icons</string>
     <string name="status_bar_system_icons_summary">Control which status bar icons are shown</string>
 
-    <!-- Status bar - Clock -->
+    <!-- Statusbar Clock -->
     <string name="status_bar_clock_title">Clock &amp; date</string>
     <string name="status_bar_clock_summary">Customize clock &amp; date</string>
-    <string name="status_bar_clock_seconds_title">Clock seconds</string>
-    <string name="status_bar_clock_seconds_summary">Display seconds next to clock in status bar</string>
-    <string name="status_bar_clock_position_title">Clock style</string>
-    <string name="status_bar_clock_position_right">Right</string>
-    <string name="status_bar_clock_position_left">Left</string>
-    <string name="status_bar_clock_position_center">Center</string>
-    <string name="status_bar_clock_position_hidden">Hidden</string>
-    <string name="status_bar_clock_auto_hide_title">Auto-hide</string>
-    <string name="status_bar_clock_auto_hide_summary">Hide and display clock for regular interval to save statusbar space</string>
-    <string name="status_bar_clock_auto_hide_hdur_title">Hide duration</string>
-    <string name="status_bar_clock_auto_hide_hdur_summary">Number of seconds to hide clock</string>
-    <string name="status_bar_clock_auto_hide_sdur_title">Show duration</string>
-    <string name="status_bar_clock_auto_hide_sdur_summary">Number of seconds to wait before hiding clock</string>
-
+    <string name="status_bar_clock_show">Show clock and date</string>
+    <string name="status_bar_clock_style_title">Clock style</string>
+    <string name="status_bar_clock_style_right">Right</string>
+    <string name="status_bar_clock_style_center">Center</string>
+    <string name="status_bar_clock_style_left">Left</string>
+    <string name="status_bar_clock_style_hidden">Hidden</string>
     <string name="status_bar_am_pm_title">AM/PM style</string>
     <string name="status_bar_am_pm_info">24-hour clock is enabled</string>
     <string name="status_bar_am_pm_normal">Normal</string>
     <string name="status_bar_am_pm_small">Small</string>
-    <string name="status_bar_am_pm_hidden">Hidden</string>
-
-    <!--Status bar date -->
-    <string name="status_bar_date_title">Date</string>
-    <string name="status_bar_date_none">Hidden (default)</string>
-    <string name="status_bar_date_small">Small</string>
-    <string name="status_bar_date_normal">Normal</string>
-    <string name="status_bar_date_format_title">Date format</string>
-    <string name="status_bar_date_style">Date style</string>
-    <string name="status_bar_date_style_normal">Normal</string>
-    <string name="status_bar_date_style_lowercase">Lowercase</string>
-    <string name="status_bar_date_style_uppercase">Uppercase</string>
-    <string name="status_bar_date_format_custom">Custom java format</string>
-    <string name="status_bar_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
-    <string name="status_bar_date_string_edittext_summary">Enter string</string>
-
-    <string name="clock_date_position">Date position</string>
+    <string name="status_bar_am_pm_hidden">Hidden (default)</string>
+    <string name="clock_seconds_display">Show seconds</string>
+    <string name="clock_date_display">Date</string>
+    <string name="clock_date_display_summary">Display custom date before the clock</string>
+    <string name="clock_date_display_none">Don\'t show</string>
+    <string name="clock_date_display_small">Small font size</string>
+    <string name="clock_date_display_normal">Normal font size</string>
+    <string name="clock_date_style">Date style</string>
+    <string name="clock_date_style_normal">Normal</string>
+    <string name="clock_date_style_lowercase">Lowercase</string>
+    <string name="clock_date_style_uppercase">Uppercase</string>
+    <string name="clock_date_format_custom">Custom java format</string>
+    <string name="clock_date_format">Date format</string>
+    <string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
+    <string name="clock_date_string_edittext_summary">Enter string</string>
     <string name="clock_date_right">Right of time</string>
     <string name="clock_date_left">Left of time</string>
-
-    <!-- Statusbar Clock Font Style, Size & Color -->
-    <string name="status_bar_clock_font_style_title">Clock font style</string>
-    <string name="status_bar_clock_font_size_title">Clock font size</string>
-    <string name="status_bar_clock_color_title">Clock font color</string>
+    <string name="clock_date_position">Date position</string>
 
     <!-- Status bar - Battery -->
     <string name="status_bar_battery_title">Battery indicator</string>
diff --git a/res/xml/blissify_statusbar.xml b/res/xml/blissify_statusbar.xml
index 8aec080..158e30e 100644
--- a/res/xml/blissify_statusbar.xml
+++ b/res/xml/blissify_statusbar.xml
@@ -26,24 +26,16 @@
 
     <!-- Clock -->
     <PreferenceCategory
-        android:key="status_bar_clock_key"
+        android:key="clock_customisations_category"
         android:icon="@drawable/ic_clock"
-        android:title="@string/status_bar_clock_title">
+        android:title="@string/clock_customisations_title">
 
-        <lineageos.preference.LineageSystemSettingListPreference
-            android:key="status_bar_clock"
-            android:title="@string/status_bar_clock_position_title"
-            android:summary="%s"
-            android:dialogTitle="@string/status_bar_clock_position_title"
-            android:entries="@array/status_bar_clock_position_entries"
-            android:entryValues="@array/status_bar_clock_position_values"
-            android:defaultValue="2" />
-
-        <!--<Preference
-            android:key="clock"
+        <Preference
+            android:key="statusbar_clock_category"
+          	android:fragment="com.blissroms.blissify.fragments.statusbar.Clock"
             android:title="@string/status_bar_clock_title"
             android:summary="@string/status_bar_clock_summary"
-            android:fragment="com.blissroms.blissify.fragments.statusbar.Clock" /> -->
+            android:defaultValue="false" />
 
     </PreferenceCategory>
 
diff --git a/res/xml/status_bar_clock.xml b/res/xml/status_bar_clock.xml
deleted file mode 100644
index 850b7d0..0000000
--- a/res/xml/status_bar_clock.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-     Copyright (C) 2018-2019 crDroid Android Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<PreferenceScreen
-    android:title="@string/status_bar_clock_title"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
-
-    <!-- Bliss Logo Header -->
-    <Preference 
-        android:key="bliss_logo"
-        android:layout="@layout/bliss_logo" />
-
-    <PreferenceCategory
-        android:key="status_bar_clock_autohide"
-        android:icon="@drawable/ic_clock"
-        android:title="@string/status_bar_clock_auto_hide_title">
-
-    <com.bliss.support.preferences.SystemSettingSwitchPreference
-        android:key="status_bar_clock_auto_hide"
-        android:title="@string/status_bar_clock_auto_hide_title"
-        android:summary="@string/status_bar_clock_auto_hide_summary"
-        android:defaultValue="false" />
-
-    <com.bliss.support.preferences.CustomSeekBarPreference
-        android:key="status_bar_clock_auto_hide_hduration"
-        android:title="@string/status_bar_clock_auto_hide_hdur_title"
-        android:summary="@string/status_bar_clock_auto_hide_hdur_summary"
-        android:max="300"
-        settings:min="5"
-        settings:interval="5"
-        android:dependency="status_bar_clock_auto_hide"
-        android:defaultValue="60"
-        android:persistent="false" />
-
-    <com.bliss.support.preferences.CustomSeekBarPreference
-        android:key="status_bar_clock_auto_hide_sduration"
-        android:title="@string/status_bar_clock_auto_hide_sdur_title"
-        android:summary="@string/status_bar_clock_auto_hide_sdur_summary"
-        android:max="300"
-        settings:min="5"
-        settings:interval="5"
-        android:dependency="status_bar_clock_auto_hide"
-        android:defaultValue="5"
-        android:persistent="false" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="clock_customisations_category"
-        android:icon="@drawable/ic_clock"
-        android:title="@string/clock_customisations_title">
-
-    <com.bliss.support.preferences.SystemSettingSwitchPreference
-        android:key="status_bar_clock_seconds"
-        android:title="@string/status_bar_clock_seconds_title"
-        android:summary="@string/status_bar_clock_seconds_summary"
-        android:defaultValue="false" />
-
-    <lineageos.preference.LineageSystemSettingListPreference
-        android:key="status_bar_am_pm"
-        android:title="@string/status_bar_am_pm_title"
-        android:summary="%s"
-        android:dialogTitle="@string/status_bar_am_pm_title"
-        android:entries="@array/status_bar_am_pm_entries"
-        android:entryValues="@array/status_bar_am_pm_values"
-        android:defaultValue="2" />
-
-    <com.bliss.support.preferences.SystemSettingListPreference
-        android:key="status_bar_clock_date_display"
-        android:title="@string/status_bar_date_title"
-        android:entries="@array/status_bar_date_entries"
-        android:entryValues="@array/status_bar_date_values"
-        android:defaultValue="0" />
-
-    <com.bliss.support.preferences.SystemSettingListPreference
-        android:key="status_bar_clock_date_position"
-        android:title="@string/clock_date_position"
-        android:entries="@array/clock_date_position_entries"
-        android:entryValues="@array/clock_date_position_values"
-        android:defaultValue="0" />
-
-    <com.bliss.support.preferences.SystemSettingListPreference
-        android:key="status_bar_clock_date_style"
-        android:title="@string/status_bar_date_style"
-        android:entries="@array/status_bar_date_style_entries"
-        android:entryValues="@array/status_bar_date_style_values"
-        android:defaultValue="0" />
-
-    <ListPreference
-        android:key="status_bar_clock_date_format"
-        android:title="@string/status_bar_date_format_title"
-        android:entries="@array/status_bar_date_format_entries_values"
-        android:entryValues="@array/status_bar_date_format_entries_values" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="qs_clock_style_category"
-        android:icon="@drawable/ic_clock"
-        android:title="@string/qs_clock_style_title">
-
-    <com.bliss.support.preferences.SystemSettingListPreference
-        android:key="qs_clock_style"
-        android:title="@string/qs_clock_style_title"
-        android:entries="@array/qs_clock_style_entries"
-        android:entryValues="@array/qs_clock_style_values"
-        android:defaultValue="1" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="clock_font_and_color_category"
-        android:icon="@drawable/ic_clock"
-        android:title="@string/clock_font_and_color_title">
-
-    <com.bliss.support.preferences.CustomSeekBarPreference
-        android:key="status_bar_clock_size"
-        android:title="@string/status_bar_clock_font_size_title"
-        android:max="23"
-        settings:min="4"
-        android:defaultValue="14"
-        settings:units="dp"/>
-
-    <com.bliss.support.colorpicker.ColorPickerPreference
-        android:key="status_bar_clock_color"
-        android:title="@string/status_bar_clock_color_title"
-        android:defaultValue="0xffffffff" />
-
-    <ListPreference
-        android:key="status_bar_clock_font_style"
-        android:dialogTitle="@string/status_bar_clock_font_style_title"
-        android:title="@string/status_bar_clock_font_style_title"
-        android:entries="@array/font_style_entries"
-        android:entryValues="@array/font_style_values"
-        android:defaultValue="36" />
-
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/res/xml/statusbar_clock.xml b/res/xml/statusbar_clock.xml
new file mode 100644
index 0000000..87109b0
--- /dev/null
+++ b/res/xml/statusbar_clock.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 BlissRoms Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<PreferenceScreen 
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+    xmlns:lineage="http://schemas.android.com/apk/res/lineageos.platform"
+    android:title="@string/status_bar_clock_title" >
+
+    <!-- Bliss Header -->
+    <Preference 
+        android:key="bliss_header"
+        android:layout="@layout/statusbar_header" />
+
+        <com.bliss.support.preferences.SystemSettingSwitchPreference
+            android:key="statusbar_clock"
+            android:title="@string/status_bar_clock_show"
+            android:defaultValue="true" />
+
+        <ListPreference
+            android:key="statusbar_clock_style"
+            android:title="@string/status_bar_clock_style_title"
+            android:dialogTitle="@string/status_bar_clock_style_title"
+            android:entries="@array/status_bar_clock_style_entries"
+            android:entryValues="@array/status_bar_clock_style_values"
+            android:dependency="statusbar_clock" />
+
+        <ListPreference
+            android:key="statusbar_am_pm"
+            android:title="@string/status_bar_am_pm_title"
+            android:dialogTitle="@string/status_bar_am_pm_title"
+            android:entries="@array/status_bar_am_pm_entries"
+            android:entryValues="@array/status_bar_am_pm_values"
+            android:dependency="statusbar_clock" />
+
+        <com.bliss.support.preferences.SystemSettingSwitchPreference
+            android:key="statusbar_clock_seconds"
+            android:title="@string/clock_seconds_display"
+            android:dependency="statusbar_clock"
+            android:defaultValue="false" />
+
+        <ListPreference
+            android:key="clock_date_display"
+            android:title="@string/clock_date_display"
+            android:summary="@string/clock_date_display_summary"
+            android:entries="@array/clock_date_display_entries"
+            android:entryValues="@array/clock_date_display_values"
+            android:dependency="statusbar_clock" />
+
+        <ListPreference
+            android:key="clock_date_style"
+            android:title="@string/clock_date_style"
+            android:entries="@array/clock_date_style_entries"
+            android:entryValues="@array/clock_date_style_values" />
+
+        <ListPreference
+            android:key="clock_date_format"
+            android:title="@string/clock_date_format"
+            android:entries="@array/clock_date_format_entries_values"
+            android:entryValues="@array/clock_date_format_entries_values" />
+
+        <ListPreference
+            android:key="statusbar_clock_date_position"
+            android:title="@string/clock_date_position"
+            android:entries="@array/clock_date_position_entries"
+            android:entryValues="@array/clock_date_position_values" />
+
+</PreferenceScreen>
diff --git a/src/com/blissroms/blissify/fragments/statusbar/Clock.java b/src/com/blissroms/blissify/fragments/statusbar/Clock.java
new file mode 100644
index 0000000..0b19df2
--- /dev/null
+++ b/src/com/blissroms/blissify/fragments/statusbar/Clock.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2019 The BlissRoms Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.blissroms.blissify.fragments.statusbar;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.provider.SearchIndexableResource;
+import android.text.format.DateFormat;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.preference.PreferenceCategory;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.Preference.OnPreferenceChangeListener;
+import androidx.preference.SwitchPreference;
+
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+import com.android.settings.R;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
+public class Clock extends SettingsPreferenceFragment implements
+        OnPreferenceChangeListener {
+
+    private static final String STATUSBAR_CLOCK = "statusbar_clock";
+    private static final String STATUSBAR_CLOCK_SECONDS = "statusbar_clock_seconds";
+    private static final String STATUSBAR_CLOCK_STYLE = "statusbar_clock_style";
+    private static final String STATUSBAR_AM_PM = "statusbar_am_pm";
+    private static final String STATUSBAR_CLOCK_DATE_DISPLAY = "clock_date_display";
+    private static final String STATUSBAR_CLOCK_DATE_STYLE = "clock_date_style";
+    private static final String STATUSBAR_CLOCK_DATE_FORMAT = "clock_date_format";
+    private static final String STATUSBAR_CLOCK_DATE_POSITION = "statusbar_clock_date_position";
+    public static final int CLOCK_DATE_STYLE_LOWERCASE = 1;
+    public static final int CLOCK_DATE_STYLE_UPPERCASE = 2;
+    private static final int CUSTOM_CLOCK_DATE_FORMAT_INDEX = 18;
+
+    private ListPreference mStatusBarClock;
+    private ListPreference mStatusBarAmPm;
+    private ListPreference mClockDateDisplay;
+    private ListPreference mClockDateStyle;
+    private ListPreference mClockDateFormat;
+    private ListPreference mClockDatePosition;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        addPreferencesFromResource(R.xml.statusbar_clock);
+        final ContentResolver resolver = getActivity().getContentResolver();
+
+        // clock settings
+        mStatusBarClock = (ListPreference) findPreference(STATUSBAR_CLOCK_STYLE);
+        mStatusBarAmPm = (ListPreference) findPreference(STATUSBAR_AM_PM);
+        mClockDateDisplay = (ListPreference) findPreference(STATUSBAR_CLOCK_DATE_DISPLAY);
+        mClockDateStyle = (ListPreference) findPreference(STATUSBAR_CLOCK_DATE_STYLE);
+
+        int clockStyle = Settings.System.getInt(resolver,
+                Settings.System.STATUSBAR_CLOCK_STYLE, 0);
+        mStatusBarClock.setValue(String.valueOf(clockStyle));
+        mStatusBarClock.setSummary(mStatusBarClock.getEntry());
+        mStatusBarClock.setOnPreferenceChangeListener(this);
+
+        if (DateFormat.is24HourFormat(getActivity())) {
+            mStatusBarAmPm.setEnabled(false);
+            mStatusBarAmPm.setSummary(R.string.status_bar_am_pm_info);
+        } else {
+            int statusBarAmPm = Settings.System.getInt(resolver,
+                    Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, 2);
+            mStatusBarAmPm.setValue(String.valueOf(statusBarAmPm));
+            mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntry());
+            mStatusBarAmPm.setOnPreferenceChangeListener(this);
+        }
+
+        int clockDateDisplay = Settings.System.getInt(resolver,
+                Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, 0);
+        mClockDateDisplay.setValue(String.valueOf(clockDateDisplay));
+        mClockDateDisplay.setSummary(mClockDateDisplay.getEntry());
+        mClockDateDisplay.setOnPreferenceChangeListener(this);
+
+        int clockDateStyle = Settings.System.getInt(resolver,
+                Settings.System.STATUSBAR_CLOCK_DATE_STYLE, 0);
+        mClockDateStyle.setValue(String.valueOf(clockDateStyle));
+        mClockDateStyle.setSummary(mClockDateStyle.getEntry());
+        mClockDateStyle.setOnPreferenceChangeListener(this);
+
+        mClockDateFormat = (ListPreference) findPreference(STATUSBAR_CLOCK_DATE_FORMAT);
+        mClockDateFormat.setOnPreferenceChangeListener(this);
+        String clkvalue = Settings.System.getString(getActivity().getContentResolver(),
+                Settings.System.STATUSBAR_CLOCK_DATE_FORMAT);
+
+        if (clkvalue == null || clkvalue.isEmpty()) {
+            clkvalue = "EEE";
+        }
+
+        int index = mClockDateFormat.findIndexOfValue((String) clkvalue);
+        if (index == -1) {
+            mClockDateFormat.setValueIndex(CUSTOM_CLOCK_DATE_FORMAT_INDEX);
+        } else {
+            mClockDateFormat.setValue(clkvalue);
+        }
+        parseClockDateFormats();
+
+        mClockDatePosition = (ListPreference) findPreference(STATUSBAR_CLOCK_DATE_POSITION);
+        mClockDatePosition.setValue(Integer.toString(Settings.System.getInt(getActivity()
+                .getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_POSITION, 0)));
+        mClockDatePosition.setSummary(mClockDatePosition.getEntry());
+        mClockDatePosition.setOnPreferenceChangeListener(this);
+
+        int clockDatePosition = Settings.System.getInt(resolver,
+                Settings.System.STATUSBAR_CLOCK_DATE_POSITION, 0);
+        mClockDatePosition.setValue(String.valueOf(clockDatePosition));
+        mClockDatePosition.setSummary(mClockDatePosition.getEntry());
+        mClockDatePosition.setOnPreferenceChangeListener(this);
+
+        setDateOptions();
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object objValue) {
+        AlertDialog dialog;
+        if (preference == mStatusBarClock) {
+            int clockStyle = Integer.parseInt((String) objValue);
+            int index = mStatusBarClock.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_STYLE, clockStyle);
+            mStatusBarClock.setSummary(mStatusBarClock.getEntries()[index]);
+            return true;
+        } else if (preference == mStatusBarAmPm) {
+            int statusBarAmPm = Integer.valueOf((String) objValue);
+            int index = mStatusBarAmPm.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, statusBarAmPm);
+            mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntries()[index]);
+            return true;
+        } else if (preference == mClockDateDisplay) {
+            int clockDateDisplay = Integer.valueOf((String) objValue);
+            int index = mClockDateDisplay.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, clockDateDisplay);
+            mClockDateDisplay.setSummary(mClockDateDisplay.getEntries()[index]);
+            setDateOptions();
+            return true;
+        } else if (preference == mClockDateStyle) {
+            int clockDateStyle = Integer.valueOf((String) objValue);
+            int index = mClockDateStyle.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_DATE_STYLE, clockDateStyle);
+            mClockDateStyle.setSummary(mClockDateStyle.getEntries()[index]);
+            parseClockDateFormats();
+            return true;
+        } else if (preference == mClockDateFormat) {
+            int index = mClockDateFormat.findIndexOfValue((String) objValue);
+
+            if (index == CUSTOM_CLOCK_DATE_FORMAT_INDEX) {
+                AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
+                alert.setTitle(R.string.clock_date_string_edittext_title);
+                alert.setMessage(R.string.clock_date_string_edittext_summary);
+                 final EditText input = new EditText(getActivity());
+                String oldText = Settings.System.getString(
+                    getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_DATE_FORMAT);
+                if (oldText != null) {
+                    input.setText(oldText);
+                }
+                alert.setView(input);
+                 alert.setPositiveButton(R.string.menu_save, new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialogInterface, int whichButton) {
+                        String value = input.getText().toString();
+                        if (value.equals("")) {
+                            return;
+                        }
+                        Settings.System.putString(getActivity().getContentResolver(),
+                            Settings.System.STATUSBAR_CLOCK_DATE_FORMAT, value);
+                         return;
+                    }
+                });
+
+                alert.setNegativeButton(R.string.menu_cancel,
+                    new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialogInterface, int which) {
+                        return;
+                    }
+                });
+                dialog = alert.create();
+                dialog.show();
+            } else {
+                if ((String) objValue != null) {
+                    Settings.System.putString(getActivity().getContentResolver(),
+                        Settings.System.STATUSBAR_CLOCK_DATE_FORMAT, (String) objValue);
+                }
+            }
+            return true;
+        } else if (preference == mClockDatePosition) {
+            int val = Integer.parseInt((String) objValue);
+            int index = mClockDatePosition.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STATUSBAR_CLOCK_DATE_POSITION, val);
+            mClockDatePosition.setSummary(mClockDatePosition.getEntries()[index]);
+            parseClockDateFormats();
+            return true;
+        }
+        return false;
+    }
+
+    private void parseClockDateFormats() {
+        String[] dateEntries = getResources().getStringArray(R.array.clock_date_format_entries_values);
+        CharSequence parsedDateEntries[];
+        parsedDateEntries = new String[dateEntries.length];
+        Date now = new Date();
+
+        int lastEntry = dateEntries.length - 1;
+        int dateFormat = Settings.System.getInt(getActivity()
+                .getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_STYLE, 0);
+        for (int i = 0; i < dateEntries.length; i++) {
+            if (i == lastEntry) {
+                parsedDateEntries[i] = dateEntries[i];
+            } else {
+                String newDate;
+                CharSequence dateString = DateFormat.format(dateEntries[i], now);
+                if (dateFormat == CLOCK_DATE_STYLE_LOWERCASE) {
+                    newDate = dateString.toString().toLowerCase();
+                } else if (dateFormat == CLOCK_DATE_STYLE_UPPERCASE) {
+                    newDate = dateString.toString().toUpperCase();
+                } else {
+                    newDate = dateString.toString();
+                }
+                parsedDateEntries[i] = newDate;
+            }
+        }
+        mClockDateFormat.setEntries(parsedDateEntries);
+    }
+
+    private void setDateOptions() {
+        int enableDateOptions = Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, 0);
+        if (enableDateOptions == 0) {
+            mClockDateStyle.setEnabled(false);
+            mClockDateFormat.setEnabled(false);
+            mClockDatePosition.setEnabled(false);
+        } else {
+            mClockDateStyle.setEnabled(true);
+            mClockDateFormat.setEnabled(true);
+            mClockDatePosition.setEnabled(true);
+        }
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.BLISSIFY;
+    }
+
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    ArrayList<SearchIndexableResource> result =
+                            new ArrayList<SearchIndexableResource>();
+
+                    SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.statusbar_clock;
+                    result.add(sir);
+                    return result;
+                }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    List<String> keys = super.getNonIndexableKeys(context);
+                    return keys;
+                }
+    };
+}
+
diff --git a/src/com/blissroms/blissify/fragments/statusbar/StatusBar.java b/src/com/blissroms/blissify/fragments/statusbar/StatusBar.java
index 181bd83..fb53894 100644
--- a/src/com/blissroms/blissify/fragments/statusbar/StatusBar.java
+++ b/src/com/blissroms/blissify/fragments/statusbar/StatusBar.java
@@ -83,8 +83,6 @@
 
     private static final int STATUS_BAR_BATTERY_STYLE_TEXT = 2;
 
-    private static final String CATEGORY_CLOCK = "status_bar_clock_key";
-
     private static final String ICON_BLACKLIST = "icon_blacklist";
 /*
     private static final String STATUS_BAR_CLOCK_STYLE = "status_bar_clock";
@@ -181,7 +179,7 @@
             mBlissLogoColor.setSummary(R.string.default_string);
         }
         mBlissLogoColor.setOnPreferenceChangeListener(this);
-
+/*
         mOldMobileType = (SwitchPreference) findPreference(KEY_OLD_MOBILETYPE);
         boolean mConfigUseOldMobileType = mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_useOldMobileIcons);