summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable-mdpi/ic_ua_android.pngbin1431 -> 0 bytes
-rw-r--r--res/drawable-mdpi/ic_ua_desktop.pngbin973 -> 0 bytes
-rw-r--r--res/layout/help_dialog_useragent_switcher.xml37
-rw-r--r--res/menu/ua_switcher.xml27
-rw-r--r--res/values/strings.xml11
-rw-r--r--res/xml-sw600dp/lab_preferences.xml5
-rw-r--r--src/com/android/browser/BrowserSettings.java16
-rw-r--r--src/com/android/browser/PreferenceKeys.java1
-rw-r--r--src/com/android/browser/TitleBarBase.java52
-rw-r--r--src/com/android/browser/TitleBarPhone.java1
-rw-r--r--src/com/android/browser/TitleBarXLarge.java44
-rw-r--r--src/com/android/browser/preferences/LabPreferencesFragment.java12
12 files changed, 92 insertions, 114 deletions
diff --git a/res/drawable-mdpi/ic_ua_android.png b/res/drawable-mdpi/ic_ua_android.png
deleted file mode 100644
index 4f7aa45..0000000
--- a/res/drawable-mdpi/ic_ua_android.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_ua_desktop.png b/res/drawable-mdpi/ic_ua_desktop.png
deleted file mode 100644
index 4e2f5c2..0000000
--- a/res/drawable-mdpi/ic_ua_desktop.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/help_dialog_useragent_switcher.xml b/res/layout/help_dialog_useragent_switcher.xml
deleted file mode 100644
index cc29a2d..0000000
--- a/res/layout/help_dialog_useragent_switcher.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/help_useragent_switcher" />
-
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/help_useragent_tablet" />
-
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/help_useragent_laptop" />
-
-</LinearLayout>
diff --git a/res/menu/ua_switcher.xml b/res/menu/ua_switcher.xml
new file mode 100644
index 0000000..5076fb2
--- /dev/null
+++ b/res/menu/ua_switcher.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/ua_mobile_menu_id"
+ android:checkable="true"
+ android:title="@string/ua_switcher_mobile" />
+ <item
+ android:id="@+id/ua_desktop_menu_id"
+ android:checkable="true"
+ android:title="@string/ua_switcher_desktop" />
+</menu>
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e51538c..b86edb5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -665,13 +665,6 @@
<!-- Summary for the fullscreen lab feature [CHAR LIMIT=120] -->
<string name="pref_lab_fullscreen_summary">
Use fullscreen mode to hide the status bar.</string>
- <!-- Title for the useragent switcher lab feature [CHAR LIMIT=40] -->
- <string name="pref_enable_useragent_switcher">Useragent Switcher</string>
- <!-- Summary for the useragent switcher lab feature [CHAR LIMIT=120] -->
- <string name="pref_enable_useragent_switcher_summary">Toggle between the tablet and desktop versions of a site</string>
- <!-- Text explaining how to use the useragent switcher lab feature [CHAR LIMIT=none] -->
- <string name="help_useragent_switcher">Tap on the Android or laptop icon to toggle between the tablet and desktop versions of a site.</string>
-
<!-- Title for a dialog displayed when the browser has a data connectivity
problem -->
<string name="browserFrameNetworkErrorLabel">Data connectivity problem</string>
@@ -1016,4 +1009,8 @@
<string name="preview">Preview:</string>
<!-- Name for the user's unsynced, local bookmarks [CHAR LIMIT=50] -->
<string name="local_bookmarks">Local</string>
+ <!-- Popup menu option that allows the user to select the mobile version of a webpage [CHAR LIMIT=50] -->
+ <string name="ua_switcher_mobile">Mobile</string>
+ <!-- Popup menu option that allows the user to select the desktop version of a webpage [CHAR LIMIT=50] -->
+ <string name="ua_switcher_desktop">Desktop</string>
</resources>
diff --git a/res/xml-sw600dp/lab_preferences.xml b/res/xml-sw600dp/lab_preferences.xml
index c858c38..705f740 100644
--- a/res/xml-sw600dp/lab_preferences.xml
+++ b/res/xml-sw600dp/lab_preferences.xml
@@ -35,9 +35,4 @@
android:title="@string/pref_use_instant_search"
android:summary="@string/pref_use_instant_search_summary" />
- <CheckBoxPreference
- android:key="enable_useragent_switcher"
- android:defaultValue="false"
- android:title="@string/pref_enable_useragent_switcher"
- android:summary="@string/pref_enable_useragent_switcher_summary" />
</PreferenceScreen>
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 46d47b0..101effa 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -16,11 +16,6 @@
package com.android.browser;
-import com.android.browser.homepages.HomeProvider;
-import com.android.browser.provider.BrowserProvider;
-import com.android.browser.search.SearchEngine;
-import com.android.browser.search.SearchEngines;
-
import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
@@ -43,6 +38,11 @@ import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewDatabase;
+import com.android.browser.homepages.HomeProvider;
+import com.android.browser.provider.BrowserProvider;
+import com.android.browser.search.SearchEngine;
+import com.android.browser.search.SearchEngines;
+
import java.lang.ref.WeakReference;
import java.util.Iterator;
import java.util.LinkedList;
@@ -165,7 +165,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
settings.setAutoFillProfile(getAutoFillProfile());
String ua = mCustomUserAgents.get(settings);
- if (enableUseragentSwitcher() && ua != null) {
+ if (ua != null) {
settings.setUserAgentString(ua);
} else {
settings.setUserAgentString(USER_AGENTS[getUserAgent()]);
@@ -606,10 +606,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
return mPrefs.getBoolean(PREF_FULLSCREEN, false);
}
- public boolean enableUseragentSwitcher() {
- return mPrefs.getBoolean(PREF_ENABLE_USERAGENT_SWITCHER, false);
- }
-
// -----------------------------
// getter/setters for privacy_security_preferences.xml
// -----------------------------
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index cff9f70..f7230df 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -78,7 +78,6 @@ public interface PreferenceKeys {
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";
- static final String PREF_ENABLE_USERAGENT_SWITCHER = "enable_useragent_switcher";
// ----------------------
// Keys for privacy_security_preferences.xml
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java
index 4dc960c..b95711e 100644
--- a/src/com/android/browser/TitleBarBase.java
+++ b/src/com/android/browser/TitleBarBase.java
@@ -35,6 +35,8 @@ import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
@@ -48,6 +50,8 @@ import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Spinner;
@@ -60,7 +64,8 @@ import java.util.List;
*/
public class TitleBarBase extends RelativeLayout
implements OnClickListener, OnFocusChangeListener, UrlInputListener,
- TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback {
+ TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback,
+ OnMenuItemClickListener {
protected static final int PROGRESS_MAX = 100;
@@ -75,7 +80,7 @@ public class TitleBarBase extends RelativeLayout
protected UrlInputView mUrlInput;
protected boolean mInVoiceMode;
protected View mContainer;
-
+ private View mUaSwitcher;
// Auto-login UI
protected View mAutoLogin;
@@ -385,6 +390,14 @@ public class TitleBarBase extends RelativeLayout
return mAutoLoginHandler != null;
}
+ public void setUaSwitcher(View v) {
+ if (mUaSwitcher != null) {
+ mUaSwitcher.setOnClickListener(null);
+ }
+ mUaSwitcher = v;
+ mUaSwitcher.setOnClickListener(this);
+ }
+
@Override
public void onClick(View v) {
if (mAutoLoginCancel == v) {
@@ -402,7 +415,42 @@ public class TitleBarBase extends RelativeLayout
mAutoLoginHandler.login(
mAutoLoginAccount.getSelectedItemPosition(), this);
}
+ } else if (mUaSwitcher == v) {
+ BrowserSettings settings = BrowserSettings.getInstance();
+ WebView web = getCurrentWebView();
+ if (web == null) return;
+ boolean desktop = settings.hasDesktopUseragent(web);
+ PopupMenu popup = new PopupMenu(mContext, mUaSwitcher);
+ Menu menu = popup.getMenu();
+ popup.getMenuInflater().inflate(R.menu.ua_switcher, menu);
+ menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop);
+ menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop);
+ popup.setOnMenuItemClickListener(this);
+ popup.show();
+ }
+ }
+
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ BrowserSettings settings = BrowserSettings.getInstance();
+ WebView web = getCurrentWebView();
+ if (web == null) return false;
+ boolean desktop = settings.hasDesktopUseragent(web);
+ switch (item.getItemId()) {
+ case R.id.ua_mobile_menu_id:
+ if (desktop) {
+ settings.toggleDesktopUseragent(web);
+ web.loadUrl(web.getOriginalUrl());
+ }
+ return true;
+ case R.id.ua_desktop_menu_id:
+ if (!desktop) {
+ settings.toggleDesktopUseragent(web);
+ web.loadUrl(web.getOriginalUrl());
+ }
+ return true;
}
+ return false;
}
@Override
diff --git a/src/com/android/browser/TitleBarPhone.java b/src/com/android/browser/TitleBarPhone.java
index 97fe747..75b9fb7 100644
--- a/src/com/android/browser/TitleBarPhone.java
+++ b/src/com/android/browser/TitleBarPhone.java
@@ -71,6 +71,7 @@ public class TitleBarPhone extends TitleBarBase implements OnFocusChangeListener
Resources res = context.getResources();
mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark);
mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark);
+ setUaSwitcher(mFavicon);
}
@Override
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index 8c03e4c..91709cc 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -62,8 +62,6 @@ public class TitleBarXLarge extends TitleBarBase
private ImageView mVoiceSearch;
private Drawable mFocusDrawable;
private Drawable mUnfocusDrawable;
- private boolean mHasFocus = false;
- private BrowserSettings mSettings;
public TitleBarXLarge(Activity activity, UiController controller,
XLargeUi ui, FrameLayout parent) {
@@ -77,10 +75,7 @@ public class TitleBarXLarge extends TitleBarBase
mUnfocusDrawable = resources.getDrawable(
R.drawable.textfield_default_holo_dark);
mInVoiceMode = false;
- mSettings = BrowserSettings.getInstance();
initLayout(activity, R.layout.url_bar);
- PreferenceManager.getDefaultSharedPreferences(activity)
- .registerOnSharedPreferenceChangeListener(mSharedPrefsListener);
}
@Override
@@ -109,7 +104,7 @@ public class TitleBarXLarge extends TitleBarBase
mGoButton.setOnClickListener(this);
mClearButton.setOnClickListener(this);
mVoiceSearch.setOnClickListener(this);
- mUrlIcon.setOnClickListener(this);
+ setUaSwitcher(mUrlIcon);
mUrlInput.setContainer(mUrlContainer);
setFocusState(false);
}
@@ -187,13 +182,6 @@ public class TitleBarXLarge extends TitleBarBase
clearOrClose();
} else if (mVoiceSearch == v) {
mUiController.startVoiceSearch();
- } else if (mUrlIcon == v) {
- WebView web = mUiController.getCurrentWebView();
- if (mSettings.enableUseragentSwitcher() && web != null) {
- mSettings.toggleDesktopUseragent(web);
- web.loadUrl(web.getOriginalUrl());
- updateUrlIcon();
- }
} else {
super.onClick(v);
}
@@ -213,38 +201,14 @@ public class TitleBarXLarge extends TitleBarBase
}
void updateUrlIcon() {
- if (mHasFocus) {
- return;
- }
- if (!mInVoiceMode && mSettings.enableUseragentSwitcher()) {
- WebView web = mUiController.getCurrentWebView();
- if (mSettings.hasDesktopUseragent(web)) {
- mUrlIcon.setImageResource(R.drawable.ic_ua_desktop);
- } else {
- mUrlIcon.setImageResource(R.drawable.ic_ua_android);
- }
- } else {
- mUrlIcon.setImageResource(mInVoiceMode ?
- R.drawable.ic_search_holo_dark
- : R.drawable.ic_web_holo_dark);
- }
+ mUrlIcon.setImageResource(mInVoiceMode ?
+ R.drawable.ic_search_holo_dark
+ : R.drawable.ic_web_holo_dark);
}
- private OnSharedPreferenceChangeListener mSharedPrefsListener =
- new OnSharedPreferenceChangeListener() {
-
- @Override
- public void onSharedPreferenceChanged(
- SharedPreferences sharedPreferences, String key) {
- updateUrlIcon();
- }
-
- };
-
@Override
protected void setFocusState(boolean focus) {
super.setFocusState(focus);
- mHasFocus = focus;
if (focus) {
mSearchButton.setVisibility(View.GONE);
mStar.setVisibility(View.GONE);
diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java
index d9ef3df..0dd8805 100644
--- a/src/com/android/browser/preferences/LabPreferencesFragment.java
+++ b/src/com/android/browser/preferences/LabPreferencesFragment.java
@@ -45,7 +45,6 @@ public class LabPreferencesFragment extends PreferenceFragment
// Load the XML preferences file
addPreferencesFromResource(R.xml.lab_preferences);
registerChangeListener(PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS);
- registerChangeListener(PreferenceKeys.PREF_ENABLE_USERAGENT_SWITCHER);
useInstantPref = findPreference(PreferenceKeys.PREF_USE_INSTANT_SEARCH);
}
@@ -81,17 +80,6 @@ public class LabPreferencesFragment extends PreferenceFragment
startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
getActivity(), BrowserActivity.class));
}
- if (PreferenceKeys.PREF_ENABLE_USERAGENT_SWITCHER.equals(key)) {
- if ((Boolean)newValue) {
- // Show the help
- LayoutInflater inflater = LayoutInflater.from(getActivity());
- View content = inflater.inflate(R.layout.help_dialog_useragent_switcher, null);
- new AlertDialog.Builder(getActivity())
- .setView(content)
- .setNeutralButton(android.R.string.ok, null)
- .show();
- }
- }
return true;
}
}