604 lines
26 KiB
Java
604 lines
26 KiB
Java
/*
|
|
* Copyright 2014 A.C.R. Development
|
|
*/
|
|
package acr.browser.lightning.fragment;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Dialog;
|
|
import android.content.DialogInterface;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Environment;
|
|
import android.preference.CheckBoxPreference;
|
|
import android.preference.Preference;
|
|
import android.support.annotation.NonNull;
|
|
import android.support.v4.content.ContextCompat;
|
|
import android.support.v7.app.AlertDialog;
|
|
import android.text.Editable;
|
|
import android.text.InputFilter;
|
|
import android.text.TextWatcher;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.EditText;
|
|
import android.widget.LinearLayout;
|
|
|
|
import acr.browser.lightning.R;
|
|
import acr.browser.lightning.constant.Constants;
|
|
import acr.browser.lightning.dialog.BrowserDialog;
|
|
import acr.browser.lightning.download.DownloadHandler;
|
|
import acr.browser.lightning.utils.ProxyUtils;
|
|
import acr.browser.lightning.utils.ThemeUtils;
|
|
import acr.browser.lightning.utils.Utils;
|
|
|
|
public class GeneralSettingsFragment extends LightningPreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
|
|
|
|
private static final String SETTINGS_PROXY = "proxy";
|
|
private static final String SETTINGS_FLASH = "cb_flash";
|
|
private static final String SETTINGS_ADS = "cb_ads";
|
|
private static final String SETTINGS_IMAGES = "cb_images";
|
|
private static final String SETTINGS_JAVASCRIPT = "cb_javascript";
|
|
private static final String SETTINGS_COLORMODE = "cb_colormode";
|
|
private static final String SETTINGS_USERAGENT = "agent";
|
|
private static final String SETTINGS_DOWNLOAD = "download";
|
|
private static final String SETTINGS_HOME = "home";
|
|
private static final String SETTINGS_SEARCHENGINE = "search";
|
|
private static final String SETTINGS_GOOGLESUGGESTIONS = "google_suggestions";
|
|
private Activity mActivity;
|
|
private static final int API = android.os.Build.VERSION.SDK_INT;
|
|
private CharSequence[] mProxyChoices;
|
|
private Preference proxy, useragent, downloadloc, home, searchengine;
|
|
private String mDownloadLocation;
|
|
private int mAgentChoice;
|
|
private String mHomepage;
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
// Load the preferences from an XML resource
|
|
addPreferencesFromResource(R.xml.preference_general);
|
|
|
|
mActivity = getActivity();
|
|
|
|
initPrefs();
|
|
}
|
|
|
|
private void initPrefs() {
|
|
proxy = findPreference(SETTINGS_PROXY);
|
|
useragent = findPreference(SETTINGS_USERAGENT);
|
|
downloadloc = findPreference(SETTINGS_DOWNLOAD);
|
|
home = findPreference(SETTINGS_HOME);
|
|
searchengine = findPreference(SETTINGS_SEARCHENGINE);
|
|
|
|
CheckBoxPreference cbFlash = (CheckBoxPreference) findPreference(SETTINGS_FLASH);
|
|
CheckBoxPreference cbAds = (CheckBoxPreference) findPreference(SETTINGS_ADS);
|
|
CheckBoxPreference cbImages = (CheckBoxPreference) findPreference(SETTINGS_IMAGES);
|
|
CheckBoxPreference cbJsScript = (CheckBoxPreference) findPreference(SETTINGS_JAVASCRIPT);
|
|
CheckBoxPreference cbColorMode = (CheckBoxPreference) findPreference(SETTINGS_COLORMODE);
|
|
CheckBoxPreference cbgooglesuggest = (CheckBoxPreference) findPreference(SETTINGS_GOOGLESUGGESTIONS);
|
|
|
|
proxy.setOnPreferenceClickListener(this);
|
|
useragent.setOnPreferenceClickListener(this);
|
|
downloadloc.setOnPreferenceClickListener(this);
|
|
home.setOnPreferenceClickListener(this);
|
|
searchengine.setOnPreferenceClickListener(this);
|
|
cbFlash.setOnPreferenceChangeListener(this);
|
|
cbAds.setOnPreferenceChangeListener(this);
|
|
cbImages.setOnPreferenceChangeListener(this);
|
|
cbJsScript.setOnPreferenceChangeListener(this);
|
|
cbColorMode.setOnPreferenceChangeListener(this);
|
|
cbgooglesuggest.setOnPreferenceChangeListener(this);
|
|
|
|
mAgentChoice = mPreferenceManager.getUserAgentChoice();
|
|
mHomepage = mPreferenceManager.getHomepage();
|
|
mDownloadLocation = mPreferenceManager.getDownloadDirectory();
|
|
mProxyChoices = getResources().getStringArray(R.array.proxy_choices_array);
|
|
|
|
int choice = mPreferenceManager.getProxyChoice();
|
|
if (choice == Constants.PROXY_MANUAL) {
|
|
proxy.setSummary(mPreferenceManager.getProxyHost() + ':' + mPreferenceManager.getProxyPort());
|
|
} else {
|
|
proxy.setSummary(mProxyChoices[choice]);
|
|
}
|
|
|
|
if (API >= Build.VERSION_CODES.KITKAT) {
|
|
mPreferenceManager.setFlashSupport(0);
|
|
}
|
|
|
|
setSearchEngineSummary(mPreferenceManager.getSearchChoice());
|
|
|
|
downloadloc.setSummary(mDownloadLocation);
|
|
|
|
if (mHomepage.contains("about:home")) {
|
|
home.setSummary(getResources().getString(R.string.action_homepage));
|
|
} else if (mHomepage.contains("about:blank")) {
|
|
home.setSummary(getResources().getString(R.string.action_blank));
|
|
} else if (mHomepage.contains("about:bookmarks")) {
|
|
home.setSummary(getResources().getString(R.string.action_bookmarks));
|
|
} else {
|
|
home.setSummary(mHomepage);
|
|
}
|
|
|
|
switch (mAgentChoice) {
|
|
case 1:
|
|
useragent.setSummary(getResources().getString(R.string.agent_default));
|
|
break;
|
|
case 2:
|
|
useragent.setSummary(getResources().getString(R.string.agent_desktop));
|
|
break;
|
|
case 3:
|
|
useragent.setSummary(getResources().getString(R.string.agent_mobile));
|
|
break;
|
|
case 4:
|
|
useragent.setSummary(getResources().getString(R.string.agent_custom));
|
|
}
|
|
|
|
int flashNum = mPreferenceManager.getFlashSupport();
|
|
boolean imagesBool = mPreferenceManager.getBlockImagesEnabled();
|
|
boolean enableJSBool = mPreferenceManager.getJavaScriptEnabled();
|
|
|
|
cbAds.setEnabled(Constants.FULL_VERSION);
|
|
cbFlash.setEnabled(API < Build.VERSION_CODES.KITKAT);
|
|
|
|
cbImages.setChecked(imagesBool);
|
|
cbJsScript.setChecked(enableJSBool);
|
|
cbFlash.setChecked(flashNum > 0);
|
|
cbAds.setChecked(Constants.FULL_VERSION && mPreferenceManager.getAdBlockEnabled());
|
|
cbColorMode.setChecked(mPreferenceManager.getColorModeEnabled());
|
|
cbgooglesuggest.setChecked(mPreferenceManager.getGoogleSearchSuggestionsEnabled());
|
|
}
|
|
|
|
private void searchUrlPicker() {
|
|
final AlertDialog.Builder urlPicker = new AlertDialog.Builder(mActivity);
|
|
urlPicker.setTitle(getResources().getString(R.string.custom_url));
|
|
final EditText getSearchUrl = new EditText(mActivity);
|
|
String mSearchUrl = mPreferenceManager.getSearchUrl();
|
|
getSearchUrl.setText(mSearchUrl);
|
|
urlPicker.setView(getSearchUrl);
|
|
urlPicker.setPositiveButton(getResources().getString(R.string.action_ok),
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
String text = getSearchUrl.getText().toString();
|
|
mPreferenceManager.setSearchUrl(text);
|
|
searchengine.setSummary(getResources().getString(R.string.custom_url) + ": "
|
|
+ text);
|
|
}
|
|
});
|
|
Dialog dialog = urlPicker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void getFlashChoice() {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
|
|
builder.setTitle(mActivity.getResources().getString(R.string.title_flash));
|
|
builder.setMessage(getResources().getString(R.string.flash))
|
|
.setCancelable(true)
|
|
.setPositiveButton(getResources().getString(R.string.action_manual),
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int id) {
|
|
mPreferenceManager.setFlashSupport(1);
|
|
}
|
|
})
|
|
.setNegativeButton(getResources().getString(R.string.action_auto),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
mPreferenceManager.setFlashSupport(2);
|
|
}
|
|
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
|
|
|
|
@Override
|
|
public void onCancel(DialogInterface dialog) {
|
|
mPreferenceManager.setFlashSupport(0);
|
|
}
|
|
|
|
});
|
|
AlertDialog alert = builder.create();
|
|
alert.show();
|
|
BrowserDialog.setDialogSize(mActivity, alert);
|
|
}
|
|
|
|
private void proxyChoicePicker() {
|
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
|
|
picker.setTitle(getResources().getString(R.string.http_proxy));
|
|
picker.setSingleChoiceItems(mProxyChoices, mPreferenceManager.getProxyChoice(),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
setProxyChoice(which);
|
|
}
|
|
});
|
|
picker.setPositiveButton(getResources().getString(R.string.action_ok), null);
|
|
Dialog dialog = picker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void setProxyChoice(int choice) {
|
|
switch (choice) {
|
|
case Constants.PROXY_ORBOT:
|
|
choice = ProxyUtils.setProxyChoice(choice, mActivity);
|
|
break;
|
|
case Constants.PROXY_I2P:
|
|
choice = ProxyUtils.setProxyChoice(choice, mActivity);
|
|
break;
|
|
case Constants.PROXY_MANUAL:
|
|
manualProxyPicker();
|
|
break;
|
|
}
|
|
|
|
mPreferenceManager.setProxyChoice(choice);
|
|
if (choice < mProxyChoices.length)
|
|
proxy.setSummary(mProxyChoices[choice]);
|
|
}
|
|
|
|
private void manualProxyPicker() {
|
|
View v = mActivity.getLayoutInflater().inflate(R.layout.picker_manual_proxy, null);
|
|
final EditText eProxyHost = (EditText) v.findViewById(R.id.proxyHost);
|
|
final EditText eProxyPort = (EditText) v.findViewById(R.id.proxyPort);
|
|
|
|
// Limit the number of characters since the port needs to be of type int
|
|
// Use input filters to limite the EditText length and determine the max
|
|
// length by using length of integer MAX_VALUE
|
|
int maxCharacters = Integer.toString(Integer.MAX_VALUE).length();
|
|
InputFilter[] filterArray = new InputFilter[1];
|
|
filterArray[0] = new InputFilter.LengthFilter(maxCharacters - 1);
|
|
eProxyPort.setFilters(filterArray);
|
|
|
|
eProxyHost.setText(mPreferenceManager.getProxyHost());
|
|
eProxyPort.setText(Integer.toString(mPreferenceManager.getProxyPort()));
|
|
|
|
Dialog dialog = new AlertDialog.Builder(mActivity)
|
|
.setTitle(R.string.manual_proxy)
|
|
.setView(v)
|
|
.setPositiveButton(R.string.action_ok, new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialogInterface, int i) {
|
|
String proxyHost = eProxyHost.getText().toString();
|
|
int proxyPort;
|
|
try {
|
|
// Try/Catch in case the user types an empty string or a number
|
|
// larger than max integer
|
|
proxyPort = Integer.parseInt(eProxyPort.getText().toString());
|
|
} catch (NumberFormatException ignored) {
|
|
proxyPort = mPreferenceManager.getProxyPort();
|
|
}
|
|
mPreferenceManager.setProxyHost(proxyHost);
|
|
mPreferenceManager.setProxyPort(proxyPort);
|
|
proxy.setSummary(proxyHost + ':' + proxyPort);
|
|
}
|
|
}).show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void searchDialog() {
|
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
|
|
picker.setTitle(getResources().getString(R.string.title_search_engine));
|
|
CharSequence[] chars = {getResources().getString(R.string.custom_url), "Google",
|
|
"Ask", "Bing", "Yahoo", "StartPage", "StartPage (Mobile)",
|
|
"DuckDuckGo (Privacy)", "DuckDuckGo Lite (Privacy)", "Baidu (Chinese)",
|
|
"Yandex (Russian)"};
|
|
|
|
int n = mPreferenceManager.getSearchChoice();
|
|
|
|
picker.setSingleChoiceItems(chars, n, new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
mPreferenceManager.setSearchChoice(which);
|
|
setSearchEngineSummary(which);
|
|
}
|
|
});
|
|
picker.setPositiveButton(getResources().getString(R.string.action_ok), null);
|
|
Dialog dialog = picker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void homepageDialog() {
|
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
|
|
picker.setTitle(getResources().getString(R.string.home));
|
|
mHomepage = mPreferenceManager.getHomepage();
|
|
int n;
|
|
if (mHomepage.contains("about:home")) {
|
|
n = 1;
|
|
} else if (mHomepage.contains("about:blank")) {
|
|
n = 2;
|
|
} else if (mHomepage.contains("about:bookmarks")) {
|
|
n = 3;
|
|
} else {
|
|
n = 4;
|
|
}
|
|
|
|
picker.setSingleChoiceItems(R.array.homepage, n - 1,
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
switch (which + 1) {
|
|
case 1:
|
|
mPreferenceManager.setHomepage("about:home");
|
|
home.setSummary(getResources().getString(R.string.action_homepage));
|
|
break;
|
|
case 2:
|
|
mPreferenceManager.setHomepage("about:blank");
|
|
home.setSummary(getResources().getString(R.string.action_blank));
|
|
break;
|
|
case 3:
|
|
mPreferenceManager.setHomepage("about:bookmarks");
|
|
home.setSummary(getResources().getString(R.string.action_bookmarks));
|
|
break;
|
|
case 4:
|
|
homePicker();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
picker.setPositiveButton(getResources().getString(R.string.action_ok), null);
|
|
Dialog dialog = picker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void homePicker() {
|
|
final AlertDialog.Builder homePicker = new AlertDialog.Builder(mActivity);
|
|
homePicker.setTitle(getResources().getString(R.string.title_custom_homepage));
|
|
final EditText getHome = new EditText(mActivity);
|
|
mHomepage = mPreferenceManager.getHomepage();
|
|
if (!mHomepage.startsWith("about:")) {
|
|
getHome.setText(mHomepage);
|
|
} else {
|
|
String defaultUrl = "https://www.google.com";
|
|
getHome.setText(defaultUrl);
|
|
}
|
|
homePicker.setView(getHome);
|
|
homePicker.setPositiveButton(getResources().getString(R.string.action_ok),
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
String text = getHome.getText().toString();
|
|
mPreferenceManager.setHomepage(text);
|
|
home.setSummary(text);
|
|
}
|
|
});
|
|
Dialog dialog = homePicker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void downloadLocDialog() {
|
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
|
|
picker.setTitle(getResources().getString(R.string.title_download_location));
|
|
mDownloadLocation = mPreferenceManager.getDownloadDirectory();
|
|
int n;
|
|
if (mDownloadLocation.contains(Environment.DIRECTORY_DOWNLOADS)) {
|
|
n = 0;
|
|
} else {
|
|
n = 1;
|
|
}
|
|
|
|
picker.setSingleChoiceItems(R.array.download_folder, n,
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
switch (which) {
|
|
case 0:
|
|
mPreferenceManager.setDownloadDirectory(DownloadHandler.DEFAULT_DOWNLOAD_PATH);
|
|
downloadloc.setSummary(DownloadHandler.DEFAULT_DOWNLOAD_PATH);
|
|
break;
|
|
case 1:
|
|
downPicker();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
picker.setPositiveButton(getResources().getString(R.string.action_ok), null);
|
|
Dialog dialog = picker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void agentDialog() {
|
|
AlertDialog.Builder agentPicker = new AlertDialog.Builder(mActivity);
|
|
agentPicker.setTitle(getResources().getString(R.string.title_user_agent));
|
|
mAgentChoice = mPreferenceManager.getUserAgentChoice();
|
|
agentPicker.setSingleChoiceItems(R.array.user_agent, mAgentChoice - 1,
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
mPreferenceManager.setUserAgentChoice(which + 1);
|
|
switch (which + 1) {
|
|
case 1:
|
|
useragent.setSummary(getResources().getString(R.string.agent_default));
|
|
break;
|
|
case 2:
|
|
useragent.setSummary(getResources().getString(R.string.agent_desktop));
|
|
break;
|
|
case 3:
|
|
useragent.setSummary(getResources().getString(R.string.agent_mobile));
|
|
break;
|
|
case 4:
|
|
useragent.setSummary(getResources().getString(R.string.agent_custom));
|
|
agentPicker();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
agentPicker.setPositiveButton(getResources().getString(R.string.action_ok), null);
|
|
Dialog dialog = agentPicker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void agentPicker() {
|
|
final AlertDialog.Builder agentStringPicker = new AlertDialog.Builder(mActivity);
|
|
agentStringPicker.setTitle(getResources().getString(R.string.title_user_agent));
|
|
final EditText getAgent = new EditText(mActivity);
|
|
agentStringPicker.setView(getAgent);
|
|
agentStringPicker.setPositiveButton(getResources().getString(R.string.action_ok),
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
String text = getAgent.getText().toString();
|
|
mPreferenceManager.setUserAgentString(text);
|
|
useragent.setSummary(getResources().getString(R.string.agent_custom));
|
|
}
|
|
});
|
|
Dialog dialog = agentStringPicker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void downPicker() {
|
|
final AlertDialog.Builder downLocationPicker = new AlertDialog.Builder(mActivity);
|
|
LinearLayout layout = new LinearLayout(mActivity);
|
|
downLocationPicker.setTitle(getResources().getString(R.string.title_download_location));
|
|
final EditText getDownload = new EditText(mActivity);
|
|
getDownload.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
|
ViewGroup.LayoutParams.WRAP_CONTENT));
|
|
getDownload.setText(mPreferenceManager.getDownloadDirectory());
|
|
final int errorColor = ContextCompat.getColor(getActivity(), R.color.error_red);
|
|
final int regularColor = ThemeUtils.getTextColor(getActivity());
|
|
getDownload.setTextColor(regularColor);
|
|
getDownload.addTextChangedListener(new DownloadLocationTextWatcher(getDownload, errorColor, regularColor));
|
|
getDownload.setText(mPreferenceManager.getDownloadDirectory());
|
|
|
|
layout.addView(getDownload);
|
|
downLocationPicker.setView(layout);
|
|
downLocationPicker.setPositiveButton(getResources().getString(R.string.action_ok),
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
String text = getDownload.getText().toString();
|
|
text = DownloadHandler.addNecessarySlashes(text);
|
|
mPreferenceManager.setDownloadDirectory(text);
|
|
downloadloc.setSummary(text);
|
|
}
|
|
});
|
|
Dialog dialog = downLocationPicker.show();
|
|
BrowserDialog.setDialogSize(mActivity, dialog);
|
|
}
|
|
|
|
private void setSearchEngineSummary(int which) {
|
|
switch (which) {
|
|
case 0:
|
|
searchUrlPicker();
|
|
break;
|
|
case 1:
|
|
searchengine.setSummary("Google");
|
|
break;
|
|
case 2:
|
|
searchengine.setSummary("Ask");
|
|
break;
|
|
case 3:
|
|
searchengine.setSummary("Bing");
|
|
break;
|
|
case 4:
|
|
searchengine.setSummary("Yahoo");
|
|
break;
|
|
case 5:
|
|
searchengine.setSummary("StartPage");
|
|
break;
|
|
case 6:
|
|
searchengine.setSummary("StartPage (Mobile)");
|
|
break;
|
|
case 7:
|
|
searchengine.setSummary("DuckDuckGo");
|
|
break;
|
|
case 8:
|
|
searchengine.setSummary("DuckDuckGo Lite");
|
|
break;
|
|
case 9:
|
|
searchengine.setSummary("Baidu");
|
|
break;
|
|
case 10:
|
|
searchengine.setSummary("Yandex");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onPreferenceClick(@NonNull Preference preference) {
|
|
switch (preference.getKey()) {
|
|
case SETTINGS_PROXY:
|
|
proxyChoicePicker();
|
|
return true;
|
|
case SETTINGS_USERAGENT:
|
|
agentDialog();
|
|
return true;
|
|
case SETTINGS_DOWNLOAD:
|
|
downloadLocDialog();
|
|
return true;
|
|
case SETTINGS_HOME:
|
|
homepageDialog();
|
|
return true;
|
|
case SETTINGS_SEARCHENGINE:
|
|
searchDialog();
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
|
|
boolean checked = false;
|
|
if (newValue instanceof Boolean) {
|
|
checked = Boolean.TRUE.equals(newValue);
|
|
}
|
|
switch (preference.getKey()) {
|
|
case SETTINGS_FLASH:
|
|
if (!Utils.isFlashInstalled(mActivity) && checked) {
|
|
Utils.createInformativeDialog(mActivity, R.string.title_warning, R.string.dialog_adobe_not_installed);
|
|
mPreferenceManager.setFlashSupport(0);
|
|
return false;
|
|
} else {
|
|
if (checked) {
|
|
getFlashChoice();
|
|
} else {
|
|
mPreferenceManager.setFlashSupport(0);
|
|
}
|
|
}
|
|
return true;
|
|
case SETTINGS_ADS:
|
|
mPreferenceManager.setAdBlockEnabled(checked);
|
|
return true;
|
|
case SETTINGS_IMAGES:
|
|
mPreferenceManager.setBlockImagesEnabled(checked);
|
|
return true;
|
|
case SETTINGS_JAVASCRIPT:
|
|
mPreferenceManager.setJavaScriptEnabled(checked);
|
|
return true;
|
|
case SETTINGS_COLORMODE:
|
|
mPreferenceManager.setColorModeEnabled(checked);
|
|
return true;
|
|
case SETTINGS_GOOGLESUGGESTIONS:
|
|
mPreferenceManager.setGoogleSearchSuggestionsEnabled(checked);
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private static class DownloadLocationTextWatcher implements TextWatcher {
|
|
private final EditText getDownload;
|
|
private final int errorColor;
|
|
private final int regularColor;
|
|
|
|
public DownloadLocationTextWatcher(EditText getDownload, int errorColor, int regularColor) {
|
|
this.getDownload = getDownload;
|
|
this.errorColor = errorColor;
|
|
this.regularColor = regularColor;
|
|
}
|
|
|
|
@Override
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
|
|
|
@Override
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
|
|
|
@Override
|
|
public void afterTextChanged(@NonNull Editable s) {
|
|
if (!DownloadHandler.isWriteAccessAvailable(s.toString())) {
|
|
this.getDownload.setTextColor(this.errorColor);
|
|
} else {
|
|
this.getDownload.setTextColor(this.regularColor);
|
|
}
|
|
}
|
|
}
|
|
}
|