Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d25b3b33acda64a05c1b79b98483457f41a880e2 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java |
@@ -0,0 +1,151 @@ |
+// Copyright 2015 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.Fragment; |
+import android.os.Bundle; |
+import android.support.v7.widget.SwitchCompat; |
+import android.text.Editable; |
+import android.text.TextWatcher; |
+import android.view.LayoutInflater; |
+import android.view.View; |
+import android.view.View.OnFocusChangeListener; |
+import android.view.ViewGroup; |
+import android.widget.CheckBox; |
+import android.widget.CompoundButton; |
+import android.widget.CompoundButton.OnCheckedChangeListener; |
+import android.widget.EditText; |
+import android.widget.TextView; |
+ |
+import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.UrlUtilities; |
+import org.chromium.chrome.browser.partnercustomizations.HomepageManager; |
+import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; |
+import org.chromium.ui.UiUtils; |
+ |
+/** |
+ * Fragment that allows the user to configure homepage related preferences. |
+ */ |
+public class HomepagePreferences extends Fragment { |
+ private HomepageManager mHomepageManager; |
+ private SwitchCompat mHomepageSwitch; |
+ private TextView mHomepageSwitchLabel; |
+ private String mCustomUriCache; |
+ private EditText mCustomUriEditText; |
+ private CheckBox mPartnerDefaultCheckbox; |
+ |
+ @Override |
+ public void onCreate(Bundle savedInstanceState) { |
+ super.onCreate(savedInstanceState); |
+ mHomepageManager = HomepageManager.getInstance(getActivity()); |
+ } |
+ |
+ @Override |
+ public void onActivityCreated(Bundle savedInstanceState) { |
+ super.onActivityCreated(savedInstanceState); |
+ getActivity().setTitle(R.string.options_homepage_title); |
+ } |
+ |
+ @Override |
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, |
+ Bundle savedInstanceState) { |
+ View rootView = inflater.inflate(R.layout.homepage_preferences, null); |
+ |
+ initHomepageSwitch(rootView); |
+ initCustomUriEditText(rootView); |
+ initPartnerDefaultCheckbox(rootView); |
+ |
+ updateUIState(); |
+ |
+ return rootView; |
+ } |
+ |
+ private void initHomepageSwitch(View rootView) { |
+ mHomepageSwitch = (SwitchCompat) rootView.findViewById(R.id.homepage_switch); |
+ mHomepageSwitchLabel = (TextView) rootView.findViewById(R.id.homepage_switch_label); |
+ |
+ boolean isHomepageEnabled = mHomepageManager.getPrefHomepageEnabled(); |
+ mHomepageSwitch.setChecked(isHomepageEnabled); |
+ setHomepageSwitchLabelText(isHomepageEnabled); |
+ |
+ mHomepageSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener(){ |
+ @Override |
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
+ mHomepageManager.setPrefHomepageEnabled(isChecked); |
+ setHomepageSwitchLabelText(isChecked); |
+ updateUIState(); |
+ } |
+ }); |
+ } |
+ |
+ private void setHomepageSwitchLabelText(boolean isChecked) { |
+ if (isChecked) { |
+ mHomepageSwitchLabel.setText(mHomepageSwitch.getTextOn()); |
+ } else { |
+ mHomepageSwitchLabel.setText(mHomepageSwitch.getTextOff()); |
+ } |
+ } |
+ |
+ private void initCustomUriEditText(View rootView) { |
+ mCustomUriCache = mHomepageManager.getPrefHomepageCustomUri(); |
+ |
+ mCustomUriEditText = (EditText) rootView.findViewById(R.id.custom_uri); |
+ mCustomUriEditText.addTextChangedListener(new TextWatcher() { |
+ @Override |
+ public void onTextChanged(CharSequence s, int start, int before, int count) { |
+ } |
+ |
+ @Override |
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
+ } |
+ |
+ @Override |
+ public void afterTextChanged(Editable s) { |
+ if (mCustomUriEditText.isEnabled()) { |
+ mCustomUriCache = s.toString(); |
+ } |
+ } |
+ }); |
+ mCustomUriEditText.setOnFocusChangeListener(new OnFocusChangeListener() { |
+ @Override |
+ public void onFocusChange(View view, boolean hasFocus) { |
+ if (!hasFocus) UiUtils.hideKeyboard(view); |
+ } |
+ }); |
+ } |
+ |
+ private void initPartnerDefaultCheckbox(View rootView) { |
+ mPartnerDefaultCheckbox = (CheckBox) rootView.findViewById(R.id.default_checkbox); |
+ mPartnerDefaultCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() { |
+ @Override |
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
+ mHomepageManager.setPrefHomepageUseDefaultUri(isChecked); |
+ updateUIState(); |
+ } |
+ }); |
+ } |
+ |
+ private void updateUIState() { |
+ boolean isHomepageEnabled = mHomepageManager.getPrefHomepageEnabled(); |
+ boolean isHomepagePartnerEnabled = |
+ mHomepageManager.getPrefHomepageUseDefaultUri(); |
+ |
+ mCustomUriEditText.setEnabled(false); |
+ mCustomUriEditText.setText(isHomepagePartnerEnabled |
+ ? PartnerBrowserCustomizations.getHomePageUrl() : mCustomUriCache); |
+ mCustomUriEditText.setEnabled(isHomepageEnabled && !isHomepagePartnerEnabled); |
+ |
+ mPartnerDefaultCheckbox.setChecked(isHomepagePartnerEnabled); |
+ mPartnerDefaultCheckbox.setEnabled(isHomepageEnabled); |
+ } |
+ |
+ @Override |
+ public void onStop() { |
+ super.onStop(); |
+ mHomepageManager.setPrefHomepageCustomUri( |
+ UrlUtilities.fixUrl(UrlUtilities.fixupUrl(mCustomUriCache))); |
+ } |
+ |
+} |