diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a8a20a3..027305e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,8 +56,6 @@
@@ -107,61 +105,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ * This technique can be used with an {@link android.app.Activity} class, not just
+ * {@link android.preference.PreferenceActivity}.
+ */
+public abstract class AppCompatPreferenceActivity extends PreferenceActivity {
+
+ private AppCompatDelegate mDelegate;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ getDelegate().installViewFactory();
+ getDelegate().onCreate(savedInstanceState);
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ getDelegate().onPostCreate(savedInstanceState);
+ }
+
+ public ActionBar getSupportActionBar() {
+ return getDelegate().getSupportActionBar();
+ }
+
+ public void setSupportActionBar(@Nullable Toolbar toolbar) {
+ getDelegate().setSupportActionBar(toolbar);
+ }
+
+ @Override
+ public MenuInflater getMenuInflater() {
+ return getDelegate().getMenuInflater();
+ }
+
+ @Override
+ public void setContentView(@LayoutRes int layoutResID) {
+ getDelegate().setContentView(layoutResID);
+ }
+
+ @Override
+ public void setContentView(View view) {
+ getDelegate().setContentView(view);
+ }
+
+ @Override
+ public void setContentView(View view, ViewGroup.LayoutParams params) {
+ getDelegate().setContentView(view, params);
+ }
+
+ @Override
+ public void addContentView(View view, ViewGroup.LayoutParams params) {
+ getDelegate().addContentView(view, params);
+ }
+
+ @Override
+ protected void onPostResume() {
+ super.onPostResume();
+ getDelegate().onPostResume();
+ }
+
+ @Override
+ protected void onTitleChanged(CharSequence title, int color) {
+ super.onTitleChanged(title, color);
+ getDelegate().setTitle(title);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ getDelegate().onConfigurationChanged(newConfig);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ getDelegate().onStop();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ getDelegate().onDestroy();
+ }
+
+ public void invalidateOptionsMenu() {
+ getDelegate().invalidateOptionsMenu();
+ }
+
+ private AppCompatDelegate getDelegate() {
+ if (mDelegate == null) {
+ mDelegate = AppCompatDelegate.create(this, null);
+ }
+ return mDelegate;
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java b/app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java
deleted file mode 100644
index 3e012c2..0000000
--- a/app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package acr.browser.lightning.activity;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Comparator;
-
-import android.app.AlertDialog;
-import android.app.AlertDialog.Builder;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.os.Environment;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import acr.browser.lightning.database.BookmarkManager;
-import acr.browser.lightning.preference.PreferenceManager;
-import acr.browser.lightning.R;
-
-public class BookmarkActivity extends ThemableSettingsActivity implements OnClickListener {
-
- private BookmarkManager mBookmarkManager;
- private File[] mFileList;
- private String[] mFileNameList;
- private static final File mPath = new File(Environment.getExternalStorageDirectory().toString());
- private static final int DIALOG_LOAD_FILE = 1000;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.bookmark_settings);
-
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- LinearLayout exportBackup = (LinearLayout) findViewById(R.id.exportBackup);
- LinearLayout importBackup = (LinearLayout) findViewById(R.id.importBackup);
- LinearLayout importFromBrowser = (LinearLayout) findViewById(R.id.importFromBrowser);
-
- TextView importBookmarks = (TextView) findViewById(R.id.isImportBrowserAvailable);
-
- mBookmarkManager = BookmarkManager.getInstance(getApplicationContext());
- PreferenceManager mPreferences = PreferenceManager.getInstance();
-
- boolean systemBrowser = mPreferences.getSystemBrowserPresent();
-
- exportBackup.setOnClickListener(this);
- importBackup.setOnClickListener(this);
- importFromBrowser.setOnClickListener(this);
-
- if (systemBrowser) {
- importBookmarks.setText(getResources().getString(R.string.stock_browser_available));
- } else {
- importBookmarks.setText(getResources().getString(R.string.stock_browser_unavailable));
- }
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.importBackup:
- loadFileList(null);
- onCreateDialog(DIALOG_LOAD_FILE);
- break;
- case R.id.importFromBrowser:
- mBookmarkManager.importBookmarksFromBrowser(BookmarkActivity.this);
- break;
- case R.id.exportBackup:
- mBookmarkManager.exportBookmarks();
- break;
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return true;
- }
-
- private void loadFileList(File path) {
- File file;
- if (path != null) {
- file = path;
- } else {
- file = mPath;
- }
- try {
- file.mkdirs();
- } catch (SecurityException e) {
- e.printStackTrace();
- }
- if (file.exists()) {
- mFileList = file.listFiles();
- } else {
- mFileList = new File[0];
- }
-
- Arrays.sort(mFileList, new SortName());
-
- if (mFileList == null) {
- mFileNameList = new String[0];
- mFileList = new File[0];
- } else {
- mFileNameList = new String[mFileList.length];
- }
- for (int n = 0; n < mFileList.length; n++) {
- mFileNameList[n] = mFileList[n].getName();
- }
- }
-
- private class SortName implements Comparator {
-
- @Override
- public int compare(File a, File b) {
- if (a.isDirectory() && b.isDirectory())
- return a.getName().compareTo(b.getName());
-
- if (a.isDirectory())
- return -1;
-
- if (b.isDirectory())
- return 1;
-
- if (a.isFile() && b.isFile())
- return a.getName().compareTo(b.getName());
- else
- return 1;
- }
- }
-
- protected Dialog onCreateDialog(int id) {
- Dialog dialog;
- final AlertDialog.Builder builder = new Builder(this);
-
- switch (id) {
- case DIALOG_LOAD_FILE:
- builder.setTitle(R.string.title_chooser);
- if (mFileList == null) {
- dialog = builder.create();
- return dialog;
- }
- builder.setItems(mFileNameList, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (mFileList[which].isDirectory()) {
- loadFileList(mFileList[which]);
- builder.setItems(mFileNameList, this);
- builder.show();
- } else {
- mBookmarkManager.importBookmarksFromFile(mFileList[which], BookmarkActivity.this);
- }
- }
-
- });
- break;
- }
- dialog = builder.show();
- return dialog;
- }
-}
diff --git a/app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java
deleted file mode 100644
index f97d771..0000000
--- a/app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2014 A.C.R. Development
- */
-package acr.browser.lightning.activity;
-
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import acr.browser.lightning.preference.PreferenceManager;
-import acr.browser.lightning.R;
-
-public class DisplaySettingsActivity extends ThemableSettingsActivity {
-
- // mPreferences variables
- private PreferenceManager mPreferences;
- private CheckBox cbHideStatusBar, cbFullScreen, cbWideViewPort, cbOverView, cbTextReflow;
- private String[] mThemeOptions;
- private TextView mThemeText;
- private int mCurrentTheme;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.display_settings);
-
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- mPreferences = PreferenceManager.getInstance();
- mThemeOptions = this.getResources().getStringArray(R.array.themes);
- initialize();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return true;
- }
-
- private void initialize() {
-
- RelativeLayout rHideStatusBar, rFullScreen, rWideViewPort, rOverView, rTextReflow, rTextSize, rDarkTheme;
- LayoutClickListener clickListener = new LayoutClickListener();
- CheckBoxToggleListener toggleListener = new CheckBoxToggleListener();
-
- rHideStatusBar = (RelativeLayout) findViewById(R.id.rHideStatusBar);
- rFullScreen = (RelativeLayout) findViewById(R.id.rFullScreen);
- rWideViewPort = (RelativeLayout) findViewById(R.id.rWideViewPort);
- rOverView = (RelativeLayout) findViewById(R.id.rOverView);
- rTextReflow = (RelativeLayout) findViewById(R.id.rTextReflow);
- rTextSize = (RelativeLayout) findViewById(R.id.rTextSize);
- rDarkTheme = (RelativeLayout) findViewById(R.id.rTheme);
-
- rHideStatusBar.setOnClickListener(clickListener);
- rFullScreen.setOnClickListener(clickListener);
- rWideViewPort.setOnClickListener(clickListener);
- rOverView.setOnClickListener(clickListener);
- rTextReflow.setOnClickListener(clickListener);
- rTextSize.setOnClickListener(clickListener);
- rDarkTheme.setOnClickListener(clickListener);
-
- mThemeText = (TextView) findViewById(R.id.textViewTheme);
-
- mCurrentTheme = mPreferences.getUseTheme();
- mThemeText.setText(mThemeOptions[mPreferences.getUseTheme()]);
-
- cbHideStatusBar = (CheckBox) findViewById(R.id.cbHideStatusBar);
- cbFullScreen = (CheckBox) findViewById(R.id.cbFullScreen);
- cbWideViewPort = (CheckBox) findViewById(R.id.cbWideViewPort);
- cbOverView = (CheckBox) findViewById(R.id.cbOverView);
- cbTextReflow = (CheckBox) findViewById(R.id.cbTextReflow);
-
- cbHideStatusBar.setChecked(mPreferences.getHideStatusBarEnabled());
- cbFullScreen.setChecked(mPreferences.getFullScreenEnabled());
- cbWideViewPort.setChecked(mPreferences.getUseWideViewportEnabled());
- cbOverView.setChecked(mPreferences.getOverviewModeEnabled());
- cbTextReflow.setChecked(mPreferences.getTextReflowEnabled());
-
- cbHideStatusBar.setOnCheckedChangeListener(toggleListener);
- cbFullScreen.setOnCheckedChangeListener(toggleListener);
- cbWideViewPort.setOnCheckedChangeListener(toggleListener);
- cbOverView.setOnCheckedChangeListener(toggleListener);
- cbTextReflow.setOnCheckedChangeListener(toggleListener);
- }
-
- private class LayoutClickListener implements OnClickListener {
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.rHideStatusBar:
- cbHideStatusBar.setChecked(!cbHideStatusBar.isChecked());
- break;
- case R.id.rFullScreen:
- cbFullScreen.setChecked(!cbFullScreen.isChecked());
- break;
- case R.id.rWideViewPort:
- cbWideViewPort.setChecked(!cbWideViewPort.isChecked());
- break;
- case R.id.rOverView:
- cbOverView.setChecked(!cbOverView.isChecked());
- break;
- case R.id.rTextReflow:
- cbTextReflow.setChecked(!cbTextReflow.isChecked());
- break;
- case R.id.rTextSize:
- textSizePicker();
- break;
- case R.id.rTheme:
- themePicker();
- break;
- }
- }
-
- }
-
- private class CheckBoxToggleListener implements OnCheckedChangeListener {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- switch (buttonView.getId()) {
- case R.id.cbHideStatusBar:
- mPreferences.setHideStatusBarEnabled(isChecked);
- break;
- case R.id.cbFullScreen:
- mPreferences.setFullScreenEnabled(isChecked);
- break;
- case R.id.cbWideViewPort:
- mPreferences.setUseWideViewportEnabled(isChecked);
- break;
- case R.id.cbOverView:
- mPreferences.setOverviewModeEnabled(isChecked);
- break;
- case R.id.cbTextReflow:
- mPreferences.setTextReflowEnabled(isChecked);
- break;
- }
- }
-
- }
-
- private void textSizePicker() {
- AlertDialog.Builder picker = new AlertDialog.Builder(DisplaySettingsActivity.this);
- picker.setTitle(getResources().getString(R.string.title_text_size));
-
- int n = mPreferences.getTextSize();
-
- picker.setSingleChoiceItems(R.array.text_size, n - 1,
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mPreferences.setTextSize(which + 1);
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- }
- });
- picker.show();
- }
-
- private void themePicker() {
-
- AlertDialog.Builder picker = new AlertDialog.Builder(DisplaySettingsActivity.this);
- picker.setTitle(getResources().getString(R.string.url_contents));
-
- int n = mPreferences.getUseTheme();
- picker.setSingleChoiceItems(mThemeOptions, n, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mPreferences.setUseTheme(which);
- if (which < mThemeOptions.length) {
- mThemeText.setText(mThemeOptions[which]);
- }
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (mCurrentTheme != mPreferences.getUseTheme()) {
- restart();
- }
- }
- });
- picker.setOnCancelListener(new DialogInterface.OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- if (mCurrentTheme != mPreferences.getUseTheme()) {
- restart();
- }
- }
- });
- picker.show();
- }
-}
diff --git a/app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java
deleted file mode 100644
index ece6f6e..0000000
--- a/app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * Copyright 2014 A.C.R. Development
- */
-package acr.browser.lightning.activity;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Environment;
-import android.support.v7.widget.Toolbar;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import acr.browser.lightning.constant.Constants;
-import acr.browser.lightning.preference.PreferenceManager;
-import acr.browser.lightning.R;
-import acr.browser.lightning.utils.Utils;
-
-public class GeneralSettingsActivity extends ThemableSettingsActivity {
-
- // mPreferences variables
- private static final int API = android.os.Build.VERSION.SDK_INT;
- private PreferenceManager mPreferences;
- private int mAgentChoice;
- private String mHomepage;
- private TextView mAgentTextView;
- private TextView mDownloadTextView;
- private String mDownloadLocation;
- private TextView mHomepageText;
- private TextView mSearchText;
- private CheckBox cbSearchSuggestions;
- private Activity mActivity;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.general_settings);
-
- // set up ActionBar
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- mPreferences = PreferenceManager.getInstance();
-
- mActivity = this;
- initialize();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return true;
- }
-
- private void initialize() {
-
- mSearchText = (TextView) findViewById(R.id.searchText);
-
- switch (mPreferences.getSearchChoice()) {
- case 0:
- mSearchText.setText(getResources().getString(R.string.custom_url));
- break;
- case 1:
- mSearchText.setText("Google");
- break;
- case 2:
- mSearchText.setText("Ask");
- break;
- case 3:
- mSearchText.setText("Bing");
- break;
- case 4:
- mSearchText.setText("Yahoo");
- break;
- case 5:
- mSearchText.setText("StartPage");
- break;
- case 6:
- mSearchText.setText("StartPage (Mobile)");
- break;
- case 7:
- mSearchText.setText("DuckDuckGo");
- break;
- case 8:
- mSearchText.setText("DuckDuckGo Lite");
- break;
- case 9:
- mSearchText.setText("Baidu");
- break;
- case 10:
- mSearchText.setText("Yandex");
- }
-
- mAgentTextView = (TextView) findViewById(R.id.agentText);
- mHomepageText = (TextView) findViewById(R.id.homepageText);
- mDownloadTextView = (TextView) findViewById(R.id.downloadText);
- mAgentChoice = mPreferences.getUserAgentChoice();
- mHomepage = mPreferences.getHomepage();
- mDownloadLocation = mPreferences.getDownloadDirectory();
-
- mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/' + mDownloadLocation);
-
- if (mHomepage.contains("about:home")) {
- mHomepageText.setText(getResources().getString(R.string.action_homepage));
- } else if (mHomepage.contains("about:blank")) {
- mHomepageText.setText(getResources().getString(R.string.action_blank));
- } else if (mHomepage.contains("about:bookmarks")) {
- mHomepageText.setText(getResources().getString(R.string.action_bookmarks));
- } else {
- mHomepageText.setText(mHomepage);
- }
-
- switch (mAgentChoice) {
- case 1:
- mAgentTextView.setText(getResources().getString(R.string.agent_default));
- break;
- case 2:
- mAgentTextView.setText(getResources().getString(R.string.agent_desktop));
- break;
- case 3:
- mAgentTextView.setText(getResources().getString(R.string.agent_mobile));
- break;
- case 4:
- mAgentTextView.setText(getResources().getString(R.string.agent_custom));
- }
-
- RelativeLayout rSearchSuggestions;
- rSearchSuggestions = (RelativeLayout) findViewById(R.id.rGoogleSuggestions);
-
- cbSearchSuggestions = (CheckBox) findViewById(R.id.cbGoogleSuggestions);
-
- cbSearchSuggestions.setChecked(mPreferences.getGoogleSearchSuggestionsEnabled());
-
- RelativeLayout agent = (RelativeLayout) findViewById(R.id.layoutUserAgent);
- RelativeLayout download = (RelativeLayout) findViewById(R.id.layoutDownload);
- RelativeLayout homepage = (RelativeLayout) findViewById(R.id.layoutHomepage);
-
- agent(agent);
- download(download);
- homepage(homepage);
- search();
-
- rSearchSuggestions(rSearchSuggestions);
- cbSearchSuggestions(cbSearchSuggestions);
- }
-
- public void search() {
- RelativeLayout search = (RelativeLayout) findViewById(R.id.layoutSearch);
- search.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- 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 = mPreferences.getSearchChoice();
-
- picker.setSingleChoiceItems(chars, n, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mPreferences.setSearchChoice(which);
- switch (which) {
- case 0:
- searchUrlPicker();
- break;
- case 1:
- mSearchText.setText("Google");
- break;
- case 2:
- mSearchText.setText("Ask");
- break;
- case 3:
- mSearchText.setText("Bing");
- break;
- case 4:
- mSearchText.setText("Yahoo");
- break;
- case 5:
- mSearchText.setText("StartPage");
- break;
- case 6:
- mSearchText.setText("StartPage (Mobile)");
- break;
- case 7:
- mSearchText.setText("DuckDuckGo");
- break;
- case 8:
- mSearchText.setText("DuckDuckGo Lite");
- break;
- case 9:
- mSearchText.setText("Baidu");
- break;
- case 10:
- mSearchText.setText("Yandex");
- }
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- }
- });
- picker.show();
- }
-
- });
- }
-
- public void searchUrlPicker() {
- final AlertDialog.Builder urlPicker = new AlertDialog.Builder(this);
-
- urlPicker.setTitle(getResources().getString(R.string.custom_url));
- final EditText getSearchUrl = new EditText(this);
-
- String mSearchUrl = mPreferences.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();
- mPreferences.setSearchUrl(text);
- mSearchText.setText(getResources().getString(R.string.custom_url) + ": "
- + text);
- }
- });
- urlPicker.show();
- }
-
- public void agent(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- AlertDialog.Builder agentPicker = new AlertDialog.Builder(mActivity);
- agentPicker.setTitle(getResources().getString(R.string.title_user_agent));
- mAgentChoice = mPreferences.getUserAgentChoice();
- agentPicker.setSingleChoiceItems(R.array.user_agent, mAgentChoice - 1,
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mPreferences.setUserAgentChoice(which + 1);
- switch (which + 1) {
- case 1:
- mAgentTextView.setText(getResources().getString(
- R.string.agent_default));
- break;
- case 2:
- mAgentTextView.setText(getResources().getString(
- R.string.agent_desktop));
- break;
- case 3:
- mAgentTextView.setText(getResources().getString(
- R.string.agent_mobile));
- break;
- case 4:
- mAgentTextView.setText(getResources().getString(
- R.string.agent_custom));
- agentPicker();
- break;
- }
- }
- });
- agentPicker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
-
- }
-
- });
- agentPicker.setOnCancelListener(new DialogInterface.OnCancelListener() {
-
- @Override
- public void onCancel(DialogInterface dialog) {
- // TODO Auto-generated method stub
- Log.i("Cancelled", "");
- }
- });
- agentPicker.show();
-
- }
-
- });
- }
-
- public void agentPicker() {
- final AlertDialog.Builder agentStringPicker = new AlertDialog.Builder(mActivity);
-
- agentStringPicker.setTitle(getResources().getString(R.string.title_user_agent));
- final EditText getAgent = new EditText(this);
- 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();
- mPreferences.setUserAgentString(text);
- mAgentTextView.setText(getResources().getString(R.string.agent_custom));
- }
- });
- agentStringPicker.show();
- }
-
- public void download(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
- AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
- picker.setTitle(getResources().getString(R.string.title_download_location));
- mDownloadLocation = mPreferences.getDownloadDirectory();
- int n;
- if (mDownloadLocation.contains(Environment.DIRECTORY_DOWNLOADS)) {
- n = 1;
- } else {
- n = 2;
- }
-
- picker.setSingleChoiceItems(R.array.download_folder, n - 1,
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- switch (which + 1) {
- case 1:
- mPreferences
- .setDownloadDirectory(Environment.DIRECTORY_DOWNLOADS);
- mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/'
- + Environment.DIRECTORY_DOWNLOADS);
- break;
- case 2:
- downPicker();
-
- break;
- }
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- }
- });
- picker.show();
- }
-
- });
- }
-
- public void homePicker() {
- final AlertDialog.Builder homePicker = new AlertDialog.Builder(mActivity);
- homePicker.setTitle(getResources().getString(R.string.title_custom_homepage));
- final EditText getHome = new EditText(this);
- mHomepage = mPreferences.getHomepage();
- if (!mHomepage.startsWith("about:")) {
- getHome.setText(mHomepage);
- } else {
- getHome.setText("http://www.google.com");
- }
- 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();
- mPreferences.setHomepage(text);
- mHomepageText.setText(text);
- }
- });
- homePicker.show();
- }
-
- @SuppressWarnings("deprecation")
- public void downPicker() {
- final AlertDialog.Builder downLocationPicker = new AlertDialog.Builder(mActivity);
- LinearLayout layout = new LinearLayout(this);
- downLocationPicker.setTitle(getResources().getString(R.string.title_download_location));
- final EditText getDownload = new EditText(this);
- getDownload.setBackgroundResource(0);
- mDownloadLocation = mPreferences.getDownloadDirectory();
- int padding = Utils.convertDpToPixels(10);
-
- LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
-
- getDownload.setLayoutParams(lparams);
- getDownload.setTextColor(Color.DKGRAY);
- getDownload.setText(mDownloadLocation);
- getDownload.setPadding(0, padding, padding, padding);
-
- TextView v = new TextView(this);
- v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
- v.setTextColor(Color.DKGRAY);
- v.setText(Constants.EXTERNAL_STORAGE + '/');
- v.setPadding(padding, padding, 0, padding);
- layout.addView(v);
- layout.addView(getDownload);
- if (API < 16) {
- layout.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.edit_text));
- } else {
- layout.setBackground(getResources().getDrawable(android.R.drawable.edit_text));
- }
- 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();
- mPreferences.setDownloadDirectory(text);
- mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/' + text);
- }
- });
- downLocationPicker.show();
- }
-
- public void homepage(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
- picker.setTitle(getResources().getString(R.string.home));
- mHomepage = mPreferences.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:
- mPreferences.setHomepage("about:home");
- mHomepageText.setText(getResources().getString(
- R.string.action_homepage));
- break;
- case 2:
- mPreferences.setHomepage("about:blank");
- mHomepageText.setText(getResources().getString(
- R.string.action_blank));
- break;
- case 3:
- mPreferences.setHomepage("about:bookmarks");
- mHomepageText.setText(getResources().getString(
- R.string.action_bookmarks));
-
- break;
- case 4:
- homePicker();
-
- break;
- }
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- }
- });
- picker.show();
- }
-
- });
- }
-
- private void cbSearchSuggestions(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setGoogleSearchSuggestionsEnabled(isChecked);
- }
-
- });
- }
-
- private void rSearchSuggestions(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- cbSearchSuggestions.setChecked(!cbSearchSuggestions.isChecked());
- }
-
- });
- }
-
-}
diff --git a/app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java b/app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java
deleted file mode 100644
index 97aeb4f..0000000
--- a/app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2014 A.C.R. Development
- */
-package acr.browser.lightning.activity;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuItem;
-import android.view.View;
-
-import acr.browser.lightning.R;
-
-/*
- *NOTE: This activity must not be removed in order to comply with the Mozilla Public License v. 2.0
- *under which this code is licensed. Unless you plan on providing other attribution in the app to
- *the original source in another visible way, it is advised against the removal of this Activity.
- */
-public class LicenseActivity extends ThemableSettingsActivity implements View.OnClickListener {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.license_activity);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- findViewById(R.id.browserLicense).setOnClickListener(this);
- findViewById(R.id.licenseAOSP).setOnClickListener(this);
- findViewById(R.id.licenseHosts).setOnClickListener(this);
- findViewById(R.id.licenseOrbot).setOnClickListener(this);
- findViewById(R.id.licenseSnactory).setOnClickListener(this);
- findViewById(R.id.licenseJsoup).setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.browserLicense:
- actionView("http://www.mozilla.org/MPL/2.0/");
- break;
- case R.id.licenseAOSP:
- actionView("http://www.apache.org/licenses/LICENSE-2.0");
- break;
- case R.id.licenseHosts:
- actionView("http://hosts-file.net/");
- break;
- case R.id.licenseOrbot:
- actionView("http://www.gnu.org/licenses/lgpl.html");
- break;
- case R.id.licenseSnactory:
- actionView("http://www.apache.org/licenses/LICENSE-2.0");
- break;
- case R.id.licenseJsoup:
- actionView("http://jsoup.org/license");
- break;
- }
- }
-
- private void actionView(String url) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url), this, MainActivity.class));
- finish();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java
deleted file mode 100644
index 958f901..0000000
--- a/app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * Copyright 2014 A.C.R. Development
- */
-package acr.browser.lightning.activity;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.Browser;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.webkit.*;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import acr.browser.lightning.database.HistoryDatabase;
-import acr.browser.lightning.preference.PreferenceManager;
-import acr.browser.lightning.R;
-import acr.browser.lightning.utils.Utils;
-
-public class PrivacySettingsActivity extends ThemableSettingsActivity {
-
- // mPreferences variables
- private static final int API = android.os.Build.VERSION.SDK_INT;
- private PreferenceManager mPreferences;
- private CheckBox cbLocation, cbSavePasswords, cbClearCacheExit, cbClearHistoryExit,
- cbClearCookiesExit, cbThirdParty;
- private Context mContext;
- private boolean mSystemBrowser;
- private Handler messageHandler;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.privacy_settings);
-
- // set up ActionBar
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- mPreferences = PreferenceManager.getInstance();
-
- mSystemBrowser = mPreferences.getSystemBrowserPresent();
- mContext = this;
- initialize();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return true;
- }
-
- private void initialize() {
-
- RelativeLayout rLocation, rSavePasswords, rClearCacheExit, rClearHistoryExit, rClearCookiesExit, rClearCache, rClearHistory, rClearCookies, rThirdParty;
-
- rLocation = (RelativeLayout) findViewById(R.id.rLocation);
- rSavePasswords = (RelativeLayout) findViewById(R.id.rSavePasswords);
- rClearCacheExit = (RelativeLayout) findViewById(R.id.rClearCacheExit);
- rClearHistoryExit = (RelativeLayout) findViewById(R.id.rClearHistoryExit);
- rClearCookiesExit = (RelativeLayout) findViewById(R.id.rClearCookiesExit);
- rClearCache = (RelativeLayout) findViewById(R.id.rClearCache);
- rClearHistory = (RelativeLayout) findViewById(R.id.rClearHistory);
- rClearCookies = (RelativeLayout) findViewById(R.id.rClearCookies);
- rThirdParty = (RelativeLayout) findViewById(R.id.rThirdParty);
-
- cbLocation = (CheckBox) findViewById(R.id.cbLocation);
- cbSavePasswords = (CheckBox) findViewById(R.id.cbSavePasswords);
- cbClearCacheExit = (CheckBox) findViewById(R.id.cbClearCacheExit);
- cbClearHistoryExit = (CheckBox) findViewById(R.id.cbClearHistoryExit);
- cbClearCookiesExit = (CheckBox) findViewById(R.id.cbClearCookiesExit);
- cbThirdParty = (CheckBox) findViewById(R.id.cbThirdParty);
-
- cbLocation.setChecked(mPreferences.getLocationEnabled());
- cbSavePasswords.setChecked(mPreferences.getSavePasswordsEnabled());
- cbClearCacheExit.setChecked(mPreferences.getClearCacheExit());
- cbClearHistoryExit.setChecked(mPreferences.getClearHistoryExitEnabled());
- cbClearCookiesExit.setChecked(mPreferences.getClearCookiesExitEnabled());
- cbThirdParty.setChecked(mPreferences.getBlockThirdPartyCookiesEnabled());
-
- cbThirdParty.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
-
- rLocation(rLocation);
- rSavePasswords(rSavePasswords);
- rClearCacheExit(rClearCacheExit);
- rClearHistoryExit(rClearHistoryExit);
- rClearCookiesExit(rClearCookiesExit);
- rClearCache(rClearCache);
- rClearHistory(rClearHistory);
- rClearCookies(rClearCookies);
- rThirdParty(rThirdParty);
- cbLocation(cbLocation);
- cbSavePasswords(cbSavePasswords);
- cbClearCacheExit(cbClearCacheExit);
- cbClearHistoryExit(cbClearHistoryExit);
- cbClearCookiesExit(cbClearCookiesExit);
- cbThirdParty(cbThirdParty);
-
- TextView syncHistory = (TextView) findViewById(R.id.isBrowserAvailable);
-
- RelativeLayout layoutSyncHistory = (RelativeLayout) findViewById(R.id.rBrowserHistory);
- final CheckBox cbSyncHistory = (CheckBox) findViewById(R.id.cbBrowserHistory);
- layoutSyncHistory.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- cbSyncHistory.setChecked(!cbSyncHistory.isChecked());
- }
-
- });
- cbSyncHistory.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setSyncHistoryEnabled(isChecked);
- }
-
- });
-
- if (!mSystemBrowser) {
- cbSyncHistory.setChecked(false);
- cbSyncHistory.setEnabled(false);
- syncHistory.setText(getResources().getString(R.string.stock_browser_unavailable));
- } else {
- cbSyncHistory.setEnabled(true);
- cbSyncHistory.setChecked(mPreferences.getSyncHistoryEnabled());
- syncHistory.setText(getResources().getString(R.string.stock_browser_available));
- }
-
- messageHandler = new MessageHandler(mContext);
- }
-
- private static class MessageHandler extends Handler {
-
- final Context mHandlerContext;
-
- public MessageHandler(Context context) {
- this.mHandlerContext = context;
- }
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 1:
- Utils.showToast(mHandlerContext,
- mHandlerContext.getResources()
- .getString(R.string.message_clear_history));
- break;
- case 2:
- Utils.showToast(
- mHandlerContext,
- mHandlerContext.getResources().getString(
- R.string.message_cookies_cleared));
- break;
- }
- super.handleMessage(msg);
- }
- }
-
- private void cbLocation(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setLocationEnabled(isChecked);
- }
-
- });
- }
-
- private void cbSavePasswords(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setSavePasswordsEnabled(isChecked);
- }
-
- });
- }
-
- private void cbClearCacheExit(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setClearCacheExit(isChecked);
- }
-
- });
- }
-
- private void cbClearHistoryExit(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setClearHistoryExitEnabled(isChecked);
- }
-
- });
- }
-
- private void cbThirdParty(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setBlockThirdPartyCookiesEnabled(isChecked);
- }
-
- });
- }
-
- private void cbClearCookiesExit(CheckBox view) {
- view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setClearCookiesExitEnabled(isChecked);
- }
-
- });
- }
-
- private void rLocation(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- cbLocation.setChecked(!cbLocation.isChecked());
- }
-
- });
- }
-
- private void rSavePasswords(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- cbSavePasswords.setChecked(!cbSavePasswords.isChecked());
- }
-
- });
- }
-
- private void rClearCacheExit(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- cbClearCacheExit.setChecked(!cbClearCacheExit.isChecked());
- }
-
- });
- }
-
- private void rThirdParty(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- cbThirdParty.setChecked(!cbThirdParty.isChecked());
- } else {
- Utils.showToast(mContext, mContext.getString(R.string.available_lollipop));
- }
- }
-
- });
- }
-
- private void rClearHistoryExit(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- cbClearHistoryExit.setChecked(!cbClearHistoryExit.isChecked());
- }
-
- });
- }
-
- private void rClearCookiesExit(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- cbClearCookiesExit.setChecked(!cbClearCookiesExit.isChecked());
- }
-
- });
- }
-
- private void rClearHistory(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- AlertDialog.Builder builder = new AlertDialog.Builder(PrivacySettingsActivity.this); // dialog
- builder.setTitle(getResources().getString(R.string.title_clear_history));
- builder.setMessage(getResources().getString(R.string.dialog_history))
- .setPositiveButton(getResources().getString(R.string.action_yes),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
- Thread clear = new Thread(new Runnable() {
-
- @Override
- public void run() {
- clearHistory();
- }
-
- });
- clear.start();
- }
-
- })
- .setNegativeButton(getResources().getString(R.string.action_no),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- }).show();
- }
-
- });
- }
-
- private void rClearCookies(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- AlertDialog.Builder builder = new AlertDialog.Builder(PrivacySettingsActivity.this); // dialog
- builder.setTitle(getResources().getString(R.string.title_clear_cookies));
- builder.setMessage(getResources().getString(R.string.dialog_cookies))
- .setPositiveButton(getResources().getString(R.string.action_yes),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
- Thread clear = new Thread(new Runnable() {
-
- @Override
- public void run() {
- clearCookies();
- }
-
- });
- clear.start();
- }
-
- })
- .setNegativeButton(getResources().getString(R.string.action_no),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
-
- }
-
- }).show();
- }
-
- });
- }
-
- private void rClearCache(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- clearCache();
- }
-
- });
-
- }
-
- private void clearCache() {
- WebView webView = new WebView(this);
- webView.clearCache(true);
- webView.destroy();
- Utils.showToast(mContext, getResources().getString(R.string.message_cache_cleared));
- }
-
- @SuppressWarnings("deprecation")
- private void clearHistory() {
- deleteDatabase(HistoryDatabase.DATABASE_NAME);
- WebViewDatabase m = WebViewDatabase.getInstance(this);
- m.clearFormData();
- m.clearHttpAuthUsernamePassword();
- if (API < 18) {
- m.clearUsernamePassword();
- WebIconDatabase.getInstance().removeAllIcons();
- }
- if (mSystemBrowser) {
- try {
- Browser.clearHistory(getContentResolver());
- } catch (Exception ignored) {
- }
- }
- Utils.trimCache(this);
- messageHandler.sendEmptyMessage(1);
- }
-
- @SuppressWarnings("deprecation")
- private void clearCookies() {
- // TODO Break out web storage deletion into its own option/action
- // TODO clear web storage for all sites that are visited in Incognito mode
- WebStorage storage = WebStorage.getInstance();
- storage.deleteAllData();
- CookieManager c = CookieManager.getInstance();
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- c.removeAllCookies(null);
- } else {
- CookieSyncManager.createInstance(this);
- c.removeAllCookie();
- }
- messageHandler.sendEmptyMessage(2);
- }
-}
diff --git a/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
index cfb2e44..eea7094 100644
--- a/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
@@ -3,441 +3,57 @@
*/
package acr.browser.lightning.activity;
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.EditText;
+import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
import acr.browser.lightning.R;
-import acr.browser.lightning.constant.Constants;
-import acr.browser.lightning.preference.PreferenceManager;
-import acr.browser.lightning.utils.ProxyUtils;
-import acr.browser.lightning.utils.Utils;
public class SettingsActivity extends ThemableSettingsActivity {
- private static final int API = android.os.Build.VERSION.SDK_INT;
- private PreferenceManager mPreferences;
- private Context mContext;
- private Activity mActivity;
- private CharSequence[] mProxyChoices;
- private TextView mProxyChoiceName;
+ private static List fragments = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.settings);
- mContext = this;
- mActivity = this;
- init();
- }
+ // this is a workaround for the Toolbar in PreferenceActitivty
+ ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
+ LinearLayout content = (LinearLayout) root.getChildAt(0);
+ LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.toolbar_settings, null);
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- finish();
- return true;
- }
+ root.removeAllViews();
+ toolbarContainer.addView(content);
+ root.addView(toolbarContainer);
- @SuppressLint("NewApi")
- private void init() {
- // set up ActionBar
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ // now we can set the Toolbar using AppCompatPreferenceActivity
+ Toolbar toolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- // mPreferences storage
- mPreferences = PreferenceManager.getInstance();
-
- // initialize UI
- RelativeLayout layoutFlash = (RelativeLayout) findViewById(R.id.layoutFlash);
- RelativeLayout layoutBlockAds = (RelativeLayout) findViewById(R.id.layoutAdBlock);
- layoutBlockAds.setEnabled(Constants.FULL_VERSION);
- RelativeLayout layoutImages = (RelativeLayout) findViewById(R.id.layoutImages);
- RelativeLayout layoutEnableJS = (RelativeLayout) findViewById(R.id.layoutEnableJS);
- LinearLayout layoutProxyChoice = (LinearLayout) findViewById(R.id.layoutProxyChoice);
- RelativeLayout layoutColor = (RelativeLayout) findViewById(R.id.layoutColorMode);
- RelativeLayout layoutBookmarks = (RelativeLayout) findViewById(R.id.layoutBookmarks);
-
- layoutBookmarks.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, BookmarkActivity.class));
- }
-
- });
-
- if (API >= 19) {
- mPreferences.setFlashSupport(0);
- }
- int flashNum = mPreferences.getFlashSupport();
- boolean imagesBool = mPreferences.getBlockImagesEnabled();
- boolean enableJSBool = mPreferences.getJavaScriptEnabled();
-
- mProxyChoiceName = (TextView) findViewById(R.id.proxyChoiceName);
- mProxyChoices = this.getResources().getStringArray(R.array.proxy_choices_array);
- int choice = mPreferences.getProxyChoice();
- if (choice == Constants.PROXY_MANUAL)
- mProxyChoiceName.setText(mPreferences.getProxyHost() + ":" + mPreferences.getProxyPort());
- else
- mProxyChoiceName.setText(mProxyChoices[choice]);
-
- CheckBox flash = (CheckBox) findViewById(R.id.cbFlash);
- CheckBox adblock = (CheckBox) findViewById(R.id.cbAdblock);
- adblock.setEnabled(Constants.FULL_VERSION);
- CheckBox images = (CheckBox) findViewById(R.id.cbImageBlock);
- CheckBox enablejs = (CheckBox) findViewById(R.id.cbJavascript);
- CheckBox color = (CheckBox) findViewById(R.id.cbColorMode);
-
- images.setChecked(imagesBool);
- enablejs.setChecked(enableJSBool);
- if (flashNum > 0) {
- flash.setChecked(true);
- } else {
- flash.setChecked(false);
- }
- adblock.setChecked(mPreferences.getAdBlockEnabled());
- color.setChecked(mPreferences.getColorModeEnabled());
-
- initCheckBox(flash, adblock, images, enablejs, color);
- clickListenerForCheckBoxes(layoutFlash, layoutBlockAds, layoutImages, layoutEnableJS,
- layoutProxyChoice, layoutColor, flash, adblock, images, enablejs, color);
-
- RelativeLayout general = (RelativeLayout) findViewById(R.id.layoutGeneral);
- RelativeLayout display = (RelativeLayout) findViewById(R.id.layoutDisplay);
- RelativeLayout privacy = (RelativeLayout) findViewById(R.id.layoutPrivacy);
- RelativeLayout advanced = (RelativeLayout) findViewById(R.id.layoutAdvanced);
- RelativeLayout about = (RelativeLayout) findViewById(R.id.layoutAbout);
-
- general(general);
- display(display);
- privacy(privacy);
- advanced(advanced);
- about(about);
- }
-
- public void clickListenerForCheckBoxes(RelativeLayout layoutFlash,
- RelativeLayout layoutBlockAds, RelativeLayout layoutImages,
- RelativeLayout layoutEnableJS, LinearLayout layoutProxyChoice, RelativeLayout layoutColor,
- final CheckBox flash, final CheckBox adblock, final CheckBox images,
- final CheckBox enablejs, final CheckBox color) {
- layoutFlash.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- if (API < 19) {
- flash.setChecked(!flash.isChecked());
- } else {
- Utils.createInformativeDialog(mContext,
- getResources().getString(R.string.title_warning), getResources()
- .getString(R.string.dialog_adobe_dead));
- }
- }
-
- });
- layoutBlockAds.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- adblock.setChecked(!adblock.isChecked());
- }
-
- });
- layoutImages.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- images.setChecked(!images.isChecked());
- }
-
- });
- layoutEnableJS.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- enablejs.setChecked(!enablejs.isChecked());
- }
-
- });
- if (Constants.FULL_VERSION == false) {
- layoutProxyChoice.setEnabled(false);
- }
- layoutProxyChoice.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- proxyChoicePicker();
- }
- });
- layoutColor.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- color.setChecked(!color.isChecked());
- }
-
- });
}
- public void initCheckBox(CheckBox flash, CheckBox adblock, CheckBox images, CheckBox enablejs,
- CheckBox color) {
- flash.setEnabled(API < 19);
- flash.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- getFlashChoice();
- } else {
- mPreferences.setFlashSupport(0);
- }
-
- boolean flashInstalled = false;
- try {
- PackageManager pm = getPackageManager();
- ApplicationInfo ai = pm.getApplicationInfo("com.adobe.flashplayer", 0);
- if (ai != null) {
- flashInstalled = true;
- }
- } catch (NameNotFoundException e) {
- flashInstalled = false;
- }
- if (!flashInstalled && isChecked) {
- Utils.createInformativeDialog(SettingsActivity.this,
- getResources().getString(R.string.title_warning), getResources()
- .getString(R.string.dialog_adobe_not_installed));
- buttonView.setChecked(false);
- mPreferences.setFlashSupport(0);
-
- } else if ((API >= 17) && isChecked) {
- Utils.createInformativeDialog(SettingsActivity.this,
- getResources().getString(R.string.title_warning), getResources()
- .getString(R.string.dialog_adobe_unsupported));
- }
- }
-
- });
- adblock.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setAdBlockEnabled(isChecked);
- }
-
- });
- images.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setBlockImagesEnabled(isChecked);
-
- }
-
- });
- enablejs.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setJavaScriptEnabled(isChecked);
- }
-
- });
-
- color.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mPreferences.setColorModeEnabled(isChecked);
-
- }
-
- });
- }
-
- private void getFlashChoice() {
- AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
- builder.setTitle(mContext.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) {
- mPreferences.setFlashSupport(1);
- }
- })
- .setNegativeButton(getResources().getString(R.string.action_auto),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mPreferences.setFlashSupport(2);
- }
- }).setOnCancelListener(new OnCancelListener() {
-
- @Override
- public void onCancel(DialogInterface dialog) {
- mPreferences.setFlashSupport(0);
- }
-
- });
- AlertDialog alert = builder.create();
- alert.show();
- }
-
- private void proxyChoicePicker() {
- AlertDialog.Builder picker = new AlertDialog.Builder(mContext);
- picker.setTitle(getResources().getString(R.string.http_proxy));
- picker.setSingleChoiceItems(mProxyChoices, mPreferences.getProxyChoice(),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- setProxyChoice(which);
- }
- });
- picker.setNeutralButton(getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- });
- picker.show();
- }
-
- private void setProxyChoice(int choice) {
- ProxyUtils utils = ProxyUtils.getInstance(this);
- switch (choice) {
- case Constants.PROXY_ORBOT:
- choice = utils.setProxyChoice(choice, this);
- break;
- case Constants.PROXY_I2P:
- choice = utils.setProxyChoice(choice, this);
- break;
- case Constants.PROXY_MANUAL:
- manualProxyPicker();
- break;
+ @Override
+ public void onBuildHeaders(List target) {
+ loadHeadersFromResource(R.xml.preferences_headers, target);
+ fragments.clear();
+ for (Header header : target) {
+ fragments.add(header.fragment);
}
-
- mPreferences.setProxyChoice(choice);
- if (choice < mProxyChoices.length)
- mProxyChoiceName.setText(mProxyChoices[choice]);
}
- public void manualProxyPicker() {
- View v = 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);
- eProxyHost.setText(mPreferences.getProxyHost());
- eProxyPort.setText(Integer.toString(mPreferences.getProxyPort()));
-
- 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 = Integer.parseInt(eProxyPort.getText().toString());
- mPreferences.setProxyHost(proxyHost);
- mPreferences.setProxyPort(proxyPort);
- mProxyChoiceName.setText(proxyHost + ":" + proxyPort);
- }
- })
- .show();
- }
-
- public void agentPicker() {
- final AlertDialog.Builder agentStringPicker = new AlertDialog.Builder(mActivity);
-
- agentStringPicker.setTitle(getResources().getString(R.string.title_user_agent));
- final EditText getAgent = new EditText(this);
- getAgent.append(mPreferences.getUserAgentString(""));
- 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();
- mPreferences.setUserAgentString(text);
- getAgent.setText(getResources().getString(R.string.agent_custom));
- }
- });
- agentStringPicker.show();
- }
-
- public void general(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, GeneralSettingsActivity.class));
- }
-
- });
- }
-
- public void display(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, DisplaySettingsActivity.class));
- }
-
- });
- }
-
- public void privacy(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, PrivacySettingsActivity.class));
- }
-
- });
- }
-
- public void advanced(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, AdvancedSettingsActivity.class));
- }
-
- });
+ @Override
+ protected boolean isValidFragment(String fragmentName) {
+ return fragments.contains(fragmentName);
}
- public void about(RelativeLayout view) {
- view.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- startActivity(new Intent(mContext, AboutSettingsActivity.class));
- }
-
- });
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ finish();
+ return true;
}
}
diff --git a/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
index e43e1e2..9c8913f 100644
--- a/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
@@ -3,12 +3,11 @@ package acr.browser.lightning.activity;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
import acr.browser.lightning.R;
import acr.browser.lightning.preference.PreferenceManager;
-public abstract class ThemableSettingsActivity extends AppCompatActivity {
+public abstract class ThemableSettingsActivity extends AppCompatPreferenceActivity {
private int mTheme;
@@ -34,7 +33,7 @@ public abstract class ThemableSettingsActivity extends AppCompatActivity {
}
}
- protected void restart() {
+ public void restart() {
final Bundle outState = new Bundle();
onSaveInstanceState(outState);
final Intent intent = new Intent(this, getClass());
diff --git a/app/src/main/java/acr/browser/lightning/fragment/AboutSettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/AboutSettingsFragment.java
new file mode 100644
index 0000000..ce4c4be
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/AboutSettingsFragment.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
+import acr.browser.lightning.R;
+
+public class AboutSettingsFragment extends PreferenceFragment {
+
+ private Activity mActivity;
+
+ private static final String SETTINGS_VERSION = "pref_version";
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preference_about);
+
+ mActivity = getActivity();
+
+ Preference version = findPreference(SETTINGS_VERSION);
+ version.setSummary(getVersion());
+ }
+
+ private String getVersion() {
+ try {
+ PackageInfo p = mActivity.getPackageManager().getPackageInfo(mActivity.getPackageName(), 0);
+ return p.versionName;
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ return "1.0";
+ }
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/fragment/AdvancedSettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/AdvancedSettingsFragment.java
new file mode 100644
index 0000000..be16af7
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/AdvancedSettingsFragment.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.preference.PreferenceManager;
+
+public class AdvancedSettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
+
+ private static final String SETTINGS_NEWWINDOW = "allow_new_window";
+ private static final String SETTINGS_ENABLECOOKIES = "allow_cookies";
+ private static final String SETTINGS_COOKIESINKOGNITO = "incognito_cookies";
+ private static final String SETTINGS_RESTORETABS = "restore_tabs";
+ private static final String SETTINGS_RENDERINGMODE = "rendering_mode";
+ private static final String SETTINGS_URLCONTENT = "url_contents";
+
+ private Activity mActivity;
+ private PreferenceManager mPreferences;
+ private CheckBoxPreference cbAllowPopups, cbenablecookies, cbcookiesInkognito, cbrestoreTabs;
+ private Preference renderingmode, urlcontent;
+ private CharSequence[] mUrlOptions;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preference_advanced);
+
+ mActivity = getActivity();
+
+ initPrefs();
+ }
+
+ private void initPrefs() {
+ // mPreferences storage
+ mPreferences = PreferenceManager.getInstance();
+
+ renderingmode = findPreference(SETTINGS_RENDERINGMODE);
+ urlcontent = findPreference(SETTINGS_URLCONTENT);
+ cbAllowPopups = (CheckBoxPreference) findPreference(SETTINGS_NEWWINDOW);
+ cbenablecookies = (CheckBoxPreference) findPreference(SETTINGS_ENABLECOOKIES);
+ cbcookiesInkognito = (CheckBoxPreference) findPreference(SETTINGS_COOKIESINKOGNITO);
+ cbrestoreTabs = (CheckBoxPreference) findPreference(SETTINGS_RESTORETABS);
+
+ renderingmode.setOnPreferenceClickListener(this);
+ urlcontent.setOnPreferenceClickListener(this);
+ cbAllowPopups.setOnPreferenceChangeListener(this);
+ cbenablecookies.setOnPreferenceChangeListener(this);
+ cbcookiesInkognito.setOnPreferenceChangeListener(this);
+ cbrestoreTabs.setOnPreferenceChangeListener(this);
+
+ switch (mPreferences.getRenderingMode()) {
+ case 0:
+ renderingmode.setSummary(getString(R.string.name_normal));
+ break;
+ case 1:
+ renderingmode.setSummary(getString(R.string.name_inverted));
+ break;
+ case 2:
+ renderingmode.setSummary(getString(R.string.name_grayscale));
+ break;
+ case 3:
+ renderingmode.setSummary(getString(R.string.name_inverted_grayscale));
+ break;
+ }
+
+ mUrlOptions = getResources().getStringArray(R.array.url_content_array);
+ int option = mPreferences.getUrlBoxContentChoice();
+ urlcontent.setSummary(mUrlOptions[option]);
+
+ cbAllowPopups.setChecked(mPreferences.getPopupsEnabled());
+ cbenablecookies.setChecked(mPreferences.getCookiesEnabled());
+ cbcookiesInkognito.setChecked(mPreferences.getIncognitoCookiesEnabled());
+ cbrestoreTabs.setChecked(mPreferences.getRestoreLostTabsEnabled());
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ switch (preference.getKey()) {
+ case SETTINGS_RENDERINGMODE:
+ renderPicker();
+ return true;
+ case SETTINGS_URLCONTENT:
+ urlBoxPicker();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ // switch preferences
+ switch (preference.getKey()) {
+ case SETTINGS_NEWWINDOW:
+ mPreferences.setPopupsEnabled((Boolean) newValue);
+ cbAllowPopups.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_ENABLECOOKIES:
+ mPreferences.setCookiesEnabled((Boolean) newValue);
+ cbenablecookies.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_COOKIESINKOGNITO:
+ mPreferences.setIncognitoCookiesEnabled((Boolean) newValue);
+ cbcookiesInkognito.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_RESTORETABS:
+ mPreferences.setRestoreLostTabsEnabled((Boolean) newValue);
+ cbrestoreTabs.setChecked((Boolean) newValue);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void renderPicker() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.rendering_mode));
+ CharSequence[] chars = {mActivity.getString(R.string.name_normal),
+ mActivity.getString(R.string.name_inverted),
+ mActivity.getString(R.string.name_grayscale),
+ mActivity.getString(R.string.name_inverted_grayscale)};
+
+ int n = mPreferences.getRenderingMode();
+
+ picker.setSingleChoiceItems(chars, n, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setRenderingMode(which);
+ switch (which) {
+ case 0:
+ renderingmode.setSummary(getString(R.string.name_normal));
+ break;
+ case 1:
+ renderingmode.setSummary(getString(R.string.name_inverted));
+ break;
+ case 2:
+ renderingmode.setSummary(getString(R.string.name_grayscale));
+ break;
+ case 3:
+ renderingmode.setSummary(getString(R.string.name_inverted_grayscale));
+ break;
+ }
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+
+ }
+ });
+ picker.show();
+ }
+
+ private void urlBoxPicker() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.url_contents));
+
+ int n = mPreferences.getUrlBoxContentChoice();
+
+ picker.setSingleChoiceItems(mUrlOptions, n, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setUrlBoxContentChoice(which);
+ if (which < mUrlOptions.length) {
+ urlcontent.setSummary(mUrlOptions[which]);
+ }
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+
+ }
+ });
+ picker.show();
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java
new file mode 100644
index 0000000..99f10a0
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Environment;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Comparator;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.database.BookmarkManager;
+import acr.browser.lightning.preference.PreferenceManager;
+
+public class BookmarkSettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {
+
+ private static final String SETTINGS_EXPORT = "export_bookmark";
+ private static final String SETTINGS_IMPORT = "import_bookmark";
+ private static final String SETTINGS_BROWSER_IMPORT = "import_browser_bookmark";
+
+ private Activity mActivity;
+ private PreferenceManager mPreferences;
+ private BookmarkManager mBookmarkManager;
+ private File[] mFileList;
+ private String[] mFileNameList;
+ private static final File mPath = new File(Environment.getExternalStorageDirectory().toString());
+ private static final int DIALOG_LOAD_FILE = 1000;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preference_bookmarks);
+
+ mActivity = getActivity();
+
+ mBookmarkManager = BookmarkManager.getInstance(mActivity);
+
+ initPrefs();
+ }
+
+ private void initPrefs() {
+ // mPreferences storage
+ mPreferences = PreferenceManager.getInstance();
+
+ Preference exportpref = findPreference(SETTINGS_EXPORT);
+ Preference importpref = findPreference(SETTINGS_IMPORT);
+ Preference importBrowserpref = findPreference(SETTINGS_BROWSER_IMPORT);
+
+ exportpref.setOnPreferenceClickListener(this);
+ importpref.setOnPreferenceClickListener(this);
+ importBrowserpref.setOnPreferenceClickListener(this);
+
+ if (mPreferences.getSystemBrowserPresent()) {
+ importBrowserpref.setSummary(getResources().getString(R.string.stock_browser_available));
+ } else {
+ importBrowserpref.setSummary(getResources().getString(R.string.stock_browser_unavailable));
+ }
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ switch (preference.getKey()) {
+ case SETTINGS_EXPORT:
+ mBookmarkManager.exportBookmarks();
+ return true;
+ case SETTINGS_IMPORT:
+ loadFileList(null);
+ onCreateDialog(DIALOG_LOAD_FILE);
+ return true;
+ case SETTINGS_BROWSER_IMPORT:
+ mBookmarkManager.importBookmarksFromBrowser(mActivity);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void loadFileList(File path) {
+ File file;
+ if (path != null) {
+ file = path;
+ } else {
+ file = mPath;
+ }
+ try {
+ file.mkdirs();
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ if (file.exists()) {
+ mFileList = file.listFiles();
+ } else {
+ mFileList = new File[0];
+ }
+
+ Arrays.sort(mFileList, new SortName());
+
+ if (mFileList == null) {
+ mFileNameList = new String[0];
+ mFileList = new File[0];
+ } else {
+ mFileNameList = new String[mFileList.length];
+ }
+ for (int n = 0; n < mFileList.length; n++) {
+ mFileNameList[n] = mFileList[n].getName();
+ }
+ }
+
+ private class SortName implements Comparator {
+
+ @Override
+ public int compare(File a, File b) {
+ if (a.isDirectory() && b.isDirectory())
+ return a.getName().compareTo(b.getName());
+
+ if (a.isDirectory())
+ return -1;
+
+ if (b.isDirectory())
+ return 1;
+
+ if (a.isFile() && b.isFile())
+ return a.getName().compareTo(b.getName());
+ else
+ return 1;
+ }
+ }
+
+ protected Dialog onCreateDialog(int id) {
+ Dialog dialog;
+ final AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+
+ switch (id) {
+ case DIALOG_LOAD_FILE:
+ builder.setTitle(R.string.title_chooser);
+ if (mFileList == null) {
+ dialog = builder.create();
+ return dialog;
+ }
+ builder.setItems(mFileNameList, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (mFileList[which].isDirectory()) {
+ loadFileList(mFileList[which]);
+ builder.setItems(mFileNameList, this);
+ builder.show();
+ } else {
+ mBookmarkManager.importBookmarksFromFile(mFileList[which], mActivity);
+ }
+ }
+
+ });
+ break;
+ }
+ dialog = builder.show();
+ return dialog;
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/fragment/DisplaySettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/DisplaySettingsFragment.java
new file mode 100644
index 0000000..00f8120
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/DisplaySettingsFragment.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.activity.SettingsActivity;
+import acr.browser.lightning.preference.PreferenceManager;
+
+public class DisplaySettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
+
+ private static final String SETTINGS_HIDESTATUSBAR = "fullScreenOption";
+ private static final String SETTINGS_FULLSCREEN = "fullscreen";
+ private static final String SETTINGS_VIEWPORT = "wideViewPort";
+ private static final String SETTINGS_OVERVIEWMODE = "overViewMode";
+ private static final String SETTINGS_REFLOW = "text_reflow";
+ private static final String SETTINGS_THEME = "app_theme";
+ private static final String SETTINGS_TEXTSIZE = "text_size";
+
+ private Activity mActivity;
+ private PreferenceManager mPreferences;
+ private CheckBoxPreference cbstatus, cbfullscreen, cbviewport, cboverview, cbreflow;
+ private Preference theme, textsize;
+ private String[] mThemeOptions;
+ private int mCurrentTheme;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preference_display);
+
+ mActivity = getActivity();
+
+ initPrefs();
+ }
+
+ private void initPrefs() {
+ // mPreferences storage
+ mPreferences = PreferenceManager.getInstance();
+ mThemeOptions = this.getResources().getStringArray(R.array.themes);
+ mCurrentTheme = mPreferences.getUseTheme();
+
+ theme = findPreference(SETTINGS_THEME);
+ textsize = findPreference(SETTINGS_TEXTSIZE);
+ cbstatus = (CheckBoxPreference) findPreference(SETTINGS_HIDESTATUSBAR);
+ cbfullscreen = (CheckBoxPreference) findPreference(SETTINGS_FULLSCREEN);
+ cbviewport = (CheckBoxPreference) findPreference(SETTINGS_VIEWPORT);
+ cboverview = (CheckBoxPreference) findPreference(SETTINGS_OVERVIEWMODE);
+ cbreflow = (CheckBoxPreference) findPreference(SETTINGS_REFLOW);
+
+ theme.setOnPreferenceClickListener(this);
+ textsize.setOnPreferenceClickListener(this);
+ cbstatus.setOnPreferenceChangeListener(this);
+ cbfullscreen.setOnPreferenceChangeListener(this);
+ cbviewport.setOnPreferenceChangeListener(this);
+ cboverview.setOnPreferenceChangeListener(this);
+ cbreflow.setOnPreferenceChangeListener(this);
+
+ cbstatus.setChecked(mPreferences.getHideStatusBarEnabled());
+ cbfullscreen.setChecked(mPreferences.getFullScreenEnabled());
+ cbviewport.setChecked(mPreferences.getUseWideViewportEnabled());
+ cboverview.setChecked(mPreferences.getOverviewModeEnabled());
+ cbreflow.setChecked(mPreferences.getTextReflowEnabled());
+
+ theme.setSummary(mThemeOptions[mPreferences.getUseTheme()]);
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ switch (preference.getKey()) {
+ case SETTINGS_THEME:
+ themePicker();
+ return true;
+ case SETTINGS_TEXTSIZE:
+ textSizePicker();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ // switch preferences
+ switch (preference.getKey()) {
+ case SETTINGS_HIDESTATUSBAR:
+ mPreferences.setHideStatusBarEnabled((Boolean) newValue);
+ cbstatus.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_FULLSCREEN:
+ mPreferences.setFullScreenEnabled((Boolean) newValue);
+ cbfullscreen.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_VIEWPORT:
+ mPreferences.setUseWideViewportEnabled((Boolean) newValue);
+ cbviewport.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_OVERVIEWMODE:
+ mPreferences.setOverviewModeEnabled((Boolean) newValue);
+ cboverview.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_REFLOW:
+ mPreferences.setTextReflowEnabled((Boolean) newValue);
+ cbreflow.setChecked((Boolean) newValue);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void textSizePicker() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.title_text_size));
+
+ int n = mPreferences.getTextSize();
+
+ picker.setSingleChoiceItems(R.array.text_size, n - 1,
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setTextSize(which + 1);
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+
+ }
+ });
+ picker.show();
+ }
+
+ private void themePicker() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.url_contents));
+
+ int n = mPreferences.getUseTheme();
+ picker.setSingleChoiceItems(mThemeOptions, n, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setUseTheme(which);
+ if (which < mThemeOptions.length) {
+ theme.setSummary(mThemeOptions[which]);
+ }
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (mCurrentTheme != mPreferences.getUseTheme()) {
+ ((SettingsActivity) getActivity()).restart();
+ }
+ }
+ });
+ picker.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ if (mCurrentTheme != mPreferences.getUseTheme()) {
+ ((SettingsActivity) getActivity()).restart();
+ }
+ }
+ });
+ picker.show();
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/fragment/GeneralSettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/GeneralSettingsFragment.java
new file mode 100644
index 0000000..364b7c0
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/GeneralSettingsFragment.java
@@ -0,0 +1,592 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Environment;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.utils.ProxyUtils;
+import acr.browser.lightning.utils.Utils;
+
+public class GeneralSettingsFragment extends PreferenceFragment 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 PreferenceManager mPreferences;
+ private CharSequence[] mProxyChoices;
+ private Preference proxy, useragent, downloadloc, home, searchengine;
+ private String mDownloadLocation;
+ private int mAgentChoice;
+ private String mHomepage;
+ private CheckBoxPreference cbFlash, cbAds, cbImages, cbJsScript, cbColorMode, cbgooglesuggest;
+
+ @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() {
+ // mPreferences storage
+ mPreferences = PreferenceManager.getInstance();
+
+ proxy = findPreference(SETTINGS_PROXY);
+ useragent = findPreference(SETTINGS_USERAGENT);
+ downloadloc = findPreference(SETTINGS_DOWNLOAD);
+ home = findPreference(SETTINGS_HOME);
+ searchengine = findPreference(SETTINGS_SEARCHENGINE);
+ cbFlash = (CheckBoxPreference) findPreference(SETTINGS_FLASH);
+ cbAds = (CheckBoxPreference) findPreference(SETTINGS_ADS);
+ cbImages = (CheckBoxPreference) findPreference(SETTINGS_IMAGES);
+ cbJsScript = (CheckBoxPreference) findPreference(SETTINGS_JAVASCRIPT);
+ cbColorMode = (CheckBoxPreference) findPreference(SETTINGS_COLORMODE);
+ 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 = mPreferences.getUserAgentChoice();
+ mHomepage = mPreferences.getHomepage();
+ mDownloadLocation = mPreferences.getDownloadDirectory();
+ mProxyChoices = getResources().getStringArray(R.array.proxy_choices_array);
+
+ int choice = mPreferences.getProxyChoice();
+ if (choice == Constants.PROXY_MANUAL) {
+ proxy.setSummary(mPreferences.getProxyHost() + ":" + mPreferences.getProxyPort());
+ } else {
+ proxy.setSummary(mProxyChoices[choice]);
+ }
+
+ if (API >= 19) {
+ mPreferences.setFlashSupport(0);
+ }
+
+ setSearchEngineSummary(mPreferences.getSearchChoice());
+
+ downloadloc.setSummary(Constants.EXTERNAL_STORAGE + '/' + 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 = mPreferences.getFlashSupport();
+ boolean imagesBool = mPreferences.getBlockImagesEnabled();
+ boolean enableJSBool = mPreferences.getJavaScriptEnabled();
+
+ proxy.setEnabled(Constants.FULL_VERSION);
+ cbAds.setEnabled(Constants.FULL_VERSION);
+ cbFlash.setEnabled(API < 19);
+
+ cbImages.setChecked(imagesBool);
+ cbJsScript.setChecked(enableJSBool);
+ cbFlash.setChecked(flashNum > 0);
+ cbAds.setChecked(Constants.FULL_VERSION && mPreferences.getAdBlockEnabled());
+ cbColorMode.setChecked(mPreferences.getColorModeEnabled());
+ cbgooglesuggest.setChecked(mPreferences.getGoogleSearchSuggestionsEnabled());
+ }
+
+ public 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 = mPreferences.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();
+ mPreferences.setSearchUrl(text);
+ searchengine.setSummary(getResources().getString(R.string.custom_url) + ": "
+ + text);
+ }
+ });
+ urlPicker.show();
+ }
+
+ 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) {
+ mPreferences.setFlashSupport(1);
+ }
+ })
+ .setNegativeButton(getResources().getString(R.string.action_auto),
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setFlashSupport(2);
+ }
+ }).setOnCancelListener(new DialogInterface.OnCancelListener() {
+
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ mPreferences.setFlashSupport(0);
+ }
+
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+ }
+
+ private void proxyChoicePicker() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.http_proxy));
+ picker.setSingleChoiceItems(mProxyChoices, mPreferences.getProxyChoice(),
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ setProxyChoice(which);
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ picker.show();
+ }
+
+ private void setProxyChoice(int choice) {
+ ProxyUtils utils = ProxyUtils.getInstance(mActivity);
+ switch (choice) {
+ case Constants.PROXY_ORBOT:
+ choice = utils.setProxyChoice(choice, mActivity);
+ break;
+ case Constants.PROXY_I2P:
+ choice = utils.setProxyChoice(choice, mActivity);
+ break;
+ case Constants.PROXY_MANUAL:
+ manualProxyPicker();
+ break;
+ }
+
+ mPreferences.setProxyChoice(choice);
+ if (choice < mProxyChoices.length)
+ proxy.setSummary(mProxyChoices[choice]);
+ }
+
+ public 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);
+ eProxyHost.setText(mPreferences.getProxyHost());
+ eProxyPort.setText(Integer.toString(mPreferences.getProxyPort()));
+
+ 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 = Integer.parseInt(eProxyPort.getText().toString());
+ mPreferences.setProxyHost(proxyHost);
+ mPreferences.setProxyPort(proxyPort);
+ proxy.setSummary(proxyHost + ":" + proxyPort);
+ }
+ })
+ .show();
+ }
+
+ public 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 = mPreferences.getSearchChoice();
+
+ picker.setSingleChoiceItems(chars, n, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.setSearchChoice(which);
+ setSearchEngineSummary(which);
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ picker.show();
+ }
+
+ public void homepageDialog() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.home));
+ mHomepage = mPreferences.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:
+ mPreferences.setHomepage("about:home");
+ home.setSummary(getResources().getString(R.string.action_homepage));
+ break;
+ case 2:
+ mPreferences.setHomepage("about:blank");
+ home.setSummary(getResources().getString(R.string.action_blank));
+ break;
+ case 3:
+ mPreferences.setHomepage("about:bookmarks");
+ home.setSummary(getResources().getString(R.string.action_bookmarks));
+ break;
+ case 4:
+ homePicker();
+ break;
+ }
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ picker.show();
+ }
+
+ public 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 = mPreferences.getHomepage();
+ if (!mHomepage.startsWith("about:")) {
+ getHome.setText(mHomepage);
+ } else {
+ getHome.setText("http://www.google.com");
+ }
+ 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();
+ mPreferences.setHomepage(text);
+ home.setSummary(text);
+ }
+ });
+ homePicker.show();
+ }
+
+ public void downloadLocDialog() {
+ AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
+ picker.setTitle(getResources().getString(R.string.title_download_location));
+ mDownloadLocation = mPreferences.getDownloadDirectory();
+ int n;
+ if (mDownloadLocation.contains(Environment.DIRECTORY_DOWNLOADS)) {
+ n = 1;
+ } else {
+ n = 2;
+ }
+
+ picker.setSingleChoiceItems(R.array.download_folder, n - 1,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which + 1) {
+ case 1:
+ mPreferences.setDownloadDirectory(Environment.DIRECTORY_DOWNLOADS);
+ downloadloc.setSummary(Constants.EXTERNAL_STORAGE + '/'
+ + Environment.DIRECTORY_DOWNLOADS);
+ break;
+ case 2:
+ downPicker();
+ break;
+ }
+ }
+ });
+ picker.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ picker.show();
+ }
+
+ public void agentDialog() {
+ AlertDialog.Builder agentPicker = new AlertDialog.Builder(mActivity);
+ agentPicker.setTitle(getResources().getString(R.string.title_user_agent));
+ mAgentChoice = mPreferences.getUserAgentChoice();
+ agentPicker.setSingleChoiceItems(R.array.user_agent, mAgentChoice - 1,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mPreferences.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.setNeutralButton(getResources().getString(R.string.action_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ agentPicker.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ Log.i("Cancelled", "");
+ }
+ });
+ agentPicker.show();
+ }
+
+ public 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();
+ mPreferences.setUserAgentString(text);
+ useragent.setSummary(getResources().getString(R.string.agent_custom));
+ }
+ });
+ agentStringPicker.show();
+ }
+
+ public 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.setText(mPreferences.getDownloadDirectory());
+
+ int padding = Utils.convertDpToPixels(10);
+
+ TextView v = new TextView(mActivity);
+ v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
+ v.setTextColor(Color.DKGRAY);
+ v.setText(Constants.EXTERNAL_STORAGE + '/');
+ v.setPadding(padding, padding, 0, padding);
+ layout.addView(v);
+ layout.addView(getDownload);
+ if (API < 16) {
+ layout.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.edit_text));
+ } else {
+ layout.setBackground(getResources().getDrawable(android.R.drawable.edit_text));
+ }
+ 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();
+ mPreferences.setDownloadDirectory(text);
+ downloadloc.setSummary(Constants.EXTERNAL_STORAGE + '/' + text);
+ }
+ });
+ downLocationPicker.show();
+ }
+
+ 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(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(Preference preference, Object newValue) {
+ // switch preferences
+ switch (preference.getKey()) {
+ case SETTINGS_FLASH:
+ if (cbFlash.isChecked()) {
+ getFlashChoice();
+ } else {
+ mPreferences.setFlashSupport(0);
+ }
+ if (!Utils.isFlashInstalled(mActivity) && cbFlash.isChecked()) {
+ Utils.createInformativeDialog(mActivity,
+ mActivity.getResources().getString(R.string.title_warning),
+ mActivity.getResources().getString(R.string.dialog_adobe_not_installed));
+ cbFlash.setEnabled(false);
+ mPreferences.setFlashSupport(0);
+ }
+ cbFlash.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_ADS:
+ mPreferences.setAdBlockEnabled((Boolean) newValue);
+ cbAds.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_IMAGES:
+ mPreferences.setBlockImagesEnabled((Boolean) newValue);
+ cbImages.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_JAVASCRIPT:
+ mPreferences.setJavaScriptEnabled((Boolean) newValue);
+ cbJsScript.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_COLORMODE:
+ mPreferences.setColorModeEnabled((Boolean) newValue);
+ cbColorMode.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_GOOGLESUGGESTIONS:
+ mPreferences.setGoogleSearchSuggestionsEnabled((Boolean) newValue);
+ cbgooglesuggest.setChecked((Boolean) newValue);
+ return true;
+ default:
+ return false;
+ }
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/fragment/PrivacySettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/PrivacySettingsFragment.java
new file mode 100644
index 0000000..56c7335
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/fragment/PrivacySettingsFragment.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.fragment;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.provider.Browser;
+import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
+import android.webkit.WebIconDatabase;
+import android.webkit.WebStorage;
+import android.webkit.WebView;
+import android.webkit.WebViewDatabase;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.database.HistoryDatabase;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.utils.Utils;
+
+public class PrivacySettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
+
+ private static final String SETTINGS_LOCATION = "location";
+ private static final String SETTINGS_THIRDPCOOKIES = "third_party";
+ private static final String SETTINGS_SAVEPASSWORD = "password";
+ private static final String SETTINGS_CACHEEXIT = "clear_cache_exit";
+ private static final String SETTINGS_HISTORYEXIT = "clear_history_exit";
+ private static final String SETTINGS_COOKIEEXIT = "clear_cookies_exit";
+ private static final String SETTINGS_SYNCHISTORY = "sync_history";
+ private static final String SETTINGS_CLEARCACHE = "clear_cache";
+ private static final String SETTINGS_CLEARHISTORY = "clear_history";
+ private static final String SETTINGS_CLEARCOOKIES = "clear_cookies";
+
+ private static final int API = android.os.Build.VERSION.SDK_INT;
+ private Activity mActivity;
+ private PreferenceManager mPreferences;
+ private CheckBoxPreference cblocation, cb3cookies, cbsavepasswords, cbcacheexit, cbhistoryexit,
+ cbcookiesexit, cbsynchistory;
+ private Preference clearcache, clearhistory, clearcookies;
+ private boolean mSystemBrowser;
+ private Handler messageHandler;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preference_privacy);
+
+ mActivity = getActivity();
+
+ initPrefs();
+ }
+
+ private void initPrefs() {
+ // mPreferences storage
+ mPreferences = PreferenceManager.getInstance();
+ mSystemBrowser = mPreferences.getSystemBrowserPresent();
+
+ clearcache = findPreference(SETTINGS_CLEARCACHE);
+ clearhistory = findPreference(SETTINGS_CLEARHISTORY);
+ clearcookies = findPreference(SETTINGS_CLEARCOOKIES);
+ cblocation = (CheckBoxPreference) findPreference(SETTINGS_LOCATION);
+ cb3cookies = (CheckBoxPreference) findPreference(SETTINGS_THIRDPCOOKIES);
+ cbsavepasswords = (CheckBoxPreference) findPreference(SETTINGS_SAVEPASSWORD);
+ cbcacheexit = (CheckBoxPreference) findPreference(SETTINGS_CACHEEXIT);
+ cbhistoryexit = (CheckBoxPreference) findPreference(SETTINGS_HISTORYEXIT);
+ cbcookiesexit = (CheckBoxPreference) findPreference(SETTINGS_COOKIEEXIT);
+ cbsynchistory = (CheckBoxPreference) findPreference(SETTINGS_SYNCHISTORY);
+
+ clearcache.setOnPreferenceClickListener(this);
+ clearhistory.setOnPreferenceClickListener(this);
+ clearcookies.setOnPreferenceClickListener(this);
+ cblocation.setOnPreferenceChangeListener(this);
+ cb3cookies.setOnPreferenceChangeListener(this);
+ cbsavepasswords.setOnPreferenceChangeListener(this);
+ cbcacheexit.setOnPreferenceChangeListener(this);
+ cbhistoryexit.setOnPreferenceChangeListener(this);
+ cbcookiesexit.setOnPreferenceChangeListener(this);
+ cbsynchistory.setOnPreferenceChangeListener(this);
+
+ cblocation.setChecked(mPreferences.getLocationEnabled());
+ cbsavepasswords.setChecked(mPreferences.getSavePasswordsEnabled());
+ cbcacheexit.setChecked(mPreferences.getClearCacheExit());
+ cbhistoryexit.setChecked(mPreferences.getClearHistoryExitEnabled());
+ cbcookiesexit.setChecked(mPreferences.getClearCookiesExitEnabled());
+ cb3cookies.setChecked(mPreferences.getBlockThirdPartyCookiesEnabled());
+
+ cb3cookies.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
+
+ if (!mSystemBrowser) {
+ cbsynchistory.setChecked(false);
+ cbsynchistory.setEnabled(false);
+ cbsynchistory.setSummary(getResources().getString(R.string.stock_browser_unavailable));
+ } else {
+ cbsynchistory.setEnabled(true);
+ cbsynchistory.setChecked(mPreferences.getSyncHistoryEnabled());
+ cbsynchistory.setSummary(getResources().getString(R.string.stock_browser_available));
+ }
+
+ messageHandler = new MessageHandler(mActivity);
+ }
+
+ private static class MessageHandler extends Handler {
+
+ final Context mHandlerContext;
+
+ public MessageHandler(Context context) {
+ this.mHandlerContext = context;
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ Utils.showToast(mHandlerContext, mHandlerContext.getResources()
+ .getString(R.string.message_clear_history));
+ break;
+ case 2:
+ Utils.showToast(mHandlerContext, mHandlerContext.getResources().getString(
+ R.string.message_cookies_cleared));
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ switch (preference.getKey()) {
+ case SETTINGS_CLEARCACHE:
+ clearCache();
+ return true;
+ case SETTINGS_CLEARHISTORY:
+ clearHistoryDialog();
+ return true;
+ case SETTINGS_CLEARCOOKIES:
+ clearCookiesDialog();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void clearHistoryDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+ builder.setTitle(getResources().getString(R.string.title_clear_history));
+ builder.setMessage(getResources().getString(R.string.dialog_history))
+ .setPositiveButton(getResources().getString(R.string.action_yes),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface arg0, int arg1) {
+ Thread clear = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ clearHistory();
+ }
+ });
+ clear.start();
+ }
+ })
+ .setNegativeButton(getResources().getString(R.string.action_no),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface arg0, int arg1) {
+ }
+ }).show();
+ }
+
+ private void clearCookiesDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+ builder.setTitle(getResources().getString(R.string.title_clear_cookies));
+ builder.setMessage(getResources().getString(R.string.dialog_cookies))
+ .setPositiveButton(getResources().getString(R.string.action_yes),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface arg0, int arg1) {
+ Thread clear = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ clearCookies();
+ }
+ });
+ clear.start();
+ }
+ })
+ .setNegativeButton(getResources().getString(R.string.action_no),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface arg0, int arg1) {
+ }
+ }).show();
+ }
+
+ private void clearCache() {
+ WebView webView = new WebView(mActivity);
+ webView.clearCache(true);
+ webView.destroy();
+ Utils.showToast(mActivity, getResources().getString(R.string.message_cache_cleared));
+ }
+
+ @SuppressWarnings("deprecation")
+ private void clearHistory() {
+ mActivity.deleteDatabase(HistoryDatabase.DATABASE_NAME);
+ WebViewDatabase m = WebViewDatabase.getInstance(mActivity);
+ m.clearFormData();
+ m.clearHttpAuthUsernamePassword();
+ if (API < 18) {
+ m.clearUsernamePassword();
+ WebIconDatabase.getInstance().removeAllIcons();
+ }
+ if (mSystemBrowser) {
+ try {
+ Browser.clearHistory(mActivity.getContentResolver());
+ } catch (Exception ignored) {
+ }
+ }
+ Utils.trimCache(mActivity);
+ messageHandler.sendEmptyMessage(1);
+ }
+
+ @SuppressWarnings("deprecation")
+ private void clearCookies() {
+ // TODO Break out web storage deletion into its own option/action
+ // TODO clear web storage for all sites that are visited in Incognito mode
+ WebStorage storage = WebStorage.getInstance();
+ storage.deleteAllData();
+ CookieManager c = CookieManager.getInstance();
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ c.removeAllCookies(null);
+ } else {
+ CookieSyncManager.createInstance(mActivity);
+ c.removeAllCookie();
+ }
+ messageHandler.sendEmptyMessage(2);
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ // switch preferences
+ switch (preference.getKey()) {
+ case SETTINGS_LOCATION:
+ mPreferences.setLocationEnabled((Boolean) newValue);
+ cblocation.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_THIRDPCOOKIES:
+ mPreferences.setBlockThirdPartyCookiesEnabled((Boolean) newValue);
+ cb3cookies.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_SAVEPASSWORD:
+ mPreferences.setSavePasswordsEnabled((Boolean) newValue);
+ cbsavepasswords.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_CACHEEXIT:
+ mPreferences.setClearCacheExit((Boolean) newValue);
+ cbcacheexit.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_HISTORYEXIT:
+ mPreferences.setClearHistoryExitEnabled((Boolean) newValue);
+ cbhistoryexit.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_COOKIEEXIT:
+ mPreferences.setClearCookiesExitEnabled((Boolean) newValue);
+ cbcookiesexit.setChecked((Boolean) newValue);
+ return true;
+ case SETTINGS_SYNCHISTORY:
+ mPreferences.setSyncHistoryEnabled((Boolean) newValue);
+ cbsynchistory.setChecked((Boolean) newValue);
+ return true;
+ default:
+ return false;
+ }
+ }
+}
diff --git a/app/src/main/java/acr/browser/lightning/utils/Utils.java b/app/src/main/java/acr/browser/lightning/utils/Utils.java
index 2dd93ef..da74107 100644
--- a/app/src/main/java/acr/browser/lightning/utils/Utils.java
+++ b/app/src/main/java/acr/browser/lightning/utils/Utils.java
@@ -9,6 +9,8 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -20,17 +22,15 @@ import android.util.Log;
import android.webkit.URLUtil;
import android.widget.Toast;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
-import acr.browser.lightning.constant.Constants;
-import acr.browser.lightning.database.HistoryItem;
import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
import acr.browser.lightning.download.DownloadHandler;
public final class Utils {
@@ -63,11 +63,11 @@ public final class Utils {
builder.setMessage(message)
.setCancelable(true)
.setPositiveButton(context.getResources().getString(R.string.action_ok),
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- }
- });
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ }
+ });
AlertDialog alert = builder.create();
alert.show();
}
@@ -114,26 +114,6 @@ public final class Utils {
return url.substring(0, index + 2);
}
- public static List getOldBookmarks(Context context) {
- List bookmarks = new ArrayList<>();
- File bookUrl = new File(context.getFilesDir(), "bookurl");
- File book = new File(context.getFilesDir(), "bookmarks");
- try {
- BufferedReader readUrl = new BufferedReader(new FileReader(bookUrl));
- BufferedReader readBook = new BufferedReader(new FileReader(book));
- String u, t;
- while ((u = readUrl.readLine()) != null && (t = readBook.readLine()) != null) {
- HistoryItem map = new HistoryItem(u, t, R.drawable.ic_bookmark);
- bookmarks.add(map);
- }
- readBook.close();
- readUrl.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return bookmarks;
- }
-
public static String[] getArray(String input) {
return input.split(Constants.SEPARATOR);
}
@@ -227,6 +207,19 @@ public final class Utils {
);
}
+ public static boolean isFlashInstalled(Context context) {
+ try {
+ PackageManager pm = context.getPackageManager();
+ ApplicationInfo ai = pm.getApplicationInfo("com.adobe.flashplayer", 0);
+ if (ai != null) {
+ return true;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ return false;
+ }
+
public static Bitmap getWebpageBitmap(Resources resources, boolean dark) {
if (dark) {
if (mWebIconDark == null) {
diff --git a/app/src/main/res/layout/about_settings.xml b/app/src/main/res/layout/about_settings.xml
deleted file mode 100644
index 4a1da29..0000000
--- a/app/src/main/res/layout/about_settings.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/advanced_settings.xml b/app/src/main/res/layout/advanced_settings.xml
deleted file mode 100644
index 7a5ad24..0000000
--- a/app/src/main/res/layout/advanced_settings.xml
+++ /dev/null
@@ -1,267 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/bookmark_settings.xml b/app/src/main/res/layout/bookmark_settings.xml
deleted file mode 100644
index f172e82..0000000
--- a/app/src/main/res/layout/bookmark_settings.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/display_settings.xml b/app/src/main/res/layout/display_settings.xml
deleted file mode 100644
index c333bee..0000000
--- a/app/src/main/res/layout/display_settings.xml
+++ /dev/null
@@ -1,301 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/general_settings.xml b/app/src/main/res/layout/general_settings.xml
deleted file mode 100644
index ce1eea4..0000000
--- a/app/src/main/res/layout/general_settings.xml
+++ /dev/null
@@ -1,238 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/license_activity.xml b/app/src/main/res/layout/license_activity.xml
deleted file mode 100644
index 030a624..0000000
--- a/app/src/main/res/layout/license_activity.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/privacy_settings.xml b/app/src/main/res/layout/privacy_settings.xml
deleted file mode 100644
index 3a22150..0000000
--- a/app/src/main/res/layout/privacy_settings.xml
+++ /dev/null
@@ -1,378 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/settings.xml b/app/src/main/res/layout/settings.xml
deleted file mode 100644
index cdf4351..0000000
--- a/app/src/main/res/layout/settings.xml
+++ /dev/null
@@ -1,411 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/toolbar_settings.xml b/app/src/main/res/layout/toolbar_settings.xml
index bf3cf82..ba0f63a 100644
--- a/app/src/main/res/layout/toolbar_settings.xml
+++ b/app/src/main/res/layout/toolbar_settings.xml
@@ -1,11 +1,18 @@
-
+ android:layout_height="wrap_content">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_about.xml b/app/src/main/res/xml/preference_about.xml
new file mode 100644
index 0000000..9843e1d
--- /dev/null
+++ b/app/src/main/res/xml/preference_about.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_advanced.xml b/app/src/main/res/xml/preference_advanced.xml
new file mode 100644
index 0000000..6a91499
--- /dev/null
+++ b/app/src/main/res/xml/preference_advanced.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_bookmarks.xml b/app/src/main/res/xml/preference_bookmarks.xml
new file mode 100644
index 0000000..692ff25
--- /dev/null
+++ b/app/src/main/res/xml/preference_bookmarks.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_display.xml b/app/src/main/res/xml/preference_display.xml
new file mode 100644
index 0000000..0a7f0a2
--- /dev/null
+++ b/app/src/main/res/xml/preference_display.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_general.xml b/app/src/main/res/xml/preference_general.xml
new file mode 100644
index 0000000..d2b3d99
--- /dev/null
+++ b/app/src/main/res/xml/preference_general.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preference_privacy.xml b/app/src/main/res/xml/preference_privacy.xml
new file mode 100644
index 0000000..9dede77
--- /dev/null
+++ b/app/src/main/res/xml/preference_privacy.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preferences_headers.xml b/app/src/main/res/xml/preferences_headers.xml
new file mode 100644
index 0000000..339554d
--- /dev/null
+++ b/app/src/main/res/xml/preferences_headers.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file