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