summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--res/values/strings.xml30
-rw-r--r--res/xml-sw600dp/lab_preferences.xml6
-rw-r--r--res/xml/general_preferences.xml10
-rw-r--r--res/xml/lab_preferences.xml5
-rw-r--r--src/com/android/browser/BrowserHomepagePreference.java132
-rw-r--r--src/com/android/browser/BrowserSettings.java7
-rw-r--r--src/com/android/browser/PreferenceKeys.java1
-rw-r--r--src/com/android/browser/UrlUtils.java2
-rw-r--r--src/com/android/browser/preferences/GeneralPreferencesFragment.java155
9 files changed, 171 insertions, 177 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 34ca824..55ab267 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -342,12 +342,25 @@
<string name="pref_content_search_engine_summary">Select a search engine</string>
<!-- Settings button label that to pick what to set the homepage to [CHAR LIMIT=40] -->
<string name="pref_set_homepage_to">Set to\u2026</string>
- <!-- Settings button label to set the homepage to the current page [CHAR LIMIT=40] -->
- <string name="pref_use_current">Current page</string>
- <!-- Settings button label to set the homepage to a blank page [CHAR LIMIT=40] -->
- <string name="pref_use_blank">Blank page</string>
- <!-- Settings button label to set the homepage to the default page [CHAR LIMIT=40] -->
- <string name="pref_use_default">Default page</string>
+ <string-array name="pref_homepage_choices">
+ <!-- Setting choice to set the homepage to the current page [CHAR LIMIT=40] -->
+ <item>Current page</item>
+ <!-- Setting choice to set the homepage to a blank page [CHAR LIMIT=40] -->
+ <item>Blank page</item>
+ <!-- Setting choice to set the homepage to the default page [CHAR LIMIT=40] -->
+ <item>Default page</item>
+ <!-- Setting choice to set the homepage to the "Most Visited" homepage feature [CHAR LIMIT=40] -->
+ <item>Most-visited homepage</item>
+ <!-- Setting choice to set the homepage to a user entered URL [CHAR LIMIT=40] -->
+ <item>Other\u2026</item>
+ </string-array>
+ <string-array name="pref_homepage_values" translatable="false">
+ <item>current</item>
+ <item>blank</item>
+ <item>default</item>
+ <item>most_visited</item>
+ <item>other</item>
+ </string-array>
<!-- Settings label -->
<string name="pref_content_autofit">Auto-fit pages</string>
<!-- Settings summary -->
@@ -643,11 +656,6 @@
<!-- Summary for lab quick controls feature [CHAR LIMIT=80] -->
<string name="pref_lab_quick_controls_summary">
Swipe thumb from left or right edge to access quick controls and hide Application and URL bars</string>
- <!-- Title for lab "Most Visited" homepage feature [CHAR LIMIT=40] -->
- <string name="pref_lab_most_visited_homepage">Most-visited homepage</string>
- <!-- Summary for lab "Most Visited" homepage feature [CHAR LIMIT=80] -->
- <string name="pref_lab_most_visited_homepage_summary">
- Your homepage displays your most-visited webpages.</string>
<!-- Title for the "Instant search" lab feature [CHAR LIMIT=40] -->
<string name="pref_use_instant_search">Google Instant</string>
<!-- Summary for the "Instant search" lab feature [CHAR LIMIT=120] -->
diff --git a/res/xml-sw600dp/lab_preferences.xml b/res/xml-sw600dp/lab_preferences.xml
index 705f740..1dbec88 100644
--- a/res/xml-sw600dp/lab_preferences.xml
+++ b/res/xml-sw600dp/lab_preferences.xml
@@ -24,12 +24,6 @@
android:summary="@string/pref_lab_quick_controls_summary" />
<CheckBoxPreference
- android:key="use_most_visited_homepage"
- android:defaultValue="false"
- android:title="@string/pref_lab_most_visited_homepage"
- android:summary="@string/pref_lab_most_visited_homepage_summary" />
-
- <CheckBoxPreference
android:key="use_instant_search"
android:defaultValue="false"
android:title="@string/pref_use_instant_search"
diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml
index 7b26307..13f09c1 100644
--- a/res/xml/general_preferences.xml
+++ b/res/xml/general_preferences.xml
@@ -16,11 +16,11 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- <com.android.browser.BrowserHomepagePreference
- android:key="homepage"
- android:title="@string/pref_content_homepage"
- android:hint="@string/http"
- android:inputType="textUri|textMultiLine" />
+ <ListPreference
+ android:key="homepage_picker"
+ android:entries="@array/pref_homepage_choices"
+ android:entryValues="@array/pref_homepage_values"
+ android:title="@string/pref_content_homepage" />
<PreferenceCategory android:title="@string/pref_general_autofill_title">
<CheckBoxPreference android:key="autofill_enabled"
diff --git a/res/xml/lab_preferences.xml b/res/xml/lab_preferences.xml
index ee00463..3320cee 100644
--- a/res/xml/lab_preferences.xml
+++ b/res/xml/lab_preferences.xml
@@ -22,11 +22,6 @@
android:title="@string/pref_lab_quick_controls"
android:summary="@string/pref_lab_quick_controls_summary" />
<CheckBoxPreference
- android:key="use_most_visited_homepage"
- android:defaultValue="false"
- android:title="@string/pref_lab_most_visited_homepage"
- android:summary="@string/pref_lab_most_visited_homepage_summary" />
- <CheckBoxPreference
android:key="fullscreen"
android:defaultValue="false"
android:title="@string/pref_lab_fullscreen"
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