chinwag-android/app/src/main/java/com/keylesspalace/tusky/view/LicenseCard.kt
Konrad Pozniak 510e093456
improve preview cards (#4782)
- new design thats more Material3-ish
- support for the Mastodon 4.3 fediverse:creator feature and other new
card attributes

closes #4732 
closes https://github.com/tuskyapp/Tusky/issues/3340

before:

<img
src="https://github.com/user-attachments/assets/6cd9ccfc-7f7d-459b-90d9-547cdca0d8c4"
width="280"/>
<img
src="https://github.com/user-attachments/assets/286b5b19-49a3-4b2f-97a9-185fc1f31a8e"
width="280"/>


after:
<img
src="https://github.com/user-attachments/assets/b57acf74-e7d3-411e-9186-763de87fa9ca"
width="280"/> <img
src="https://github.com/user-attachments/assets/50684c30-b4bf-4f05-8b8e-e5fd2bf3d7b6"
width="280"/>
2025-01-06 10:27:39 +01:00

61 lines
2.1 KiB
Kotlin

/* Copyright 2018 Conny Duck
*
* This file is a part of Tusky.
*
* This program 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.
*
* Tusky 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 Tusky; if not,
* see <http://www.gnu.org/licenses>. */
package com.keylesspalace.tusky.view
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.core.content.res.use
import com.google.android.material.R as materialR
import com.google.android.material.card.MaterialCardView
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.databinding.CardLicenseBinding
import com.keylesspalace.tusky.util.hide
import com.keylesspalace.tusky.util.openLink
class LicenseCard
@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = materialR.attr.materialCardViewFilledStyle
) : MaterialCardView(context, attrs, defStyleAttr) {
init {
val binding = CardLicenseBinding.inflate(LayoutInflater.from(context), this)
val (name, license, link) = context.theme.obtainStyledAttributes(
attrs,
R.styleable.LicenseCard,
0,
0
).use { a ->
Triple(
a.getString(R.styleable.LicenseCard_name),
a.getString(R.styleable.LicenseCard_license),
a.getString(R.styleable.LicenseCard_link)
)
}
binding.licenseCardName.text = name
binding.licenseCardLicense.text = license
if (link.isNullOrBlank()) {
binding.licenseCardLink.hide()
} else {
binding.licenseCardLink.text = link
setOnClickListener { context.openLink(link) }
}
}
}