]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.kt
First wrong button text in View Headers in night theme. https://redmine.stoutner...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / DomainsActivity.kt
index 5c5107c59fec21f544bad07de558ed734bd2ba6b..4996568e1e79084b865a75b4098f670a89a2a53a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2023 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2017-2024 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
@@ -23,7 +23,6 @@ import android.app.Activity
 import android.content.Context
 import android.database.Cursor
 import android.os.Bundle
-import android.os.Handler
 import android.view.Menu
 import android.view.MenuItem
 import android.view.View
@@ -49,8 +48,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
 import com.google.android.material.snackbar.Snackbar
 
 import com.stoutner.privacybrowser.R
+import com.stoutner.privacybrowser.dialogs.AddDomainDialog
 import com.stoutner.privacybrowser.dialogs.AddDomainDialog.AddDomainListener
-import com.stoutner.privacybrowser.dialogs.AddDomainDialog.Companion.addDomain
 import com.stoutner.privacybrowser.fragments.DomainSettingsFragment
 import com.stoutner.privacybrowser.fragments.DomainsListFragment
 import com.stoutner.privacybrowser.fragments.DomainsListFragment.DismissSnackbarInterface
@@ -157,9 +156,6 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         // Get the status of close-on-back, which is true when the domains activity is called from the options menu.
         closeOnBack = intent.getBooleanExtra(CLOSE_ON_BACK, false)
 
-        // Get the current URL.
-        val currentUrl = intent.getStringExtra(CURRENT_URL)
-
         // Store the current SSL certificate information in class variables.
         sslIssuedToCName = intent.getStringExtra(SSL_ISSUED_TO_CNAME)
         sslIssuedToOName = intent.getStringExtra(SSL_ISSUED_TO_ONAME)
