Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4041)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java

Issue 2362673005: [Android] Change default search engine setting page to full screen (Closed)
Patch Set: Update to fix failures on PreferencesTest text cases. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java
index fbca965f2cb3a3563d552c968d90a1734b622f35..9ef7822c1d6f7f5d30a270cc627052c55e6c8892 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java
@@ -1,33 +1,34 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
+// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.preferences;
-import android.app.AlertDialog;
-import android.content.Context;
-import android.preference.DialogPreference;
-import android.util.AttributeSet;
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnLayoutChangeListener;
+import android.view.ViewGroup;
+import android.widget.ListView;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.search_engines.TemplateUrlService;
/**
- * A dialog preference for picking a default search engine.
- */
-public class SearchEnginePreference extends DialogPreference
- implements SearchEngineAdapter.SelectSearchEngineCallback {
+* A preference fragment for selecting a default search engine.
+*/
+public class SearchEnginePreference extends PreferenceFragment
+ implements View.OnClickListener, SearchEngineAdapter.SelectSearchEngineCallback,
+ OnLayoutChangeListener {
+ private ListView mListView;
+ private View mCancelButton;
+ private View mSaveButton;
+ private View mDivider;
- static final String PREF_SEARCH_ENGINE = "search_engine";
-
- // The custom search engine adapter for the data to show in the dialog.
private SearchEngineAdapter mSearchEngineAdapter;
-
- public SearchEnginePreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- setEnabled(false);
- mSearchEngineAdapter = new SearchEngineAdapter(getContext(), this);
- }
+ private int mSelectedIndex;
@VisibleForTesting
String getValueForTesting() {
@@ -37,36 +38,68 @@ public class SearchEnginePreference extends DialogPreference
@VisibleForTesting
void setValueForTesting(String value) {
mSearchEngineAdapter.setValueForTesting(value);
+ TemplateUrlService.getInstance().setSearchEngine(mSelectedIndex);
}
- // DialogPreference:
-
- /**
- * @see DialogPreference#showDialog
- */
- public void showDialog() {
- super.showDialog(null);
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActivity().setTitle(R.string.prefs_search_engine);
+ mSearchEngineAdapter = new SearchEngineAdapter(getActivity(), this);
}
@Override
- protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
- super.onPrepareDialogBuilder(builder);
+ public View onCreateView(
+ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.search_engine_layout, container, false);
+ mListView = (ListView) view.findViewById(android.R.id.list);
+ mListView.setAdapter(mSearchEngineAdapter);
+ mListView.setDivider(null);
+ mListView.addOnLayoutChangeListener(this);
+ mCancelButton = view.findViewById(R.id.cancel_button);
+ mCancelButton.setOnClickListener(this);
+ mSaveButton = view.findViewById(R.id.save_button);
+ mSaveButton.setOnClickListener(this);
+ mDivider = view.findViewById(R.id.bottom_shadow);
+ return view;
+ }
- builder.setNegativeButton(null, null)
- .setPositiveButton(R.string.close, null)
- .setSingleChoiceItems(mSearchEngineAdapter, 0, null);
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
}
- // SelectSearchEngineAdapter.SelectSearchEngineCallback:
+ @Override
+ public void onClick(View v) {
+ if (v == mCancelButton) {
+ getActivity().finish();
+ } else if (v == mSaveButton) {
+ TemplateUrlService.getInstance().setSearchEngine(mSelectedIndex);
+ getActivity().finish();
+ }
+ }
@Override
- public void currentSearchEngineDetermined(String name) {
- setSummary(name);
- setEnabled(true);
+ public void currentSearchEngineDetermined(int selectedIndex) {
+ mSelectedIndex = selectedIndex;
+ }
+
+ /**
+ * Displays the divider if the Listview is longer than its viewport.
+ */
+ public void updateBottombarDivider() {
+ if (mListView.getLastVisiblePosition() == mSearchEngineAdapter.getCount() - 1) {
+ mDivider.setVisibility(View.INVISIBLE);
+ } else {
+ mDivider.setVisibility(View.VISIBLE);
+ }
}
@Override
- public void onDismissDialog() {
- getDialog().dismiss();
+ public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
+ int oldTop, int oldRight, int oldBottom) {
+ if (v == mListView) {
+ updateBottombarDivider();
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698