Tracking status grouping now uses global wording if you have mutliple trackers

ie kitsu's "currently reading" becomes "reading" since most trackers use that
Also sorting the tracking groups better
This commit is contained in:
Jay 2020-05-17 05:28:34 -04:00
parent 87ab6fa8de
commit ea1087e3dc
7 changed files with 86 additions and 4 deletions

View File

@ -31,6 +31,8 @@ abstract class TrackService(val id: Int) {
abstract fun getStatus(status: Int): String
abstract fun getGlobalStatus(status: Int): String
abstract fun getScoreList(): List<String>
open fun indexToScore(index: Int): Float {

View File

@ -52,6 +52,18 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getGlobalStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
PLANNING -> getString(R.string.plan_to_read)
COMPLETED -> getString(R.string.completed)
PAUSED -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
REPEATING -> getString(R.string.rereading)
else -> ""
}
}
override fun getScoreList(): List<String> {
return when (scorePreference.getOrDefault()) {
// 10 point

View File

@ -89,6 +89,17 @@ class Bangumi(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getGlobalStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
PLANNING -> getString(R.string.plan_to_read)
COMPLETED -> getString(R.string.completed)
ON_HOLD -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
else -> ""
}
}
override suspend fun login(username: String, password: String): Boolean = login(password)
suspend fun login(code: String): Boolean {

View File

@ -57,6 +57,17 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getGlobalStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
PLAN_TO_READ -> getString(R.string.plan_to_read)
COMPLETED -> getString(R.string.completed)
ON_HOLD -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
else -> ""
}
}
override fun getScoreList(): List<String> {
val df = DecimalFormat("0.#")
return listOf("0") + IntRange(2, 20).map { df.format(it / 2f) }

View File

@ -32,6 +32,17 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getGlobalStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
PLAN_TO_READ -> getString(R.string.plan_to_read)
COMPLETED -> getString(R.string.completed)
ON_HOLD -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
else -> ""
}
}
override fun getStatusList(): List<Int> {
return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLAN_TO_READ)
}

View File

@ -41,6 +41,18 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) {
}
}
override fun getGlobalStatus(status: Int): String = with(context) {
when (status) {
READING -> getString(R.string.reading)
PLANNING -> getString(R.string.plan_to_read)
COMPLETED -> getString(R.string.completed)
ON_HOLD -> getString(R.string.on_hold)
DROPPED -> getString(R.string.dropped)
REPEATING -> getString(R.string.rereading)
else -> ""
}
}
override fun getScoreList(): List<String> {
return IntRange(0, 10).map(Int::toString)
}

View File

@ -550,9 +550,13 @@ class LibraryPresenter(
val track = tracks.find { track ->
loggedServices.any { it.id == track?.sync_id }
}
if (track != null) {
loggedServices.find { it.id == track.sync_id }?.getStatus(track.status)
?: context.getString(R.string.unknown)
val service = loggedServices.find { it.id == track?.sync_id }
if (track != null && service != null) {
if (loggedServices.size > 1) {
service.getGlobalStatus(track.status)
} else {
service.getStatus(track.status)
}
} else {
context.getString(R.string.not_tracked)
}
@ -580,7 +584,12 @@ class LibraryPresenter(
sourceId = split.last().toLongOrNull()
}
}
}.sortedBy { it.name }
}.sortedBy {
if (groupType == BY_TRACK_STATUS) {
mapTrackingOrder(it.name)
} else {
it.name
} }
headers.forEachIndexed { index, category -> category.order = index }
return items to headers
}
@ -594,6 +603,20 @@ class LibraryPresenter(
})
}
private fun mapTrackingOrder(status: String): String {
with(context) {
return when (status) {
getString(R.string.reading), getString(R.string.currently_reading) -> "1"
getString(R.string.rereading) -> "2"
getString(R.string.plan_to_read), getString(R.string.want_to_read) -> "3"
getString(R.string.on_hold), getString(R.string.paused) -> "4"
getString(R.string.completed) -> "5"
getString(R.string.dropped) -> "6"
else -> "7"
}
}
}
/** Create a default category with the sort set */
private fun createDefaultCategory(): Category {
val default = Category.createDefault(context)