Add close icon to tabs in Tabs account preferences page (#1588)
* Add close icon to tabs in Tabs account preferences page * Improve code according to code review
This commit is contained in:
parent
bac3003182
commit
54b3d1f8cd
8 changed files with 62 additions and 21 deletions
|
@ -1289,7 +1289,7 @@ public final class ComposeActivity
|
|||
private void enableButton(ImageButton button, boolean clickable, boolean colorActive) {
|
||||
button.setEnabled(clickable);
|
||||
ThemeUtils.setDrawableTint(this, button.getDrawable(),
|
||||
colorActive ? android.R.attr.textColorTertiary : R.attr.compose_media_button_disabled_tint);
|
||||
colorActive ? android.R.attr.textColorTertiary : R.attr.image_button_disabled_tint);
|
||||
}
|
||||
|
||||
private void enablePollButton(boolean enable) {
|
||||
|
@ -1298,7 +1298,7 @@ public final class ComposeActivity
|
|||
if(enable) {
|
||||
textColor = ThemeUtils.getColor(this, android.R.attr.textColorTertiary);
|
||||
} else {
|
||||
textColor = ThemeUtils.getColor(this, R.attr.compose_media_button_disabled_tint);
|
||||
textColor = ThemeUtils.getColor(this, R.attr.image_button_disabled_tint);
|
||||
}
|
||||
actionAddPoll.setTextColor(textColor);
|
||||
actionAddPoll.getCompoundDrawablesRelative()[0].setColorFilter(textColor, PorterDuff.Mode.SRC_IN);
|
||||
|
|
|
@ -41,6 +41,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.schedulers.Schedulers
|
||||
import kotlinx.android.synthetic.main.activity_tab_preference.*
|
||||
import kotlinx.android.synthetic.main.toolbar_basic.*
|
||||
import kotlinx.android.synthetic.main.item_tab_preference.view.removeButton
|
||||
import java.util.regex.Pattern
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -76,7 +77,7 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
|
|||
}
|
||||
|
||||
currentTabs = (accountManager.activeAccount?.tabPreferences ?: emptyList()).toMutableList()
|
||||
currentTabsAdapter = TabAdapter(currentTabs, false, this)
|
||||
currentTabsAdapter = TabAdapter(currentTabs, false, this, currentTabs.size <= MIN_TAB_COUNT)
|
||||
currentTabsRecyclerView.adapter = currentTabsAdapter
|
||||
currentTabsRecyclerView.layoutManager = LinearLayoutManager(this)
|
||||
currentTabsRecyclerView.addItemDecoration(DividerItemDecoration(this, LinearLayoutManager.VERTICAL))
|
||||
|
@ -109,10 +110,7 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
|
|||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
currentTabs.removeAt(viewHolder.adapterPosition)
|
||||
currentTabsAdapter.notifyItemRemoved(viewHolder.adapterPosition)
|
||||
updateAvailableTabs()
|
||||
saveTabs()
|
||||
onTabRemoved(viewHolder.adapterPosition)
|
||||
}
|
||||
|
||||
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
|
||||
|
@ -168,6 +166,13 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
|
|||
saveTabs()
|
||||
}
|
||||
|
||||
override fun onTabRemoved(position: Int) {
|
||||
currentTabs.removeAt(position)
|
||||
currentTabsAdapter.notifyItemRemoved(position)
|
||||
updateAvailableTabs()
|
||||
saveTabs()
|
||||
}
|
||||
|
||||
override fun onActionChipClicked(tab: TabData) {
|
||||
showEditHashtagDialog(tab)
|
||||
}
|
||||
|
@ -273,7 +278,7 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
|
|||
addTabAdapter.updateData(addableTabs)
|
||||
|
||||
maxTabsInfo.visible(addableTabs.size == 0 || currentTabs.size >= MAX_TAB_COUNT)
|
||||
|
||||
currentTabsAdapter.setRemoveButtonVisible(currentTabs.size > MIN_TAB_COUNT);
|
||||
}
|
||||
|
||||
override fun onStartDelete(viewHolder: RecyclerView.ViewHolder) {
|
||||
|
|
|
@ -32,14 +32,16 @@ import kotlinx.android.synthetic.main.item_tab_preference.view.*
|
|||
|
||||
interface ItemInteractionListener {
|
||||
fun onTabAdded(tab: TabData)
|
||||
fun onTabRemoved(position: Int)
|
||||
fun onStartDelete(viewHolder: RecyclerView.ViewHolder)
|
||||
fun onStartDrag(viewHolder: RecyclerView.ViewHolder)
|
||||
fun onActionChipClicked(tab: TabData)
|
||||
}
|
||||
|
||||
class TabAdapter(private var data: List<TabData>,
|
||||
private val small: Boolean = false,
|
||||
private val listener: ItemInteractionListener? = null) : RecyclerView.Adapter<TabAdapter.ViewHolder>() {
|
||||
private val small: Boolean,
|
||||
private val listener: ItemInteractionListener,
|
||||
private var removeButtonEnabled: Boolean = false) : RecyclerView.Adapter<TabAdapter.ViewHolder>() {
|
||||
|
||||
fun updateData(newData: List<TabData>) {
|
||||
this.data = newData
|
||||
|
@ -67,17 +69,28 @@ class TabAdapter(private var data: List<TabData>,
|
|||
holder.itemView.textView.setCompoundDrawablesRelativeWithIntrinsicBounds(iconDrawable, null, null, null)
|
||||
if (small) {
|
||||
holder.itemView.textView.setOnClickListener {
|
||||
listener?.onTabAdded(data[position])
|
||||
listener.onTabAdded(data[position])
|
||||
}
|
||||
}
|
||||
holder.itemView.imageView?.setOnTouchListener { _, event ->
|
||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||
listener?.onStartDrag(holder)
|
||||
listener.onStartDrag(holder)
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
holder.itemView.removeButton?.setOnClickListener {
|
||||
listener.onTabRemoved(holder.adapterPosition)
|
||||
}
|
||||
if (holder.itemView.removeButton != null) {
|
||||
holder.itemView.removeButton.isEnabled = removeButtonEnabled
|
||||
ThemeUtils.setDrawableTint(
|
||||
holder.itemView.context,
|
||||
holder.itemView.removeButton.drawable,
|
||||
(if (removeButtonEnabled) android.R.attr.textColorTertiary else R.attr.image_button_disabled_tint)
|
||||
)
|
||||
}
|
||||
|
||||
if (!small) {
|
||||
|
||||
|
@ -89,7 +102,7 @@ class TabAdapter(private var data: List<TabData>,
|
|||
|
||||
holder.itemView.actionChip.chipIcon = context.getDrawable(R.drawable.ic_edit_chip)
|
||||
holder.itemView.actionChip.setOnClickListener {
|
||||
listener?.onActionChipClicked(data[position])
|
||||
listener.onActionChipClicked(data[position])
|
||||
}
|
||||
|
||||
} else {
|
||||
|
@ -102,5 +115,12 @@ class TabAdapter(private var data: List<TabData>,
|
|||
return data.size
|
||||
}
|
||||
|
||||
fun setRemoveButtonVisible(enabled: Boolean) {
|
||||
if (removeButtonEnabled != enabled) {
|
||||
removeButtonEnabled = enabled
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue