diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.kt b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.kt
index d72ecf894..249955968 100644
--- a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.kt
+++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.kt
@@ -1,10 +1,7 @@
package org.schabi.newpipe.about
import android.os.Bundle
-import android.view.ContextMenu
-import android.view.ContextMenu.ContextMenuInfo
import android.view.LayoutInflater
-import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.os.bundleOf
@@ -14,7 +11,6 @@ import org.schabi.newpipe.R
import org.schabi.newpipe.about.LicenseFragmentHelper.showLicense
import org.schabi.newpipe.databinding.FragmentLicensesBinding
import org.schabi.newpipe.databinding.ItemSoftwareComponentBinding
-import org.schabi.newpipe.util.ShareUtils
import java.util.Arrays
import java.util.Objects
@@ -73,7 +69,7 @@ class LicenseFragment : Fragment() {
root.setOnClickListener {
activeLicense = component.license
compositeDisposable.add(
- showLicense(activity, component.license)
+ showLicense(activity, component)
)
}
binding.licensesSoftwareComponents.addView(root)
@@ -87,30 +83,6 @@ class LicenseFragment : Fragment() {
return binding.root
}
- override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?) {
- val inflater = requireActivity().menuInflater
- val component = v.tag as SoftwareComponent
- menu.setHeaderTitle(component.name)
- inflater.inflate(R.menu.software_component, menu)
- super.onCreateContextMenu(menu, v, menuInfo)
- componentForContextMenu = component
- }
-
- override fun onContextItemSelected(item: MenuItem): Boolean {
- // item.getMenuInfo() is null so we use the tag of the view
- val component = componentForContextMenu ?: return false
- when (item.itemId) {
- R.id.menu_software_website -> {
- ShareUtils.openUrlInBrowser(activity, component.link)
- return true
- }
- R.id.menu_software_show_license -> compositeDisposable.add(
- showLicense(activity, component.license)
- )
- }
- return false
- }
-
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
if (activeLicense != null) {
diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.kt b/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.kt
index bdb3edabd..f24116e23 100644
--- a/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.kt
+++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.kt
@@ -10,6 +10,7 @@ import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.schabi.newpipe.R
import org.schabi.newpipe.util.Localization
+import org.schabi.newpipe.util.ShareUtils
import org.schabi.newpipe.util.ThemeHelper
import java.io.BufferedReader
import java.io.IOException
@@ -113,4 +114,34 @@ object LicenseFragmentHelper {
}
}
}
+ @JvmStatic
+ fun showLicense(context: Context?, component: SoftwareComponent): Disposable {
+ return if (context == null) {
+ Disposable.empty()
+ } else {
+ Observable.fromCallable { getFormattedLicense(context, component.license) }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe { formattedLicense: String ->
+ val webViewData = Base64.encodeToString(
+ formattedLicense
+ .toByteArray(StandardCharsets.UTF_8),
+ Base64.NO_PADDING
+ )
+ val webView = WebView(context)
+ webView.loadData(webViewData, "text/html; charset=UTF-8", "base64")
+ val alert = AlertDialog.Builder(context)
+ alert.setTitle(component.license.name)
+ alert.setView(webView)
+ Localization.assureCorrectAppLanguage(context)
+ alert.setPositiveButton(
+ R.string.dismiss
+ ) { dialog, _ -> dialog.dismiss() }
+ alert.setNeutralButton(R.string.open_website_license) { _, _ ->
+ ShareUtils.openUrlInBrowser(context, component.link)
+ }
+ alert.show()
+ }
+ }
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 88a43ea71..756e12eaf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -742,4 +742,5 @@
Unlisted
Private
Internal
+ Open Website
\ No newline at end of file