From 9ae74b04f7db06c1dc8d899b9a15ba5a4030eb41 Mon Sep 17 00:00:00 2001 From: Tlaster Date: Mon, 18 May 2020 13:04:53 +0800 Subject: [PATCH] Display mastodon account domain --- .../twidere/adapter/AccountDetailsAdapter.kt | 5 ++-- .../twidere/adapter/AccountsSpinnerAdapter.kt | 8 ++++- .../fragment/AccountsDashboardFragment.kt | 30 +++++++++---------- .../twidere/view/holder/AccountViewHolder.kt | 12 ++++++-- .../layout/header_drawer_account_selector.xml | 21 ++----------- 5 files changed, 36 insertions(+), 40 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountDetailsAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountDetailsAdapter.kt index e03f989c8..bfb254672 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountDetailsAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountDetailsAdapter.kt @@ -20,10 +20,10 @@ package org.mariotaku.twidere.adapter import android.content.Context -import androidx.recyclerview.widget.RecyclerViewAccessor import android.view.View import android.view.ViewGroup import android.widget.CompoundButton +import androidx.recyclerview.widget.RecyclerViewAccessor import com.bumptech.glide.RequestManager import org.mariotaku.twidere.R import org.mariotaku.twidere.model.AccountDetails @@ -59,8 +59,9 @@ class AccountDetailsAdapter( override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { val view = super.getView(position, convertView, parent) + val showType = objects.groupBy { it.type }.count().let { it > 1 } val holder = view.tag as? AccountViewHolder ?: run { - val h = AccountViewHolder(this, view) + val h = AccountViewHolder(this, view, showType) view.tag = h return@run h } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountsSpinnerAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountsSpinnerAdapter.kt index 34da4aa19..1124dff7c 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountsSpinnerAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/AccountsSpinnerAdapter.kt @@ -26,6 +26,7 @@ import com.bumptech.glide.RequestManager import kotlinx.android.synthetic.main.list_item_simple_user.view.* import org.mariotaku.ktextension.spannable import org.mariotaku.twidere.R +import org.mariotaku.twidere.annotation.AccountType import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.UserKey @@ -63,7 +64,12 @@ class AccountsSpinnerAdapter( text1?.visibility = View.VISIBLE text1?.spannable = item.user.name text2?.visibility = View.VISIBLE - text2?.spannable = "@${item.user.screen_name}" + val showType = objects.filter { it.type != null }.groupBy { it.type }.count().let { it > 1 } + text2?.spannable = if (item.type == AccountType.MASTODON) { + item.account.name + } else { + "${if (showType) item.type else ""}@${item.user.screen_name}" + } if (icon != null) { if (profileImageEnabled) { icon.visibility = View.VISIBLE diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt index 5de2bb4ef..5d97ab4ed 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt @@ -38,20 +38,20 @@ import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.net.Uri import android.os.Bundle -import com.google.android.material.navigation.NavigationView -import androidx.loader.app.LoaderManager.LoaderCallbacks -import androidx.core.content.ContextCompat -import androidx.loader.content.FixedAsyncTaskLoader -import androidx.loader.content.Loader -import androidx.core.view.MenuItemCompat -import androidx.viewpager.widget.ViewPager -import androidx.appcompat.view.SupportMenuInflater -import androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener import android.view.* import android.view.View.OnClickListener import android.view.animation.DecelerateInterpolator import android.widget.ImageView +import androidx.appcompat.view.SupportMenuInflater +import androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener +import androidx.core.content.ContextCompat +import androidx.core.view.MenuItemCompat import androidx.core.view.isVisible +import androidx.loader.app.LoaderManager.LoaderCallbacks +import androidx.loader.content.FixedAsyncTaskLoader +import androidx.loader.content.Loader +import androidx.viewpager.widget.ViewPager +import com.google.android.material.navigation.NavigationView import kotlinx.android.synthetic.main.header_drawer_account_selector.view.* import org.mariotaku.chameleon.Chameleon import org.mariotaku.kpreferences.get @@ -109,7 +109,6 @@ class AccountsDashboardFragment : BaseFragment(), LoaderCallbacks, private val floatingProfileImageSnapshot by lazy { accountsHeader.floatingProfileImageSnapshot } private val accountProfileImageView by lazy { accountsHeader.profileImage } private val accountProfileNameView by lazy { accountsHeader.name } - private val accountUserTypeView by lazy { accountsHeader.user_type } private val accountProfileScreenNameView by lazy { accountsHeader.screenName } private val accountDashboardMenu by lazy { accountsHeader.accountDashboardMenu } private val profileContainer by lazy { accountsHeader.profileContainer } @@ -550,13 +549,14 @@ class AccountsDashboardFragment : BaseFragment(), LoaderCallbacks, if (context == null || isDetached || (activity?.isFinishing != false)) return val account = accountsAdapter.selectedAccount ?: return accountProfileNameView.spannable = account.user.name - accountsAdapter.accounts?.groupBy { it.type }?.count()?.let { + val showType = accountsAdapter.accounts?.groupBy { it.type }?.count()?.let { it > 1 - }?.let { - accountUserTypeView.isVisible = it + } ?: false + accountProfileScreenNameView.spannable = if (account.type == AccountType.MASTODON) { + account.account.name + } else { + "${if (showType) account.type else ""}@${account.user.screen_name}" } - accountUserTypeView.spannable = account.type - accountProfileScreenNameView.spannable = "@${account.user.screen_name}" requestManager.loadProfileImage(context!!, account, preferences[profileImageStyleKey], accountProfileImageView.cornerRadius, accountProfileImageView.cornerRadiusRatio, ProfileImageSize.REASONABLY_SMALL).placeholder(profileImageSnapshot).into(accountProfileImageView) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/view/holder/AccountViewHolder.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/view/holder/AccountViewHolder.kt index 29d4a8e68..b91943097 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/view/holder/AccountViewHolder.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/view/holder/AccountViewHolder.kt @@ -19,14 +19,15 @@ package org.mariotaku.twidere.view.holder -import androidx.recyclerview.widget.RecyclerView import android.view.View import android.widget.CompoundButton import android.widget.ImageView import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView import org.mariotaku.ktextension.spannable import org.mariotaku.twidere.R import org.mariotaku.twidere.adapter.AccountDetailsAdapter +import org.mariotaku.twidere.annotation.AccountType import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.util.AccountUtils @@ -35,7 +36,8 @@ import org.mariotaku.twidere.view.iface.IColorLabelView class AccountViewHolder( val adapter: AccountDetailsAdapter, - itemView: View + itemView: View, + val showType: Boolean ) : RecyclerView.ViewHolder(itemView) { private val content = itemView as IColorLabelView @@ -61,7 +63,11 @@ class AccountViewHolder( fun display(details: AccountDetails) { name.spannable = details.user.name - screenName.spannable = "@${details.user.screen_name}" + screenName.spannable = if (details.type == AccountType.MASTODON) { + details.account.name + } else { + "${if (showType) details.type else ""}@${details.user.screen_name}" + } setAccountColor(details.color) profileImage.visibility = View.VISIBLE adapter.requestManager.loadProfileImage(adapter.context, details, adapter.profileImageStyle, diff --git a/twidere/src/main/res/layout/header_drawer_account_selector.xml b/twidere/src/main/res/layout/header_drawer_account_selector.xml index 5cac902f2..4fc3aeeb8 100644 --- a/twidere/src/main/res/layout/header_drawer_account_selector.xml +++ b/twidere/src/main/res/layout/header_drawer_account_selector.xml @@ -125,7 +125,7 @@ android:gravity="center_vertical" android:orientation="horizontal"> - - - - +