mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
fixed UI
This commit is contained in:
parent
1f60c877de
commit
db3e23621a
6 changed files with 38 additions and 26 deletions
|
@ -12,9 +12,11 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.lagradost.cloudstream3.PROVIDER_STATUS_DOWN
|
import com.lagradost.cloudstream3.PROVIDER_STATUS_DOWN
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.plugins.PluginManager
|
import com.lagradost.cloudstream3.plugins.PluginManager
|
||||||
|
import com.lagradost.cloudstream3.ui.result.setText
|
||||||
|
import com.lagradost.cloudstream3.ui.result.txt
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.html
|
import com.lagradost.cloudstream3.utils.AppUtils.html
|
||||||
import com.lagradost.cloudstream3.utils.GlideApp
|
import com.lagradost.cloudstream3.utils.GlideApp
|
||||||
import com.lagradost.cloudstream3.utils.SubtitleHelper.getFlagFromIso
|
import com.lagradost.cloudstream3.utils.SubtitleHelper.fromTwoLettersToLanguage
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.toPx
|
import com.lagradost.cloudstream3.utils.UIHelper.toPx
|
||||||
import kotlinx.android.synthetic.main.repository_item.view.*
|
import kotlinx.android.synthetic.main.repository_item.view.*
|
||||||
|
@ -93,8 +95,9 @@ class PluginAdapter(
|
||||||
Assert.assertEquals(512, findClosestBase2(700))
|
Assert.assertEquals(512, findClosestBase2(700))
|
||||||
}
|
}
|
||||||
|
|
||||||
val iconSize by lazy {
|
private val iconSizeExact = 32.toPx
|
||||||
findClosestBase2(32.toPx, 16, 512)
|
private val iconSize by lazy {
|
||||||
|
findClosestBase2(iconSizeExact, 16, 512)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +108,8 @@ class PluginAdapter(
|
||||||
data: PluginViewData,
|
data: PluginViewData,
|
||||||
) {
|
) {
|
||||||
val metadata = data.plugin.second
|
val metadata = data.plugin.second
|
||||||
val alpha = if (metadata.status == PROVIDER_STATUS_DOWN) 0.6f else 1f
|
val disabled = metadata.status == PROVIDER_STATUS_DOWN
|
||||||
|
val alpha = if (disabled) 0.6f else 1f
|
||||||
itemView.main_text?.alpha = alpha
|
itemView.main_text?.alpha = alpha
|
||||||
itemView.sub_text?.alpha = alpha
|
itemView.sub_text?.alpha = alpha
|
||||||
|
|
||||||
|
@ -157,6 +161,9 @@ class PluginAdapter(
|
||||||
metadata.iconUrl?.replace(
|
metadata.iconUrl?.replace(
|
||||||
"%size%",
|
"%size%",
|
||||||
"$iconSize"
|
"$iconSize"
|
||||||
|
)?.replace(
|
||||||
|
"%exact_size%",
|
||||||
|
"$iconSizeExact"
|
||||||
),
|
),
|
||||||
null,
|
null,
|
||||||
errorImageDrawable = R.drawable.ic_baseline_extension_24
|
errorImageDrawable = R.drawable.ic_baseline_extension_24
|
||||||
|
@ -170,7 +177,8 @@ class PluginAdapter(
|
||||||
|
|
||||||
if (metadata.language != null) {
|
if (metadata.language != null) {
|
||||||
itemView.lang_icon?.isVisible = true
|
itemView.lang_icon?.isVisible = true
|
||||||
itemView.lang_icon.text = getFlagFromIso(metadata.language)
|
//itemView.lang_icon.text = getFlagFromIso(metadata.language)
|
||||||
|
itemView.lang_icon.text = fromTwoLettersToLanguage(metadata.language)
|
||||||
} else {
|
} else {
|
||||||
itemView.lang_icon?.isVisible = false
|
itemView.lang_icon?.isVisible = false
|
||||||
}
|
}
|
||||||
|
@ -182,8 +190,7 @@ class PluginAdapter(
|
||||||
} else {
|
} else {
|
||||||
itemView.ext_filesize?.isVisible = false
|
itemView.ext_filesize?.isVisible = false
|
||||||
}
|
}
|
||||||
|
itemView.main_text.setText(if(disabled) txt(R.string.single_plugin_disabled, metadata.name) else txt(metadata.name))
|
||||||
itemView.main_text?.text = metadata.name
|
|
||||||
itemView.sub_text?.isGone = metadata.description.isNullOrBlank()
|
itemView.sub_text?.isGone = metadata.description.isNullOrBlank()
|
||||||
itemView.sub_text?.text = metadata.description.html()
|
itemView.sub_text?.text = metadata.description.html()
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ object AppUtils {
|
||||||
val layoutManager =
|
val layoutManager =
|
||||||
this.layoutManager as? LinearLayoutManager?
|
this.layoutManager as? LinearLayoutManager?
|
||||||
val adapter = adapter
|
val adapter = adapter
|
||||||
return if (layoutManager == null || adapter == null) false else layoutManager.findLastCompletelyVisibleItemPosition() < adapter.itemCount - 2
|
return if (layoutManager == null || adapter == null) false else layoutManager.findLastCompletelyVisibleItemPosition() < adapter.itemCount - 7 // bit more than 1 to make it more seamless
|
||||||
}
|
}
|
||||||
|
|
||||||
//fun Context.deleteFavorite(data: SearchResponse) {
|
//fun Context.deleteFavorite(data: SearchResponse) {
|
||||||
|
|
|
@ -138,14 +138,14 @@ object SubtitleHelper {
|
||||||
|
|
||||||
private fun getFlagFromIsoShort(flagAscii: String?): String? {
|
private fun getFlagFromIsoShort(flagAscii: String?): String? {
|
||||||
if (flagAscii.isNullOrBlank() || flagAscii.length < 2) return null
|
if (flagAscii.isNullOrBlank() || flagAscii.length < 2) return null
|
||||||
try {
|
return try {
|
||||||
val firstChar: Int = Character.codePointAt(flagAscii, 0) + offset
|
val firstChar: Int = Character.codePointAt(flagAscii, 0) + offset
|
||||||
val secondChar: Int = Character.codePointAt(flagAscii, 1) + offset
|
val secondChar: Int = Character.codePointAt(flagAscii, 1) + offset
|
||||||
|
|
||||||
return (String(Character.toChars(firstChar)) + String(Character.toChars(secondChar)))
|
(String(Character.toChars(firstChar)) + String(Character.toChars(secondChar)))
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logError(e)
|
logError(e)
|
||||||
return null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
android:id="@+id/main_text"
|
android:id="@+id/main_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="?attr/textColor"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
tools:text="Test repository" />
|
tools:text="Test repository" />
|
||||||
|
|
||||||
|
@ -42,9 +43,10 @@
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/lang_icon"
|
android:id="@+id/lang_icon"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:text="🇷🇼"
|
android:text="🇷🇼"
|
||||||
|
|
||||||
|
android:textColor="?attr/grayTextColor"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
@ -53,17 +55,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginStart="5dp"
|
||||||
android:text="v1"
|
android:text="v1"
|
||||||
android:visibility="gone"
|
android:textColor="?attr/grayTextColor"
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/nsfw_marker"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:text="@string/is_adult"
|
|
||||||
android:textColor="@color/adultColor"
|
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
@ -72,9 +66,19 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="5dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="100MB"
|
android:text="100MB"
|
||||||
|
android:textColor="?attr/grayTextColor"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/nsfw_marker"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="5dp"
|
||||||
|
android:text="@string/is_adult"
|
||||||
|
android:textColor="@color/adultColor"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<color name="typeColor">#3BF585</color>
|
<color name="typeColor">#3BF585</color>
|
||||||
<color name="typeColorBg">?attr/colorPrimaryDark</color>
|
<color name="typeColorBg">?attr/colorPrimaryDark</color>
|
||||||
|
|
||||||
<color name="adultColor">#F54A3B</color> <!-- same as sub color -->
|
<color name="adultColor">#FF6F63</color> <!-- same as sub color -->
|
||||||
|
|
||||||
<color name="video_ripple">#80FFFFFF</color>
|
<color name="video_ripple">#80FFFFFF</color>
|
||||||
<color name="video_button_ripple">#32FFFFFF</color>
|
<color name="video_button_ripple">#32FFFFFF</color>
|
||||||
|
|
|
@ -602,4 +602,5 @@
|
||||||
<string name="uppercase_all_subtitles">Uppercase all subtitles</string>
|
<string name="uppercase_all_subtitles">Uppercase all subtitles</string>
|
||||||
|
|
||||||
<string name="download_all_plugins_from_repo">Download all plugins from this repository?</string>
|
<string name="download_all_plugins_from_repo">Download all plugins from this repository?</string>
|
||||||
|
<string name="single_plugin_disabled" formatted="true">%s (Disabled)</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue