]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.kt
Unify the code path for navigating history. https://redmine.stoutner.com/issues...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / dialogs / UrlHistoryDialog.kt
index 23cdd5f20acdd373cd2e40e7ac2f0152e3ba5b23..eedd644778532636c9116bf8fda08befd32c68d0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2024 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
@@ -29,7 +29,6 @@ import android.view.WindowManager
 import android.widget.AdapterView
 import android.widget.AdapterView.OnItemClickListener
 import android.widget.ListView
-import android.widget.TextView
 
 import androidx.appcompat.app.AlertDialog
 import androidx.core.content.ContextCompat
@@ -43,28 +42,10 @@ import com.stoutner.privacybrowser.dataclasses.HistoryDataClass
 import com.stoutner.privacybrowser.views.NestedScrollWebView
 
 // Define the class constants.
-private const val WEBVIEW_FRAGMENT_ID = "webview_fragment_id"
+private const val WEBVIEW_FRAGMENT_ID = "A"
 
 class UrlHistoryDialog : DialogFragment() {
-    // Declare the class variables.
-    private lateinit var navigateHistoryListener: NavigateHistoryListener
-
-    // The public interface is used to send information back to the parent activity.
-    interface NavigateHistoryListener {
-        fun navigateHistory(url: String, steps: Int)
-    }
-
-    override fun onAttach(context: Context) {
-        // Run the default commands.
-        super.onAttach(context)
-
-        // Get a handle for the listener from the launching context.
-        navigateHistoryListener = context as NavigateHistoryListener
-    }
-
     companion object {
-        // `@JvmStatic` will no longer be required once all the code has transitioned to Kotlin.
-        @JvmStatic
         fun loadBackForwardList(webViewFragmentId: Long): UrlHistoryDialog {
             // Create an arguments bundle.
             val argumentsBundle = Bundle()
@@ -83,15 +64,31 @@ class UrlHistoryDialog : DialogFragment() {
         }
     }
 
+    // Declare the class variables.
+    private lateinit var navigateHistoryListener: NavigateHistoryListener
+
+    // The public interface is used to send information back to the parent activity.
+    interface NavigateHistoryListener {
+        fun navigateHistory(steps: Int)
+    }
+
+    override fun onAttach(context: Context) {
+        // Run the default commands.
+        super.onAttach(context)
+
+        // Get a handle for the listener from the launching context.
+        navigateHistoryListener = context as NavigateHistoryListener
+    }
+
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         // Get the WebView fragment ID from the arguments.
         val webViewFragmentId = requireArguments().getLong(WEBVIEW_FRAGMENT_ID)
 
         // Get the current position of this WebView fragment.
-        val webViewPosition = MainWebViewActivity.webViewPagerAdapter.getPositionForId(webViewFragmentId)
+        val webViewPosition = MainWebViewActivity.webViewStateAdapter!!.getPositionForId(webViewFragmentId)
 
         // Get the WebView tab fragment.
-        val webViewTabFragment = MainWebViewActivity.webViewPagerAdapter.getPageFragment(webViewPosition)
+        val webViewTabFragment = MainWebViewActivity.webViewStateAdapter!!.getPageFragment(webViewPosition)
 
         // Get the fragment view.
         val fragmentView = webViewTabFragment.requireView()
@@ -183,20 +180,14 @@ class UrlHistoryDialog : DialogFragment() {
         listView.adapter = historyArrayAdapter
 
         // Listen for clicks on entries in the list view.
-        listView.onItemClickListener = OnItemClickListener { _: AdapterView<*>?, view: View, _: Int, id: Long ->
+        listView.onItemClickListener = OnItemClickListener { _: AdapterView<*>?, _: View, _: Int, id: Long ->
             // Convert the long ID to an int.
             val itemId = id.toInt()
 
             // Only consume the click if it is not on the current page ID.
             if (itemId != currentPageId) {
-                // Get a handle for the URL text view.
-                val urlTextView = view.findViewById<TextView>(R.id.history_url_textview)
-
-                // Get the URL.
-                val url = urlTextView.text.toString()
-
-                // Invoke the navigate history listener in the calling activity.  These commands cannot be run here because they need access to `applyDomainSettings()`.
-                navigateHistoryListener.navigateHistory(url, currentPageId - itemId)
+                // Invoke the navigate history listener in the calling activity.  Those commands cannot be run here because they need access to `applyDomainSettings()`.
+                navigateHistoryListener.navigateHistory(currentPageId - itemId)
 
                 // Dismiss the alert dialog.
                 alertDialog.dismiss()