10c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project/*
20c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
30c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
40c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
50c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * you may not use this file except in compliance with the License.
60c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * You may obtain a copy of the License at
70c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
80c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
90c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
100c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
120c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * See the License for the specific language governing permissions and
140c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * limitations under the License.
150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */
160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
170c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectpackage com.android.browser;
180c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
197ed9bd7323a2ac950a30af1139519f4900697813Ben Murdochimport android.app.ActionBar;
207b182d706649466a3a803afdc0c0291369f001ffJohn Reckimport android.content.Intent;
217ed9bd7323a2ac950a30af1139519f4900697813Ben Murdochimport android.os.Bundle;
220c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.preference.PreferenceActivity;
237ed9bd7323a2ac950a30af1139519f4900697813Ben Murdochimport android.view.MenuItem;
24d69f51ddd5b6c28c9d16725e65facaf830d650e1Bjorn Bringert
250184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.AccessibilityPreferencesFragment;
260184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.AdvancedPreferencesFragment;
277b182d706649466a3a803afdc0c0291369f001ffJohn Reckimport com.android.browser.preferences.BandwidthPreferencesFragment;
287b182d706649466a3a803afdc0c0291369f001ffJohn Reckimport com.android.browser.preferences.DebugPreferencesFragment;
290184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.GeneralPreferencesFragment;
300184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.LabPreferencesFragment;
310184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.PrivacySecurityPreferencesFragment;
320184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdochimport com.android.browser.preferences.WebsiteSettingsFragment;
337b182d706649466a3a803afdc0c0291369f001ffJohn Reck
34462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamiltonimport java.util.List;
350c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
36462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamiltonpublic class BrowserPreferencesPage extends PreferenceActivity {
370c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
38462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton    public static final String CURRENT_PAGE = "currentPage";
397b182d706649466a3a803afdc0c0291369f001ffJohn Reck    private List<Header> mHeaders;
4078a98e459323f938e97789a6131beddbebb459ceNicolas Roard
417ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch    @Override
427ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch    public void onCreate(Bundle icicle) {
437ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        super.onCreate(icicle);
447ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch
457ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        ActionBar actionBar = getActionBar();
467ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        if (actionBar != null) {
477ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch            actionBar.setDisplayOptions(
487ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                    ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
497ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        }
507ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch    }
517ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch
52462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton    /**
53462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton     * Populate the activity with the top-level headers.
54462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton     */
550c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
56462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton    public void onBuildHeaders(List<Header> target) {
57462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton        loadHeadersFromResource(R.xml.preference_headers, target);
58fde9746ac3055848e110c35f19ec5893c621f766Leon Scroggins
59f48314fcba4d6ddda8abf2e30f94112542363ca5John Reck        if (BrowserSettings.getInstance().isDebugEnabled()) {
60462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton            Header debug = new Header();
61462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton            debug.title = getText(R.string.pref_development_title);
62462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton            debug.fragment = DebugPreferencesFragment.class.getName();
63462b8e8442d0fb734b4fe4bd13c21303f2b154fcJeff Hamilton            target.add(debug);
640c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        }
657b182d706649466a3a803afdc0c0291369f001ffJohn Reck        mHeaders = target;
667b182d706649466a3a803afdc0c0291369f001ffJohn Reck    }
677b182d706649466a3a803afdc0c0291369f001ffJohn Reck
687b182d706649466a3a803afdc0c0291369f001ffJohn Reck    @Override
697b182d706649466a3a803afdc0c0291369f001ffJohn Reck    public Header onGetInitialHeader() {
707b182d706649466a3a803afdc0c0291369f001ffJohn Reck        String action = getIntent().getAction();
717b182d706649466a3a803afdc0c0291369f001ffJohn Reck        if (Intent.ACTION_MANAGE_NETWORK_USAGE.equals(action)) {
727b182d706649466a3a803afdc0c0291369f001ffJohn Reck            String fragName = BandwidthPreferencesFragment.class.getName();
737b182d706649466a3a803afdc0c0291369f001ffJohn Reck            for (Header h : mHeaders) {
747b182d706649466a3a803afdc0c0291369f001ffJohn Reck                if (fragName.equals(h.fragment)) {
757b182d706649466a3a803afdc0c0291369f001ffJohn Reck                    return h;
767b182d706649466a3a803afdc0c0291369f001ffJohn Reck                }
777b182d706649466a3a803afdc0c0291369f001ffJohn Reck            }
787b182d706649466a3a803afdc0c0291369f001ffJohn Reck        }
797b182d706649466a3a803afdc0c0291369f001ffJohn Reck        return super.onGetInitialHeader();
800c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
810c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
820c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
837ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch    public boolean onOptionsItemSelected(MenuItem item) {
847ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        switch (item.getItemId()) {
857ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch            case android.R.id.home:
86bf1d10af39eb23d68db69a8eda9e12e62f1a9682Dianne Hackborn                if (getFragmentManager().getBackStackEntryCount() > 0) {
877ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                    getFragmentManager().popBackStack();
887ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                } else {
897ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                    finish();
907ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                }
917ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch                return true;
927ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        }
937ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch
947ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch        return false;
957ed9bd7323a2ac950a30af1139519f4900697813Ben Murdoch    }
9642dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck
9742dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck    @Override
9842dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck    public Intent onBuildStartFragmentIntent(String fragmentName, Bundle args,
9942dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck            int titleRes, int shortTitleRes) {
10042dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck        Intent intent = super.onBuildStartFragmentIntent(fragmentName, args,
10142dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck                titleRes, shortTitleRes);
10242dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck        String url = getIntent().getStringExtra(CURRENT_PAGE);
10342dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck        intent.putExtra(CURRENT_PAGE, url);
10442dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck        return intent;
10542dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck    }
10642dfb9f816bfcd8f4fd9fa47ac44e48681ae2f1fJohn Reck
1070184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch    @Override
1080184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch    protected boolean isValidFragment(String fragmentName) {
1090184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch        return AccessibilityPreferencesFragment.class.getName().equals(fragmentName) ||
1100184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                AdvancedPreferencesFragment.class.getName().equals(fragmentName) ||
1110184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                BandwidthPreferencesFragment.class.getName().equals(fragmentName) ||
1120184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                DebugPreferencesFragment.class.getName().equals(fragmentName) ||
1130184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                GeneralPreferencesFragment.class.getName().equals(fragmentName) ||
1140184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                LabPreferencesFragment.class.getName().equals(fragmentName) ||
1150184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                PrivacySecurityPreferencesFragment.class.getName().equals(fragmentName) ||
1160184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch                WebsiteSettingsFragment.class.getName().equals(fragmentName);
1170184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch
1180184f3391b86ce36d74455e3c87d77d32b3c1fc8Ben Murdoch    }
1190c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project}
120