/*
* TV-Browser for Android
* Copyright (C) 2013 René Mach (rene@tvbrowser.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to use, copy, modify or merge the Software,
* furthermore to publish and distribute the Software free of charge without modifications and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.tvbrowser.settings;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import org.tvbrowser.tvbrowser.R;
import org.tvbrowser.tvbrowser.ServiceUpdateReminders;
import org.tvbrowser.tvbrowser.TvDataUpdateService;
import org.tvbrowser.utils.CompatUtils;
import org.tvbrowser.utils.IOUtils;
import org.tvbrowser.utils.UiUtils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
public class TvbPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String category = getArguments().getString(getString(R.string.pref_category_key));
final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
if(getString(R.string.category_download).equals(category)) {
addPreferencesFromResource(R.xml.preferences_download);
onSharedPreferenceChanged(pref,getString(R.string.PREF_AUTO_UPDATE_TYPE));
}
else if(getString(R.string.category_epgpaid).equals(category)) {
addPreferencesFromResource(R.xml.preferences_epgpaid);
final DateUntilPreference p = (DateUntilPreference)findPreference(getString(R.string.PREF_EPGPAID_ACCESS_UNTIL));
final PreferenceCategory credentials = (PreferenceCategory)findPreference(getString(R.string.PREF_EPGPAID_CATEGORY_CREDENTIALS));
if(p != null && credentials != null && p.getValue() == 0) {
credentials.removePreference(p);
}
onSharedPreferenceChanged(pref,getString(R.string.PREF_EPGPAID_DOWNLOAD_MAX));
onSharedPreferenceChanged(pref,getString(R.string.PREF_EPGPAID_USER));
onSharedPreferenceChanged(pref,getString(R.string.PREF_EPGPAID_PASSWORD));
}
else if(getString(R.string.category_database).equals(category)) {
addPreferencesFromResource(R.xml.preferences_database);
ListPreference path = (ListPreference)findPreference(getString(R.string.PREF_DATABASE_PATH));
path.setEnabled(!TvDataUpdateService.isRunning());
File external = Environment.getExternalStorageDirectory();
Log.d("info22", "external "+external);
final ArrayList<String> entries = new ArrayList<String>();
final ArrayList<String> entryValues = new ArrayList<String>();
String defaultValue = getString(R.string.pref_database_path_default);
entries.add(getString(R.string.pref_database_selection_internal));
entryValues.add(defaultValue);
String currentValue = pref.getString(getString(R.string.PREF_DATABASE_PATH), defaultValue);
String summary = getString(R.string.pref_database_selection_unavailable);
if(currentValue.equals(defaultValue)) {
summary = entries.get(0);
}
if(external != null && external.isDirectory()) {
File[] sdcards = new File(external.getAbsolutePath().substring(0, external.getAbsolutePath().indexOf(File.separator, 1))).listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return CompatUtils.acceptFileAsSdCard(pathname);
}
});
File appExternal = getActivity().getExternalFilesDir(null);
String appFilePathPart = appExternal.getAbsolutePath().replace(external.getAbsolutePath(), "") + File.separator;
Arrays.sort(sdcards);
for(File sdcard : sdcards) {
File test = new File(sdcard,appFilePathPart);
if(test.isDirectory() || test.mkdirs()) {
entries.add(sdcard.getAbsolutePath());
entryValues.add(test.getAbsolutePath());
if(test.getAbsolutePath().equals(currentValue)) {
summary = sdcard.getAbsolutePath();
}
}
}
}
path.setEntries(entries.toArray(new String[entries.size()]));
path.setEntryValues(entryValues.toArray(new String[entryValues.size()]));
path.setSummary(summary);
}
else if(getString(R.string.category_start).equals(category)) {
addPreferencesFromResource(R.xml.preferences_start);
onSharedPreferenceChanged(pref,getString(R.string.TAB_TO_SHOW_AT_START));
}
else if(getString(R.string.category_theme).equals(category)) {
addPreferencesFromResource(R.xml.preferences_layout);
onSharedPreferenceChanged(pref, getString(R.string.PREF_SHOW_PROGRESS));
onSharedPreferenceChanged(pref, getString(R.string.PREF_COLOR_STYLE));
onSharedPreferenceChanged(pref, getString(R.string.PREF_LOGO_BORDER));
}
else if(getString(R.string.category_reminder).equals(category)) {
addPreferencesFromResource(R.xml.preferences_reminder);
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_TIME));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_NIGHT_MODE_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_SOUND_VALUE));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_NIGHT_MODE_SOUND_VALUE));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_SOUND_VALUE));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_MONDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_TUESDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_WEDNESDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_THURSDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_FRIDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_SATURDAY_ACTIVATED));
onSharedPreferenceChanged(pref,getString(R.string.PREF_REMINDER_WORK_MODE_SUNDAY_ACTIVATED));
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
final Preference alarmClockReminder = findPreference(getString(R.string.PREF_REMINDER_AS_ALARM_CLOCK));
if(alarmClockReminder != null) {
getPreferenceScreen().removePreference(alarmClockReminder);
}
}
}
else if(getString(R.string.category_time_buttons).equals(category)) {
addPreferencesFromResource(R.xml.preferences_time_buttons);
onSharedPreferenceChanged(pref,getString(R.string.TIME_BUTTON_COUNT));
}
else if(getString(R.string.category_running_programs).equals(category)) {
addPreferencesFromResource(R.xml.preferences_running);
}
else if(getString(R.string.category_programs_list).equals(category)) {
addPreferencesFromResource(R.xml.preferences_programs_list);
}
else if(getString(R.string.category_program_table).equals(category)) {
addPreferencesFromResource(R.xml.preferences_program_table);
onSharedPreferenceChanged(pref,getString(R.string.PROG_TABLE_ACTIVATED));
}
else if(getString(R.string.category_list).equals(category)) {
addPreferencesFromResource(R.xml.preferences_program_lists);
}
else if(getString(R.string.category_details).equals(category)) {
addPreferencesFromResource(R.xml.preferences_details);
onSharedPreferenceChanged(pref,getString(R.string.SHOW_PICTURE_IN_DETAILS));
}
else if(getString(R.string.category_news).equals(category)) {
addPreferencesFromResource(R.xml.preferences_news);
onSharedPreferenceChanged(pref,getString(R.string.PREF_NEWS_SHOW));
}
else if(getString(R.string.category_widgets).equals(category)) {
addPreferencesFromResource(R.xml.preferences_widgets);
}
else if(getString(R.string.category_sync).equals(category)) {
addPreferencesFromResource(R.xml.preferences_sync);
}
else if(getString(R.string.category_additional_infos).equals(category)) {
addPreferencesFromResource(R.xml.preferences_additonal_infos);
}
else if(getString(R.string.category_i_dont_want_to_see).equals(category)) {
addPreferencesFromResource(R.xml.preferences_i_dont_want_to_see);
onSharedPreferenceChanged(pref,getString(R.string.PREF_I_DONT_WANT_TO_SEE_FILTER_TYPE));
}
else if(getString(R.string.category_debug).equals(category)) {
addPreferencesFromResource(R.xml.preferences_debug);
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onDetach() {
super.onDetach();
PreferenceManager.getDefaultSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(getActivity() != null) {
if(key.equals(getString(R.string.PREF_LOGO_BORDER))) {
CheckBoxPreference transparent = (CheckBoxPreference)findPreference(key);
PreferenceColorActivated borderColor = (PreferenceColorActivated)findPreference(getString(R.string.PREF_LOGO_BORDER_COLOR));
if(transparent != null && borderColor != null) {
borderColor.setEnabled(transparent.isChecked());
}
}
else if(key.equals(getString(R.string.PREF_EPGPAID_USER))) {
String userName = sharedPreferences.getString(key, null);
EditTextPreference textPref = (EditTextPreference)findPreference(key);
if(textPref != null && userName != null && userName.trim().length() > 0) {
textPref.setSummary(userName);
}
else if(textPref != null) {
textPref.setSummary(getString(R.string.pref_epgpaid_user_empty_summary));
}
}
else if(key.equals(getString(R.string.PREF_EPGPAID_PASSWORD))) {
String password = sharedPreferences.getString(key, null);
EditTextPreference textPref = (EditTextPreference)findPreference(key);
if(textPref != null && password != null && password.trim().length() > 0) {
textPref.setSummary(getString(R.string.pref_epgpaid_user_password_set_summary));
}
else if(textPref != null) {
textPref.setSummary(getString(R.string.pref_epgpaid_user_empty_summary));
}
}
else if(key.equals(getString(R.string.PREF_AUTO_UPDATE_START_TIME))) {
Editor edit = sharedPreferences.edit();
edit.putLong(getString(R.string.AUTO_UPDATE_CURRENT_START_TIME), 0);
edit.commit();
IOUtils.handleDataUpdatePreferences(getActivity());
}
else if(key.equals(getString(R.string.PREF_NEWS_SHOW))) {
CheckBoxPreference showNews = (CheckBoxPreference)findPreference(key);
ListPreference newsType = (ListPreference)findPreference(getString(R.string.PREF_NEWS_TYPE));
if(showNews != null && newsType != null) {
newsType.setEnabled(showNews.isChecked());
}
}
else if(key.equals(getString(R.string.TIME_BUTTON_COUNT))) {
PreferenceScreen screen = (PreferenceScreen)findPreference(getString(R.string.TIME_BUTTON_PREFERENCES_SUB_SCREEN));
if(screen != null) {
int timeButtonCount = sharedPreferences.getInt(key, getResources().getInteger(R.integer.time_button_count_default));
int currentTimeButtonCount = screen.getPreferenceCount() - 1;
for(int i = currentTimeButtonCount; i > timeButtonCount; i--) {
screen.removePreference(screen.getPreference(i));
}
for(int i = currentTimeButtonCount + 1; i <= timeButtonCount; i++) {
TimePreference timePref = new TimePreference(getActivity(), null);
String index = String.valueOf(i);
int defaultValue = 0;
switch(i) {
case 2: index = "TWO"; defaultValue = getResources().getInteger(R.integer.time_button_2_default);break;
case 3: index = "THREE"; defaultValue = getResources().getInteger(R.integer.time_button_3_default);break;
case 4: index = "FOUR"; defaultValue = getResources().getInteger(R.integer.time_button_4_default);break;
case 5: index = "FIVE"; defaultValue = getResources().getInteger(R.integer.time_button_5_default);break;
case 6: index = "SIX"; defaultValue = getResources().getInteger(R.integer.time_button_6_default);break;
}
timePref.setDefaultValue(defaultValue);
timePref.setKey(getString(R.string.time_button_key_prefix) + index);
timePref.setSummary(R.string.pref_time_button_hint);
timePref.onSetInitialValue(true, defaultValue);
screen.addPreference(timePref);
}
}
}
else if(key.equals(getString(R.string.PREF_WIDGET_BACKGROUND_ROUNDED_CORNERS)) || key.equals(getString(R.string.PREF_WIDGET_SIMPLE_ICON))) {
UiUtils.reloadWidgets(getActivity().getApplicationContext());
}
else if(key.equals(getString(R.string.PREF_REMINDER_SOUND_VALUE)) || key.equals(getString(R.string.PREF_REMINDER_NIGHT_MODE_SOUND_VALUE))
|| key.equals(getString(R.string.PREF_REMINDER_WORK_MODE_SOUND_VALUE))) {
Uri defaultUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
String defaultValue = null;
if(key.equals(getString(R.string.PREF_REMINDER_NIGHT_MODE_SOUND_VALUE))) {
defaultValue = getString(R.string.pref_reminder_night_mode_sound_value_default);
}
else if(key.equals(getString(R.string.PREF_REMINDER_WORK_MODE_SOUND_VALUE))) {
defaultValue = getString(R.string.pref_reminder_work_mode_sound_value_default);
}
String tone = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(key, defaultValue);
Uri sound = defaultUri;
if(tone != null) {
sound = Uri.parse(tone);
}
RingtonePreference ringtone = (RingtonePreference)findPreference(key);
if(ringtone != null) {
Ringtone notification = RingtoneManager.getRingtone(getActivity(), sound);
if(notification != null && (tone == null || tone.trim().length() > 0)) {
ringtone.setTitle(notification.getTitle(getActivity()));
}
else {
ringtone.setTitle(R.string.pref_reminder_no_sound);
}
}
}
else if(key.equals(getResources().getString(R.string.DAYS_TO_DOWNLOAD))
|| key.equals(getResources().getString(R.string.CHANNEL_LOGO_NAME_PROGRAMS_LIST))
|| key.equals(getResources().getString(R.string.CHANNEL_LOGO_NAME_PROGRAM_TABLE))
|| key.equals(getResources().getString(R.string.DETAIL_PICTURE_ZOOM))
|| key.equals(getResources().getString(R.string.TAB_TO_SHOW_AT_START))
|| key.equals(getResources().getString(R.string.PROG_PANEL_TIME_BLOCK_SIZE))
|| key.equals(getResources().getString(R.string.PREF_RUNNING_DIVIDER_SIZE))
|| key.equals(getResources().getString(R.string.PREF_PROGRAM_LISTS_VERTICAL_PADDING_SIZE))
|| key.equals(getResources().getString(R.string.PREF_PROGRAM_LISTS_DIVIDER_SIZE))
|| key.equals(getResources().getString(R.string.PREF_REMINDER_TIME))
|| key.equals(getResources().getString(R.string.PREF_REMINDER_TIME_SECOND))
|| key.equals(getResources().getString(R.string.DETAIL_TEXT_SCALE))
|| key.equals(getResources().getString(R.string.PREF_PROGRAM_LISTS_TEXT_SCALE))
|| key.equals(getResources().getString(R.string.PROG_TABLE_TEXT_SCALE))
|| key.equals(getResources().getString(R.string.PREF_AUTO_UPDATE_TYPE))
|| key.equals(getResources().getString(R.string.PREF_AUTO_UPDATE_RANGE))
|| key.equals(getResources().getString(R.string.PREF_AUTO_UPDATE_FREQUENCY))
|| key.equals(getResources().getString(R.string.CHANNEL_LOGO_NAME_RUNNING))
|| key.equals(getResources().getString(R.string.PREF_I_DONT_WANT_TO_SEE_FILTER_TYPE))
|| key.equals(getResources().getString(R.string.SHOW_DATE_FOR_PROGRAMS_LIST))
|| key.equals(getResources().getString(R.string.SHOW_CHANNEL_FOR_PROGRAMS_LIST))
|| key.equals(getResources().getString(R.string.CHANNEL_LOGO_NAME_PROGRAM_LISTS))
|| key.equals(getResources().getString(R.string.PREF_COLOR_STYLE))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_TEXT_SCALE))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_CHANNEL_LOGO_NAME))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_LISTS_DIVIDER_SIZE))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_VERTICAL_PADDING_SIZE))
|| key.equals(getResources().getString(R.string.PREF_FAVORITE_TAB_LAYOUT))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_BACKGROUND_TRANSPARENCY_HEADER))
|| key.equals(getResources().getString(R.string.PREF_WIDGET_BACKGROUND_TRANSPARENCY_LIST))
|| key.equals(getResources().getString(R.string.PREF_NEWS_TYPE))
|| key.equals(getResources().getString(R.string.DETAIL_PICTURE_DESCRIPTION_POSITION))
|| key.equals(getResources().getString(R.string.PREF_AUTO_CHANNEL_UPDATE_FREQUENCY))
|| key.equals(getResources().getString(R.string.PREF_DATABASE_PATH))
|| key.equals(getResources().getString(R.string.PREF_REMINDER_PRIORITY_VALUE))
|| key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_PRIORITY_VALUE))
|| key.equals(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_PRIORITY_VALUE))
|| key.equals(getResources().getString(R.string.PREF_EPGPAID_DOWNLOAD_MAX))
) {
ListPreference lp = (ListPreference) findPreference(key);
if(lp != null) {
lp.setSummary("dummy"); // required or will not update
String value = String.valueOf(lp.getEntry());
if(value.endsWith("%")) {
value += "%";
}
lp.setSummary(value);
}
if(key.equals(getResources().getString(R.string.PREF_WIDGET_LISTS_DIVIDER_SIZE)) ||
key.equals(getResources().getString(R.string.PREF_WIDGET_VERTICAL_PADDING_SIZE)) ||
key.equals(getResources().getString(R.string.PREF_WIDGET_BACKGROUND_TRANSPARENCY_HEADER)) ||
key.equals(getResources().getString(R.string.PREF_WIDGET_BACKGROUND_TRANSPARENCY_LIST))) {
UiUtils.reloadWidgets(getActivity());
}
if(key.equals(getResources().getString(R.string.PREF_COLOR_STYLE))) {
ListPreference currentStyle = (ListPreference)findPreference(key);
CheckBoxPreference showProgress = (CheckBoxPreference) findPreference(getString(R.string.PREF_SHOW_PROGRESS));
PreferenceColorActivated onAirBackground = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_ON_AIR_BACKGROUND));
PreferenceColorActivated onAirProgress = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_ON_AIR_PROGRESS));
PreferenceColorActivated marked = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_MARKED));
PreferenceColorActivated markedFavorite = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_FAVORITE));
PreferenceColorActivated markedReminder = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_REMINDER));
PreferenceColorActivated markedSync = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_SYNC));
if(onAirBackground != null && onAirProgress != null && marked != null && markedFavorite != null
&& markedReminder != null && markedSync != null && showProgress != null) {
int currentStyleValue = 0;
if(currentStyle != null && currentStyle.getValue() != null) {
currentStyleValue = Integer.parseInt(currentStyle.getValue());
}
final Context context = getActivity();
if(currentStyleValue == 1) {
int color = ContextCompat.getColor(context, R.color.pref_color_on_air_background_tvb_style_default);
onAirBackground.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_on_air_progress_tvb_style_default);
onAirProgress.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_tvb_style_default);
marked.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_favorite_tvb_style_default);
markedFavorite.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_reminder_tvb_style_default);
markedReminder.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_sync_tvb_style_favorite_default);
markedSync.setColors(color, color);
if(sharedPreferences.getInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_glow_style_default)) == ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_glow_style_default)) {
Editor edit = (Editor)sharedPreferences.edit();
edit.putInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_tvb_style_default));
edit.commit();
}
}
else if(currentStyleValue == 2) {
int color = ContextCompat.getColor(context, R.color.pref_color_on_air_background_glow_style_default);
onAirBackground.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_on_air_progress_glow_style_default);
onAirProgress.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_glow_style_default);
marked.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_favorite_glow_style_default);
markedFavorite.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_reminder_glow_style_default);
markedReminder.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_sync_glow_style_favorite_default);
markedSync.setColors(color, color);
if(sharedPreferences.getInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_tvb_style_default)) == ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_tvb_style_default)) {
Editor edit = (Editor)sharedPreferences.edit();
edit.putInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_glow_style_default));
edit.commit();
}
}
else if(currentStyleValue == 3) {
int color = ContextCompat.getColor(context, R.color.pref_color_on_air_background_decent_dark_style_default);
onAirBackground.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_on_air_progress_decent_dark_style_default);
onAirProgress.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_decent_dark_style_default);
marked.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_favorite_decent_dark_style_default);
markedFavorite.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_reminder_decent_dark_style_default);
markedReminder.setColors(color, color);
color = ContextCompat.getColor(context, R.color.pref_color_mark_sync_decent_dark_style_favorite_default);
markedSync.setColors(color, color);
if(sharedPreferences.getInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_tvb_style_default)) == ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_tvb_style_default)) {
Editor edit = (Editor)sharedPreferences.edit();
edit.putInt(getString(R.string.PREF_RUNNING_TIME_SELECTION), ContextCompat.getColor(context, R.color.pref_color_running_time_selection_background_decent_dark_style_default));
edit.commit();
}
}
else if(currentStyleValue == 0) {
int color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_ON_AIR_BACKGROUND_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_on_air_background_tvb_style_default));
onAirBackground.setColors(color, color);
color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_ON_AIR_PROGRESS_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_on_air_progress_tvb_style_default));
onAirProgress.setColors(color, color);
color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_MARKED_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_mark_tvb_style_default));
marked.setColors(color, color);
color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_FAVORITE_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_mark_favorite_tvb_style_default));
markedFavorite.setColors(color, color);
color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_REMINDER_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_mark_reminder_tvb_style_default));
markedReminder.setColors(color, color);
color = sharedPreferences.getInt(getString(R.string.PREF_COLOR_SYNC_USER_DEFINED), ContextCompat.getColor(context, R.color.pref_color_mark_sync_tvb_style_favorite_default));
markedSync.setColors(color, color);
}
onAirBackground.setEnabled(currentStyle.getValue().equals("0") && showProgress.isChecked());
onAirProgress.setEnabled(onAirBackground.isEnabled());
marked.setEnabled(currentStyle.getValue().equals("0"));
markedFavorite.setEnabled(marked.isEnabled());
markedReminder.setEnabled(marked.isEnabled());
markedSync.setEnabled(marked.isEnabled());
}
}
else if(key.equals(getString(R.string.PREF_REMINDER_TIME)) || key.equals(getString(R.string.PREF_REMINDER_TIME_SECOND))) {
ListPreference reminderTime = (ListPreference) findPreference(getString(R.string.PREF_REMINDER_TIME));
ListPreference reminderTimeSecond = (ListPreference) findPreference(getString(R.string.PREF_REMINDER_TIME_SECOND));
if(reminderTime != null && reminderTimeSecond != null
&& reminderTime.getValue() != null && reminderTimeSecond.getValue() != null
&& reminderTime.getValue().equals(reminderTimeSecond.getValue())) {
reminderTimeSecond.setValue(getString(R.string.pref_reminder_time_second_default));
}
}
else if(key.equals(getResources().getString(R.string.PREF_AUTO_UPDATE_TYPE))) {
ListPreference type = (ListPreference)findPreference(getResources().getString(R.string.PREF_AUTO_UPDATE_TYPE));
ListPreference range = (ListPreference)findPreference(getResources().getString(R.string.PREF_AUTO_UPDATE_RANGE));
ListPreference frequency = (ListPreference)findPreference(getResources().getString(R.string.PREF_AUTO_UPDATE_FREQUENCY));
CheckBoxPreference wifi = (CheckBoxPreference)findPreference(getResources().getString(R.string.PREF_AUTO_UPDATE_ONLY_WIFI));
TimePreference startTime = (TimePreference)findPreference(getResources().getString(R.string.PREF_AUTO_UPDATE_START_TIME));
if(type != null) {
boolean noAutoUpdate = type.getValue().equals("0");
boolean timeRange = type.getValue().equals("2");
range.setEnabled(!noAutoUpdate);
frequency.setEnabled(!noAutoUpdate);
wifi.setEnabled(!noAutoUpdate);
startTime.setEnabled(timeRange);
}
}
else if(key.equals(getResources().getString(R.string.PREF_I_DONT_WANT_TO_SEE_FILTER_TYPE))) {
ListPreference dontWantToSeeType = (ListPreference)findPreference(key);
if(dontWantToSeeType != null) {
findPreference(getResources().getString(R.string.PREF_I_DONT_WANT_TO_SEE_HIGHLIGHT_COLOR)).setEnabled(dontWantToSeeType.getValue().equals(getResources().getStringArray(R.array.pref_simple_string_value_array2)[1]));
}
}
}
else if(key.equals(getString(R.string.PREF_COLOR_ON_AIR_BACKGROUND))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_ON_AIR_BACKGROUND_USER_DEFINED);
}
else if(key.equals(getString(R.string.PREF_COLOR_ON_AIR_PROGRESS))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_ON_AIR_PROGRESS_USER_DEFINED);
}
else if(key.equals(getString(R.string.PREF_COLOR_MARKED))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_MARKED_USER_DEFINED);
}
else if(key.equals(getString(R.string.PREF_COLOR_FAVORITE))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_FAVORITE_USER_DEFINED);
}
else if(key.equals(getString(R.string.PREF_COLOR_REMINDER))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_REMINDER_USER_DEFINED);
}
else if(key.equals(getString(R.string.PREF_COLOR_SYNC))) {
setUserColorValue(sharedPreferences,key,R.string.PREF_COLOR_SYNC_USER_DEFINED);
}
else if(key.equals(getResources().getString(R.string.PROG_TABLE_ACTIVATED))) {
CheckBoxPreference progTable = (CheckBoxPreference) findPreference(key);
CheckBoxPreference progTableDelayed = (CheckBoxPreference) findPreference(getString(R.string.PROG_TABLE_DELAYED));
ListPreference blockSize = (ListPreference) findPreference(getResources().getString(R.string.PROG_PANEL_TIME_BLOCK_SIZE));
CheckBoxPreference spreadOverBlocks = (CheckBoxPreference) findPreference(getResources().getString(R.string.PROG_PANEL_GROW));
ListPreference channelLogoName = (ListPreference) findPreference(getResources().getString(R.string.CHANNEL_LOGO_NAME_PROGRAM_TABLE));
ListPreference layout = (ListPreference) findPreference(getResources().getString(R.string.PROG_TABLE_LAYOUT));
CheckBoxPreference pictures = (CheckBoxPreference) findPreference(getResources().getString(R.string.SHOW_PICTURE_IN_PROGRAM_TABLE));
CheckBoxPreference genre = (CheckBoxPreference) findPreference(getResources().getString(R.string.SHOW_GENRE_IN_PROGRAM_TABLE));
CheckBoxPreference episode = (CheckBoxPreference) findPreference(getResources().getString(R.string.SHOW_EPISODE_IN_PROGRAM_TABLE));
CheckBoxPreference infos = (CheckBoxPreference) findPreference(getResources().getString(R.string.SHOW_INFO_IN_PROGRAM_TABLE));
CheckBoxPreference showOrderNumber = (CheckBoxPreference) findPreference(getResources().getString(R.string.SHOW_SORT_NUMBER_IN_PROGRAM_TABLE));
ListPreference zoomText = (ListPreference) findPreference(getResources().getString(R.string.PROG_TABLE_TEXT_SCALE));
ColumnWidthPreference columnWidth = (ColumnWidthPreference) findPreference(getResources().getString(R.string.PROG_TABLE_COLUMN_WIDTH));
boolean isTimeBlock = layout == null || layout.getValue() == null || layout.getValue().equals("0");
if(progTable != null) {
if(progTable.isChecked()) {
AlertDialog.Builder warning = new AlertDialog.Builder(getActivity());
warning.setTitle(R.string.warning_title);
warning.setMessage(R.string.pref_prog_table_activation_warning);
warning.setPositiveButton(android.R.string.ok, null);
warning.show();
}
if(progTableDelayed != null) {
progTableDelayed.setEnabled(progTable.isChecked());
}
if(layout != null) {
layout.setEnabled(progTable.isChecked());
}
if(blockSize != null) {
blockSize.setEnabled(progTable.isChecked() && isTimeBlock);
}
if(spreadOverBlocks != null) {
spreadOverBlocks.setEnabled(progTable.isChecked() && isTimeBlock);
}
if(channelLogoName != null) {
channelLogoName.setEnabled(progTable.isChecked());
}
if(pictures != null) {
pictures.setEnabled(progTable.isChecked());
}
if(columnWidth != null) {
columnWidth.setEnabled(progTable.isChecked());
}
if(episode != null) {
episode.setEnabled(progTable.isChecked());
}
if(genre != null) {
genre.setEnabled(progTable.isChecked());
}
if(infos != null) {
infos.setEnabled(progTable.isChecked());
}
if(showOrderNumber != null) {
showOrderNumber.setEnabled(progTable.isChecked());
}
if(zoomText != null) {
zoomText.setEnabled(progTable.isChecked());
}
}
}
else if(key.equals(getResources().getString(R.string.PROG_TABLE_LAYOUT))) {
ListPreference layout = (ListPreference) findPreference(key);
CheckBoxPreference progTable = (CheckBoxPreference) findPreference(getResources().getString(R.string.PROG_TABLE_ACTIVATED));
ListPreference blockSize = (ListPreference) findPreference(getResources().getString(R.string.PROG_PANEL_TIME_BLOCK_SIZE));
CheckBoxPreference spreadOverBlocks = (CheckBoxPreference) findPreference(getResources().getString(R.string.PROG_PANEL_GROW));
boolean isTimeBlock = layout == null || layout.getValue() == null || layout.getValue().equals("0");
if(layout != null) {
if(blockSize != null) {
blockSize.setEnabled(progTable.isChecked() && isTimeBlock);
}
if(spreadOverBlocks != null) {
spreadOverBlocks.setEnabled(progTable.isChecked() && isTimeBlock);
}
}
}
else if(key.equals(getResources().getString(R.string.SHOW_PICTURE_IN_DETAILS))) {
CheckBoxPreference picturesInDetails = (CheckBoxPreference) findPreference(key);
ListPreference pictureZoom = (ListPreference) findPreference(getResources().getString(R.string.DETAIL_PICTURE_ZOOM));
ListPreference pictureDescPos = (ListPreference)findPreference(getString(R.string.DETAIL_PICTURE_DESCRIPTION_POSITION));
if(picturesInDetails != null && pictureZoom != null && pictureDescPos != null) {
pictureZoom.setEnabled(picturesInDetails.isChecked());
pictureDescPos.setEnabled(picturesInDetails.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_ACTIVATED)) || key.equals(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_NO_REMINDER))) {
CheckBoxPreference nightModeActivatedPref = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_ACTIVATED));
CheckBoxPreference noReminder = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_NO_REMINDER));
ListPreference priority = (ListPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_PRIORITY_VALUE));
RingtonePreference sound = (RingtonePreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_SOUND_VALUE));
CheckBoxPreference vibrate = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_VIBRATE));
CheckBoxPreference led = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_LED));
TimePreference start = (TimePreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_START));
TimePreference end = (TimePreference) findPreference(getResources().getString(R.string.PREF_REMINDER_NIGHT_MODE_END));
if(nightModeActivatedPref != null && noReminder != null) {
boolean nightMode = nightModeActivatedPref.isChecked();
boolean onlyStatus = noReminder.isChecked();
noReminder.setEnabled(nightMode);
start.setEnabled(nightMode);
end.setEnabled(nightMode);
priority.setEnabled(nightMode && !onlyStatus);
sound.setEnabled(nightMode && !onlyStatus);
vibrate.setEnabled(nightMode && !onlyStatus);
led.setEnabled(nightMode && !onlyStatus);
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_ACTIVATED)) || key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_NO_REMINDER))) {
CheckBoxPreference nightModeActivatedPref = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_ACTIVATED));
CheckBoxPreference noReminder = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_NO_REMINDER));
ListPreference priority = (ListPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_PRIORITY_VALUE));
RingtonePreference sound = (RingtonePreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_SOUND_VALUE));
CheckBoxPreference vibrate = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_VIBRATE));
CheckBoxPreference led = (CheckBoxPreference) findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_LED));
PreferenceScreen days = (PreferenceScreen)findPreference(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_DAYS));
if(nightModeActivatedPref != null && noReminder != null) {
boolean nightMode = nightModeActivatedPref.isChecked();
boolean onlyStatus = noReminder.isChecked();
noReminder.setEnabled(nightMode);
days.setEnabled(nightMode);
priority.setEnabled(nightMode && !onlyStatus);
sound.setEnabled(nightMode && !onlyStatus);
vibrate.setEnabled(nightMode && !onlyStatus);
led.setEnabled(nightMode && !onlyStatus);
}
if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_ACTIVATED))) {
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_MONDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_TUESDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_WEDNESDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_THURSDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_FRIDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_SATURDAY_ACTIVATED));
onSharedPreferenceChanged(null,getResources().getString(R.string.PREF_REMINDER_WORK_MODE_SUNDAY_ACTIVATED));
}
}
else if(key.equals(getResources().getString(R.string.PREF_SHOW_PROGRESS))) {
CheckBoxPreference showProgress = (CheckBoxPreference) findPreference(key);
ListPreference currentStyle = (ListPreference)findPreference(getString(R.string.PREF_COLOR_STYLE));
PreferenceColorActivated onAirBackground = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_ON_AIR_BACKGROUND));
PreferenceColorActivated onAirProgress = (PreferenceColorActivated)findPreference(getString(R.string.PREF_COLOR_ON_AIR_PROGRESS));
if(showProgress != null) {
if(onAirBackground != null) {
onAirBackground.setEnabled(showProgress.isChecked() && currentStyle.getValue().equals("0"));
}
if(onAirProgress != null) {
onAirProgress.setEnabled(showProgress.isChecked() && currentStyle.getValue().equals("0"));
}
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_MONDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_MONDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_MONDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_TUESDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_TUESDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_TUESDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_WEDNESDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_WEDNESDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_WEDNESDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_THURSDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_THURSDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_THURSDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_FRIDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_FRIDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_FRIDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_SATURDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_SATURDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_SATURDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getResources().getString(R.string.PREF_REMINDER_WORK_MODE_SUNDAY_ACTIVATED))) {
CheckBoxPreference activated = (CheckBoxPreference) findPreference(key);
TimePreference start = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_SUNDAY_START));
TimePreference end = (TimePreference) findPreference(getString(R.string.PREF_REMINDER_WORK_MODE_SUNDAY_END));
if(activated != null) {
start.setEnabled(activated.isChecked());
end.setEnabled(activated.isChecked());
}
}
else if(key.equals(getString(R.string.PREF_REMINDER_AS_ALARM_CLOCK))) {
ServiceUpdateReminders.startReminderUpdate(getActivity().getApplicationContext());
IOUtils.setDataTableRefreshTime(getActivity().getApplicationContext());
}
}
}
private void setUserColorValue(SharedPreferences pref, String key, int valueKey) {
ListPreference currentStyle = (ListPreference)findPreference(getString(R.string.PREF_COLOR_STYLE));
PreferenceColorActivated color = (PreferenceColorActivated)findPreference(key);
if(currentStyle != null && currentStyle.getValue() != null && currentStyle.getValue().equals("0")) {
Editor edit = pref.edit();
edit.putInt(getString(valueKey), color.getColor());
edit.commit();
}
}
}