package info.justaway.fragment.mute;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.Bind;
import info.justaway.R;
import info.justaway.settings.MuteSettings;
import info.justaway.util.KeyboardUtil;
import info.justaway.util.MessageUtil;
import info.justaway.widget.FontelloTextView;
public class WordFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_mute_word, container, false);
if (v == null) {
return null;
}
final WordAdapter adapter = new WordAdapter(getActivity(), R.layout.row_word);
ListView listView = (ListView) v.findViewById(R.id.list);
listView.setAdapter(adapter);
for (String word : MuteSettings.getWords()) {
adapter.add(word);
}
v.findViewById(R.id.button_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText editText = new EditText(getActivity());
KeyboardUtil.showKeyboard(editText);
new AlertDialog.Builder(getActivity())
.setTitle(R.string.title_create_mute_word)
.setView(editText)
.setPositiveButton(
R.string.button_save,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (editText.getText() == null) {
return;
}
String word = editText.getText().toString();
if (word.isEmpty()) {
return;
}
adapter.add(word);
MuteSettings.addWord(word);
MuteSettings.saveMuteSettings();
MessageUtil.showToast(R.string.toast_create_mute);
}
}
)
.setNegativeButton(
R.string.button_cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}
)
.show();
}
});
return v;
}
public class WordAdapter extends ArrayAdapter<String> {
class ViewHolder {
@Bind(R.id.word) TextView mWord;
@Bind(R.id.trash) FontelloTextView mTrash;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
private ArrayList<String> mWordList = new ArrayList<String>();
private LayoutInflater mInflater;
private int mLayout;
public WordAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mLayout = textViewResourceId;
}
@Override
public void add(String source) {
super.add(source);
mWordList.add(source);
}
public void remove(String source) {
super.remove(source);
mWordList.remove(source);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
// ビューを受け取る
View view = convertView;
if (view == null) {
// 受け取ったビューがnullなら新しくビューを生成
view = mInflater.inflate(this.mLayout, null);
if (view == null) {
return null;
}
viewHolder = new ViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
final String word = mWordList.get(position);
viewHolder.mWord.setText(word);
viewHolder.mTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(getActivity())
.setMessage(String.format(getString(R.string.confirm_destroy_mute), word))
.setPositiveButton(
R.string.button_yes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
remove(word);
MuteSettings.removeWord(word);
MuteSettings.saveMuteSettings();
}
}
)
.setNegativeButton(
R.string.button_no,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}
)
.show();
}
});
return view;
}
}
}