cloudstream-extensions/NginxProvider/src/main/kotlin/com/lagradost/NginxSettingsFragment.kt
C10udburst 29515ac0bc fix
2022-08-19 13:15:07 +02:00

92 lines
No EOL
3.9 KiB
Kotlin

package com.lagradost
import android.content.res.ColorStateList
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.res.ResourcesCompat
import com.lagradost.cloudstream3.R
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.lagradost.cloudstream3.AcraApplication.Companion.openBrowser
import com.lagradost.cloudstream3.plugins.Plugin
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.showLoginInfo
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.addAccount
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
class NginxSettingsFragment(private val plugin: Plugin, val nginxApi: NginxApi) :
BottomSheetDialogFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val id = plugin.resources!!.getIdentifier("nginx_settings", "layout", BuildConfig.LIBRARY_PACKAGE_NAME)
val layout = plugin.resources!!.getLayout(id)
return inflater.inflate(layout, container, false)
}
private fun <T : View> View.findView(name: String): T {
val id = plugin.resources!!.getIdentifier(name, "id", BuildConfig.LIBRARY_PACKAGE_NAME)
return this.findViewById(id)
}
private fun getDrawable(name: String): Drawable? {
val id = plugin.resources!!.getIdentifier(name, "drawable", BuildConfig.LIBRARY_PACKAGE_NAME)
return ResourcesCompat.getDrawable(plugin.resources!!, id, null)
}
private fun getString(name: String): String? {
val id = plugin.resources!!.getIdentifier(name, "string", BuildConfig.LIBRARY_PACKAGE_NAME)
return plugin.resources!!.getString(id)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val infoView = view.findView<LinearLayout>("nginx_info")
val infoTextView = view.findView<TextView>("info_main_text")
val infoSubTextView = view.findView<TextView>("info_sub_text")
val infoImageView = view.findView<ImageView>("nginx_info_imageview")
infoTextView.text = getString("nginx_info_title") ?: "Nginx"
infoSubTextView.text = getString("nginx_info_summary") ?: ""
infoImageView.setImageDrawable(getDrawable("nginx_question"))
infoImageView.imageTintList =
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
val loginView = view.findView<LinearLayout>("nginx_login")
val loginTextView = view.findView<TextView>("main_text")
val loginImageView = view.findView<ImageView>("nginx_login_imageview")
loginImageView.setImageDrawable(getDrawable("nginx"))
loginImageView.imageTintList =
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
// object : View.OnClickListener is required to make it compile because otherwise it used invoke-customs
infoView.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
openBrowser(nginxApi.createAccountUrl)
}
})
loginTextView.text = view.context.resources.getString(R.string.login_format).format(
nginxApi.name,
view.context.resources.getString(R.string.account))
loginView.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
val info = nginxApi.loginInfo()
if (info != null) {
showLoginInfo(activity, nginxApi, info)
} else {
addAccount(activity, nginxApi)
}
}
})
}
}