X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fdialogs%2FUrlHistoryDialog.kt;h=008abef74fd4d8de073c6c8125d8befc7f22d4be;hb=5dd60cebd26469bcc597e1ccede8706fb403dfc1;hp=fb2bcc5b8744fed60fee49cde95d18dc01592405;hpb=6ea3e4ebd779594b45ad8f51cc40761bb6d89030;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.kt index fb2bcc5b..008abef7 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.kt @@ -1,25 +1,24 @@ /* - * Copyright © 2016-2021 Soren Stoutner . + * Copyright 2016-2023 Soren Stoutner . * - * This file is part of Privacy Browser . + * This file is part of 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. * - * 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 - * along with Privacy Browser. If not, see . + * along with Privacy Browser Android. If not, see . */ package com.stoutner.privacybrowser.dialogs -import android.annotation.SuppressLint import android.app.Dialog import android.content.Context import android.content.DialogInterface @@ -40,32 +39,14 @@ import androidx.preference.PreferenceManager import com.stoutner.privacybrowser.R import com.stoutner.privacybrowser.activities.MainWebViewActivity import com.stoutner.privacybrowser.adapters.HistoryArrayAdapter -import com.stoutner.privacybrowser.dataclasses.History +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" 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() @@ -84,17 +65,31 @@ class UrlHistoryDialog : DialogFragment() { } } - // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog. - @SuppressLint("InflateParams") + // 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 + } + 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() @@ -118,7 +113,7 @@ class UrlHistoryDialog : DialogFragment() { val defaultFavoriteIcon = defaultFavoriteIconBitmapDrawable.bitmap // Create a history array list. - val historyArrayList = ArrayList() + val historyDataClassArrayList = ArrayList() // Populate the history array list, descending from the end of the list so that the newest entries are at the top. `-1` is needed because the history array list is zero-based. for (i in webBackForwardList.size - 1 downTo 0) { @@ -131,10 +126,10 @@ class UrlHistoryDialog : DialogFragment() { } // Store the favorite icon and the URL in history entry. - val historyEntry = History(favoriteIconBitmap!!, webBackForwardList.getItemAtIndex(i).url) + val historyDataClassEntry = HistoryDataClass(favoriteIconBitmap!!, webBackForwardList.getItemAtIndex(i).url) // Add this history entry to the history array list. - historyArrayList.add(historyEntry) + historyDataClassArrayList.add(historyDataClassEntry) } // Subtract the original current page ID from the array size because the order of the array is reversed so that the newest entries are at the top. `-1` is needed because the array is zero-based. @@ -146,8 +141,8 @@ class UrlHistoryDialog : DialogFragment() { // Set the title. dialogBuilder.setTitle(R.string.history) - // Set the view. The parent view is `null` because it will be assigned by the alert dialog. - dialogBuilder.setView(layoutInflater.inflate(R.layout.url_history_dialog, null)) + // Set the view. + dialogBuilder.setView(R.layout.url_history_dialog) // Setup the clear history button listener. dialogBuilder.setNegativeButton(R.string.clear_history) { _: DialogInterface, _: Int -> @@ -162,7 +157,7 @@ class UrlHistoryDialog : DialogFragment() { val alertDialog = dialogBuilder.create() // Get a handle for the shared preferences. - val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) + val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) // Get the screenshot preference. val allowScreenshots = sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false) @@ -177,7 +172,7 @@ class UrlHistoryDialog : DialogFragment() { alertDialog.show() // Instantiate a history array adapter. - val historyArrayAdapter = HistoryArrayAdapter(context, historyArrayList, currentPageId) + val historyArrayAdapter = HistoryArrayAdapter(requireContext(), historyDataClassArrayList, currentPageId) // Get a handle for the list view. val listView = alertDialog.findViewById(R.id.history_listview)!! @@ -209,4 +204,4 @@ class UrlHistoryDialog : DialogFragment() { // Return the alert dialog. return alertDialog } -} \ No newline at end of file +}