]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java
Combine drawable files. https://redmine.stoutner.com/issues/794
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / DomainsActivity.java
index 2283277fb9f328ad741e4ac772a15abb744b99e8..2ef534f1d4286fb54557e8926efcf3b0bf648c82 100644 (file)
@@ -1,20 +1,20 @@
 /*
 /*
- * Copyright © 2017-2020 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2017-2022 Soren Stoutner <soren@stoutner.com>.
  *
  *
- * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
  *
- * Privacy Browser is free software: you can redistribute it and/or modify
+ * Privacy Browser Android is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
- * Privacy Browser is distributed in the hope that it will be useful,
+ * Privacy Browser Android is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package com.stoutner.privacybrowser.activities;
  */
 
 package com.stoutner.privacybrowser.activities;
@@ -23,7 +23,6 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.os.Bundle;
@@ -129,8 +128,9 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         // Get a handle for the shared preferences.
         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 
         // Get a handle for the shared preferences.
         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 
-        // Get the screenshot preference.
-        boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
+        // Get the preferences.
+        boolean allowScreenshots = sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false);
+        boolean bottomAppBar = sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false);
 
         // Disable screenshots if not allowed.
         if (!allowScreenshots) {
 
         // Disable screenshots if not allowed.
         if (!allowScreenshots) {
@@ -178,8 +178,12 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         sslEndDateLong = intent.getLongExtra("ssl_end_date", 0);
         currentIpAddresses = intent.getStringExtra("current_ip_addresses");
 
         sslEndDateLong = intent.getLongExtra("ssl_end_date", 0);
         currentIpAddresses = intent.getStringExtra("current_ip_addresses");
 
-        // Set the content view.
-        setContentView(R.layout.domains_coordinatorlayout);
+        // Set the view.
+        if (bottomAppBar) {
+            setContentView(R.layout.domains_bottom_appbar);
+        } else {
+            setContentView(R.layout.domains_top_appbar);
+        }
 
         // Populate the class variables.
         coordinatorLayout = findViewById(R.id.domains_coordinatorlayout);
 
         // Populate the class variables.
         coordinatorLayout = findViewById(R.id.domains_coordinatorlayout);
@@ -447,7 +451,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
                     @Override
                     public void bindView(View view, Context context, Cursor cursor) {
                         // Get the domain name string.
                     @Override
                     public void bindView(View view, Context context, Cursor cursor) {
                         // Get the domain name string.
-                        String domainNameString = cursor.getString(cursor.getColumnIndex(DomainsDatabaseHelper.DOMAIN_NAME));
+                        String domainNameString = cursor.getString(cursor.getColumnIndexOrThrow(DomainsDatabaseHelper.DOMAIN_NAME));
 
                         // Get a handle for the domain name text view.
                         TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
 
                         // Get a handle for the domain name text view.
                         TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
@@ -502,7 +506,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
                                             @Override
                                             public void bindView(View view, Context context, Cursor cursor) {
                                                 /// Get the domain name string.
                                             @Override
                                             public void bindView(View view, Context context, Cursor cursor) {
                                                 /// Get the domain name string.
-                                                String domainNameString = cursor.getString(cursor.getColumnIndex(DomainsDatabaseHelper.DOMAIN_NAME));
+                                                String domainNameString = cursor.getString(cursor.getColumnIndexOrThrow(DomainsDatabaseHelper.DOMAIN_NAME));
 
                                                 // Get a handle for the domain name text view.
                                                 TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
 
                                                 // Get a handle for the domain name text view.
                                                 TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
@@ -524,15 +528,8 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
                                         // Enable the options delete menu item.
                                         deleteMenuItem.setEnabled(true);
 
                                         // Enable the options delete menu item.
                                         deleteMenuItem.setEnabled(true);
 
-                                        // Get the current theme status.
-                                        int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
-
-                                        // Set the delete menu item icon according to the theme.
-                                        if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) {
-                                            deleteMenuItem.setIcon(R.drawable.delete_night);
-                                        } else {
-                                            deleteMenuItem.setIcon(R.drawable.delete_day);
-                                        }
+                                        // Set the delete menu item icon.
+                                        deleteMenuItem.setIcon(R.drawable.delete_enabled);
                                     } else {  // The device in in one-paned mode.
                                         // Display the domain settings fragment.
                                         fragmentManager.beginTransaction().replace(R.id.domains_listview_fragment_container, domainSettingsFragment).commit();
                                     } else {  // The device in in one-paned mode.
                                         // Display the domain settings fragment.
                                         fragmentManager.beginTransaction().replace(R.id.domains_listview_fragment_container, domainSettingsFragment).commit();
@@ -559,15 +556,8 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
                                                 // Enable the delete menu item.
                                                 deleteMenuItem.setEnabled(true);
 
                                                 // Enable the delete menu item.
                                                 deleteMenuItem.setEnabled(true);
 
-                                                // Get the current theme status.
-                                                int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
-
-                                                // Set the delete menu item icon according to the theme.
-                                                if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) {
-                                                    deleteMenuItem.setIcon(R.drawable.delete_night);
-                                                } else {
-                                                    deleteMenuItem.setIcon(R.drawable.delete_day);
-                                                }
+                                                // Set the delete menu item icon.
+                                                deleteMenuItem.setIcon(R.drawable.delete_enabled);
                                             } else {  // Single-paned mode.
                                                 // Show the delete menu item.
                                                 deleteMenuItem.setVisible(true);
                                             } else {  // Single-paned mode.
                                                 // Show the delete menu item.
                                                 deleteMenuItem.setVisible(true);
@@ -749,8 +739,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         // Get handles for the domain settings.
         EditText domainNameEditText = view.findViewById(R.id.domain_settings_name_edittext);
         SwitchCompat javaScriptSwitch = view.findViewById(R.id.javascript_switch);
         // Get handles for the domain settings.
         EditText domainNameEditText = view.findViewById(R.id.domain_settings_name_edittext);
         SwitchCompat javaScriptSwitch = view.findViewById(R.id.javascript_switch);
-        SwitchCompat firstPartyCookiesSwitch = view.findViewById(R.id.first_party_cookies_switch);
-        SwitchCompat thirdPartyCookiesSwitch = view.findViewById(R.id.third_party_cookies_switch);
+        SwitchCompat cookiesSwitch = view.findViewById(R.id.cookies_switch);
         SwitchCompat domStorageSwitch = view.findViewById(R.id.dom_storage_switch);
         SwitchCompat formDataSwitch = view.findViewById(R.id.form_data_switch);  // Form data can be removed once the minimum API >= 26.
         SwitchCompat easyListSwitch = view.findViewById(R.id.easylist_switch);
         SwitchCompat domStorageSwitch = view.findViewById(R.id.dom_storage_switch);
         SwitchCompat formDataSwitch = view.findViewById(R.id.form_data_switch);  // Form data can be removed once the minimum API >= 26.
         SwitchCompat easyListSwitch = view.findViewById(R.id.easylist_switch);
@@ -776,8 +765,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         // Extract the data for the domain settings.
         String domainNameString = domainNameEditText.getText().toString();
         boolean javaScript = javaScriptSwitch.isChecked();
         // Extract the data for the domain settings.
         String domainNameString = domainNameEditText.getText().toString();
         boolean javaScript = javaScriptSwitch.isChecked();
-        boolean firstPartyCookies = firstPartyCookiesSwitch.isChecked();
-        boolean thirdPartyCookies = thirdPartyCookiesSwitch.isChecked();
+        boolean cookies = cookiesSwitch.isChecked();
         boolean domStorage  = domStorageSwitch.isChecked();
         boolean formData = formDataSwitch.isChecked();  // Form data can be removed once the minimum API >= 26.
         boolean easyList = easyListSwitch.isChecked();
         boolean domStorage  = domStorageSwitch.isChecked();
         boolean formData = formDataSwitch.isChecked();  // Form data can be removed once the minimum API >= 26.
         boolean easyList = easyListSwitch.isChecked();
@@ -829,7 +817,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         }
 
         // Save the domain settings.
         }
 
         // Save the domain settings.
-        domainsDatabaseHelper.updateDomain(DomainsActivity.currentDomainDatabaseId, domainNameString, javaScript, firstPartyCookies, thirdPartyCookies, domStorage, formData, easyList, easyPrivacy,
+        domainsDatabaseHelper.updateDomain(DomainsActivity.currentDomainDatabaseId, domainNameString, javaScript, cookies, domStorage, formData, easyList, easyPrivacy,
                 fanboysAnnoyance, fanboysSocialBlocking, ultraList, ultraPrivacy, blockAllThirdPartyRequests, userAgentName, fontSizeInt, swipeToRefreshInt, webViewThemeInt, wideViewportInt,
                 displayWebpageImagesInt, pinnedSslCertificate, pinnedIpAddress);
 
                 fanboysAnnoyance, fanboysSocialBlocking, ultraList, ultraPrivacy, blockAllThirdPartyRequests, userAgentName, fontSizeInt, swipeToRefreshInt, webViewThemeInt, wideViewportInt,
                 displayWebpageImagesInt, pinnedSslCertificate, pinnedIpAddress);
 
@@ -865,7 +853,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
             @Override
             public void bindView(View view, Context context, Cursor cursor) {
                 // Set the domain name.
             @Override
             public void bindView(View view, Context context, Cursor cursor) {
                 // Set the domain name.
-                String domainNameString = cursor.getString(cursor.getColumnIndex(DomainsDatabaseHelper.DOMAIN_NAME));
+                String domainNameString = cursor.getString(cursor.getColumnIndexOrThrow(DomainsDatabaseHelper.DOMAIN_NAME));
                 TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
                 domainNameTextView.setText(domainNameString);
             }
                 TextView domainNameTextView = view.findViewById(R.id.domain_name_textview);
                 domainNameTextView.setText(domainNameString);
             }
@@ -888,7 +876,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
                 domainsCursor.moveToPosition(i);
 
                 // Get the database ID for this position.
                 domainsCursor.moveToPosition(i);
 
                 // Get the database ID for this position.
-                int currentDatabaseId = domainsCursor.getInt(domainsCursor.getColumnIndex(DomainsDatabaseHelper._ID));
+                int currentDatabaseId = domainsCursor.getInt(domainsCursor.getColumnIndexOrThrow(DomainsDatabaseHelper._ID));
 
                 // Set `highlightedDomainPosition` if the database ID for this matches `highlightedDomainDatabaseId`.
                 if (highlightedDomainDatabaseId == currentDatabaseId) {
 
                 // Set `highlightedDomainPosition` if the database ID for this matches `highlightedDomainDatabaseId`.
                 if (highlightedDomainDatabaseId == currentDatabaseId) {
@@ -901,7 +889,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
 
             // Get the database ID for the highlighted domain.
             domainsCursor.moveToPosition(highlightedDomainPosition);
 
             // Get the database ID for the highlighted domain.
             domainsCursor.moveToPosition(highlightedDomainPosition);
-            currentDomainDatabaseId = domainsCursor.getInt(domainsCursor.getColumnIndex(DomainsDatabaseHelper._ID));
+            currentDomainDatabaseId = domainsCursor.getInt(domainsCursor.getColumnIndexOrThrow(DomainsDatabaseHelper._ID));
 
             // Create an arguments bundle.
             Bundle argumentsBundle = new Bundle();
 
             // Create an arguments bundle.
             Bundle argumentsBundle = new Bundle();
@@ -922,15 +910,8 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
             // Enable the delete options menu items.
             deleteMenuItem.setEnabled(true);
 
             // Enable the delete options menu items.
             deleteMenuItem.setEnabled(true);
 
-            // Get the current theme status.
-            int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
-
-            // Set the delete icon according to the theme.
-            if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) {
-                deleteMenuItem.setIcon(R.drawable.delete_night);
-            } else {
-                deleteMenuItem.setIcon(R.drawable.delete_day);
-            }
+            // Set the delete icon.
+            deleteMenuItem.setIcon(R.drawable.delete_enabled);
         } else if (twoPanedMode) {  // Two-paned mode is enabled but there are no domains.
             // Disable the options `MenuItems`.
             deleteMenuItem.setEnabled(false);
         } else if (twoPanedMode) {  // Two-paned mode is enabled but there are no domains.
             // Disable the options `MenuItems`.
             deleteMenuItem.setEnabled(false);