replicant-packages_apps_Email/src/com/android/email/activity/setup/EditQuickResponseDialog.java

157 lines
6.0 KiB
Java

/*
* 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.
*/
package com.android.email.activity.setup;
import com.android.email.R;
import com.android.mail.providers.UIProvider;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
/**
* Dialog to edit the text of a given or new quick response
*/
public class EditQuickResponseDialog extends DialogFragment {
private EditText mQuickResponseEditText;
private AlertDialog mDialog;
private static final String QUICK_RESPONSE_STRING = "quick_response_edited_string";
private static final String QUICK_RESPONSE_CONTENT_URI = "quick_response_content_uri";
private static final String QUICK_RESPONSE_CREATE = "quick_response_create";
// Public no-args constructor needed for fragment re-instantiation
public EditQuickResponseDialog() {}
/**
* Creates a new dialog to edit an existing QuickResponse or create a new
* one.
*
* @param baseUri - The content Uri QuickResponse which the user is editing
* or the content Uri for creating a new QuickResponse
* @param create - True if this is a new QuickResponse
*/
public static EditQuickResponseDialog newInstance(String text,
Uri baseUri, boolean create) {
final EditQuickResponseDialog dialog = new EditQuickResponseDialog();
Bundle args = new Bundle(4);
args.putString(QUICK_RESPONSE_STRING, text);
args.putParcelable(QUICK_RESPONSE_CONTENT_URI, baseUri);
args.putBoolean(QUICK_RESPONSE_CREATE, create);
dialog.setArguments(args);
return dialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Uri uri = getArguments().getParcelable(QUICK_RESPONSE_CONTENT_URI);
final boolean create = getArguments().getBoolean(QUICK_RESPONSE_CREATE);
String quickResponseSavedString = null;
if (savedInstanceState != null) {
quickResponseSavedString =
savedInstanceState.getString(QUICK_RESPONSE_STRING);
}
if (quickResponseSavedString == null) {
quickResponseSavedString = getArguments().getString(QUICK_RESPONSE_STRING);
}
final View wrapper = LayoutInflater.from(getActivity())
.inflate(R.layout.quick_response_edit_dialog, null);
mQuickResponseEditText = (EditText) wrapper.findViewById(R.id.quick_response_text);
if (quickResponseSavedString != null) {
mQuickResponseEditText.setText(quickResponseSavedString);
}
mQuickResponseEditText.setSelection(mQuickResponseEditText.length());
mQuickResponseEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(s.length() > 0);
}
});
DialogInterface.OnClickListener saveClickListener =
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final String text = mQuickResponseEditText.getText().toString();
final ContentValues values = new ContentValues(1);
values.put(UIProvider.QuickResponseColumns.TEXT, text);
if (create) {
getActivity().getContentResolver().insert(uri, values);
} else {
getActivity().getContentResolver().update(uri, values, null, null);
}
}
};
DialogInterface.OnClickListener deleteClickListener =
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().getContentResolver().delete(uri, null, null);
}
};
final AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setTitle(getResources().getString(R.string.edit_quick_response_dialog))
.setView(wrapper)
.setNegativeButton(R.string.cancel_action, null)
.setPositiveButton(R.string.save_action, saveClickListener);
if (!create) {
b.setNeutralButton(R.string.delete, deleteClickListener);
}
mDialog = b.create();
return mDialog;
}
@Override
public void onResume() {
super.onResume();
if (mQuickResponseEditText.length() == 0) {
mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
}
// Saves contents during orientation change
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(
QUICK_RESPONSE_STRING, mQuickResponseEditText.getText().toString());
}
}