import android.app.AlertDialog;
import android.content.Context;
+import android.os.Bundle;
import android.preference.EditTextPreference;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
import android.util.AttributeSet;
public class BrowserHomepagePreference extends EditTextPreference {
+ private String mCurrentPage;
public BrowserHomepagePreference(Context context, AttributeSet attrs,
int defStyle) {
}
@Override
+ protected void onAddEditTextToDialogView(View dialogView,
+ EditText editText) {
+ super.onAddEditTextToDialogView(dialogView, editText);
+ // Now the EditText has a parent. Add a button to set to the current
+ // page.
+ ViewGroup parent = (ViewGroup) editText.getParent();
+ Button button = new Button(getContext());
+ button.setText(R.string.pref_use_current);
+ button.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ getEditText().setText(mCurrentPage);
+ }
+ });
+ if (parent instanceof LinearLayout) {
+ ((LinearLayout) parent).setGravity(Gravity.CENTER_HORIZONTAL);
+ }
+ parent.addView(button, ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ }
+
+ @Override
protected void onDialogClosed(boolean positiveResult) {
if (positiveResult) {
String url = getEditText().getText().toString();
}
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.
+ */
+ /* package */ 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
+ // fill_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.FILL_PARENT;
+ window.getWindowManager().updateViewLayout(decorView, params);
+ }
}
implements Preference.OnPreferenceChangeListener {
private String LOGTAG = "BrowserPreferencesPage";
+ /* package */ static final String CURRENT_PAGE = "currentPage";
@Override
protected void onCreate(Bundle savedInstanceState) {
e.setOnPreferenceChangeListener(this);
e.setSummary(getPreferenceScreen().getSharedPreferences()
.getString(BrowserSettings.PREF_HOMEPAGE, null));
+ ((BrowserHomepagePreference) e).setCurrentPage(
+ getIntent().getStringExtra(CURRENT_PAGE));
e = findPreference(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS);
e.setOnPreferenceChangeListener(this);