diff options
author | John Reck <jreck@google.com> | 2011-06-23 09:45:54 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-06-27 15:15:43 -0700 |
commit | 961d35d6e9cd58d930d8572b91d7e0c9f928f1e8 (patch) | |
tree | cba9c51fe52a7ce4457545f9503c897a2a7e4b53 /src | |
parent | 32feebd05dc90785194df32b7a14c2e0ceba2b1e (diff) | |
download | packages_apps_Browser-961d35d6e9cd58d930d8572b91d7e0c9f928f1e8.zip packages_apps_Browser-961d35d6e9cd58d930d8572b91d7e0c9f928f1e8.tar.gz packages_apps_Browser-961d35d6e9cd58d930d8572b91d7e0c9f928f1e8.tar.bz2 |
Move most visited to set homepage
Bug: 4770245
Change-Id: If47b2f308ab3cd4b58dbcbf3a28cdb341481a885
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/BrowserHomepagePreference.java | 132 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 7 | ||||
-rw-r--r-- | src/com/android/browser/PreferenceKeys.java | 1 | ||||
-rw-r--r-- | src/com/android/browser/UrlUtils.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/preferences/GeneralPreferencesFragment.java | 155 |
5 files changed, 147 insertions, 150 deletions
diff --git a/src/com/android/browser/BrowserHomepagePreference.java b/src/com/android/browser/BrowserHomepagePreference.java deleted file mode 100644 index cbe5b0d..0000000 --- a/src/com/android/browser/BrowserHomepagePreference.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2008 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. - */ - -package com.android.browser; - -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.preference.EditTextPreference; -import android.util.AttributeSet; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.view.inputmethod.EditorInfo; -import android.widget.EditText; -import android.widget.TextView; -import android.widget.TextView.OnEditorActionListener; - -public class BrowserHomepagePreference extends EditTextPreference - implements OnEditorActionListener { - private String mCurrentPage; - - public BrowserHomepagePreference(Context context, AttributeSet attrs, - int defStyle) { - super(context, attrs, defStyle); - } - - public BrowserHomepagePreference(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public BrowserHomepagePreference(Context context) { - super(context); - } - - @Override - protected void onAddEditTextToDialogView(View dialogView, - EditText editText) { - super.onAddEditTextToDialogView(dialogView, editText); - editText.setSelectAllOnFocus(true); - editText.setSingleLine(true); - editText.setImeActionLabel(null, EditorInfo.IME_ACTION_DONE); - editText.setOnEditorActionListener(this); - // Now the EditText has a parent. Add a button to set to the current - // page. - createButtons((ViewGroup) editText.getParent()); - } - - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - onClick(getDialog(), DialogInterface.BUTTON_POSITIVE); - getDialog().dismiss(); - return true; - } - return false; - } - - void createButtons(ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View v = inflater.inflate(R.layout.pref_homepage_buttons, parent); - v.findViewById(R.id.use_current).setOnClickListener(mOnClick); - v.findViewById(R.id.use_default).setOnClickListener(mOnClick); - } - - OnClickListener mOnClick = new OnClickListener() { - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.use_current: - getEditText().setText(mCurrentPage); - break; - case R.id.use_default: - getEditText().setText( - BrowserSettings.getFactoryResetHomeUrl(getContext())); - break; - } - } - }; - - @Override - protected void onDialogClosed(boolean positiveResult) { - if (positiveResult) { - String url = getEditText().getText().toString().trim(); - if (url.length() > 0) { - url = UrlUtils.smartUrlFilter(url); - } - getEditText().setText(url); - } - super.onDialogClosed(positiveResult); - } - - /** - * Set the current page of the browser. - * @param currentPage This String will replace the text in the EditText - * when the user clicks the "Use current page" button. - */ - public void setCurrentPage(String currentPage) { - mCurrentPage = currentPage; - } - - @Override - protected void showDialog(Bundle state) { - super.showDialog(state); - // The dialog has its width set to wrap_content. Change it to - // match_parent so there is more room to type in a url. - Window window = getDialog().getWindow(); - View decorView = window.getDecorView(); - WindowManager.LayoutParams params - = (WindowManager.LayoutParams) decorView.getLayoutParams(); - params.width = ViewGroup.LayoutParams.MATCH_PARENT; - window.getWindowManager().updateViewLayout(decorView, params); - } -} diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index fae59e2..4928e61 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -279,7 +279,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } } - static String getFactoryResetHomeUrl(Context context) { + public static String getFactoryResetHomeUrl(Context context) { String url = context.getResources().getString(R.string.homepage_base); if (url.indexOf("{CID}") != -1) { url = url.replace("{CID}", @@ -545,9 +545,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, // ----------------------------- public String getHomePage() { - if (useMostVisitedHomepage()) { - return HomeProvider.MOST_VISITED; - } return mPrefs.getString(PREF_HOMEPAGE, getFactoryResetHomeUrl(mContext)); } @@ -657,7 +654,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } public boolean useMostVisitedHomepage() { - return mPrefs.getBoolean(PREF_USE_MOST_VISITED_HOMEPAGE, false); + return HomeProvider.MOST_VISITED.equals(getHomePage()); } public boolean useInstantSearch() { diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java index c90213f..bc8d38f 100644 --- a/src/com/android/browser/PreferenceKeys.java +++ b/src/com/android/browser/PreferenceKeys.java @@ -76,7 +76,6 @@ public interface PreferenceKeys { // Keys for lab_preferences.xml // ---------------------- static final String PREF_ENABLE_QUICK_CONTROLS = "enable_quick_controls"; - static final String PREF_USE_MOST_VISITED_HOMEPAGE = "use_most_visited_homepage"; static final String PREF_USE_INSTANT_SEARCH = "use_instant_search"; static final String PREF_FULLSCREEN = "fullscreen"; diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java index ccf9710..26f8e0e 100644 --- a/src/com/android/browser/UrlUtils.java +++ b/src/com/android/browser/UrlUtils.java @@ -84,7 +84,7 @@ public class UrlUtils { * @return Original or modified URL * */ - protected static String smartUrlFilter(String url) { + public static String smartUrlFilter(String url) { String inUrl = url.trim(); boolean hasSpace = inUrl.indexOf(' ') != -1; diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java index af0fc50..05aa1a7 100644 --- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java +++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java @@ -16,34 +16,65 @@ package com.android.browser.preferences; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.res.Resources; import android.os.Bundle; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; +import android.text.InputType; +import android.text.TextUtils; import android.util.Log; +import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; -import com.android.browser.BrowserHomepagePreference; import com.android.browser.BrowserPreferencesPage; +import com.android.browser.BrowserSettings; import com.android.browser.PreferenceKeys; import com.android.browser.R; +import com.android.browser.UrlUtils; +import com.android.browser.homepages.HomeProvider; public class GeneralPreferencesFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { + static final String TAG = "PersonalPreferencesFragment"; + static final String BLANK_URL = "about:blank"; + static final String CURRENT = "current"; + static final String BLANK = "blank"; + static final String DEFAULT = "default"; + static final String MOST_VISITED = "most_visited"; + static final String OTHER = "other"; + + static final String PREF_HOMEPAGE_PICKER = "homepage_picker"; + + String[] mChoices, mValues; + String mCurrentPage; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Resources res = getActivity().getResources(); + mChoices = res.getStringArray(R.array.pref_homepage_choices); + mValues = res.getStringArray(R.array.pref_homepage_values); + mCurrentPage = getActivity().getIntent() + .getStringExtra(BrowserPreferencesPage.CURRENT_PAGE); // Load the XML preferences file addPreferencesFromResource(R.xml.general_preferences); - Preference e = findPreference(PreferenceKeys.PREF_HOMEPAGE); - e.setOnPreferenceChangeListener(this); - e.setSummary(getPreferenceScreen().getSharedPreferences() - .getString(PreferenceKeys.PREF_HOMEPAGE, null)); - ((BrowserHomepagePreference) e).setCurrentPage( - getActivity().getIntent().getStringExtra(BrowserPreferencesPage.CURRENT_PAGE)); + ListPreference pref = (ListPreference) findPreference(PREF_HOMEPAGE_PICKER); + pref.setSummary(getHomepageSummary()); + pref.setPersistent(false); + pref.setValue(getHomepageValue()); + pref.setOnPreferenceChangeListener(this); } @Override @@ -55,12 +86,114 @@ public class GeneralPreferencesFragment extends PreferenceFragment return false; } - if (pref.getKey().equals(PreferenceKeys.PREF_HOMEPAGE)) { - pref.setSummary((String) objValue); - return true; + if (pref.getKey().equals(PREF_HOMEPAGE_PICKER)) { + BrowserSettings settings = BrowserSettings.getInstance(); + if (CURRENT.equals(objValue)) { + settings.setHomePage(mCurrentPage); + } + if (BLANK.equals(objValue)) { + settings.setHomePage(BLANK_URL); + } + if (DEFAULT.equals(objValue)) { + settings.setHomePage(BrowserSettings.getFactoryResetHomeUrl( + getActivity())); + } + if (MOST_VISITED.equals(objValue)) { + settings.setHomePage(HomeProvider.MOST_VISITED); + } + if (OTHER.equals(objValue)) { + promptForHomepage((ListPreference) pref); + return false; + } + pref.setSummary(getHomepageSummary()); + ((ListPreference)pref).setValue(getHomepageValue()); + return false; + } + + return true; + } + + void promptForHomepage(final ListPreference pref) { + final BrowserSettings settings = BrowserSettings.getInstance(); + final EditText editText = new EditText(getActivity()); + editText.setInputType(InputType.TYPE_CLASS_TEXT + | InputType.TYPE_TEXT_VARIATION_URI); + editText.setText(settings.getHomePage()); + editText.setSelectAllOnFocus(true); + editText.setSingleLine(true); + editText.setImeActionLabel(null, EditorInfo.IME_ACTION_DONE); + final AlertDialog dialog = new AlertDialog.Builder(getActivity()) + .setView(editText) + .setPositiveButton(android.R.string.ok, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String homepage = editText.getText().toString().trim(); + homepage = UrlUtils.smartUrlFilter(homepage); + settings.setHomePage(homepage); + pref.setValue(getHomepageValue()); + pref.setSummary(getHomepageSummary()); + } + }) + .setNegativeButton(android.R.string.cancel, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }) + .setTitle(R.string.pref_set_homepage_to) + .create(); + editText.setOnEditorActionListener(new OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_DONE) { + dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); + return true; + } + return false; + } + }); + dialog.show(); + } + + String getHomepageValue() { + BrowserSettings settings = BrowserSettings.getInstance(); + String homepage = settings.getHomePage(); + if (TextUtils.isEmpty(homepage) || BLANK_URL.endsWith(homepage)) { + return BLANK; + } + if (HomeProvider.MOST_VISITED.equals(homepage)) { + return MOST_VISITED; + } + String defaultHomepage = BrowserSettings.getFactoryResetHomeUrl( + getActivity()); + if (TextUtils.equals(defaultHomepage, homepage)) { + return DEFAULT; + } + if (TextUtils.equals(mCurrentPage, homepage)) { + return CURRENT; + } + return OTHER; + } + + String getHomepageSummary() { + BrowserSettings settings = BrowserSettings.getInstance(); + if (settings.useMostVisitedHomepage()) { + return getHomepageLabel(MOST_VISITED); + } + String homepage = settings.getHomePage(); + if (TextUtils.isEmpty(homepage) || BLANK_URL.equals(homepage)) { + return getHomepageLabel(BLANK); } + return homepage; + } - return false; + String getHomepageLabel(String value) { + for (int i = 0; i < mValues.length; i++) { + if (value.equals(mValues[i])) { + return mChoices[i]; + } + } + return null; } @Override |