1495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee/* 2495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * Copyright (C) 2010 The Android Open Source Project 3495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * 4495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * Licensed under the Apache License, Version 2.0 (the "License"); 5495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * you may not use this file except in compliance with the License. 6495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * You may obtain a copy of the License at 7495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * 8495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * http://www.apache.org/licenses/LICENSE-2.0 9495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * 10495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * Unless required by applicable law or agreed to in writing, software 11495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * distributed under the License is distributed on an "AS IS" BASIS, 12495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * See the License for the specific language governing permissions and 14495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee * limitations under the License. 15495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee */ 16495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 17495c732e471c1c68db91ca6e824440130fdb7146Yorke Leepackage com.android.contacts.common.preference; 18495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 190a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wangimport android.content.Context; 20e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jangimport android.content.res.Resources; 21495c732e471c1c68db91ca6e824440130fdb7146Yorke Leeimport android.os.Bundle; 225aa756c311cd8486a6d07595d1f6afb4e8367f08Tingting Wangimport android.preference.Preference; 239dff772a039db6bf7c73b3b04aeea2eb2f8c8356Brian Attwellimport android.preference.PreferenceFragment; 24495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 25495c732e471c1c68db91ca6e824440130fdb7146Yorke Leeimport com.android.contacts.common.R; 26ec2f80fae694c0d1604fdcabcdd3cc8345817fbaTingting Wangimport com.android.contacts.common.model.AccountTypeManager; 27ec2f80fae694c0d1604fdcabcdd3cc8345817fbaTingting Wangimport com.android.contacts.common.model.account.AccountWithDataSet; 28d9709d34654106fa27cab5e8946e110459c57dcfTingting Wangimport com.android.contacts.commonbind.ObjectFactory; 29ec2f80fae694c0d1604fdcabcdd3cc8345817fbaTingting Wang 30ec2f80fae694c0d1604fdcabcdd3cc8345817fbaTingting Wangimport java.util.List; 31495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 32495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee/** 33b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang * This fragment shows the preferences for "display options" 34495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee */ 359dff772a039db6bf7c73b3b04aeea2eb2f8c8356Brian Attwellpublic class DisplayOptionsPreferenceFragment extends PreferenceFragment { 36495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 37495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee @Override 38495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee public void onCreate(Bundle savedInstanceState) { 39495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee super.onCreate(savedInstanceState); 40495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee 41495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee // Load the preferences from an XML resource 42495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee addPreferencesFromResource(R.xml.preference_display_options); 43ec2f80fae694c0d1604fdcabcdd3cc8345817fbaTingting Wang 44e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang removeUnsupportedPreferences(); 45d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang addExtraPreferences(); 46e7c69f9b4f06f560b0faa40222533db30413ec97Tingting Wang 47b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang final Preference aboutPreference = findPreference("about"); 48b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang aboutPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 49b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang @Override 50b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang public boolean onPreferenceClick(Preference preference) { 51b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang ((ContactsPreferenceActivity) getActivity()).showAboutFragment(); 52b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang return true; 53b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang } 54b28aaaf25f4cc3b8c9b48fe88f6ec779326551ecWenyi Wang }); 55495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee } 560a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wang 57e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang private void removeUnsupportedPreferences() { 58e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang // Disable sort order for CJK locales where it is not supported 59e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang final Resources resources = getResources(); 60e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang if (!resources.getBoolean(R.bool.config_sort_order_user_changeable)) { 61e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang getPreferenceScreen().removePreference(findPreference("sortOrder")); 62e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang } 63e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang 64e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang // Disable display order for CJK locales as well 65e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang if (!resources.getBoolean(R.bool.config_display_order_user_changeable)) { 66e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang getPreferenceScreen().removePreference(findPreference("displayOrder")); 67e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang } 68e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang 69e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang // Remove the "Default account" setting if there aren't any writable accounts 70e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(getContext()); 71e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang final List<AccountWithDataSet> accounts = accountTypeManager.getAccounts( 72e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang /* contactWritableOnly */ true); 73e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang if (accounts.isEmpty()) { 74e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang getPreferenceScreen().removePreference(findPreference("accounts")); 75e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang } 76d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang } 77e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang 78d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang private void addExtraPreferences() { 79d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang final PreferenceManager preferenceManager = ObjectFactory.getPreferenceManager( 80d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang getContext()); 81d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang if (preferenceManager != null) { 82d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang for (Preference preference : preferenceManager.getPreferences()) { 83d9709d34654106fa27cab5e8946e110459c57dcfTingting Wang getPreferenceScreen().addPreference(preference); 84a31b1906e5b43448a483ab720bc0725a75c31b37Tingting Wang } 85a31b1906e5b43448a483ab720bc0725a75c31b37Tingting Wang } 86e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang } 87e353f41ced2f9bfb1534877cbfb0fdd88173060bWalter Jang 880a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wang @Override 890a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wang public Context getContext() { 900a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wang return getActivity(); 910a614a1c8f7fd866521cfb1d488d9509e6e0e930Wenyi Wang } 92495c732e471c1c68db91ca6e824440130fdb7146Yorke Lee} 93