package cgeo.geocaching.ui; import butterknife.ButterKnife; import cgeo.geocaching.R; import cgeo.geocaching.activity.Keyboard; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.dialog.Dialogs; import org.eclipse.jdt.annotation.NonNull; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.view.ContextThemeWrapper; import android.view.View; import android.widget.EditText; public class EditNoteDialog extends DialogFragment { public interface EditNoteDialogListener { void onFinishEditNoteDialog(final String inputText); } public static final String ARGUMENT_INITIAL_NOTE = "initialNote"; private EditText mEditText; /** * Create a new dialog to edit a note. * This fragment must be inserted into an activity implementing the EditNoteDialogListener interface. * * @param initialNote the initial note to insert in the edit dialog */ public static EditNoteDialog newInstance(final String initialNote) { final EditNoteDialog dialog = new EditNoteDialog(); final Bundle arguments = new Bundle(); arguments.putString(EditNoteDialog.ARGUMENT_INITIAL_NOTE, initialNote); dialog.setArguments(arguments); return dialog; } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final @NonNull FragmentActivity activity = getActivity(); final Context themedContext; if (Settings.isLightSkin() && VERSION.SDK_INT < VERSION_CODES.HONEYCOMB) themedContext = new ContextThemeWrapper(activity, R.style.dark); else themedContext = activity; final View view = View.inflate(themedContext, R.layout.fragment_edit_note, null); mEditText = ButterKnife.findById(view, R.id.note); final String initialNote = getArguments().getString(ARGUMENT_INITIAL_NOTE); if (initialNote != null) { mEditText.setText(initialNote); Dialogs.moveCursorToEnd(mEditText); getArguments().remove(ARGUMENT_INITIAL_NOTE); } final AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.cache_personal_note); builder.setView(view); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int whichButton) { ((EditNoteDialogListener) getActivity()).onFinishEditNoteDialog(mEditText.getText().toString()); dialog.dismiss(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int whichButton) { dialog.dismiss(); } }); final AlertDialog dialog = builder.create(); new Keyboard(activity).showDelayed(mEditText); return dialog; } }