summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt31
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt11
2 files changed, 42 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt
index 53b1467bbc..0384da89c0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt
@@ -19,6 +19,7 @@ import kotlinx.coroutines.launch
import org.dolphinemu.dolphinemu.NativeLibrary
import org.dolphinemu.dolphinemu.databinding.DialogGameDetailsBinding
import org.dolphinemu.dolphinemu.databinding.DialogGameDetailsTvBinding
+import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
import org.dolphinemu.dolphinemu.model.GameFile
class GameDetailsDialog : DialogFragment() {
@@ -35,6 +36,21 @@ class GameDetailsDialog : DialogFragment() {
if (requireActivity() is AppCompatActivity) {
binding = DialogGameDetailsBinding.inflate(layoutInflater)
binding.apply {
+ if (BooleanSetting.MAIN_TIME_TRACKING.boolean) {
+ lifecycleScope.launch {
+ val totalMs = gameFile.getTimePlayedMs()
+ val totalMinutes = totalMs / 60000
+ val totalHours = totalMinutes / 60
+ textTimePlayed.text = resources.getString(
+ R.string.game_details_time_played,
+ totalHours,
+ totalMinutes % 60
+ )
+ }
+ } else {
+ textTimePlayed.visibility = View.GONE
+ }
+
textGameTitle.text = gameFile.getTitle()
textDescription.text = gameFile.getDescription()
if (gameFile.getDescription().isEmpty()) {
@@ -87,6 +103,21 @@ class GameDetailsDialog : DialogFragment() {
} else {
tvBinding = DialogGameDetailsTvBinding.inflate(layoutInflater)
tvBinding.apply {
+ if (BooleanSetting.MAIN_TIME_TRACKING.boolean) {
+ lifecycleScope.launch {
+ val totalMs = gameFile.getTimePlayedMs()
+ val totalMinutes = totalMs / 60000
+ val totalHours = totalMinutes / 60
+ textTimePlayed.text = resources.getString(
+ R.string.game_details_time_played,
+ totalHours,
+ totalMinutes % 60
+ )
+ }
+ } else {
+ textTimePlayed.visibility = View.GONE
+ }
+
textGameTitle.text = gameFile.getTitle()
textDescription.text = gameFile.getDescription()
if (gameFile.getDescription().isEmpty()) {
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt
index 347433f552..26da174285 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt
@@ -3,6 +3,8 @@
package org.dolphinemu.dolphinemu.model
import androidx.annotation.Keep
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
@Keep
class GameFile private constructor(private val pointer: Long) {
@@ -54,6 +56,15 @@ class GameFile private constructor(private val pointer: Long) {
external fun getBannerHeight(): Int
+ suspend fun getTimePlayedMs(): Long {
+ // getTimePlayedMsInternal reads from disk, so let's use coroutines.
+ return withContext(Dispatchers.IO) {
+ getTimePlayedMsInternal()
+ }
+ }
+
+ external private fun getTimePlayedMsInternal(): Long
+
val customCoverPath: String
get() = "${getPath().substring(0, getPath().lastIndexOf("."))}.cover.png"