From c5ae9fb087407422d9b4265a70acfeeaefad0265 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 8 Feb 2023 20:19:01 +0200 Subject: [PATCH] Use relative date format --- .../koitharu/kotatsu/core/prefs/AppSettings.kt | 9 --------- .../kotatsu/details/ui/DetailsViewModel.kt | 1 - .../kotatsu/details/ui/MangaDetailsDelegate.kt | 8 -------- .../kotatsu/details/ui/model/ChapterListItem.kt | 13 +++++++------ .../details/ui/model/ListModelConversionExt.kt | 3 --- .../kotatsu/reader/ui/ChaptersBottomSheet.kt | 6 ++---- .../settings/AppearanceSettingsFragment.kt | 15 --------------- app/src/main/res/values/constants.xml | 8 -------- app/src/main/res/xml/pref_appearance.xml | 4 ---- 9 files changed, 9 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 9b5929c31..348f0dc20 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -22,8 +22,6 @@ import org.koitharu.kotatsu.utils.ext.observe import org.koitharu.kotatsu.utils.ext.putEnumValue import org.koitharu.kotatsu.utils.ext.toUriOrNull import java.io.File -import java.text.DateFormat -import java.text.SimpleDateFormat import java.util.Collections import java.util.EnumSet import java.util.Locale @@ -263,12 +261,6 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { return policy.isNetworkAllowed(connectivityManager) } - fun getDateFormat(format: String = prefs.getString(KEY_DATE_FORMAT, "").orEmpty()): DateFormat = - when (format) { - "" -> DateFormat.getDateInstance(DateFormat.SHORT) - else -> SimpleDateFormat(format, Locale.getDefault()) - } - fun getSuggestionsTagsBlacklistRegex(): Regex? { val string = prefs.getString(KEY_SUGGESTIONS_EXCLUDE_TAGS, null)?.trimEnd(' ', ',') if (string.isNullOrEmpty()) { @@ -317,7 +309,6 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_THEME = "theme" const val KEY_COLOR_THEME = "color_theme" const val KEY_THEME_AMOLED = "amoled_theme" - const val KEY_DATE_FORMAT = "date_format" const val KEY_SOURCES_ORDER = "sources_order_2" const val KEY_SOURCES_HIDDEN = "sources_hidden" const val KEY_TRAFFIC_WARNING = "traffic_warning" diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt index e7c98d27e..28215a004 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt @@ -72,7 +72,6 @@ class DetailsViewModel @AssistedInject constructor( private val delegate = MangaDetailsDelegate( intent = intent, - settings = settings, mangaDataRepository = mangaDataRepository, historyRepository = historyRepository, localMangaRepository = localMangaRepository, diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt index dd386bfad..93a13b52e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt @@ -7,7 +7,6 @@ import org.koitharu.kotatsu.base.domain.MangaIntent import org.koitharu.kotatsu.core.model.MangaHistory import org.koitharu.kotatsu.core.model.getPreferredBranch import org.koitharu.kotatsu.core.parser.MangaRepository -import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.details.ui.model.toListItem import org.koitharu.kotatsu.history.domain.HistoryRepository @@ -21,7 +20,6 @@ import org.koitharu.kotatsu.utils.ext.runCatchingCancellable class MangaDetailsDelegate( private val intent: MangaIntent, - private val settings: AppSettings, private val mangaDataRepository: MangaDataRepository, private val historyRepository: HistoryRepository, private val localMangaRepository: LocalMangaRepository, @@ -82,7 +80,6 @@ class MangaDetailsDelegate( branch: String?, ): List { val result = ArrayList(chapters.size) - val dateFormat = settings.getDateFormat() val currentIndex = chapters.indexOfFirst { it.id == currentId } val firstNewIndex = chapters.size - newCount val downloadedIds = downloadedChapters?.mapTo(HashSet(downloadedChapters.size)) { it.id } @@ -97,7 +94,6 @@ class MangaDetailsDelegate( isNew = i >= firstNewIndex, isMissing = false, isDownloaded = downloadedIds?.contains(chapter.id) == true, - dateFormat = dateFormat, ) } if (result.size < chapters.size / 2) { @@ -117,7 +113,6 @@ class MangaDetailsDelegate( val result = ArrayList(sourceChapters.size) val currentIndex = sourceChapters.indexOfFirst { it.id == currentId } val firstNewIndex = sourceChapters.size - newCount - val dateFormat = settings.getDateFormat() for (i in sourceChapters.indices) { val chapter = sourceChapters[i] val localChapter = chaptersMap.remove(chapter.id) @@ -130,14 +125,12 @@ class MangaDetailsDelegate( isNew = i >= firstNewIndex, isMissing = false, isDownloaded = false, - dateFormat = dateFormat, ) ?: chapter.toListItem( isCurrent = i == currentIndex, isUnread = i > currentIndex, isNew = i >= firstNewIndex, isMissing = true, isDownloaded = false, - dateFormat = dateFormat, ) } if (chaptersMap.isNotEmpty()) { // some chapters on device but not online source @@ -150,7 +143,6 @@ class MangaDetailsDelegate( isNew = false, isMissing = false, isDownloaded = false, - dateFormat = dateFormat, ) } else { null diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ChapterListItem.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ChapterListItem.kt index 7de226908..35b7aec12 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ChapterListItem.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ChapterListItem.kt @@ -1,21 +1,24 @@ package org.koitharu.kotatsu.details.ui.model -import java.text.DateFormat +import android.text.format.DateUtils import org.koitharu.kotatsu.parsers.model.MangaChapter class ChapterListItem( val chapter: MangaChapter, val flags: Int, private val uploadDateMs: Long, - private val dateFormat: DateFormat, ) { - var uploadDate: String? = null + var uploadDate: CharSequence? = null private set get() { if (field != null) return field if (uploadDateMs == 0L) return null - field = dateFormat.format(uploadDateMs) + field = DateUtils.getRelativeTimeSpanString( + uploadDateMs, + System.currentTimeMillis(), + DateUtils.DAY_IN_MILLIS, + ) return field } @@ -44,7 +47,6 @@ class ChapterListItem( if (chapter != other.chapter) return false if (flags != other.flags) return false if (uploadDateMs != other.uploadDateMs) return false - if (dateFormat != other.dateFormat) return false return true } @@ -53,7 +55,6 @@ class ChapterListItem( var result = chapter.hashCode() result = 31 * result + flags result = 31 * result + uploadDateMs.hashCode() - result = 31 * result + dateFormat.hashCode() return result } diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ListModelConversionExt.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ListModelConversionExt.kt index 9e57bd7f0..8f555e39c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ListModelConversionExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/model/ListModelConversionExt.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.details.ui.model -import java.text.DateFormat import org.koitharu.kotatsu.details.ui.model.ChapterListItem.Companion.FLAG_CURRENT import org.koitharu.kotatsu.details.ui.model.ChapterListItem.Companion.FLAG_DOWNLOADED import org.koitharu.kotatsu.details.ui.model.ChapterListItem.Companion.FLAG_MISSING @@ -14,7 +13,6 @@ fun MangaChapter.toListItem( isNew: Boolean, isMissing: Boolean, isDownloaded: Boolean, - dateFormat: DateFormat, ): ChapterListItem { var flags = 0 if (isCurrent) flags = flags or FLAG_CURRENT @@ -26,6 +24,5 @@ fun MangaChapter.toListItem( chapter = this, flags = flags, uploadDateMs = uploadDate, - dateFormat = dateFormat, ) } diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ChaptersBottomSheet.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ChaptersBottomSheet.kt index 9efa3cef6..87b92acd5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ChaptersBottomSheet.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ChaptersBottomSheet.kt @@ -6,8 +6,6 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.FragmentManager import dagger.hilt.android.AndroidEntryPoint -import javax.inject.Inject -import kotlin.math.roundToInt import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BaseBottomSheet import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener @@ -21,6 +19,8 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.utils.RecyclerViewScrollCallback import org.koitharu.kotatsu.utils.ext.getParcelableCompat import org.koitharu.kotatsu.utils.ext.withArgs +import javax.inject.Inject +import kotlin.math.roundToInt @AndroidEntryPoint class ChaptersBottomSheet : BaseBottomSheet(), OnListItemClickListener { @@ -41,7 +41,6 @@ class ChaptersBottomSheet : BaseBottomSheet(), OnListItemC } val currentId = requireArguments().getLong(ARG_CURRENT_ID, 0L) val currentPosition = chapters.indexOfFirst { it.id == currentId } - val dateFormat = settings.getDateFormat() val items = chapters.mapIndexed { index, chapter -> chapter.toListItem( isCurrent = index == currentPosition, @@ -49,7 +48,6 @@ class ChaptersBottomSheet : BaseBottomSheet(), OnListItemC isNew = false, isMissing = false, isDownloaded = false, - dateFormat = dateFormat, ) } binding.recyclerView.adapter = ChaptersAdapter(this).also { adapter -> diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt index 5c1c6ff27..d46df2738 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt @@ -29,7 +29,6 @@ import org.koitharu.kotatsu.utils.ext.getLocalesConfig import org.koitharu.kotatsu.utils.ext.map import org.koitharu.kotatsu.utils.ext.setDefaultValueCompat import org.koitharu.kotatsu.utils.ext.toList -import java.util.Date import java.util.Locale import javax.inject.Inject @@ -55,20 +54,6 @@ class AppearanceSettingsFragment : entryValues = ListMode.values().names() setDefaultValueCompat(ListMode.GRID.name) } - findPreference(AppSettings.KEY_DATE_FORMAT)?.run { - entryValues = resources.getStringArray(R.array.date_formats) - val now = Date().time - entries = entryValues.map { value -> - val formattedDate = settings.getDateFormat(value.toString()).format(now) - if (value == "") { - getString(R.string.default_s, formattedDate) - } else { - formattedDate - } - }.toTypedArray() - setDefaultValueCompat("") - summary = "%s" - } findPreference(AppSettings.KEY_PROTECT_APP) ?.isChecked = !settings.appPassword.isNullOrEmpty() findPreference(AppSettings.KEY_APP_LOCALE)?.run { diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 14108882b..a7f1cd3ff 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -38,12 +38,4 @@ 2 0 - - - MM/dd/yy - dd/MM/yy - yyyy-MM-dd - dd MMM yyyy - MMM dd, yyyy - diff --git a/app/src/main/res/xml/pref_appearance.xml b/app/src/main/res/xml/pref_appearance.xml index 65c2469ea..fa5236c23 100644 --- a/app/src/main/res/xml/pref_appearance.xml +++ b/app/src/main/res/xml/pref_appearance.xml @@ -27,10 +27,6 @@ android:title="@string/language" app:allowDividerAbove="true" /> - -