mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Horizontal and vertical apps' items' classes
This commit is contained in:
parent
f35ef9f265
commit
3f440dff2a
40
src/main/kotlin/com/looker/droidify/ui/items/HAppItem.kt
Normal file
40
src/main/kotlin/com/looker/droidify/ui/items/HAppItem.kt
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package com.looker.droidify.ui.items
|
||||||
|
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import coil.load
|
||||||
|
import coil.transform.RoundedCornersTransformation
|
||||||
|
import com.looker.droidify.R
|
||||||
|
import com.looker.droidify.databinding.ItemAppHorizXBinding
|
||||||
|
import com.looker.droidify.entity.ProductItem
|
||||||
|
import com.looker.droidify.entity.Repository
|
||||||
|
import com.looker.droidify.network.CoilDownloader
|
||||||
|
import com.looker.droidify.utility.Utils
|
||||||
|
import com.looker.droidify.utility.extension.resources.toPx
|
||||||
|
import com.mikepenz.fastadapter.binding.AbstractBindingItem
|
||||||
|
|
||||||
|
class HAppItem(val item: ProductItem, val repository: Repository) :
|
||||||
|
AbstractBindingItem<ItemAppHorizXBinding>() {
|
||||||
|
override val type: Int
|
||||||
|
get() = R.id.fastadapter_item
|
||||||
|
|
||||||
|
override fun createBinding(inflater: LayoutInflater, parent: ViewGroup?)
|
||||||
|
: ItemAppHorizXBinding = ItemAppHorizXBinding.inflate(inflater, parent, false)
|
||||||
|
|
||||||
|
override fun bindView(binding: ItemAppHorizXBinding, payloads: List<Any>) {
|
||||||
|
val (progressIcon, defaultIcon) = Utils.getDefaultApplicationIcons(binding.icon.context)
|
||||||
|
|
||||||
|
binding.name.text = item.name
|
||||||
|
binding.icon.load(
|
||||||
|
CoilDownloader.createIconUri(
|
||||||
|
binding.icon, item.packageName,
|
||||||
|
item.icon, item.metadataIcon, repository
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
transformations(RoundedCornersTransformation(4.toPx))
|
||||||
|
placeholder(progressIcon)
|
||||||
|
error(defaultIcon)
|
||||||
|
}
|
||||||
|
binding.version.text = if (item.canUpdate) item.version else item.installedVersion
|
||||||
|
}
|
||||||
|
}
|
76
src/main/kotlin/com/looker/droidify/ui/items/VAppItem.kt
Normal file
76
src/main/kotlin/com/looker/droidify/ui/items/VAppItem.kt
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package com.looker.droidify.ui.items
|
||||||
|
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.content.res.ResourcesCompat
|
||||||
|
import coil.load
|
||||||
|
import coil.transform.RoundedCornersTransformation
|
||||||
|
import com.looker.droidify.R
|
||||||
|
import com.looker.droidify.databinding.ItemAppVerticalXBinding
|
||||||
|
import com.looker.droidify.entity.ProductItem
|
||||||
|
import com.looker.droidify.entity.Repository
|
||||||
|
import com.looker.droidify.network.CoilDownloader
|
||||||
|
import com.looker.droidify.utility.Utils
|
||||||
|
import com.looker.droidify.utility.extension.resources.getColorFromAttr
|
||||||
|
import com.looker.droidify.utility.extension.resources.sizeScaled
|
||||||
|
import com.looker.droidify.utility.extension.resources.toPx
|
||||||
|
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||||
|
import com.mikepenz.fastadapter.binding.AbstractBindingItem
|
||||||
|
|
||||||
|
class VAppItem(val item: ProductItem, val repository: Repository) :
|
||||||
|
AbstractBindingItem<ItemAppVerticalXBinding>() {
|
||||||
|
override val type: Int
|
||||||
|
get() = R.id.fastadapter_item
|
||||||
|
|
||||||
|
override fun createBinding(inflater: LayoutInflater, parent: ViewGroup?)
|
||||||
|
: ItemAppVerticalXBinding = ItemAppVerticalXBinding.inflate(inflater, parent, false)
|
||||||
|
|
||||||
|
override fun bindView(binding: ItemAppVerticalXBinding, payloads: List<Any>) {
|
||||||
|
val (progressIcon, defaultIcon) = Utils.getDefaultApplicationIcons(binding.icon.context)
|
||||||
|
|
||||||
|
binding.name.text = item.name
|
||||||
|
binding.summary.text =
|
||||||
|
if (item.name == item.summary) "" else item.summary
|
||||||
|
binding.summary.visibility =
|
||||||
|
if (binding.summary.text.isNotEmpty()) View.VISIBLE else View.GONE
|
||||||
|
binding.icon.load(
|
||||||
|
CoilDownloader.createIconUri(
|
||||||
|
binding.icon, item.packageName,
|
||||||
|
item.icon, item.metadataIcon, repository
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
transformations(RoundedCornersTransformation(4.toPx))
|
||||||
|
placeholder(progressIcon)
|
||||||
|
error(defaultIcon)
|
||||||
|
}
|
||||||
|
binding.status.apply {
|
||||||
|
if (item.canUpdate) {
|
||||||
|
text = item.version
|
||||||
|
if (background == null) {
|
||||||
|
background =
|
||||||
|
ResourcesCompat.getDrawable(
|
||||||
|
binding.root.resources,
|
||||||
|
R.drawable.background_border,
|
||||||
|
context.theme
|
||||||
|
)
|
||||||
|
resources.sizeScaled(6).let { setPadding(it, it, it, it) }
|
||||||
|
backgroundTintList =
|
||||||
|
context.getColorFromAttr(R.attr.colorSecondaryContainer)
|
||||||
|
setTextColor(context.getColorFromAttr(R.attr.colorSecondary))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text = item.installedVersion.nullIfEmpty() ?: item.version
|
||||||
|
if (background != null) {
|
||||||
|
setPadding(0, 0, 0, 0)
|
||||||
|
setTextColor(binding.status.context.getColorFromAttr(android.R.attr.colorControlNormal))
|
||||||
|
background = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val enabled = item.compatible || item.installedVersion.isNotEmpty()
|
||||||
|
sequenceOf(binding.name, binding.status, binding.summary).forEach {
|
||||||
|
it.isEnabled = enabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -23,23 +23,38 @@
|
|||||||
android:elevation="8dp"
|
android:elevation="8dp"
|
||||||
android:src="@drawable/ic_application_default"
|
android:src="@drawable/ic_application_default"
|
||||||
android:tint="?colorPrimary"
|
android:tint="?colorPrimary"
|
||||||
app:layout_constraintBottom_toTopOf="@id/label"
|
app:layout_constraintBottom_toTopOf="@id/name"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/label"
|
android:id="@+id/name"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="2dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/version"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/icon" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/version"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="2dp"
|
android:layout_marginHorizontal="2dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
android:textAppearance="@style/TextAppearance.Material3.LabelSmall"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/icon" />
|
app:layout_constraintTop_toBottomOf="@id/name" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
</layout>
|
Loading…
x
Reference in New Issue
Block a user