- 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"/>
61 lines
2.1 KiB
Kotlin
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) }
|
|
}
|
|
}
|
|
}
|