Loading app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt +5 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ class LibrarySiteItemView @JvmOverloads constructor( val overflowView: ImageButton get() = overflow_menu private var iconUrl: String? = null init { LayoutInflater.from(context).inflate(R.layout.library_site_item, this, true) Loading Loading @@ -94,6 +96,9 @@ class LibrarySiteItemView @JvmOverloads constructor( } fun loadFavicon(url: String) { if (iconUrl == url) return iconUrl = url context.components.core.icons.loadIntoView(favicon, url) } Loading app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryAdapter.kt +13 −12 Original line number Diff line number Diff line Loading @@ -6,7 +6,8 @@ package org.mozilla.fenix.tabhistory import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import org.mozilla.fenix.R data class TabHistoryItem( Loading @@ -18,23 +19,23 @@ data class TabHistoryItem( class TabHistoryAdapter( private val interactor: TabHistoryViewInteractor ) : RecyclerView.Adapter<TabHistoryViewHolder>() { var historyList: List<TabHistoryItem> = emptyList() set(value) { field = value notifyDataSetChanged() } ) : ListAdapter<TabHistoryItem, TabHistoryViewHolder>(DiffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TabHistoryViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.history_list_item, parent, false) val view = LayoutInflater.from(parent.context) .inflate(R.layout.history_list_item, parent, false) return TabHistoryViewHolder(view, interactor) } override fun onBindViewHolder(holder: TabHistoryViewHolder, position: Int) { holder.bind(historyList[position]) holder.bind(getItem(position)) } override fun getItemCount(): Int = historyList.size internal object DiffCallback : DiffUtil.ItemCallback<TabHistoryItem>() { override fun areItemsTheSame(oldItem: TabHistoryItem, newItem: TabHistoryItem) = oldItem.url == newItem.url override fun areContentsTheSame(oldItem: TabHistoryItem, newItem: TabHistoryItem) = oldItem == newItem } } app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryView.kt +5 −7 Original line number Diff line number Diff line Loading @@ -24,19 +24,16 @@ interface TabHistoryViewInteractor { } class TabHistoryView( private val container: ViewGroup, container: ViewGroup, private val expandDialog: () -> Unit, interactor: TabHistoryViewInteractor ) : LayoutContainer { override val containerView: View? get() = container val view: View = LayoutInflater.from(container.context) override val containerView: View = LayoutInflater.from(container.context) .inflate(R.layout.component_tabhistory, container, true) private val adapter = TabHistoryAdapter(interactor) private val layoutManager = object : LinearLayoutManager(view.context) { private val layoutManager = object : LinearLayoutManager(containerView.context) { override fun onLayoutCompleted(state: RecyclerView.State?) { super.onLayoutCompleted(state) currentIndex?.let { index -> Loading @@ -60,6 +57,7 @@ class TabHistoryView( init { tabHistoryRecyclerView.adapter = adapter tabHistoryRecyclerView.layoutManager = layoutManager tabHistoryRecyclerView.itemAnimator = null } fun updateState(state: BrowserState) { Loading @@ -73,7 +71,7 @@ class TabHistoryView( isSelected = index == historyState.currentIndex ) } adapter.historyList = items adapter.submitList(items) } } } app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryViewHolder.kt +17 −11 Original line number Diff line number Diff line Loading @@ -7,28 +7,34 @@ package org.mozilla.fenix.tabhistory import android.view.View import androidx.core.text.bold import androidx.core.text.buildSpannedString import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.history_list_item.view.* import kotlinx.android.synthetic.main.history_list_item.* import org.mozilla.fenix.library.LibrarySiteItemView import org.mozilla.fenix.utils.view.ViewHolder class TabHistoryViewHolder( private val view: View, view: View, private val interactor: TabHistoryViewInteractor ) : RecyclerView.ViewHolder(view) { ) : ViewHolder(view) { private lateinit var item: TabHistoryItem init { itemView.setOnClickListener { interactor.goToHistoryItem(item) } } fun bind(item: TabHistoryItem) { view.history_layout.overflowView.isVisible = false view.history_layout.urlView.text = item.url view.history_layout.loadFavicon(item.url) this.item = item view.history_layout.titleView.text = if (item.isSelected) { history_layout.displayAs(LibrarySiteItemView.ItemType.SITE) history_layout.urlView.text = item.url history_layout.loadFavicon(item.url) history_layout.titleView.text = if (item.isSelected) { buildSpannedString { bold { append(item.title) } } } else { item.title } view.setOnClickListener { interactor.goToHistoryItem(item) } } } Loading
app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt +5 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ class LibrarySiteItemView @JvmOverloads constructor( val overflowView: ImageButton get() = overflow_menu private var iconUrl: String? = null init { LayoutInflater.from(context).inflate(R.layout.library_site_item, this, true) Loading Loading @@ -94,6 +96,9 @@ class LibrarySiteItemView @JvmOverloads constructor( } fun loadFavicon(url: String) { if (iconUrl == url) return iconUrl = url context.components.core.icons.loadIntoView(favicon, url) } Loading
app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryAdapter.kt +13 −12 Original line number Diff line number Diff line Loading @@ -6,7 +6,8 @@ package org.mozilla.fenix.tabhistory import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import org.mozilla.fenix.R data class TabHistoryItem( Loading @@ -18,23 +19,23 @@ data class TabHistoryItem( class TabHistoryAdapter( private val interactor: TabHistoryViewInteractor ) : RecyclerView.Adapter<TabHistoryViewHolder>() { var historyList: List<TabHistoryItem> = emptyList() set(value) { field = value notifyDataSetChanged() } ) : ListAdapter<TabHistoryItem, TabHistoryViewHolder>(DiffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TabHistoryViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.history_list_item, parent, false) val view = LayoutInflater.from(parent.context) .inflate(R.layout.history_list_item, parent, false) return TabHistoryViewHolder(view, interactor) } override fun onBindViewHolder(holder: TabHistoryViewHolder, position: Int) { holder.bind(historyList[position]) holder.bind(getItem(position)) } override fun getItemCount(): Int = historyList.size internal object DiffCallback : DiffUtil.ItemCallback<TabHistoryItem>() { override fun areItemsTheSame(oldItem: TabHistoryItem, newItem: TabHistoryItem) = oldItem.url == newItem.url override fun areContentsTheSame(oldItem: TabHistoryItem, newItem: TabHistoryItem) = oldItem == newItem } }
app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryView.kt +5 −7 Original line number Diff line number Diff line Loading @@ -24,19 +24,16 @@ interface TabHistoryViewInteractor { } class TabHistoryView( private val container: ViewGroup, container: ViewGroup, private val expandDialog: () -> Unit, interactor: TabHistoryViewInteractor ) : LayoutContainer { override val containerView: View? get() = container val view: View = LayoutInflater.from(container.context) override val containerView: View = LayoutInflater.from(container.context) .inflate(R.layout.component_tabhistory, container, true) private val adapter = TabHistoryAdapter(interactor) private val layoutManager = object : LinearLayoutManager(view.context) { private val layoutManager = object : LinearLayoutManager(containerView.context) { override fun onLayoutCompleted(state: RecyclerView.State?) { super.onLayoutCompleted(state) currentIndex?.let { index -> Loading @@ -60,6 +57,7 @@ class TabHistoryView( init { tabHistoryRecyclerView.adapter = adapter tabHistoryRecyclerView.layoutManager = layoutManager tabHistoryRecyclerView.itemAnimator = null } fun updateState(state: BrowserState) { Loading @@ -73,7 +71,7 @@ class TabHistoryView( isSelected = index == historyState.currentIndex ) } adapter.historyList = items adapter.submitList(items) } } }
app/src/main/java/org/mozilla/fenix/tabhistory/TabHistoryViewHolder.kt +17 −11 Original line number Diff line number Diff line Loading @@ -7,28 +7,34 @@ package org.mozilla.fenix.tabhistory import android.view.View import androidx.core.text.bold import androidx.core.text.buildSpannedString import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.history_list_item.view.* import kotlinx.android.synthetic.main.history_list_item.* import org.mozilla.fenix.library.LibrarySiteItemView import org.mozilla.fenix.utils.view.ViewHolder class TabHistoryViewHolder( private val view: View, view: View, private val interactor: TabHistoryViewInteractor ) : RecyclerView.ViewHolder(view) { ) : ViewHolder(view) { private lateinit var item: TabHistoryItem init { itemView.setOnClickListener { interactor.goToHistoryItem(item) } } fun bind(item: TabHistoryItem) { view.history_layout.overflowView.isVisible = false view.history_layout.urlView.text = item.url view.history_layout.loadFavicon(item.url) this.item = item view.history_layout.titleView.text = if (item.isSelected) { history_layout.displayAs(LibrarySiteItemView.ItemType.SITE) history_layout.urlView.text = item.url history_layout.loadFavicon(item.url) history_layout.titleView.text = if (item.isSelected) { buildSpannedString { bold { append(item.title) } } } else { item.title } view.setOnClickListener { interactor.goToHistoryItem(item) } } }