From 49782e49b44821619b0e15dd2d6097ba3a07d765 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Sun, 29 Mar 2020 12:19:57 +0200 Subject: [PATCH 01/15] #1971 convert HistoryAdapter to kotlin --- .../core/history/HistoryAdapter.java | 133 ---------------- .../core/history/HistoryAdapter.kt | 148 ++++++++++++++++++ 2 files changed, 148 insertions(+), 133 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.java create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.java b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.java deleted file mode 100644 index f87476575..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.kiwix.kiwixmobile.core.history; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import butterknife.ButterKnife; -import java.util.List; -import org.kiwix.kiwixmobile.core.R; -import org.kiwix.kiwixmobile.core.R2; -import org.kiwix.kiwixmobile.core.extensions.ImageViewExtensionsKt; -import org.threeten.bp.LocalDate; -import org.threeten.bp.format.DateTimeFormatter; - -class HistoryAdapter extends RecyclerView.Adapter { - private static final int TYPE_ITEM = 1; - private final List historyList; - private final OnItemClickListener itemClickListener; - private final List deleteList; - - HistoryAdapter(List historyList, List deleteList, - OnItemClickListener itemClickListener) { - this.historyList = historyList; - this.deleteList = deleteList; - this.itemClickListener = itemClickListener; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - if (viewType == TYPE_ITEM) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.item_bookmark_history, parent, false); - return new Item(view); - } else { - View view = - LayoutInflater.from(parent.getContext()).inflate(R.layout.header_date, parent, false); - return new Category(view); - } - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof Item) { - HistoryListItem.HistoryItem history = (HistoryListItem.HistoryItem) historyList.get(position); - Item item = (Item) holder; - item.title.setText(history.getHistoryTitle()); - if (deleteList.contains(history)) { - item.favicon.setImageDrawable(ContextCompat.getDrawable(item.favicon.getContext(), - R.drawable.ic_check_circle_blue_24dp)); - } else { - ImageViewExtensionsKt.setBitmapFromString(item.favicon, history.getFavicon()); - } - item.itemView.setOnClickListener(v -> itemClickListener.onItemClick(item.favicon, history)); - item.itemView.setOnLongClickListener(v -> - itemClickListener.onItemLongClick(item.favicon, history)); - } else { - String date = ((HistoryListItem.DateItem) historyList.get(position)).getDateString(); - String todaysDate, yesterdayDate; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMM yyyy"); - todaysDate = LocalDate.now().format(formatter); - yesterdayDate = LocalDate.now().minusDays(1).format(formatter); - if (todaysDate.contentEquals(date)) { - ((Category) holder).date.setText(R.string.time_today); - } else if (yesterdayDate.contentEquals(date)) { - ((Category) holder).date.setText(R.string.time_yesterday); - } else { - ((Category) holder).date.setText(date); - } - } - } - - @Override - public int getItemViewType(int position) { - return historyList.get(position) instanceof HistoryListItem.DateItem ? 0 : TYPE_ITEM; - } - - @Override - public int getItemCount() { - return historyList.size(); - } - - interface OnItemClickListener { - void onItemClick(ImageView favicon, HistoryListItem.HistoryItem history); - - boolean onItemLongClick(ImageView favicon, HistoryListItem.HistoryItem history); - } - - class Item extends RecyclerView.ViewHolder { - @BindView(R2.id.favicon) - ImageView favicon; - @BindView(R2.id.title) - TextView title; - - Item(View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - } - } - - class Category extends RecyclerView.ViewHolder { - @BindView(R2.id.header_date) - TextView date; - - Category(View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - } - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt new file mode 100644 index 000000000..5fb020137 --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -0,0 +1,148 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package org.kiwix.kiwixmobile.core.history + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView.Adapter +import androidx.recyclerview.widget.RecyclerView.ViewHolder +import butterknife.BindView +import butterknife.ButterKnife +import org.kiwix.kiwixmobile.core.R.drawable +import org.kiwix.kiwixmobile.core.R.layout +import org.kiwix.kiwixmobile.core.R.string +import org.kiwix.kiwixmobile.core.R2.id +import org.kiwix.kiwixmobile.core.extensions.setBitmapFromString +import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem +import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem +import org.threeten.bp.LocalDate +import org.threeten.bp.format.DateTimeFormatter + +internal class HistoryAdapter( + val historyList: List, + val deleteList: List, + val itemClickListener: OnItemClickListener +) : Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + return if (viewType == TYPE_ITEM) { + Item(inflateLayoutFromParent(parent, layout.item_bookmark_history)) + } else { + Category(inflateLayoutFromParent(parent, layout.header_date)) + } + } + + private fun inflateLayoutFromParent(parent: ViewGroup, layoutId: Int) = + LayoutInflater.from(parent.context) + .inflate(layoutId, parent, false) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + if (holder is Item) { + val history = historyList[position] as HistoryItem + setItemDataWithHelpOfHistoryItem(holder, history) + } else if (holder is Category) { + val date = (historyList[position] as DateItem).dateString + setCategoryDataWithHelpOfDate(date, holder) + } + } + + private fun setCategoryDataWithHelpOfDate(date: String, holder: Category) { + val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") + val todaysDate = LocalDate.now().format(formatter) + val yesterdayDate = LocalDate.now().minusDays(1).format(formatter) + + if (todaysDate != null && todaysDate.contentEquals(date)) { + holder.date.setText( + string.time_today + ) + } else if (yesterdayDate != null && yesterdayDate.contentEquals(date)) { + holder.date.setText( + string.time_yesterday + ) + } else { + holder.date.text = date + } + } + + private fun setItemDataWithHelpOfHistoryItem(holder: Item, history: HistoryItem) { + holder.title.text = history.historyTitle + if (deleteList.contains(history)) { + holder.favicon.setImageDrawable( + ContextCompat.getDrawable( + holder.favicon.context, + drawable.ic_check_circle_blue_24dp + ) + ) + } else { + holder.favicon.setBitmapFromString(history.favicon) + } + holder.itemView.setOnClickListener { + itemClickListener.onItemClick( + holder.favicon, history + ) + } + holder.itemView.setOnLongClickListener { + itemClickListener.onItemLongClick( + holder.favicon, history + ) + } + } + + override fun getItemViewType(position: Int): Int { + return if (historyList[position] is DateItem) 0 else TYPE_ITEM + } + + override fun getItemCount(): Int { + return historyList.size + } + + internal interface OnItemClickListener { + fun onItemClick( + favicon: ImageView, + history: HistoryItem? + ) + + fun onItemLongClick( + favicon: ImageView, + history: HistoryItem? + ): Boolean + } + + internal inner class Item(itemView: View) : ViewHolder(itemView) { + @BindView(id.favicon) lateinit var favicon: ImageView + @BindView(id.title) lateinit var title: TextView + init { + ButterKnife.bind(this, itemView) + } + } + + internal inner class Category(itemView: View) : ViewHolder(itemView) { + @BindView(id.header_date) lateinit var date: TextView + init { + ButterKnife.bind(this, itemView) + } + } + + companion object { + private const val TYPE_ITEM = 1 + } +} From 5cd7f39c7cc31676b53d3e7d212cc15f76efffe1 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Sun, 29 Mar 2020 12:22:47 +0200 Subject: [PATCH 02/15] #1971 changed historyItem arguments to not be nullable --- .../java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index 5fb020137..e58b461ab 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -118,12 +118,12 @@ internal class HistoryAdapter( internal interface OnItemClickListener { fun onItemClick( favicon: ImageView, - history: HistoryItem? + history: HistoryItem ) fun onItemLongClick( favicon: ImageView, - history: HistoryItem? + history: HistoryItem ): Boolean } From 552c9e1a5a8a87a6e7b4f15f2db3f85a145ce1ce Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Sun, 29 Mar 2020 15:26:07 +0200 Subject: [PATCH 03/15] #1971 fixes static analysis complaint --- .../org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index e58b461ab..99d20549c 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import butterknife.BindView import butterknife.ButterKnife +import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R.drawable import org.kiwix.kiwixmobile.core.R.layout import org.kiwix.kiwixmobile.core.R.string @@ -72,11 +73,11 @@ internal class HistoryAdapter( if (todaysDate != null && todaysDate.contentEquals(date)) { holder.date.setText( - string.time_today + R.string.time_today ) } else if (yesterdayDate != null && yesterdayDate.contentEquals(date)) { holder.date.setText( - string.time_yesterday + R.string.time_yesterday ) } else { holder.date.text = date From 3f745dab0a57051e696314416631d266a2bb8675 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Tue, 31 Mar 2020 14:43:09 +0200 Subject: [PATCH 04/15] #1971 some fixes to reviews --- .../core/history/HistoryAdapter.kt | 48 ++++++++----------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index 99d20549c..d4891ae93 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.core.history -import android.view.LayoutInflater +import android.content.Context import android.view.View import android.view.ViewGroup import android.widget.ImageView @@ -28,15 +28,14 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder import butterknife.BindView import butterknife.ButterKnife import org.kiwix.kiwixmobile.core.R -import org.kiwix.kiwixmobile.core.R.drawable import org.kiwix.kiwixmobile.core.R.layout -import org.kiwix.kiwixmobile.core.R.string import org.kiwix.kiwixmobile.core.R2.id -import org.kiwix.kiwixmobile.core.extensions.setBitmapFromString +import org.kiwix.kiwixmobile.core.downloader.model.Base64String +import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.inflate +import org.kiwix.kiwixmobile.core.extensions.setBitmap import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem import org.threeten.bp.LocalDate -import org.threeten.bp.format.DateTimeFormatter internal class HistoryAdapter( val historyList: List, @@ -46,16 +45,12 @@ internal class HistoryAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return if (viewType == TYPE_ITEM) { - Item(inflateLayoutFromParent(parent, layout.item_bookmark_history)) + Item(parent.inflate(layout.item_bookmark_history, false)) } else { - Category(inflateLayoutFromParent(parent, layout.header_date)) + Category(parent.inflate(layout.header_date, false)) } } - private fun inflateLayoutFromParent(parent: ViewGroup, layoutId: Int) = - LayoutInflater.from(parent.context) - .inflate(layoutId, parent, false) - override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (holder is Item) { val history = historyList[position] as HistoryItem @@ -67,15 +62,15 @@ internal class HistoryAdapter( } private fun setCategoryDataWithHelpOfDate(date: String, holder: Category) { - val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") - val todaysDate = LocalDate.now().format(formatter) - val yesterdayDate = LocalDate.now().minusDays(1).format(formatter) + val todaysDate = LocalDate.now() + val yesterdayDate = LocalDate.now().minusDays(1) + val givenDate = LocalDate.parse(date) - if (todaysDate != null && todaysDate.contentEquals(date)) { + if (todaysDate?.equals(givenDate) == true) { holder.date.setText( R.string.time_today ) - } else if (yesterdayDate != null && yesterdayDate.contentEquals(date)) { + } else if (yesterdayDate?.equals(givenDate) == true) { holder.date.setText( R.string.time_yesterday ) @@ -84,17 +79,19 @@ internal class HistoryAdapter( } } + fun ImageView.setImageDrawableCompat(context: Context, id: Int) { + setImageDrawable(ContextCompat.getDrawable(context, id)) + } + private fun setItemDataWithHelpOfHistoryItem(holder: Item, history: HistoryItem) { holder.title.text = history.historyTitle if (deleteList.contains(history)) { - holder.favicon.setImageDrawable( - ContextCompat.getDrawable( + holder.favicon.setImageDrawableCompat( holder.favicon.context, - drawable.ic_check_circle_blue_24dp - ) + R.drawable.ic_check_circle_blue_24dp ) } else { - holder.favicon.setBitmapFromString(history.favicon) + holder.favicon.setBitmap(Base64String(history.favicon)) } holder.itemView.setOnClickListener { itemClickListener.onItemClick( @@ -108,13 +105,10 @@ internal class HistoryAdapter( } } - override fun getItemViewType(position: Int): Int { - return if (historyList[position] is DateItem) 0 else TYPE_ITEM - } + override fun getItemViewType(position: Int): Int = + if (historyList[position] is DateItem) 0 else TYPE_ITEM - override fun getItemCount(): Int { - return historyList.size - } + override fun getItemCount(): Int = historyList.size internal interface OnItemClickListener { fun onItemClick( From 415ab7e3e2ed5b0edc72c1092972ad8dc972c4c9 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Tue, 31 Mar 2020 14:56:49 +0200 Subject: [PATCH 05/15] #1971 Fixed date parsing error --- .../java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index d4891ae93..d630faafe 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -36,6 +36,7 @@ import org.kiwix.kiwixmobile.core.extensions.setBitmap import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem import org.threeten.bp.LocalDate +import org.threeten.bp.format.DateTimeFormatter internal class HistoryAdapter( val historyList: List, @@ -64,7 +65,8 @@ internal class HistoryAdapter( private fun setCategoryDataWithHelpOfDate(date: String, holder: Category) { val todaysDate = LocalDate.now() val yesterdayDate = LocalDate.now().minusDays(1) - val givenDate = LocalDate.parse(date) + val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") + val givenDate = LocalDate.parse(date, formatter) if (todaysDate?.equals(givenDate) == true) { holder.date.setText( From 86f774aaf0d57fa9d7fbd0389ddcd6ae0f2f3a96 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Tue, 31 Mar 2020 17:21:20 +0200 Subject: [PATCH 06/15] #1971 Added setImageDrawableCompat to ImageViewExtensions --- .../kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt index 5b73454ba..d66968de3 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt @@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile.core.extensions import android.content.res.ColorStateList import android.widget.ImageView import androidx.annotation.ColorInt +import androidx.core.content.ContextCompat import androidx.core.widget.ImageViewCompat import org.kiwix.kiwixmobile.core.downloader.model.Base64String @@ -35,6 +36,10 @@ fun ImageView.setBitmapFromString(string: String?) { setBitmap(Base64String(string)) } +fun ImageView.setImageDrawableCompat(id: Int) { + setImageDrawable(ContextCompat.getDrawable(context, id)) +} + fun ImageView.tint(@ColorInt colorId: Int) { ImageViewCompat.setImageTintList(this, ColorStateList.valueOf(colorId)) } From 5ffef30f6deb13a65cece65dc5991452c7434aef Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Tue, 31 Mar 2020 17:23:37 +0200 Subject: [PATCH 07/15] #1971 additional requested fixes to HistoryAdapter --- .../core/history/HistoryAdapter.kt | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index d630faafe..ea1bede7b 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -17,22 +17,23 @@ */ package org.kiwix.kiwixmobile.core.history -import android.content.Context import android.view.View import android.view.ViewGroup import android.widget.ImageView -import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView.Adapter import androidx.recyclerview.widget.RecyclerView.ViewHolder -import butterknife.BindView -import butterknife.ButterKnife +import kotlinx.android.synthetic.main.header_date.header_date +import kotlinx.android.synthetic.main.header_date.view.header_date +import kotlinx.android.synthetic.main.item_bookmark_history.favicon +import kotlinx.android.synthetic.main.item_bookmark_history.title +import kotlinx.android.synthetic.main.item_bookmark_history.view.favicon +import kotlinx.android.synthetic.main.item_bookmark_history.view.title import org.kiwix.kiwixmobile.core.R -import org.kiwix.kiwixmobile.core.R.layout -import org.kiwix.kiwixmobile.core.R2.id +import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder import org.kiwix.kiwixmobile.core.downloader.model.Base64String import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.inflate import org.kiwix.kiwixmobile.core.extensions.setBitmap +import org.kiwix.kiwixmobile.core.extensions.setImageDrawableCompat import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem import org.threeten.bp.LocalDate @@ -46,9 +47,9 @@ internal class HistoryAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return if (viewType == TYPE_ITEM) { - Item(parent.inflate(layout.item_bookmark_history, false)) + Item(parent.inflate(R.layout.item_bookmark_history, false)) } else { - Category(parent.inflate(layout.header_date, false)) + Category(parent.inflate(R.layout.header_date, false)) } } @@ -68,28 +69,27 @@ internal class HistoryAdapter( val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") val givenDate = LocalDate.parse(date, formatter) - if (todaysDate?.equals(givenDate) == true) { - holder.date.setText( - R.string.time_today - ) - } else if (yesterdayDate?.equals(givenDate) == true) { - holder.date.setText( - R.string.time_yesterday - ) - } else { - holder.date.text = date + when { + todaysDate == givenDate -> { + holder.header_date.setText( + R.string.time_today + ) + } + yesterdayDate == givenDate -> { + holder.header_date.setText( + R.string.time_yesterday + ) + } + else -> { + holder.header_date.text = date + } } } - fun ImageView.setImageDrawableCompat(context: Context, id: Int) { - setImageDrawable(ContextCompat.getDrawable(context, id)) - } - private fun setItemDataWithHelpOfHistoryItem(holder: Item, history: HistoryItem) { holder.title.text = history.historyTitle if (deleteList.contains(history)) { holder.favicon.setImageDrawableCompat( - holder.favicon.context, R.drawable.ic_check_circle_blue_24dp ) } else { @@ -124,18 +124,16 @@ internal class HistoryAdapter( ): Boolean } - internal inner class Item(itemView: View) : ViewHolder(itemView) { - @BindView(id.favicon) lateinit var favicon: ImageView - @BindView(id.title) lateinit var title: TextView - init { - ButterKnife.bind(this, itemView) + class Item(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: View) { + favicon.setImageDrawable(item.favicon.drawable) + title.text = item.title.text } } - internal inner class Category(itemView: View) : ViewHolder(itemView) { - @BindView(id.header_date) lateinit var date: TextView - init { - ButterKnife.bind(this, itemView) + class Category(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: View) { + header_date.text = item.header_date.text } } From 0b75c5af0bc22feedef896f3c2e812cdbfd07b1b Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 12:09:44 +0200 Subject: [PATCH 08/15] Added @DrawableRes annotation to setImageDrawableCompat --- .../kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt index d66968de3..cf7c7946d 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt @@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile.core.extensions import android.content.res.ColorStateList import android.widget.ImageView import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import androidx.core.widget.ImageViewCompat import org.kiwix.kiwixmobile.core.downloader.model.Base64String @@ -36,7 +37,8 @@ fun ImageView.setBitmapFromString(string: String?) { setBitmap(Base64String(string)) } -fun ImageView.setImageDrawableCompat(id: Int) { + +fun ImageView.setImageDrawableCompat(@DrawableRes id: Int) { setImageDrawable(ContextCompat.getDrawable(context, id)) } From 49110188e1130ea8d35538c698c43758f95e2043 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 12:31:07 +0200 Subject: [PATCH 09/15] #1971 static fix. --- .../core/history/HistoryAdapter.kt | 110 ++++++++---------- 1 file changed, 48 insertions(+), 62 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index ea1bede7b..afa51dd4f 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -23,11 +23,8 @@ import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView.Adapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import kotlinx.android.synthetic.main.header_date.header_date -import kotlinx.android.synthetic.main.header_date.view.header_date import kotlinx.android.synthetic.main.item_bookmark_history.favicon import kotlinx.android.synthetic.main.item_bookmark_history.title -import kotlinx.android.synthetic.main.item_bookmark_history.view.favicon -import kotlinx.android.synthetic.main.item_bookmark_history.view.title import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder import org.kiwix.kiwixmobile.core.downloader.model.Base64String @@ -45,65 +42,19 @@ internal class HistoryAdapter( val itemClickListener: OnItemClickListener ) : Adapter() { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return if (viewType == TYPE_ITEM) { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = + if (viewType == TYPE_ITEM) Item(parent.inflate(R.layout.item_bookmark_history, false)) - } else { + else Category(parent.inflate(R.layout.header_date, false)) - } - } override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (holder is Item) { - val history = historyList[position] as HistoryItem - setItemDataWithHelpOfHistoryItem(holder, history) + val historyItem = historyList[position] as HistoryItem + holder.bind(historyItem) } else if (holder is Category) { val date = (historyList[position] as DateItem).dateString - setCategoryDataWithHelpOfDate(date, holder) - } - } - - private fun setCategoryDataWithHelpOfDate(date: String, holder: Category) { - val todaysDate = LocalDate.now() - val yesterdayDate = LocalDate.now().minusDays(1) - val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") - val givenDate = LocalDate.parse(date, formatter) - - when { - todaysDate == givenDate -> { - holder.header_date.setText( - R.string.time_today - ) - } - yesterdayDate == givenDate -> { - holder.header_date.setText( - R.string.time_yesterday - ) - } - else -> { - holder.header_date.text = date - } - } - } - - private fun setItemDataWithHelpOfHistoryItem(holder: Item, history: HistoryItem) { - holder.title.text = history.historyTitle - if (deleteList.contains(history)) { - holder.favicon.setImageDrawableCompat( - R.drawable.ic_check_circle_blue_24dp - ) - } else { - holder.favicon.setBitmap(Base64String(history.favicon)) - } - holder.itemView.setOnClickListener { - itemClickListener.onItemClick( - holder.favicon, history - ) - } - holder.itemView.setOnLongClickListener { - itemClickListener.onItemLongClick( - holder.favicon, history - ) + holder.bind(date) } } @@ -124,16 +75,51 @@ internal class HistoryAdapter( ): Boolean } - class Item(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: View) { - favicon.setImageDrawable(item.favicon.drawable) - title.text = item.title.text + inner class Item(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: HistoryItem) { + title.text = item.historyTitle + if (deleteList.contains(item)) { + favicon.setImageDrawableCompat( + R.drawable.ic_check_circle_blue_24dp + ) + } else { + favicon.setBitmap(Base64String(item.favicon)) + } + itemView.setOnClickListener { + itemClickListener.onItemClick( + favicon, item + ) + } + itemView.setOnLongClickListener { + itemClickListener.onItemLongClick( + favicon, item + ) + } } } - class Category(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: View) { - header_date.text = item.header_date.text + inner class Category(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: String) { + val todaysDate = LocalDate.now() + val yesterdayDate = LocalDate.now().minusDays(1) + val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") + val givenDate = LocalDate.parse(item, formatter) + + when { + todaysDate == givenDate -> { + header_date.setText( + R.string.time_today + ) + } + yesterdayDate == givenDate -> { + header_date.setText( + R.string.time_yesterday + ) + } + else -> { + header_date.text = item + } + } } } From 8d3a1b43a9df400f665000db345748a8a3e6502e Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 13:45:01 +0200 Subject: [PATCH 10/15] #1971 moved view holders to separate files and fixed style issues. --- .../core/extensions/ImageViewExtensions.kt | 1 - .../core/history/HistoryAdapter.kt | 84 +++---------------- .../history/HistoryCategoryItemViewHolder.kt | 23 +++++ .../core/history/HistoryItemViewHolder.kt | 29 +++++++ 4 files changed, 64 insertions(+), 73 deletions(-) create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryItemViewHolder.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt index cf7c7946d..7b5fbd00d 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ImageViewExtensions.kt @@ -37,7 +37,6 @@ fun ImageView.setBitmapFromString(string: String?) { setBitmap(Base64String(string)) } - fun ImageView.setImageDrawableCompat(@DrawableRes id: Int) { setImageDrawable(ContextCompat.getDrawable(context, id)) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index afa51dd4f..2173746a8 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -17,26 +17,16 @@ */ package org.kiwix.kiwixmobile.core.history -import android.view.View import android.view.ViewGroup import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView.Adapter import androidx.recyclerview.widget.RecyclerView.ViewHolder -import kotlinx.android.synthetic.main.header_date.header_date -import kotlinx.android.synthetic.main.item_bookmark_history.favicon -import kotlinx.android.synthetic.main.item_bookmark_history.title import org.kiwix.kiwixmobile.core.R -import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder -import org.kiwix.kiwixmobile.core.downloader.model.Base64String import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.inflate -import org.kiwix.kiwixmobile.core.extensions.setBitmap -import org.kiwix.kiwixmobile.core.extensions.setImageDrawableCompat import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem -import org.threeten.bp.LocalDate -import org.threeten.bp.format.DateTimeFormatter -internal class HistoryAdapter( +class HistoryAdapter( val historyList: List, val deleteList: List, val itemClickListener: OnItemClickListener @@ -44,15 +34,19 @@ internal class HistoryAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = if (viewType == TYPE_ITEM) - Item(parent.inflate(R.layout.item_bookmark_history, false)) + HistoryItemViewHolder( + parent.inflate(R.layout.item_bookmark_history, false), + deleteList, + itemClickListener + ) else - Category(parent.inflate(R.layout.header_date, false)) + HistoryCategoryItemViewHolder(parent.inflate(R.layout.header_date, false)) override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (holder is Item) { + if (holder is HistoryItemViewHolder) { val historyItem = historyList[position] as HistoryItem holder.bind(historyItem) - } else if (holder is Category) { + } else if (holder is HistoryCategoryItemViewHolder) { val date = (historyList[position] as DateItem).dateString holder.bind(date) } @@ -63,64 +57,10 @@ internal class HistoryAdapter( override fun getItemCount(): Int = historyList.size - internal interface OnItemClickListener { - fun onItemClick( - favicon: ImageView, - history: HistoryItem - ) + interface OnItemClickListener { + fun onItemClick(favicon: ImageView, history: HistoryItem) - fun onItemLongClick( - favicon: ImageView, - history: HistoryItem - ): Boolean - } - - inner class Item(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: HistoryItem) { - title.text = item.historyTitle - if (deleteList.contains(item)) { - favicon.setImageDrawableCompat( - R.drawable.ic_check_circle_blue_24dp - ) - } else { - favicon.setBitmap(Base64String(item.favicon)) - } - itemView.setOnClickListener { - itemClickListener.onItemClick( - favicon, item - ) - } - itemView.setOnLongClickListener { - itemClickListener.onItemLongClick( - favicon, item - ) - } - } - } - - inner class Category(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: String) { - val todaysDate = LocalDate.now() - val yesterdayDate = LocalDate.now().minusDays(1) - val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") - val givenDate = LocalDate.parse(item, formatter) - - when { - todaysDate == givenDate -> { - header_date.setText( - R.string.time_today - ) - } - yesterdayDate == givenDate -> { - header_date.setText( - R.string.time_yesterday - ) - } - else -> { - header_date.text = item - } - } - } + fun onItemLongClick(favicon: ImageView, history: HistoryItem): Boolean } companion object { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt new file mode 100644 index 000000000..db4af25fb --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt @@ -0,0 +1,23 @@ +package org.kiwix.kiwixmobile.core.history + +import android.view.View +import kotlinx.android.synthetic.main.header_date.header_date +import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder +import org.threeten.bp.format.DateTimeFormatter +import org.threeten.bp.LocalDate + +class HistoryCategoryItemViewHolder(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: String) { + val todaysDate = LocalDate.now() + val yesterdayDate = LocalDate.now().minusDays(1) + val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") + val givenDate = LocalDate.parse(item, formatter) + + when { + todaysDate == givenDate -> { header_date.setText(R.string.time_today) } + yesterdayDate == givenDate -> { header_date.setText(R.string.time_yesterday) } + else -> { header_date.text = item } + } + } +} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryItemViewHolder.kt new file mode 100644 index 000000000..ee41db18d --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryItemViewHolder.kt @@ -0,0 +1,29 @@ +package org.kiwix.kiwixmobile.core.history + +import android.view.View +import kotlinx.android.synthetic.main.item_bookmark_history.favicon +import kotlinx.android.synthetic.main.item_bookmark_history.title +import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder +import org.kiwix.kiwixmobile.core.downloader.model.Base64String +import org.kiwix.kiwixmobile.core.extensions.setBitmap +import org.kiwix.kiwixmobile.core.extensions.setImageDrawableCompat +import org.kiwix.kiwixmobile.core.history.HistoryAdapter.OnItemClickListener +import org.kiwix.kiwixmobile.core.history.HistoryListItem.HistoryItem + +class HistoryItemViewHolder( + itemView: View, + val deleteList: List, + val itemClickListener: OnItemClickListener +) : BaseViewHolder(itemView) { + override fun bind(item: HistoryItem) { + title.text = item.historyTitle + if (deleteList.contains(item)) { + favicon.setImageDrawableCompat(R.drawable.ic_check_circle_blue_24dp) + } else { + favicon.setBitmap(Base64String(item.favicon)) + } + itemView.setOnClickListener { itemClickListener.onItemClick(favicon, item) } + itemView.setOnLongClickListener { itemClickListener.onItemLongClick(favicon, item) } + } +} From 439bedb5a3ea8665391e2a76ea9968ca92c0dad2 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 15:29:19 +0200 Subject: [PATCH 11/15] #1971 additional style fixes --- .../kiwixmobile/core/history/HistoryAdapter.kt | 13 ++++--------- .../history/HistoryCategoryItemViewHolder.kt | 16 ++++++++-------- .../kiwixmobile/core/history/HistoryListItem.kt | 7 ++++++- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index 2173746a8..9e5f683bc 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -33,7 +33,7 @@ class HistoryAdapter( ) : Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = - if (viewType == TYPE_ITEM) + if (viewType == DateItem.TYPE_ITEM) HistoryItemViewHolder( parent.inflate(R.layout.item_bookmark_history, false), deleteList, @@ -44,16 +44,14 @@ class HistoryAdapter( override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (holder is HistoryItemViewHolder) { - val historyItem = historyList[position] as HistoryItem - holder.bind(historyItem) + holder.bind(historyList[position] as HistoryItem) } else if (holder is HistoryCategoryItemViewHolder) { - val date = (historyList[position] as DateItem).dateString - holder.bind(date) + holder.bind(historyList[position] as DateItem) } } override fun getItemViewType(position: Int): Int = - if (historyList[position] is DateItem) 0 else TYPE_ITEM + if (historyList[position] is DateItem) DateItem.TYPE_CATEGORY else DateItem.TYPE_ITEM override fun getItemCount(): Int = historyList.size @@ -63,7 +61,4 @@ class HistoryAdapter( fun onItemLongClick(favicon: ImageView, history: HistoryItem): Boolean } - companion object { - private const val TYPE_ITEM = 1 - } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt index db4af25fb..f6a87fb55 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt @@ -4,20 +4,20 @@ import android.view.View import kotlinx.android.synthetic.main.header_date.header_date import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder +import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.LocalDate -class HistoryCategoryItemViewHolder(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: String) { +class HistoryCategoryItemViewHolder(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: DateItem) { val todaysDate = LocalDate.now() - val yesterdayDate = LocalDate.now().minusDays(1) - val formatter = DateTimeFormatter.ofPattern("d MMM yyyy") - val givenDate = LocalDate.parse(item, formatter) + val yesterdayDate = todaysDate.minusDays(1) + val givenDate = LocalDate.parse(item.dateString, DateTimeFormatter.ofPattern("d MMM yyyy")) when { - todaysDate == givenDate -> { header_date.setText(R.string.time_today) } - yesterdayDate == givenDate -> { header_date.setText(R.string.time_yesterday) } - else -> { header_date.text = item } + todaysDate == givenDate -> header_date.setText(R.string.time_today) + yesterdayDate == givenDate -> header_date.setText(R.string.time_yesterday) + else -> header_date.text = item.dateString } } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt index 897c0a342..3f6ac8c66 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt @@ -69,5 +69,10 @@ sealed class HistoryListItem { data class DateItem( val dateString: String, override val id: Long = dateString.hashCode().toLong() - ) : HistoryListItem() + ) : HistoryListItem(){ + companion object { + const val TYPE_ITEM = 1 + const val TYPE_CATEGORY = 0 + } + } } From 4f8d48c6af011c2108ad6fe6b0be73a86ca87ab1 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 15:57:52 +0200 Subject: [PATCH 12/15] #1971 Rename class to better describe it and small style fixes to history classes --- .../core/history/HistoryAdapter.kt | 9 ++++---- .../HistoryDateHeaderItemViewHolder.kt | 23 +++++++++++++++++++ .../core/history/HistoryListItem.kt | 13 +++++------ 3 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt index 9e5f683bc..7ee2df077 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryAdapter.kt @@ -33,25 +33,25 @@ class HistoryAdapter( ) : Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = - if (viewType == DateItem.TYPE_ITEM) + if (viewType == HISTORY_ITEM_VIEW_TYPE) HistoryItemViewHolder( parent.inflate(R.layout.item_bookmark_history, false), deleteList, itemClickListener ) else - HistoryCategoryItemViewHolder(parent.inflate(R.layout.header_date, false)) + HistoryDateHeaderItemViewHolder(parent.inflate(R.layout.header_date, false)) override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (holder is HistoryItemViewHolder) { holder.bind(historyList[position] as HistoryItem) - } else if (holder is HistoryCategoryItemViewHolder) { + } else if (holder is HistoryDateHeaderItemViewHolder) { holder.bind(historyList[position] as DateItem) } } override fun getItemViewType(position: Int): Int = - if (historyList[position] is DateItem) DateItem.TYPE_CATEGORY else DateItem.TYPE_ITEM + if (historyList[position] is DateItem) DATE_ITEM_VIEW_TYPE else HISTORY_ITEM_VIEW_TYPE override fun getItemCount(): Int = historyList.size @@ -60,5 +60,4 @@ class HistoryAdapter( fun onItemLongClick(favicon: ImageView, history: HistoryItem): Boolean } - } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt new file mode 100644 index 000000000..c72571421 --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt @@ -0,0 +1,23 @@ +package org.kiwix.kiwixmobile.core.history + +import android.view.View +import kotlinx.android.synthetic.main.header_date.header_date +import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder +import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem +import org.threeten.bp.format.DateTimeFormatter +import org.threeten.bp.LocalDate + +class HistoryDateHeaderItemViewHolder(itemView: View) : BaseViewHolder(itemView) { + override fun bind(item: DateItem) { + val todaysDate = LocalDate.now() + val yesterdayDate = todaysDate.minusDays(1) + val givenDate = LocalDate.parse(item.dateString, DateTimeFormatter.ofPattern("d MMM yyyy")) + + when { + todaysDate == givenDate -> header_date.setText(R.string.time_today) + yesterdayDate == givenDate -> header_date.setText(R.string.time_yesterday) + else -> header_date.text = item.dateString + } + } +} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt index 3f6ac8c66..2b58f540f 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryListItem.kt @@ -20,6 +20,9 @@ package org.kiwix.kiwixmobile.core.history import org.kiwix.kiwixmobile.core.dao.entities.HistoryEntity import org.kiwix.kiwixmobile.core.reader.ZimFileReader +const val HISTORY_ITEM_VIEW_TYPE = 1 +const val DATE_ITEM_VIEW_TYPE = 0 + sealed class HistoryListItem { abstract val id: Long @@ -68,11 +71,7 @@ sealed class HistoryListItem { data class DateItem( val dateString: String, - override val id: Long = dateString.hashCode().toLong() - ) : HistoryListItem(){ - companion object { - const val TYPE_ITEM = 1 - const val TYPE_CATEGORY = 0 - } - } + override val id: Long = dateString.hashCode() + .toLong() + ) : HistoryListItem() } From 62e30b2d041182c01b473ad5f36d091eb8d1a06b Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 1 Apr 2020 16:31:05 +0200 Subject: [PATCH 13/15] #1971 name change deletion --- .../history/HistoryCategoryItemViewHolder.kt | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt deleted file mode 100644 index f6a87fb55..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryCategoryItemViewHolder.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.kiwix.kiwixmobile.core.history - -import android.view.View -import kotlinx.android.synthetic.main.header_date.header_date -import org.kiwix.kiwixmobile.core.R -import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder -import org.kiwix.kiwixmobile.core.history.HistoryListItem.DateItem -import org.threeten.bp.format.DateTimeFormatter -import org.threeten.bp.LocalDate - -class HistoryCategoryItemViewHolder(itemView: View) : BaseViewHolder(itemView) { - override fun bind(item: DateItem) { - val todaysDate = LocalDate.now() - val yesterdayDate = todaysDate.minusDays(1) - val givenDate = LocalDate.parse(item.dateString, DateTimeFormatter.ofPattern("d MMM yyyy")) - - when { - todaysDate == givenDate -> header_date.setText(R.string.time_today) - yesterdayDate == givenDate -> header_date.setText(R.string.time_yesterday) - else -> header_date.text = item.dateString - } - } -} From fadd3ff2d1abcdc4d8633ef150df7b36c0a64122 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Thu, 2 Apr 2020 10:40:29 +0200 Subject: [PATCH 14/15] #1971 made when statement cleaner --- .../core/history/HistoryDateHeaderItemViewHolder.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt index c72571421..5ab3096f2 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt @@ -14,10 +14,10 @@ class HistoryDateHeaderItemViewHolder(itemView: View) : BaseViewHolder val yesterdayDate = todaysDate.minusDays(1) val givenDate = LocalDate.parse(item.dateString, DateTimeFormatter.ofPattern("d MMM yyyy")) - when { - todaysDate == givenDate -> header_date.setText(R.string.time_today) - yesterdayDate == givenDate -> header_date.setText(R.string.time_yesterday) - else -> header_date.text = item.dateString + when (givenDate) { + todaysDate -> header_date.setText(R.string.time_today) + yesterdayDate -> header_date.setText(R.string.time_yesterday) + else -> header_date.setText(item.dateString) } } } From 8858765aaf4c2011a813ca5edda349743424b87f Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Thu, 2 Apr 2020 11:27:40 +0200 Subject: [PATCH 15/15] #1971 made set text cleaner. --- .../kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt index 5ab3096f2..ee90cf098 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/history/HistoryDateHeaderItemViewHolder.kt @@ -17,7 +17,7 @@ class HistoryDateHeaderItemViewHolder(itemView: View) : BaseViewHolder when (givenDate) { todaysDate -> header_date.setText(R.string.time_today) yesterdayDate -> header_date.setText(R.string.time_yesterday) - else -> header_date.setText(item.dateString) + else -> header_date.text = item.dateString } } }