summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/preferences/GeneralPreferencesFragment.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-06-23 09:45:54 -0700
committerJohn Reck <jreck@google.com>2011-06-27 15:15:43 -0700
commit961d35d6e9cd58d930d8572b91d7e0c9f928f1e8 (patch)
treecba9c51fe52a7ce4457545f9503c897a2a7e4b53 /src/com/android/browser/preferences/GeneralPreferencesFragment.java
parent32feebd05dc90785194df32b7a14c2e0ceba2b1e (diff)
downloadpackages_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/com/android/browser/preferences/GeneralPreferencesFragment.java')
-rw-r--r--src/com/android/browser/preferences/GeneralPreferencesFragment.java155
1 files changed, 144 insertions, 11 deletions
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