diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt index f04876edc28516075b85c29924386a6eb0fcf605..917a6cc1389f50754768f30c3bcbae1290b3a31f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt @@ -20,6 +20,8 @@ import de.kuschku.quasseldroid.util.helper.getVectorDrawableCompat import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.tint import de.kuschku.quasseldroid.util.helper.visibleIf +import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod +import de.kuschku.quasseldroid.util.ui.LinkLongClickMenuHelper import org.threeten.bp.ZoneId import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.format.FormatStyle @@ -33,6 +35,12 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl newItem: CoreInfo.ConnectedClientData) = oldItem == newItem } ) { + private val movementMethod = BetterLinkMovementMethod.newInstance() + + init { + movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper()) + } + private var disconnectListener: ((Int) -> Unit)? = null fun setDisconnectListener(listener: ((Int) -> Unit)?) { this.disconnectListener = listener @@ -45,7 +53,8 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ClientViewHolder( LayoutInflater.from(parent.context).inflate(R.layout.widget_client, parent, false), dateTimeFormatter, - ::disconnect + ::disconnect, + movementMethod ) private val dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) @@ -56,7 +65,8 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl class ClientViewHolder( itemView: View, private val dateTimeFormatter: DateTimeFormatter, - private val disconnectListener: (Int) -> Unit + private val disconnectListener: (Int) -> Unit, + movementMethod: BetterLinkMovementMethod ) : RecyclerView.ViewHolder(itemView) { @BindView(R.id.ip) @@ -84,6 +94,7 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl init { ButterKnife.bind(this, itemView) + version.movementMethod = movementMethod disconnect.setOnClickListener { id?.let(disconnectListener::invoke) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt index 63bd080f668c965605c7a79ba88f8a5bdac6ae4e..0f1e01b0b321573034dadcd29d5af8b8682301c8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt @@ -41,6 +41,8 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeature import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures import de.kuschku.quasseldroid.util.service.ServiceBoundFragment +import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod +import de.kuschku.quasseldroid.util.ui.LinkLongClickMenuHelper import org.threeten.bp.ZoneId import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.format.FormatStyle @@ -76,6 +78,12 @@ class CoreInfoFragment : ServiceBoundFragment() { private val dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) + private val movementMethod = BetterLinkMovementMethod.newInstance() + + init { + movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper()) + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_info_core, container, false) @@ -106,6 +114,8 @@ class CoreInfoFragment : ServiceBoundFragment() { .readOnly(true) .show() } + version.movementMethod = movementMethod + versionDate.movementMethod = movementMethod val secure = requireContext().getVectorDrawableCompat(R.drawable.ic_lock)?.mutate() val partiallySecure = requireContext().getVectorDrawableCompat(R.drawable.ic_lock)?.mutate()