157 lines
6.0 KiB
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());
|
|
}
|
|
}
|