/*
- * Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2017-2022 Soren Stoutner <soren@stoutner.com>.
*
- * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ * This file is part of Privacy Browser Android <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>.
*/
package com.stoutner.privacybrowser.activities
-import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.text.SpannableStringBuilder
import java.util.Locale
-// Declare the public constants.
+// Define the public constants.
const val CURRENT_URL = "current_url"
const val USER_AGENT = "user_agent"
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
- // Set the theme.
- setTheme(R.style.PrivacyBrowser)
-
// Run the default commands.
super.onCreate(savedInstanceState)
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
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<TextView>(R.id.response_headers_textview)
responseBodyTitleTextView = findViewById(R.id.response_body_title_textview)
val responseBodyTextView = findViewById<TextView>(R.id.response_body_textview)
// 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()
}
// 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()
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<SpannableStringBuilder> ->
+ webViewSource.observeSource().observe(this) { sourceStringArray: Array<SpannableStringBuilder> ->
// 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]
//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")) {
Snackbar.make(swipeRefreshLayout, errorString, Snackbar.LENGTH_LONG).show()
}
}
- })
+ }
// Implement swipe to refresh.
swipeRefreshLayout.setOnRefreshListener {
responseBodyTitleTextView.setText(R.string.response_body)
}
}
-}
\ No newline at end of file
+}