@@ -200,7 +196,7 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         // Configure the add domain floating action button.
         addDomainFAB.setOnClickListener {
             // Create an add domain dialog.
-            val addDomainDialog: DialogFragment = addDomain(currentUrl)
+            val addDomainDialog: DialogFragment = AddDomainDialog()
 
             // Show the add domain dialog.
             addDomainDialog.show(supportFragmentManager, resources.getString(R.string.add_domain))
@@ -573,27 +569,21 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
                                     }
                                 } else {  // The snackbar was dismissed without the undo button being pushed.
                                     // Delete the selected domain.
-                                    domainsDatabaseHelper.deleteDomain(databaseIdToDelete)
-
-                                    // Enable the delete menu item if the system was waiting for a snackbar to be dismissed.
-                                    if (dismissingSnackbar) {
-                                        // Create a runnable to enable the delete menu item.
-                                        val enableDeleteMenuItemRunnable = Runnable {
-                                            // Enable or show the delete menu item according to the display mode.
-                                            if (twoPanedMode)
-                                                deleteMenuItem.isEnabled = true
-                                            else
-                                                deleteMenuItem.isVisible = true
-
-                                            // Reset the dismissing snackbar tracker.
-                                            dismissingSnackbar = false
-                                        }
-
-                                        // Instantiate a handler running the main looper.
-                                        val handler = Handler(mainLooper)
-
-                                        // Enable or show the delete menu icon after 100 milliseconds to make sure that the previous domain has been deleted from the database.
-                                        handler.postDelayed(enableDeleteMenuItemRunnable, 100)
+                                    val rowsDeleted = domainsDatabaseHelper.deleteDomain(databaseIdToDelete)
+
+                                    // Enable the delete menu item.
+                                    // The rows deleted should always be greater than 0, but in all cases they should be greater than -1.
+                                    // This has the effect of tricking the compiler into waiting until after the delete finishes to reenable the delete menu item,
+                                    // because the compiler (probably) can't tell that the response will never be less than -1, so it doesn't compile out the delay.
+                                    if (rowsDeleted > -1) {
+                                        // Enable or show the delete menu item according to the display mode.
+                                        if (twoPanedMode)
+                                            deleteMenuItem.isEnabled = true
+                                        else
+                                            deleteMenuItem.isVisible = true
+
+                                        // Reset the dismissing snackbar tracker.
+                                        dismissingSnackbar = false
                                     }
 
                                     // Close the activity if back was pressed.
@@ -697,7 +687,8 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         val javaScriptSpinner = view.findViewById<Spinner>(R.id.javascript_spinner)
         val cookiesSpinner = view.findViewById<Spinner>(R.id.cookies_spinner)
         val domStorageSpinner = view.findViewById<Spinner>(R.id.dom_storage_spinner)
-        val formDataSpinner = view.findViewById<Spinner>(R.id.form_data_spinner) // Form data can be removed once the minimum API >= 26.
+        val userAgentSpinner = view.findViewById<Spinner>(R.id.user_agent_spinner)
+        val customUserAgentEditText = view.findViewById<EditText>(R.id.custom_user_agent_edittext)
         val easyListSpinner = view.findViewById<Spinner>(R.id.easylist_spinner)
         val easyPrivacySpinner = view.findViewById<Spinner>(R.id.easyprivacy_spinner)
         val fanboysAnnoyanceSpinner = view.findViewById<Spinner>(R.id.fanboys_annoyance_list_spinner)
@@ -705,8 +696,6 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         val ultraListSpinner = view.findViewById<Spinner>(R.id.ultralist_spinner)
         val ultraPrivacySpinner = view.findViewById<Spinner>(R.id.ultraprivacy_spinner)
         val blockAllThirdPartyRequestsSpinner = view.findViewById<Spinner>(R.id.block_all_third_party_requests_spinner)
-        val userAgentSpinner = view.findViewById<Spinner>(R.id.user_agent_spinner)
-        val customUserAgentEditText = view.findViewById<EditText>(R.id.custom_user_agent_edittext)
         val fontSizeSpinner = view.findViewById<Spinner>(R.id.font_size_spinner)
         val customFontSizeEditText = view.findViewById<EditText>(R.id.custom_font_size_edittext)
         val swipeToRefreshSpinner = view.findViewById<Spinner>(R.id.swipe_to_refresh_spinner)
@@ -723,7 +712,7 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         val javaScriptInt = javaScriptSpinner.selectedItemPosition
         val cookiesInt = cookiesSpinner.selectedItemPosition
         val domStorageInt = domStorageSpinner.selectedItemPosition
-        val formDataInt = formDataSpinner.selectedItemPosition // Form data can be removed once the minimum API >= 26.
+        val userAgentSwitchPosition = userAgentSpinner.selectedItemPosition
         val easyListInt = easyListSpinner.selectedItemPosition
         val easyPrivacyInt = easyPrivacySpinner.selectedItemPosition
         val fanboysAnnoyanceInt = fanboysAnnoyanceSpinner.selectedItemPosition
@@ -731,7 +720,6 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
         val ultraListInt = ultraListSpinner.selectedItemPosition
         val ultraPrivacyInt = ultraPrivacySpinner.selectedItemPosition
         val blockAllThirdPartyRequestsInt = blockAllThirdPartyRequestsSpinner.selectedItemPosition
-        val userAgentSwitchPosition = userAgentSpinner.selectedItemPosition
         val fontSizeSwitchPosition = fontSizeSpinner.selectedItemPosition
         val swipeToRefreshInt = swipeToRefreshSpinner.selectedItemPosition
         val webViewThemeInt = webViewThemeSpinner.selectedItemPosition
@@ -765,8 +753,8 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI
             fontSizeInt = customFontSizeEditText.text.toString().toInt()
 
         // Save the domain settings.
-        domainsDatabaseHelper.updateDomain(currentDomainDatabaseId, domainNameString, javaScriptInt, cookiesInt, domStorageInt, formDataInt, easyListInt, easyPrivacyInt, fanboysAnnoyanceInt,
-            fanboysSocialBlockingInt, ultraListInt, ultraPrivacyInt, blockAllThirdPartyRequestsInt, userAgentName, fontSizeInt, swipeToRefreshInt, webViewThemeInt, wideViewportInt, displayWebpageImagesInt,
+        domainsDatabaseHelper.updateDomain(currentDomainDatabaseId, domainNameString, javaScriptInt, cookiesInt, domStorageInt, userAgentName, easyListInt, easyPrivacyInt, fanboysAnnoyanceInt,
+            fanboysSocialBlockingInt, ultraListInt, ultraPrivacyInt, blockAllThirdPartyRequestsInt, fontSizeInt, swipeToRefreshInt, webViewThemeInt, wideViewportInt, displayWebpageImagesInt,
             pinnedSslCertificate, pinnedIpAddress)
 
         // Update the pinned SSL certificate if a new one is checked.