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/com/android/browser/preferences/GeneralPreferencesFragment.java | |
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/com/android/browser/preferences/GeneralPreferencesFragment.java')
-rw-r--r-- | src/com/android/browser/preferences/GeneralPreferencesFragment.java | 155 |
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 |