2018-01-04 19:52:25 +01:00
|
|
|
package jp.juggler.subwaytooter
|
|
|
|
|
2018-08-21 15:31:44 +02:00
|
|
|
import android.content.Context
|
2018-01-04 19:52:25 +01:00
|
|
|
import android.graphics.PorterDuff
|
2018-08-21 15:31:44 +02:00
|
|
|
import android.support.v4.content.ContextCompat
|
2018-01-04 19:52:25 +01:00
|
|
|
import android.view.View
|
|
|
|
import android.widget.ImageButton
|
|
|
|
import android.widget.ImageView
|
2018-08-21 15:31:44 +02:00
|
|
|
import android.widget.LinearLayout
|
2018-01-04 19:52:25 +01:00
|
|
|
import android.widget.PopupWindow
|
2018-08-21 15:31:44 +02:00
|
|
|
import com.google.android.flexbox.FlexWrap
|
|
|
|
import com.google.android.flexbox.FlexboxLayout
|
|
|
|
import com.google.android.flexbox.JustifyContent
|
2018-01-04 19:52:25 +01:00
|
|
|
import jp.juggler.subwaytooter.action.Action_Follow
|
|
|
|
import jp.juggler.subwaytooter.action.Action_Toot
|
2018-01-10 16:47:35 +01:00
|
|
|
import jp.juggler.subwaytooter.action.NOT_CROSS_ACCOUNT
|
2018-01-04 19:52:25 +01:00
|
|
|
import jp.juggler.subwaytooter.api.entity.TootNotification
|
|
|
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
2018-08-20 19:37:42 +02:00
|
|
|
import jp.juggler.subwaytooter.api.entity.TootVisibility
|
2018-01-04 19:52:25 +01:00
|
|
|
import jp.juggler.subwaytooter.table.SavedAccount
|
|
|
|
import jp.juggler.subwaytooter.table.UserRelation
|
|
|
|
import jp.juggler.subwaytooter.util.LogCategory
|
2018-08-21 15:31:44 +02:00
|
|
|
import jp.juggler.subwaytooter.util.startMargin
|
|
|
|
import jp.juggler.subwaytooter.view.CountImageButton
|
|
|
|
import org.jetbrains.anko.*
|
|
|
|
import org.jetbrains.anko.custom.customView
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
internal class StatusButtons(
|
|
|
|
private val activity : ActMain,
|
|
|
|
private val column : Column,
|
2018-01-14 22:47:42 +01:00
|
|
|
private val bSimpleList : Boolean,
|
|
|
|
|
2018-08-21 15:31:44 +02:00
|
|
|
private val holder : StatusButtonsViewHolder
|
2018-01-14 22:47:42 +01:00
|
|
|
|
2018-01-04 19:52:25 +01:00
|
|
|
) : View.OnClickListener, View.OnLongClickListener {
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
val log = LogCategory("StatusButtons")
|
|
|
|
}
|
|
|
|
|
|
|
|
private val access_info : SavedAccount
|
|
|
|
private var relation : UserRelation? = null
|
|
|
|
private var status : TootStatus? = null
|
|
|
|
private var notification : TootNotification? = null
|
|
|
|
|
|
|
|
var close_window : PopupWindow? = null
|
|
|
|
|
2018-08-21 15:31:44 +02:00
|
|
|
private val btnConversation = holder.btnConversation
|
|
|
|
private val btnReply = holder.btnReply
|
|
|
|
private val btnBoost = holder.btnBoost
|
|
|
|
private val btnFavourite = holder.btnFavourite
|
|
|
|
private val llFollow2 = holder.llFollow2
|
|
|
|
private val btnFollow2 = holder.btnFollow2
|
|
|
|
private val ivFollowedBy2 = holder.ivFollowedBy2
|
|
|
|
private val btnMore = holder.btnMore
|
|
|
|
|
|
|
|
|
2018-01-04 19:52:25 +01:00
|
|
|
init {
|
|
|
|
this.access_info = column.access_info
|
|
|
|
|
2018-01-18 19:09:36 +01:00
|
|
|
btnBoost.setOnClickListener(this)
|
|
|
|
btnBoost.setOnLongClickListener(this)
|
|
|
|
btnFavourite.setOnClickListener(this)
|
|
|
|
btnFavourite.setOnLongClickListener(this)
|
|
|
|
btnFollow2.setOnClickListener(this)
|
|
|
|
btnFollow2.setOnLongClickListener(this)
|
|
|
|
btnMore.setOnClickListener(this)
|
|
|
|
btnConversation.setOnClickListener(this)
|
|
|
|
btnConversation.setOnLongClickListener(this)
|
|
|
|
btnReply.setOnClickListener(this)
|
|
|
|
btnReply.setOnLongClickListener(this)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
fun bind(status : TootStatus, notification : TootNotification?) {
|
|
|
|
this.status = status
|
|
|
|
this.notification = notification
|
|
|
|
|
|
|
|
val color_normal = Styler.getAttributeColor(activity, R.attr.colorImageButton)
|
|
|
|
val color_accent = Styler.getAttributeColor(activity, R.attr.colorImageButtonAccent)
|
2018-01-17 18:39:16 +01:00
|
|
|
val fav_icon_attr =
|
|
|
|
if(access_info.isNicoru(status.account)) R.attr.ic_nicoru else R.attr.btn_favourite
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2018-08-16 10:02:55 +02:00
|
|
|
val replies_count = status.replies_count
|
2018-08-21 15:31:44 +02:00
|
|
|
|
2018-08-16 10:02:55 +02:00
|
|
|
setButton(
|
|
|
|
btnReply,
|
|
|
|
true,
|
|
|
|
color_normal,
|
|
|
|
R.attr.btn_reply,
|
2018-08-20 19:37:42 +02:00
|
|
|
when(replies_count) {
|
|
|
|
null -> ""
|
2018-08-19 06:19:33 +02:00
|
|
|
else -> when(Pref.ipRepliesCount(activity.pref)) {
|
|
|
|
Pref.RC_SIMPLE -> when {
|
|
|
|
replies_count >= 2L -> "1+"
|
|
|
|
replies_count == 1L -> "1"
|
|
|
|
else -> ""
|
2018-08-16 10:02:55 +02:00
|
|
|
}
|
|
|
|
Pref.RC_ACTUAL -> replies_count.toString()
|
2018-08-19 06:19:33 +02:00
|
|
|
else -> ""
|
2018-08-16 10:02:55 +02:00
|
|
|
}
|
2018-08-19 06:19:33 +02:00
|
|
|
},
|
|
|
|
activity.getString(R.string.reply)
|
2018-08-16 10:02:55 +02:00
|
|
|
)
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
// ブーストボタン
|
2018-01-04 19:52:25 +01:00
|
|
|
when {
|
2018-08-20 19:37:42 +02:00
|
|
|
// マストドンではDirectはブーストできない (Misskeyはできる)
|
2018-08-21 15:31:44 +02:00
|
|
|
(! access_info.isMisskey && status.visibility.order <= TootVisibility.DirectSpecified.order) -> setButton(
|
2018-01-17 18:39:16 +01:00
|
|
|
btnBoost,
|
|
|
|
false,
|
|
|
|
color_accent,
|
|
|
|
R.attr.ic_mail,
|
2018-08-19 06:19:33 +02:00
|
|
|
"",
|
|
|
|
activity.getString(R.string.boost)
|
2018-01-17 18:39:16 +01:00
|
|
|
)
|
2018-08-19 06:19:33 +02:00
|
|
|
|
2018-01-17 18:39:16 +01:00
|
|
|
activity.app_state.isBusyBoost(access_info, status) -> setButton(
|
|
|
|
btnBoost,
|
|
|
|
false,
|
|
|
|
color_normal,
|
|
|
|
R.attr.btn_refresh,
|
2018-08-19 06:19:33 +02:00
|
|
|
"?",
|
|
|
|
activity.getString(R.string.boost)
|
2018-01-17 18:39:16 +01:00
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2018-08-19 06:19:33 +02:00
|
|
|
else -> setButton(
|
|
|
|
btnBoost,
|
|
|
|
true,
|
|
|
|
if(status.reblogged) color_accent else color_normal,
|
|
|
|
R.attr.btn_boost,
|
|
|
|
status.reblogs_count?.toString() ?: "",
|
|
|
|
activity.getString(R.string.boost)
|
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
when {
|
2018-01-17 18:39:16 +01:00
|
|
|
activity.app_state.isBusyFav(access_info, status) -> setButton(
|
|
|
|
btnFavourite,
|
|
|
|
false,
|
|
|
|
color_normal,
|
|
|
|
R.attr.btn_refresh,
|
2018-08-19 06:19:33 +02:00
|
|
|
"?",
|
|
|
|
activity.getString(R.string.favourite)
|
2018-01-17 18:39:16 +01:00
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2018-08-19 06:19:33 +02:00
|
|
|
else -> setButton(
|
|
|
|
btnFavourite,
|
|
|
|
true,
|
|
|
|
if(status.favourited) color_accent else color_normal,
|
|
|
|
fav_icon_attr,
|
|
|
|
status.favourites_count?.toString() ?: "",
|
|
|
|
activity.getString(R.string.favourite)
|
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
val account = status.account
|
|
|
|
|
2018-01-17 18:39:16 +01:00
|
|
|
this.relation = if(! Pref.bpShowFollowButtonInButtonBar(activity.pref)) {
|
2018-01-04 19:52:25 +01:00
|
|
|
llFollow2.visibility = View.GONE
|
|
|
|
null
|
|
|
|
} else {
|
|
|
|
llFollow2.visibility = View.VISIBLE
|
|
|
|
val relation = UserRelation.load(access_info.db_id, account.id)
|
|
|
|
Styler.setFollowIcon(activity, btnFollow2, ivFollowedBy2, relation, account)
|
|
|
|
relation
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-01-17 18:39:16 +01:00
|
|
|
private fun setButton(
|
2018-08-21 15:31:44 +02:00
|
|
|
b : CountImageButton,
|
2018-01-17 18:39:16 +01:00
|
|
|
enabled : Boolean,
|
|
|
|
color : Int,
|
|
|
|
icon_attr : Int,
|
2018-08-21 15:31:44 +02:00
|
|
|
count : String,
|
2018-08-19 06:19:33 +02:00
|
|
|
contentDescription : String
|
2018-01-17 18:39:16 +01:00
|
|
|
) {
|
2018-01-04 19:52:25 +01:00
|
|
|
val d = Styler.getAttributeDrawable(activity, icon_attr).mutate()
|
|
|
|
d.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
|
2018-08-21 15:31:44 +02:00
|
|
|
b.setImageDrawable(d)
|
|
|
|
b.setPaddingAndText(holder.paddingH,holder.paddingV,count,14f,holder.compoundPaddingDp)
|
2018-01-04 19:52:25 +01:00
|
|
|
b.setTextColor(color)
|
2018-08-21 15:31:44 +02:00
|
|
|
b.contentDescription = contentDescription + count
|
2018-01-04 19:52:25 +01:00
|
|
|
b.isEnabled = enabled
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onClick(v : View) {
|
|
|
|
|
|
|
|
close_window?.dismiss()
|
|
|
|
close_window = null
|
|
|
|
|
|
|
|
val status = this.status ?: return
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
when(v) {
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2018-01-17 18:39:16 +01:00
|
|
|
btnConversation -> Action_Toot.conversation(
|
|
|
|
activity,
|
|
|
|
activity.nextPosition(column),
|
|
|
|
access_info,
|
|
|
|
status
|
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2018-01-17 18:39:16 +01:00
|
|
|
btnReply -> if(! access_info.isPseudo) {
|
2018-01-04 19:52:25 +01:00
|
|
|
Action_Toot.reply(activity, access_info, status)
|
|
|
|
} else {
|
|
|
|
Action_Toot.replyFromAnotherAccount(activity, access_info, status)
|
|
|
|
}
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnBoost -> {
|
|
|
|
if(access_info.isPseudo) {
|
|
|
|
Action_Toot.boostFromAnotherAccount(activity, access_info, status)
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// トグル動作
|
2018-04-20 12:43:09 +02:00
|
|
|
val bSet = ! status.reblogged
|
2018-01-14 22:47:42 +01:00
|
|
|
|
|
|
|
Action_Toot.boost(
|
|
|
|
activity,
|
|
|
|
access_info,
|
|
|
|
status,
|
2018-05-08 07:59:28 +02:00
|
|
|
access_info.getFullAcct(status.account),
|
2018-01-14 22:47:42 +01:00
|
|
|
NOT_CROSS_ACCOUNT,
|
2018-04-20 12:43:09 +02:00
|
|
|
when {
|
|
|
|
! bSimpleList -> null
|
2018-08-16 10:02:55 +02:00
|
|
|
// 簡略表示なら結果をトースト表示
|
2018-04-20 12:43:09 +02:00
|
|
|
bSet -> activity.boost_complete_callback
|
|
|
|
else -> activity.unboost_complete_callback
|
|
|
|
},
|
|
|
|
bSet = bSet
|
2018-01-14 22:47:42 +01:00
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnFavourite -> {
|
|
|
|
if(access_info.isPseudo) {
|
|
|
|
Action_Toot.favouriteFromAnotherAccount(activity, access_info, status)
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// トグル動作
|
2018-04-20 12:43:09 +02:00
|
|
|
val bSet = ! status.favourited
|
2018-01-14 22:47:42 +01:00
|
|
|
|
|
|
|
Action_Toot.favourite(
|
|
|
|
activity,
|
|
|
|
access_info,
|
|
|
|
status,
|
|
|
|
NOT_CROSS_ACCOUNT,
|
2018-04-20 12:43:09 +02:00
|
|
|
when {
|
|
|
|
! bSimpleList -> null
|
2018-08-16 10:02:55 +02:00
|
|
|
// 簡略表示なら結果をトースト表示
|
2018-04-20 12:43:09 +02:00
|
|
|
bSet -> activity.favourite_complete_callback
|
|
|
|
else -> activity.unfavourite_complete_callback
|
|
|
|
},
|
|
|
|
bSet = bSet
|
2018-01-14 22:47:42 +01:00
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnFollow2 -> {
|
2018-05-08 10:25:02 +02:00
|
|
|
val accountRef = status.accountRef
|
2018-05-18 19:08:46 +02:00
|
|
|
val account = accountRef.get()
|
2018-01-04 19:52:25 +01:00
|
|
|
val relation = this.relation ?: return
|
|
|
|
|
|
|
|
when {
|
|
|
|
access_info.isPseudo -> {
|
|
|
|
// 別アカでフォロー
|
|
|
|
Action_Follow.followFromAnotherAccount(
|
|
|
|
activity,
|
|
|
|
activity.nextPosition(column),
|
|
|
|
access_info,
|
|
|
|
account
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
relation.blocking || relation.muting -> {
|
|
|
|
// 何もしない
|
|
|
|
}
|
|
|
|
|
|
|
|
relation.getFollowing(account) || relation.getRequested(account) -> {
|
|
|
|
// フォロー解除
|
|
|
|
Action_Follow.follow(
|
|
|
|
activity,
|
|
|
|
activity.nextPosition(column),
|
|
|
|
access_info,
|
2018-05-08 10:25:02 +02:00
|
|
|
accountRef,
|
2018-01-10 16:47:35 +01:00
|
|
|
bFollow = false,
|
|
|
|
callback = activity.unfollow_complete_callback
|
2018-01-04 19:52:25 +01:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
else -> {
|
|
|
|
// フォロー
|
|
|
|
Action_Follow.follow(
|
|
|
|
activity,
|
|
|
|
activity.nextPosition(column),
|
|
|
|
access_info,
|
2018-05-08 10:25:02 +02:00
|
|
|
accountRef,
|
2018-01-17 18:39:16 +01:00
|
|
|
bFollow = true,
|
|
|
|
callback = activity.follow_complete_callback
|
2018-01-04 19:52:25 +01:00
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-08-16 10:02:55 +02:00
|
|
|
btnMore -> DlgContextMenu(
|
|
|
|
activity,
|
|
|
|
column,
|
|
|
|
status.accountRef,
|
|
|
|
status,
|
|
|
|
notification
|
|
|
|
).show()
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onLongClick(v : View) : Boolean {
|
|
|
|
|
|
|
|
close_window?.dismiss()
|
|
|
|
close_window = null
|
|
|
|
|
|
|
|
val status = this.status ?: return true
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
when(v) {
|
|
|
|
btnConversation -> Action_Toot.conversationOtherInstance(
|
2018-01-17 18:39:16 +01:00
|
|
|
activity, activity.nextPosition(column), status
|
|
|
|
)
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnBoost -> Action_Toot.boostFromAnotherAccount(
|
2018-01-17 18:39:16 +01:00
|
|
|
activity, access_info, status
|
|
|
|
)
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnFavourite -> Action_Toot.favouriteFromAnotherAccount(
|
2018-01-17 18:39:16 +01:00
|
|
|
activity, access_info, status
|
|
|
|
)
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnReply -> Action_Toot.replyFromAnotherAccount(
|
2018-01-17 18:39:16 +01:00
|
|
|
activity, access_info, status
|
|
|
|
)
|
|
|
|
|
2018-01-14 22:47:42 +01:00
|
|
|
btnFollow2 -> Action_Follow.followFromAnotherAccount(
|
2018-01-17 18:39:16 +01:00
|
|
|
activity, activity.nextPosition(column), access_info, status.account
|
|
|
|
)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2018-08-21 15:31:44 +02:00
|
|
|
|
|
|
|
open class _FlexboxLayout(ctx: Context): FlexboxLayout(ctx) {
|
|
|
|
inline fun <T: View> T.lparams(
|
|
|
|
width: Int = android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
|
|
|
height: Int = android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
|
|
|
init: FlexboxLayout.LayoutParams.() -> Unit = {}
|
|
|
|
): T {
|
|
|
|
val layoutParams = FlexboxLayout.LayoutParams(width, height)
|
|
|
|
layoutParams.init()
|
|
|
|
this@lparams.layoutParams = layoutParams
|
|
|
|
return this
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class StatusButtonsViewHolder(
|
|
|
|
activity : ActMain
|
|
|
|
,lpWidth:Int
|
|
|
|
,topMarginDp:Float
|
|
|
|
, @JustifyContent justifyContent : Int = JustifyContent.CENTER
|
|
|
|
) {
|
|
|
|
|
|
|
|
private val buttonHeight = ActMain.boostButtonSize
|
|
|
|
private val marginBetween = (ActMain.boostButtonSize.toFloat() * 0.05f + 0.5f).toInt()
|
|
|
|
|
|
|
|
val paddingH = (buttonHeight.toFloat()/10 +0.5f).toInt()
|
|
|
|
val paddingV = (buttonHeight.toFloat()/10 +0.5f).toInt()
|
|
|
|
val compoundPaddingDp = ActMain.boostButtonSize.toFloat() * -0.085f / activity.resources.displayMetrics.density
|
|
|
|
|
|
|
|
val viewRoot : FlexboxLayout
|
|
|
|
|
|
|
|
lateinit var btnConversation : ImageButton
|
|
|
|
lateinit var btnReply : CountImageButton
|
|
|
|
lateinit var btnBoost : CountImageButton
|
|
|
|
lateinit var btnFavourite : CountImageButton
|
|
|
|
lateinit var llFollow2 : View
|
|
|
|
lateinit var btnFollow2 : ImageButton
|
|
|
|
lateinit var ivFollowedBy2 : ImageView
|
|
|
|
lateinit var btnMore : ImageButton
|
|
|
|
|
|
|
|
|
|
|
|
init {
|
|
|
|
viewRoot = with(activity.UI{}) {
|
|
|
|
|
|
|
|
customView<_FlexboxLayout> {
|
|
|
|
// トップレベルのViewGroupのlparamsはイニシャライザ内部に置くしかないみたい
|
|
|
|
layoutParams = LinearLayout.LayoutParams(lpWidth, wrapContent).apply {
|
|
|
|
topMargin = dip(topMarginDp)
|
|
|
|
}
|
|
|
|
flexWrap = FlexWrap.WRAP
|
|
|
|
this.justifyContent = justifyContent
|
|
|
|
|
|
|
|
btnConversation = imageButton {
|
|
|
|
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
contentDescription = context.getString(R.string.conversation_view)
|
|
|
|
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
imageResource =
|
|
|
|
Styler.getAttributeResourceId(context, R.attr.ic_conversation)
|
|
|
|
}.lparams(buttonHeight, buttonHeight)
|
|
|
|
|
|
|
|
btnReply = customView<CountImageButton> {
|
|
|
|
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
minimumWidth = buttonHeight
|
|
|
|
}.lparams(wrapContent, buttonHeight) {
|
|
|
|
startMargin = marginBetween
|
|
|
|
}
|
|
|
|
|
|
|
|
btnBoost = customView<CountImageButton> {
|
|
|
|
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
minimumWidth = buttonHeight
|
|
|
|
}.lparams(wrapContent, buttonHeight) {
|
|
|
|
startMargin = marginBetween
|
|
|
|
}
|
|
|
|
|
|
|
|
btnFavourite = customView<CountImageButton> {
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
minimumWidth = buttonHeight
|
|
|
|
|
|
|
|
}.lparams(wrapContent, buttonHeight) {
|
|
|
|
startMargin = marginBetween
|
|
|
|
}
|
|
|
|
|
|
|
|
llFollow2 = frameLayout {
|
|
|
|
lparams(buttonHeight, buttonHeight) {
|
|
|
|
startMargin = marginBetween
|
|
|
|
}
|
|
|
|
|
|
|
|
btnFollow2 = imageButton {
|
|
|
|
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
|
|
|
|
contentDescription = context.getString(R.string.follow)
|
|
|
|
|
|
|
|
}.lparams(matchParent, matchParent)
|
|
|
|
|
|
|
|
ivFollowedBy2 = imageView {
|
|
|
|
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
|
|
|
|
importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO
|
|
|
|
}.lparams(matchParent, matchParent)
|
|
|
|
}
|
|
|
|
|
|
|
|
btnMore = imageButton {
|
|
|
|
background = ContextCompat.getDrawable(
|
|
|
|
context,
|
|
|
|
R.drawable.btn_bg_transparent
|
|
|
|
)
|
|
|
|
setPadding(paddingH, paddingV, paddingH, paddingV)
|
|
|
|
scaleType = ImageView.ScaleType.FIT_CENTER
|
|
|
|
|
|
|
|
contentDescription = context.getString(R.string.more)
|
|
|
|
imageResource =
|
|
|
|
Styler.getAttributeResourceId(context, R.attr.btn_more)
|
|
|
|
}.lparams(buttonHeight, buttonHeight) {
|
|
|
|
startMargin = marginBetween
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|