package org.solovyev.android.calculator.history; import android.annotation.SuppressLint; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.FragmentManager; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.TextView; import butterknife.Bind; import butterknife.ButterKnife; import org.solovyev.android.calculator.AppComponent; import org.solovyev.android.calculator.BaseDialogFragment; import org.solovyev.android.calculator.R; import javax.inject.Inject; public class EditHistoryFragment extends BaseDialogFragment { public static final String ARG_STATE = "state"; public static final String ARG_NEW = "new"; @Inject History history; HistoryState state; boolean newState; @Bind(R.id.history_expression) TextView expressionView; @Bind(R.id.history_comment) EditText commentView; public static void show(@NonNull HistoryState state, boolean newState, @NonNull FragmentManager fm) { final EditHistoryFragment fragment = new EditHistoryFragment(); final Bundle args = new Bundle(); args.putParcelable(ARG_STATE, state); args.putBoolean(ARG_NEW, newState); fragment.setArguments(args); fragment.show(fm, "edit-history-fragment"); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Bundle arguments = getArguments(); state = arguments.getParcelable(ARG_STATE); newState = arguments.getBoolean(ARG_NEW); } @Override protected void inject(@NonNull AppComponent component) { super.inject(component); component.inject(this); } @NonNull @Override public AlertDialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog dialog = super.onCreateDialog(savedInstanceState); dialog.setCanceledOnTouchOutside(false); return dialog; } @Override protected void onPrepareDialog(@NonNull AlertDialog.Builder builder) { builder.setNegativeButton(R.string.cpp_cancel, null); builder.setPositiveButton(R.string.c_save, null); } @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: final HistoryState.Builder b = HistoryState.builder(state, newState) .withComment(commentView.getText().toString()); history.updateSaved(b.build()); dismiss(); break; default: super.onClick(dialog, which); break; } } @SuppressLint("InflateParams") @NonNull @Override protected View onCreateDialogView(@NonNull Context context, @NonNull LayoutInflater inflater, @Nullable Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_history_edit, null); ButterKnife.bind(this, view); if (savedInstanceState == null) { expressionView.setText(BaseHistoryFragment.getHistoryText(state)); commentView.setText(state.getComment()); } return view; } }