package com.android.mms.preferences; import com.android.mms.R; import com.android.mms.ui.MessagingPreferenceActivity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.DialogInterface.OnCancelListener; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.os.Parcelable; import android.preference.ListPreference; import android.preference.PreferenceManager; import android.widget.SeekBar; import android.widget.EditText; import android.widget.Toast; public class UserAgentListPreference extends ListPreference { private Context mContext; private String mUserAgent; private boolean mDialogShowing; private EditText mUserAgentCustom; public UserAgentListPreference(Context context) { super(context); mContext = context; } public UserAgentListPreference(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if (positiveResult) { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(mContext); mUserAgent = prefs .getString( MessagingPreferenceActivity.USER_AGENT, mContext .getString(R.string.pref_key_mms_user_agent_default)); if (mUserAgent.equals("custom")) { showDialog(); } } } private void showDialog() { LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.custom_user_agent_dialog, null); mUserAgentCustom = (EditText) v.findViewById(R.id.CustomUserAgentEditText); new AlertDialog.Builder(mContext).setIcon( android.R.drawable.ic_dialog_info).setTitle( R.string.pref_title_mms_user_agent).setView(v) .setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { mDialogShowing = false; } }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mDialogShowing = false; } }).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mDialogShowing = false; SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(mContext); SharedPreferences.Editor settings = prefs .edit(); settings .putString( MessagingPreferenceActivity.USER_AGENT_CUSTOM, mUserAgentCustom.getText().toString()); settings.commit(); Toast.makeText( mContext, mContext.getString(R.string.pref_mms_user_agent_custom_set) + mUserAgentCustom.getText().toString(), Toast.LENGTH_LONG).show(); } }).show(); mDialogShowing = true; } @Override protected void onRestoreInstanceState(Parcelable state) { super.onRestoreInstanceState(state); if (mDialogShowing) { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(mContext); mUserAgent = prefs .getString( MessagingPreferenceActivity.USER_AGENT, mContext .getString(R.string.pref_key_mms_user_agent_default)); showDialog(); } } @Override protected View onCreateDialogView() { mDialogShowing = false; return super.onCreateDialogView(); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { } }