X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FViewSourceActivity.kt;h=8868697a37d875e30001b014d3a373ce4d02ff23;hb=f441c077da729e1d3d97c9efb46e8380a0730dd9;hp=eb8ba87cc0a3147738c6c7276eb1e1fb7d10211f;hpb=aa121d6d6df14a0425ac3b5603765dbae7e8d156;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt index eb8ba87c..8868697a 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt @@ -1,25 +1,24 @@ /* - * Copyright © 2017-2021 Soren Stoutner . + * Copyright 2017-2022 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.activities -import android.content.res.Configuration import android.os.Build import android.os.Bundle import android.text.SpannableStringBuilder @@ -58,7 +57,7 @@ import com.stoutner.privacybrowser.viewmodels.WebViewSource import java.util.Locale -// Declare the public constants. +// Define the public constants. const val CURRENT_URL = "current_url" const val USER_AGENT = "user_agent" @@ -82,17 +81,15 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { // Get a handle for the shared preferences. val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext) - // Get the screenshot preference. + // Get the preferences. val allowScreenshots = sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false) + val bottomAppBar = sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false) // Disable screenshots if not allowed. if (!allowScreenshots) { window.addFlags(WindowManager.LayoutParams.FLAG_SECURE) } - // Set the theme. - setTheme(R.style.PrivacyBrowser) - // Run the default commands. super.onCreate(savedInstanceState) @@ -104,7 +101,11 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { val userAgent = intent.getStringExtra(USER_AGENT)!! // Set the content view. - setContentView(R.layout.view_source_coordinatorlayout) + if (bottomAppBar) { + setContentView(R.layout.view_source_bottom_appbar) + } else { + setContentView(R.layout.view_source_top_appbar) + } // Get a handle for the toolbar. val toolbar = findViewById(R.id.view_source_toolbar) @@ -116,7 +117,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { val actionBar = supportActionBar!! // Add the custom layout to the action bar. - actionBar.setCustomView(R.layout.view_source_app_bar) + actionBar.setCustomView(R.layout.view_source_appbar_custom_view) // Instruct the action bar to display a custom layout. actionBar.displayOptions = ActionBar.DISPLAY_SHOW_CUSTOM @@ -129,7 +130,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { requestHeadersTextView = findViewById(R.id.request_headers_textview) responseMessageTitleTextView = findViewById(R.id.response_message_title_textview) responseMessageTextView = findViewById(R.id.response_message_textview) - responseHeadersTitleTextView = findViewById(R.id.response_headers_title_textivew) + responseHeadersTitleTextView = findViewById(R.id.response_headers_title_textview) val responseHeadersTextView = findViewById(R.id.response_headers_textview) responseBodyTitleTextView = findViewById(R.id.response_body_title_textview) val responseBodyTextView = findViewById(R.id.response_body_textview) @@ -137,23 +138,10 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { // Populate the URL text box. urlEditText.setText(currentUrl) - // Initialize the gray foreground color spans for highlighting the URLs. The deprecated `getColor()` must be used until the minimum API >= 23. - @Suppress("DEPRECATION") - initialGrayColorSpan = ForegroundColorSpan(resources.getColor(R.color.gray_500)) - @Suppress("DEPRECATION") - finalGrayColorSpan = ForegroundColorSpan(resources.getColor(R.color.gray_500)) - - // Get the current theme status. - val currentThemeStatus = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK - - // Set the red color span according to the theme. The deprecated `getColor()` must be used until the minimum API >= 23. - redColorSpan = if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - @Suppress("DEPRECATION") - ForegroundColorSpan(resources.getColor(R.color.red_a700)) - } else { - @Suppress("DEPRECATION") - ForegroundColorSpan(resources.getColor(R.color.red_900)) - } + // Initialize the gray foreground color spans for highlighting the URLs. + initialGrayColorSpan = ForegroundColorSpan(getColor(R.color.gray_500)) + finalGrayColorSpan = ForegroundColorSpan(getColor(R.color.gray_500)) + redColorSpan = ForegroundColorSpan(getColor(R.color.red_text)) // Apply text highlighting to the URL. highlightUrlText() @@ -181,11 +169,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { } // Set the refresh color scheme according to the theme. - if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - swipeRefreshLayout.setColorSchemeResources(R.color.blue_700) - } else { - swipeRefreshLayout.setColorSchemeResources(R.color.violet_500) - } + swipeRefreshLayout.setColorSchemeResources(R.color.blue_text) // Initialize a color background typed value. val colorBackgroundTypedValue = TypedValue() @@ -276,10 +260,10 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { val webViewSourceFactory: ViewModelProvider.Factory = WebViewSourceFactory(currentUrl, userAgent, localeString, proxy, contentResolver, MainWebViewActivity.executorService) // Instantiate the WebView source view model class. - webViewSource = ViewModelProvider(this, webViewSourceFactory).get(WebViewSource::class.java) + webViewSource = ViewModelProvider(this, webViewSourceFactory)[WebViewSource::class.java] // Create a source observer. - webViewSource.observeSource().observe(this, { sourceStringArray: Array -> + webViewSource.observeSource().observe(this) { sourceStringArray: Array -> // Populate the text views. This can take a long time, and freezes the user interface, if the response body is particularly large. requestHeadersTextView.text = sourceStringArray[0] responseMessageTextView.text = sourceStringArray[1] @@ -292,10 +276,10 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { //Stop the swipe to refresh indicator if it is running swipeRefreshLayout.isRefreshing = false - }) + } // Create an error observer. - webViewSource.observeErrors().observe(this, { errorString: String -> + webViewSource.observeErrors().observe(this) { errorString: String -> // Display an error snackbar if the string is not `""`. if (errorString != "") { if (errorString.startsWith("javax.net.ssl.SSLHandshakeException")) { @@ -309,7 +293,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { Snackbar.make(swipeRefreshLayout, errorString, Snackbar.LENGTH_LONG).show() } } - }) + } // Implement swipe to refresh. swipeRefreshLayout.setOnRefreshListener { @@ -474,4 +458,4 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { responseBodyTitleTextView.setText(R.string.response_body) } } -} \ No newline at end of file +}