package com.door43.translationstudio.dialogs; import android.app.DialogFragment; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; import com.door43.translationstudio.R; import com.door43.translationstudio.AppContext; /** * Created by joel on 1/29/2015. */ public class VerseMarkerDialog extends DialogFragment { private OnClickListener mListener; private String mVerse; private int mMaxVerse; private int mSuggestedVerse; private int mMinVerse; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(R.string.title_verse); View v = inflater.inflate(R.layout.dialog_verse_marker, container, false); final EditText verseText = (EditText)v.findViewById(R.id.verseNumberText); Button okButton = (Button)v.findViewById(R.id.okButton); Button cancelButton = (Button)v.findViewById(R.id.cancelButton); // load parameters Bundle args = getArguments(); if(args != null) { mSuggestedVerse = args.getInt("startVerse"); mVerse = mSuggestedVerse + ""; mMinVerse = args.getInt("minVerse"); mMaxVerse = args.getInt("maxVerse"); verseText.setText(mVerse); } // restore state if(savedInstanceState != null) { mVerse = savedInstanceState.getString("verse"); verseText.setText(mVerse+""); } verseText.requestFocus(); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); // watch text change verseText.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {} public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {} @Override public void afterTextChanged(Editable editable) { mVerse = editable.toString(); } }); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); okButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // if the verse is empty it will be deleted int verse = -1; if(!mVerse.isEmpty()) { verse = Integer.parseInt(mVerse); } if(verse != -1 && (verse > mMaxVerse || verse < mMinVerse)) { AppContext.context().showToastMessage(String.format(AppContext.context().getResources().getString(R.string.verse_out_of_bounds), mMinVerse, mMaxVerse)); } else { if (mListener != null) { mListener.onClick(verse); } dismiss(); } } }); return v; } @Override public void onSaveInstanceState(Bundle outState) { outState.putString("verse", mVerse); super.onSaveInstanceState(outState); } /** * Sets up the listener to be triggered when the user clicks the ok button * @param listener */ public void setOkListener(OnClickListener listener) { mListener = listener; } public static interface OnClickListener { public void onClick(int verse); } }