X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fdialogs%2FSaveWebpageDialog.kt;fp=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fdialogs%2FSaveWebpageDialog.kt;h=0000000000000000000000000000000000000000;hb=e9c77e79c3c6f7612f051b7c111e029ad125817b;hp=3402d4f7861c01231c95b8bb8818dd42d0429164;hpb=d53f0640263cf0799e7304fa459864c542ab0d2a;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/SaveWebpageDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/SaveWebpageDialog.kt deleted file mode 100644 index 3402d4f7..00000000 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/SaveWebpageDialog.kt +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright © 2019-2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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, - * 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 . - */ - -package com.stoutner.privacybrowser.dialogs - -import android.app.Dialog -import android.content.Context -import android.content.DialogInterface -import android.content.Intent -import android.net.Uri -import android.os.AsyncTask -import android.os.Bundle -import android.text.Editable -import android.text.InputType -import android.text.TextWatcher -import android.view.View -import android.view.WindowManager -import android.widget.Button -import android.widget.EditText -import android.widget.TextView - -import androidx.appcompat.app.AlertDialog -import androidx.fragment.app.DialogFragment -import androidx.preference.PreferenceManager - -import com.google.android.material.textfield.TextInputLayout - -import com.stoutner.privacybrowser.R -import com.stoutner.privacybrowser.activities.MainWebViewActivity -import com.stoutner.privacybrowser.asynctasks.GetUrlSize - -// Define the class constants. -private const val SAVE_TYPE = "save_type" -private const val URL_STRING = "url_string" -private const val FILE_SIZE_STRING = "file_size_string" -private const val FILE_NAME_STRING = "file_name_string" -private const val USER_AGENT_STRING = "user_agent_string" -private const val COOKIES_ENABLED = "cookies_enabled" - -class SaveWebpageDialog : DialogFragment() { - // Declare the class variables. - private lateinit var saveWebpageListener: SaveWebpageListener - - // Define the class variables. - private var getUrlSize: AsyncTask<*, *, *>? = null - - // The public interface is used to send information back to the parent activity. - interface SaveWebpageListener { - fun onSaveWebpage(saveType: Int, originalUrlString: String, dialogFragment: DialogFragment) - } - - override fun onAttach(context: Context) { - // Run the default commands. - super.onAttach(context) - - // Get a handle for the save webpage listener from the launching context. - saveWebpageListener = context as SaveWebpageListener - } - - companion object { - // Define the companion object constants. These can be moved to class constants once all of the code has transitioned to Kotlin. - const val SAVE_URL = 0 - const val SAVE_ARCHIVE = 1 - const val SAVE_IMAGE = 2 - - // `@JvmStatic` will no longer be required once all the code has transitioned to Kotlin. - @JvmStatic - fun saveWebpage(saveType: Int, urlString: String, fileSizeString: String?, fileNameString: String?, userAgentString: String?, cookiesEnabled: Boolean): SaveWebpageDialog { - // Create an arguments bundle. - val argumentsBundle = Bundle() - - // Store the arguments in the bundle. - argumentsBundle.putInt(SAVE_TYPE, saveType) - argumentsBundle.putString(URL_STRING, urlString) - argumentsBundle.putString(FILE_SIZE_STRING, fileSizeString) - argumentsBundle.putString(FILE_NAME_STRING, fileNameString) - argumentsBundle.putString(USER_AGENT_STRING, userAgentString) - argumentsBundle.putBoolean(COOKIES_ENABLED, cookiesEnabled) - - // Create a new instance of the save webpage dialog. - val saveWebpageDialog = SaveWebpageDialog() - - // Add the arguments bundle to the new dialog. - saveWebpageDialog.arguments = argumentsBundle - - // Return the new dialog. - return saveWebpageDialog - } - } - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - // Get the arguments from the bundle. - val saveType = requireArguments().getInt(SAVE_TYPE) - val originalUrlString = requireArguments().getString(URL_STRING)!! - val fileSizeString = requireArguments().getString(FILE_SIZE_STRING) - var fileNameString = requireArguments().getString(FILE_NAME_STRING) - val userAgentString = requireArguments().getString(USER_AGENT_STRING) - val cookiesEnabled = requireArguments().getBoolean(COOKIES_ENABLED) - - // Use an alert dialog builder to create the alert dialog. - val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog) - - // Configure the dialog according to the save type. - when (saveType) { - SAVE_URL -> { - // Set the title. - dialogBuilder.setTitle(R.string.save_url) - - // Set the icon according to the theme. - dialogBuilder.setIconAttribute(R.attr.copyBlueIcon) - } - - SAVE_ARCHIVE -> { - // Set the title. - dialogBuilder.setTitle(R.string.save_archive) - - // Set the icon according to the theme. - dialogBuilder.setIconAttribute(R.attr.domStorageBlueIcon) - - // Convert the URL to a URI. - val uri = Uri.parse(originalUrlString) - - // Build a file name string based on the host from the URI. - fileNameString = uri.host + ".mht" - } - - SAVE_IMAGE -> { - // Set the title. - dialogBuilder.setTitle(R.string.save_image) - - // Set the icon according to the theme. - dialogBuilder.setIconAttribute(R.attr.imagesBlueIcon) - - // Convert the URL to a URI. - val uri = Uri.parse(originalUrlString) - - // Build a file name string based on the host from the URI. - fileNameString = uri.host + ".png" - } - } - - // Set the view. - dialogBuilder.setView(R.layout.save_webpage_dialog) - - // Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else. - dialogBuilder.setNegativeButton(R.string.cancel, null) - - // Set the save button listener. - dialogBuilder.setPositiveButton(R.string.save) { _: DialogInterface, _: Int -> - // Return the dialog fragment to the parent activity. - saveWebpageListener.onSaveWebpage(saveType, originalUrlString, this) - } - - // 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_key), false) - - // Disable screenshots if not allowed. - if (!allowScreenshots) { - alertDialog.window!!.addFlags(WindowManager.LayoutParams.FLAG_SECURE) - } - - // The alert dialog must be shown before items in the layout can be modified. - alertDialog.show() - - // Get handles for the layout items. - val urlTextInputLayout = alertDialog.findViewById(R.id.url_textinputlayout)!! - val urlEditText = alertDialog.findViewById(R.id.url_edittext)!! - val fileNameEditText = alertDialog.findViewById(R.id.file_name_edittext)!! - val browseButton = alertDialog.findViewById