Migrate five dialogs to Kotlin. https://redmine.stoutner.com/issues/604
[PrivacyBrowser.git] / app / src / main / java / com / stoutner / privacybrowser / dialogs / AddDomainDialog.kt
index 8b56f2d479eb78fec3e89435943478112013aebb..a646a78d907d038f63a1c086239659cf8b76ba92 100644 (file)
@@ -20,7 +20,6 @@
 package com.stoutner.privacybrowser.dialogs
 
 import android.annotation.SuppressLint
-import android.app.AlertDialog
 import android.app.Dialog
 import android.content.Context
 import android.content.DialogInterface
@@ -34,19 +33,23 @@ import android.view.WindowManager
 import android.widget.EditText
 import android.widget.TextView
 
+import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.DialogFragment
 import androidx.preference.PreferenceManager
 
 import com.stoutner.privacybrowser.R
 import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper
 
+// Declare the class constants.
+private const val URL_STRING = "url_string"
+
 class AddDomainDialog: DialogFragment() {
     // The public interface is used to send information back to the parent activity.
     interface AddDomainListener {
         fun onAddDomain(dialogFragment: DialogFragment)
     }
 
-    // The add domain listener is initialized in `onAttach()` and used in `onCreateDialog()`.
+    // Declare the class variables
     private lateinit var addDomainListener: AddDomainListener
 
     override fun onAttach(context: Context) {
@@ -65,7 +68,7 @@ class AddDomainDialog: DialogFragment() {
             val argumentsBundle = Bundle()
 
             // Store the URL in the bundle.
-            argumentsBundle.putString("url_string", urlString)
+            argumentsBundle.putString(URL_STRING, urlString)
 
             // Create a new instance of the dialog.
             val addDomainDialog = AddDomainDialog()
@@ -78,39 +81,20 @@ class AddDomainDialog: DialogFragment() {
         }
     }
 
-    // `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
+    // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
     @SuppressLint("InflateParams")
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         // Get the arguments.
         val arguments = requireArguments()
 
         // Get the URL from the bundle.
-        val urlString = arguments.getString("url_string")
-
-        // Get a handle for the shared preferences.
-        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
-
-        // Get the screenshot and theme preferences.
-        val allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false)
-        val darkTheme = sharedPreferences.getBoolean("dark_theme", false)
+        val urlString = arguments.getString(URL_STRING)
 
         // Use an alert dialog builder to create the alert dialog.
-        val dialogBuilder: AlertDialog.Builder
-
-        // USet the style and the icon according to the theme.
-        if (darkTheme) {
-            // Set the dark style.
-            dialogBuilder = AlertDialog.Builder(context, R.style.PrivacyBrowserAlertDialogDark)
+        val dialogBuilder: AlertDialog.Builder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
 
-            // Set the dark icon.
-            dialogBuilder.setIcon(R.drawable.domains_dark)
-        } else {
-            // Set the light style.
-            dialogBuilder = AlertDialog.Builder(context, R.style.PrivacyBrowserAlertDialogLight)
-
-            // Set the light icon.
-            dialogBuilder.setIcon(R.drawable.domains_light)
-        }
+        // Set the icon according to the theme.
+        dialogBuilder.setIconAttribute(R.attr.domainsIcon)
 
         // Set the title.
         dialogBuilder.setTitle(R.string.add_domain)
@@ -130,6 +114,12 @@ class AddDomainDialog: DialogFragment() {
         // Create an alert dialog from the builder.
         val alertDialog = dialogBuilder.create()
 
+        // Get a handle for the shared preferences.
+        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
+
+        // Get the screenshot preference.
+        val allowScreenshots = sharedPreferences.getBoolean(getString(R.string.allow_screenshots), false)
+
         // Disable screenshots if not allowed.
         if (!allowScreenshots) {
             alertDialog.window!!.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
@@ -142,8 +132,8 @@ class AddDomainDialog: DialogFragment() {
         val domainsDatabaseHelper = DomainsDatabaseHelper(context, null, null, 0)
 
         // Get handles for the views in the alert dialog.
-        val addDomainEditText = alertDialog.findViewById<EditText>(R.id.domain_name_edittext)
-        val domainNameAlreadyExistsTextView = alertDialog.findViewById<TextView>(R.id.domain_name_already_exists_textview)
+        val addDomainEditText = alertDialog.findViewById<EditText>(R.id.domain_name_edittext)!!
+        val domainNameAlreadyExistsTextView = alertDialog.findViewById<TextView>(R.id.domain_name_already_exists_textview)!!
         val addButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
 
         //  Update the status of the warning text and the add button when the domain name changes.