package com.xabber.android.ui.preferences; import android.app.Activity; import android.os.Bundle; import com.xabber.android.R; import com.xabber.android.data.account.AccountItem; import com.xabber.android.data.entity.AccountJid; import com.xabber.android.data.entity.UserJid; import com.xabber.android.data.message.chat.ChatManager; import com.xabber.android.data.message.chat.ShowMessageTextInNotification; import java.util.HashMap; import java.util.Map; public class ChatContactSettingsFragment extends BaseSettingsFragment { private ChatEditorFragmentInteractionListener mListener; @Override protected void onInflate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.preference_chat_contact); getPreferenceScreen().removePreference(getPreferenceScreen() .findPreference(getString(R.string.chat_save_history_key))); } @Override public void onPause() { super.onPause(); saveChanges(); } @Override protected Map<String, Object> getValues() { Map<String, Object> map = new HashMap<>(); AccountJid account = mListener.getAccount(); UserJid user = mListener.getUser(); putValue(map, R.string.chat_save_history_key, ChatManager.getInstance() .isSaveMessages(account, user)); putValue(map, R.string.chat_events_visible_chat_key, ChatManager .getInstance().isNotifyVisible(account, user)); putValue(map, R.string.chat_events_show_text_key, ChatManager .getInstance().getShowText(account, user).ordinal()); putValue(map, R.string.chat_events_vibro_key, ChatManager.getInstance() .isMakeVibro(account, user)); putValue(map, R.string.chat_events_sound_key, ChatManager.getInstance() .getSound(account, user)); putValue(map, R.string.chat_events_suppress_100_key, ChatManager.getInstance() .isSuppress100(account, user)); return map; } @Override protected boolean setValues(Map<String, Object> source, Map<String, Object> result) { AccountJid account = mListener.getAccount(); UserJid user = mListener.getUser(); if (hasChanges(source, result, R.string.chat_save_history_key)) ChatManager.getInstance().setSaveMessages(account, user, getBoolean(result, R.string.chat_save_history_key)); if (hasChanges(source, result, R.string.chat_events_visible_chat_key)) ChatManager.getInstance().setNotifyVisible(account, user, getBoolean(result, R.string.chat_events_visible_chat_key)); if (hasChanges(source, result, R.string.chat_events_show_text_key)) { ChatManager.getInstance().setShowText(account, user, ShowMessageTextInNotification.fromInteger(getInt(result, R.string.chat_events_show_text_key))); } if (hasChanges(source, result, R.string.chat_events_vibro_key)) ChatManager.getInstance().setMakeVibro(account, user, getBoolean(result, R.string.chat_events_vibro_key)); if (hasChanges(source, result, R.string.chat_events_sound_key)) ChatManager.getInstance().setSound(account, user, getUri(result, R.string.chat_events_sound_key)); if (hasChanges(source, result, R.string.chat_events_suppress_100_key)) ChatManager.getInstance().setSuppress100(account, user, getBoolean(result, R.string.chat_events_suppress_100_key)); return true; } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (ChatEditorFragmentInteractionListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement ChatEditorFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } public interface ChatEditorFragmentInteractionListener { AccountJid getAccount(); AccountItem getAccountItem(); UserJid getUser(); } }