package com.xabber.android.ui.preferences;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.widget.Toast;
import com.xabber.android.R;
import com.xabber.android.data.message.phrase.Phrase;
import com.xabber.android.data.message.phrase.PhraseManager;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.PatternSyntaxException;
public class PhraseEditorFragment extends BaseSettingsFragment {
private OnPhraseEditorFragmentInteractionListener mListener;
@Override
protected void onInflate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.phrase_editor);
}
@Override
protected Map<String, Object> getValues() {
Phrase phrase = mListener.getPhrase();
Map<String, Object> source = new HashMap<>();
putValue(source, R.string.phrase_text_key,
phrase == null ? "" : phrase.getText());
putValue(source, R.string.phrase_user_key,
phrase == null ? "" : phrase.getUser());
putValue(source, R.string.phrase_group_key, phrase == null ? ""
: phrase.getGroup());
putValue(source, R.string.phrase_regexp_key, phrase != null && phrase.isRegexp());
putValue(source, R.string.phrase_sound_key,
phrase == null ? Settings.System.DEFAULT_NOTIFICATION_URI
: phrase.getSound());
return source;
}
@Override
protected boolean setValues(Map<String, Object> source,
Map<String, Object> result) {
String text = getString(result, R.string.phrase_text_key);
String user = getString(result, R.string.phrase_user_key);
String group = getString(result, R.string.phrase_group_key);
boolean regexp = getBoolean(result, R.string.phrase_regexp_key);
Uri sound = getUri(result, R.string.phrase_sound_key);
Log.i("PhraseEditorFragment", "setValues. text: " + text);
if (regexp) {
try {
Phrase.compile(text);
Phrase.compile(user);
Phrase.compile(group);
} catch (PatternSyntaxException e) {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
return false;
}
}
Phrase phrase = mListener.getPhrase();
if (phrase == null && "".equals(text) && "".equals(user) && "".equals(group)) {
return true;
}
Log.i("PhraseEditorFragment", "updateOrCreatePhrase");
PhraseManager.getInstance().updateOrCreatePhrase(phrase, text, user, group, regexp, sound);
mListener.setPhrase(phrase);
return true;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnPhraseEditorFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnThemeSettingsFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnPhraseEditorFragmentInteractionListener {
Phrase getPhrase();
void setPhrase(Phrase phrase);
}
}