/*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2023 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.adapters
import android.content.Context
-import android.content.res.Configuration
import android.net.Uri
import android.text.SpannableStringBuilder
import android.text.Spanned
// Setup each tab.
override fun instantiateItem(container: ViewGroup, tabNumber: Int): Any {
// 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 WebView fragment view.
val webViewFragmentView = webViewTabFragment.requireView()
val endDateTextView = tabLayout.findViewById<TextView>(R.id.end_date)
// Setup the labels.
- val domainNameLabel = context.getString(R.string.domain_label) + " "
- val ipAddressesLabel = context.getString(R.string.ip_addresses) + " "
- val cNameLabel = context.getString(R.string.common_name) + " "
- val oNameLabel = context.getString(R.string.organization) + " "
- val uNameLabel = context.getString(R.string.organizational_unit) + " "
- val startDateLabel = context.getString(R.string.start_date) + " "
- val endDateLabel = context.getString(R.string.end_date) + " "
+ val domainNameLabel = context.getString(R.string.domain_label)
+ val ipAddressesLabel = context.getString(R.string.ip_addresses)
+ val cNameLabel = context.getString(R.string.common_name)
+ val oNameLabel = context.getString(R.string.organization)
+ val uNameLabel = context.getString(R.string.organizational_unit)
+ val startDateLabel = context.getString(R.string.start_date)
+ val endDateLabel = context.getString(R.string.end_date)
// Convert the URL to a URI.
val currentUri = Uri.parse(nestedScrollWebView.url)
currentSslEndDate = sslCertificate.validNotAfterDate
}
- // Get the pinned SSL certificate.
- val pinnedSslCertificateArrayList = nestedScrollWebView.getPinnedSslCertificate()
+ // Get the pinned SSL certificate pair.
+ val pinnedSslCertificatePair = nestedScrollWebView.getPinnedSslCertificate()
// Extract the arrays from the array list.
- val pinnedSslCertificateStringArray = pinnedSslCertificateArrayList[0] as Array<*>
- val pinnedSslCertificateDateArray = pinnedSslCertificateArrayList[1] as Array<*>
+ val pinnedSslCertificateStringArray = pinnedSslCertificatePair.first
+ val pinnedSslCertificateDateArray = pinnedSslCertificatePair.second
// Setup the domain name spannable string builder.
val domainNameStringBuilder = SpannableStringBuilder(domainNameLabel + domainName)
issuedByCNameStringBuilder = SpannableStringBuilder(cNameLabel + pinnedSslCertificateStringArray[3])
issuedByONameStringBuilder = SpannableStringBuilder(oNameLabel + pinnedSslCertificateStringArray[4])
issuedByUNameStringBuilder = SpannableStringBuilder(uNameLabel + pinnedSslCertificateStringArray[5])
-
- // Set the dates if they aren't null. Formatting a null date causes a crash.
- startDateStringBuilder = if (pinnedSslCertificateDateArray[0] == null) {
- SpannableStringBuilder(startDateLabel)
- } else {
- SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[0]))
- }
-
- endDateStringBuilder = if (pinnedSslCertificateDateArray[1] == null) {
- SpannableStringBuilder(endDateLabel)
- } else {
- SpannableStringBuilder(endDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[1]))
- }
+ startDateStringBuilder = SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[0]))
+ endDateStringBuilder = SpannableStringBuilder(endDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[1]))
}
- // Define the color spans.
- val blueColorSpan: ForegroundColorSpan
- val redColorSpan: ForegroundColorSpan
-
- // Get the current theme status.
- val currentThemeStatus = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
-
- // Set the color spans according to the theme. The deprecated `resources` must be used until the minimum API >= 23.
- if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
- @Suppress("DEPRECATION")
- blueColorSpan = ForegroundColorSpan(context.resources.getColor(R.color.blue_700))
- @Suppress("DEPRECATION")
- redColorSpan = ForegroundColorSpan(context.resources.getColor(R.color.red_a700))
- } else {
- @Suppress("DEPRECATION")
- blueColorSpan = ForegroundColorSpan(context.resources.getColor(R.color.violet_700))
- @Suppress("DEPRECATION")
- redColorSpan = ForegroundColorSpan(context.resources.getColor(R.color.red_900))
- }
+ // Create the color spans.
+ val blueColorSpan = ForegroundColorSpan(context.getColor(R.color.alt_blue_text))
+ val redColorSpan = ForegroundColorSpan(context.getColor(R.color.red_text))
// Set the domain name to be blue.
domainNameStringBuilder.setSpan(blueColorSpan, domainNameLabel.length, domainNameStringBuilder.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
// Color coordinate the IP addresses if they are pinned.
- if (!nestedScrollWebView.pinnedIpAddresses.equals("")) {
+ if (nestedScrollWebView.pinnedIpAddresses != "") {
if (nestedScrollWebView.currentIpAddresses == nestedScrollWebView.pinnedIpAddresses) {
ipAddressesStringBuilder.setSpan(blueColorSpan, ipAddressesLabel.length, ipAddressesStringBuilder.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
} else {
// Return the tab layout.
return tabLayout
}
-}
\ No newline at end of file
+}