152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/*
252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License.
652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at
752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and
1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License.
1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */
1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
17721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackbornpackage com.example.android.apis.preference;
1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
19c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powellimport com.example.android.apis.R;
20c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell
2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent;
2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.res.TypedArray;
2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.net.Uri;
2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle;
2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.CheckBoxPreference;
2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.EditTextPreference;
2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.ListPreference;
2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceActivity;
2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceCategory;
3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceScreen;
31c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powellimport android.preference.SwitchPreference;
3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class PreferencesFromCode extends PreferenceActivity {
3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    @Override
3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    protected void onCreate(Bundle savedInstanceState) {
3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        super.onCreate(savedInstanceState);
38721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        setPreferenceScreen(createPreferenceHierarchy());
4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    private PreferenceScreen createPreferenceHierarchy() {
4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Root
4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
45721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
46721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn        // Inline preferences
4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceCategory inlinePrefCat = new PreferenceCategory(this);
4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        inlinePrefCat.setTitle(R.string.inline_preferences);
4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        root.addPreference(inlinePrefCat);
50721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
51c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        // Checkbox preference
52c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        CheckBoxPreference checkboxPref = new CheckBoxPreference(this);
53c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        checkboxPref.setKey("checkbox_preference");
54c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        checkboxPref.setTitle(R.string.title_checkbox_preference);
55c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        checkboxPref.setSummary(R.string.summary_checkbox_preference);
56c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        inlinePrefCat.addPreference(checkboxPref);
57c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell
58c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        // Switch preference
59c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        SwitchPreference switchPref = new SwitchPreference(this);
60c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        switchPref.setKey("switch_preference");
61c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        switchPref.setTitle(R.string.title_switch_preference);
62c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        switchPref.setSummary(R.string.summary_switch_preference);
63c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell        inlinePrefCat.addPreference(switchPref);
64721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Dialog based preferences
6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);
6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences);
6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        root.addPreference(dialogBasedPrefCat);
6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Edit text preference
7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        EditTextPreference editTextPref = new EditTextPreference(this);
7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference);
7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        editTextPref.setKey("edittext_preference");
7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        editTextPref.setTitle(R.string.title_edittext_preference);
7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        editTextPref.setSummary(R.string.summary_edittext_preference);
7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        dialogBasedPrefCat.addPreference(editTextPref);
77721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // List preference
7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        ListPreference listPref = new ListPreference(this);
8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setEntries(R.array.entries_list_preference);
8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setEntryValues(R.array.entryvalues_list_preference);
8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setDialogTitle(R.string.dialog_title_list_preference);
8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setKey("list_preference");
8452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setTitle(R.string.title_list_preference);
8552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        listPref.setSummary(R.string.summary_list_preference);
8652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        dialogBasedPrefCat.addPreference(listPref);
87721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
8852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Launch preferences
8952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceCategory launchPrefCat = new PreferenceCategory(this);
9052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        launchPrefCat.setTitle(R.string.launch_preferences);
9152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        root.addPreference(launchPrefCat);
9252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
9352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        /*
9452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         * The Preferences screenPref serves as a screen break (similar to page
9552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         * break in word processing). Like for other preference types, we assign
9652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         * a key here so that it is able to save and restore its instance state.
9752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         */
9852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Screen preference
9952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceScreen screenPref = getPreferenceManager().createPreferenceScreen(this);
10052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        screenPref.setKey("screen_preference");
10152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        screenPref.setTitle(R.string.title_screen_preference);
10252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        screenPref.setSummary(R.string.summary_screen_preference);
10352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        launchPrefCat.addPreference(screenPref);
104721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
10552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        /*
10652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         * You can add more preferences to screenPref that will be shown on the
10752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         * next screen.
10852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project         */
109721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
11052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Example of next screen toggle preference
11152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        CheckBoxPreference nextScreenCheckBoxPref = new CheckBoxPreference(this);
11252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        nextScreenCheckBoxPref.setKey("next_screen_toggle_preference");
11352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        nextScreenCheckBoxPref.setTitle(R.string.title_next_screen_toggle_preference);
11452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        nextScreenCheckBoxPref.setSummary(R.string.summary_next_screen_toggle_preference);
11552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        screenPref.addPreference(nextScreenCheckBoxPref);
116721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
11752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Intent preference
11852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceScreen intentPref = getPreferenceManager().createPreferenceScreen(this);
11952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        intentPref.setIntent(new Intent().setAction(Intent.ACTION_VIEW)
12052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                .setData(Uri.parse("http://www.android.com")));
12152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        intentPref.setTitle(R.string.title_intent_preference);
12252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        intentPref.setSummary(R.string.summary_intent_preference);
12352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        launchPrefCat.addPreference(intentPref);
124721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
12552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Preference attributes
12652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        PreferenceCategory prefAttrsCat = new PreferenceCategory(this);
12752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        prefAttrsCat.setTitle(R.string.preference_attributes);
12852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        root.addPreference(prefAttrsCat);
129721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
13052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Visual parent toggle preference
13152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        CheckBoxPreference parentCheckBoxPref = new CheckBoxPreference(this);
13252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        parentCheckBoxPref.setTitle(R.string.title_parent_preference);
13352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        parentCheckBoxPref.setSummary(R.string.summary_parent_preference);
13452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        prefAttrsCat.addPreference(parentCheckBoxPref);
135721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
13652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Visual child toggle preference
13752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // See res/values/attrs.xml for the <declare-styleable> that defines
13852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // TogglePrefAttrs.
13952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        TypedArray a = obtainStyledAttributes(R.styleable.TogglePrefAttrs);
14052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        CheckBoxPreference childCheckBoxPref = new CheckBoxPreference(this);
14152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        childCheckBoxPref.setTitle(R.string.title_child_preference);
14252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        childCheckBoxPref.setSummary(R.string.summary_child_preference);
14352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        childCheckBoxPref.setLayoutResource(
14452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                a.getResourceId(R.styleable.TogglePrefAttrs_android_preferenceLayoutChild,
14552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                        0));
14652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        prefAttrsCat.addPreference(childCheckBoxPref);
14752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        a.recycle();
148721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn
14952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        return root;
15052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
15152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project}
152