Make ContactPreferences use SharedPreferences instead of System settings (3/5)

* Move constants that originally lived in the framework into ContactsCommon
* Use SharedPreferences instead of System settings to persist preferences
* Use a SharedPreferenceListener to monitor changes instead of a content observer
on system settings
* Move DisplayOrderPreference and SortOrderPreference into ContactsCommon so that
it can be used by Dialer
* Create base DialerSettingsActivity in Dialer, and make GoogleDialerSettingsActivity
extend it
Bug: 16153186

Change-Id: Ib3500b82b03960a30b565f1024f20f78879d3ce3
diff --git a/res-common/values/strings.xml b/res-common/values/strings.xml
index ca54b30..83d9db3 100644
--- a/res-common/values/strings.xml
+++ b/res-common/values/strings.xml
@@ -652,6 +652,26 @@
     <!-- Action that exports all contacts to (USB) storage [CHAR LIMIT=25] -->
     <string name="export_to_sdcard" product="default">Export to storage</string>
 
+    <!-- Contact preferences related strings -->
+
+    <!-- Label of the "sort list by" display option -->
+    <string name="display_options_sort_list_by">Sort list by</string>
+
+    <!-- An allowable value for the "sort list by" contact display option  -->
+    <string name="display_options_sort_by_given_name">Given name</string>
+
+    <!-- An allowable value for the "sort list by" contact display option  -->
+    <string name="display_options_sort_by_family_name">Family name</string>
+
+    <!-- Label of the "view names as" display option [CHAR LIMIT=64]-->
+    <string name="display_options_view_names_as">View contact names</string>
+
+    <!-- An allowable value for the "view names as" contact display option  -->
+    <string name="display_options_view_given_name_first">Given name first</string>
+
+    <!-- An allowable value for the "view names as" contact display option  -->
+    <string name="display_options_view_family_name_first">Family name first</string>
+
     <!-- Action that shares visible contacts -->
     <string name="share_visible_contacts">Share visible contacts</string>
 
@@ -738,10 +758,10 @@
 
     <!-- The title of the preference section that allows users to configure how they want their
          contacts to be displayed. [CHAR LIMIT=128] -->
-    <string name="preference_display_options">Contact display options</string>
+    <string name="settings_contact_display_options_title">Contact display options</string>
 
     <!-- Detailed description of the preference section that allows users to configure how they
          want their contacts to be displayed. [CHAR LIMIT=128] -->
-    <string name="preference_display_options_description">Configure how your contacts are displayed and sorted.</string>
+    <string name="settings_contact_display_options_description">Configure how your contacts are displayed and sorted.</string>
 
 </resources>
diff --git a/res-common/xml/preference_display_options.xml b/res-common/xml/preference_display_options.xml
new file mode 100644
index 0000000..f327fac
--- /dev/null
+++ b/res-common/xml/preference_display_options.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source 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">
+    <com.android.contacts.common.preference.SortOrderPreference
+        android:key="sortOrder"
+        android:title="@string/display_options_sort_list_by"
+        android:dialogTitle="@string/display_options_sort_list_by" />
+
+    <com.android.contacts.common.preference.DisplayOrderPreference
+        android:key="displayOrder"
+        android:title="@string/display_options_view_names_as"
+        android:dialogTitle="@string/display_options_view_names_as" />
+</PreferenceScreen>