package com.moez.QKSMS.ui.dialog; import android.app.Dialog; import android.content.Intent; import android.content.res.Resources; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; import android.text.TextUtils; import android.view.ViewGroup; import android.widget.LinearLayout; import com.moez.QKSMS.R; import com.moez.QKSMS.common.ConversationPrefsHelper; import com.moez.QKSMS.common.utils.Units; import com.moez.QKSMS.ui.ThemeManager; import com.moez.QKSMS.ui.messagelist.MessageListActivity; import com.moez.QKSMS.ui.settings.SettingsFragment; import com.moez.QKSMS.ui.view.QKPreference; import com.moez.QKSMS.ui.view.QKRingtonePreference; import com.moez.QKSMS.ui.view.QKSwitchPreference; import com.moez.QKSMS.ui.view.QKTextView; import com.moez.QKSMS.ui.view.colorpicker.ColorPickerDialog; public class ConversationSettingsDialog extends QKDialog implements Preference.OnPreferenceClickListener { private final String TAG = "ConversationSettingsDialog"; public static final int RINGTONE_REQUEST_CODE = 716; public static final String ARG_THREAD_ID = "thread_id"; private static final String ARG_NAME = "name"; private Resources mRes; private ConversationPrefsHelper mConversationPrefs; private int[] mLedColors; private long mThreadId; private ViewGroup.LayoutParams mLayoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); public static ConversationSettingsDialog newInstance(long threadId, String name) { ConversationSettingsDialog dialog = new ConversationSettingsDialog(); Bundle bundle = new Bundle(); bundle.putLong(ARG_THREAD_ID, threadId); bundle.putString(ARG_NAME, name); dialog.setArguments(bundle); return dialog; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { setTitle(getArguments().getString(ARG_NAME)); mThreadId = getArguments().getLong(ARG_THREAD_ID); mRes = getActivity().getResources(); mConversationPrefs = new ConversationPrefsHelper(getActivity(), mThreadId); mLedColors = new int[]{ mRes.getColor(R.color.blue_light), mRes.getColor(R.color.purple_light), mRes.getColor(R.color.green_light), mRes.getColor(R.color.yellow_light), mRes.getColor(R.color.red_light), mRes.getColor(R.color.white_pure) }; int padding = Units.dpToPx(getActivity(), 16); QKTextView premiumWarning = new QKTextView(getActivity()); premiumWarning.setLayoutParams(mLayoutParams); premiumWarning.setPadding(padding, padding, padding, padding); LinearLayout list = new LinearLayout(getActivity()); list.setOrientation(LinearLayout.VERTICAL); list.addView(new QKPreference(getActivity(), this, SettingsFragment.THEME, R.string.pref_theme, R.string.pref_theme_summary_alt).getView()); list.addView(new QKSwitchPreference(getActivity(), this, SettingsFragment.NOTIFICATION_LED, mConversationPrefs.getConversationPrefs(), mConversationPrefs.getNotificationLedEnabled(), R.string.pref_led, 0).getView()); list.addView(new QKPreference(getActivity(), this, SettingsFragment.NOTIFICATION_LED_COLOR, R.string.pref_theme_led, 0).getView()); list.addView(new QKSwitchPreference(getActivity(), this, SettingsFragment.WAKE, mConversationPrefs.getConversationPrefs(), mConversationPrefs.getWakePhoneEnabled(), R.string.pref_wake, R.string.pref_wake_summary).getView()); list.addView(new QKSwitchPreference(getActivity(), this, SettingsFragment.NOTIFICATION_TICKER, mConversationPrefs.getConversationPrefs(), mConversationPrefs.getTickerEnabled(), R.string.pref_ticker, R.string.pref_ticker_summary).getView()); list.addView(new QKSwitchPreference(getActivity(), this, SettingsFragment.NOTIFICATION_VIBRATE, mConversationPrefs.getConversationPrefs(), mConversationPrefs.getVibrateEnabled(), R.string.pref_vibration, R.string.pref_vibration_summary).getView()); list.addView(new QKRingtonePreference(getActivity(), this, SettingsFragment.NOTIFICATION_TONE, R.string.pref_ringtone, R.string.pref_ringtone_summary).getView()); list.addView(new QKSwitchPreference(getActivity(), this, SettingsFragment.NOTIFICATION_CALL_BUTTON, mConversationPrefs.getConversationPrefs(), mConversationPrefs.getCallButtonEnabled(), R.string.pref_notification_call, R.string.pref_notification_call_summary).getView()); setCustomView(list); return super.onCreateDialog(savedInstanceState); } public boolean onPreferenceClick(Preference preference) { switch (preference.getKey()) { case SettingsFragment.THEME: ThemeManager.showColorPickerDialogForConversation(mContext, mConversationPrefs); break; case SettingsFragment.NOTIFICATION_LED_COLOR: ColorPickerDialog ledColorPickerDialog = new ColorPickerDialog(); ledColorPickerDialog.initialize(R.string.pref_theme_led, mLedColors, Integer.parseInt(mConversationPrefs.getNotificationLedColor()), 3, 2); ledColorPickerDialog.setOnColorSelectedListener(color -> mConversationPrefs.putString(SettingsFragment.NOTIFICATION_LED_COLOR, "" + color)); ledColorPickerDialog.show(getActivity().getFragmentManager(), "colorpicker"); break; case SettingsFragment.NOTIFICATION_TONE: Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, getRingtoneUri()); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.pref_ringtone)); intent.putExtra(ARG_THREAD_ID, mThreadId); ((MessageListActivity) getActivity()).getResultForThreadId(mThreadId); getActivity().startActivityForResult(intent, RINGTONE_REQUEST_CODE); break; } return true; } private Uri getRingtoneUri() { final String uriString = mConversationPrefs.getString(SettingsFragment.NOTIFICATION_TONE, "content://settings/system/notification_sound"); return !TextUtils.isEmpty(uriString) ? Uri.parse(uriString) : null; } }