From 880f63ab3a9e7a6f08678b0ed7541e93ec93e726 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 29 Mar 2019 20:13:58 +0100 Subject: [PATCH 1/4] Switch from using one single stored position to one position per file, so you can watch multiple files and all of them will have their position saved --- .../pro/activities/SettingsActivity.kt | 9 ++++-- .../pro/activities/VideoPlayerActivity.kt | 15 ++++------ .../gallery/pro/fragments/VideoFragment.kt | 29 +++++-------------- .../gallery/pro/helpers/Config.kt | 28 +++++++++++++----- .../gallery/pro/helpers/Constants.kt | 3 +- 5 files changed, 40 insertions(+), 44 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt index 8c8586f8f..e1d83cf1e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt @@ -615,7 +615,9 @@ class SettingsActivity : SimpleActivity() { put(FILE_LOADING_PRIORITY, config.fileLoadingPriority) put(AUTOPLAY_VIDEOS, config.autoplayVideos) put(REMEMBER_LAST_VIDEO_POSITION, config.rememberLastVideoPosition) - put(LAST_VIDEO_PATH, config.lastVideoPath) + config.getAllLastVideoPositions().forEach { + put(it.key, it.value.toString()) + } put(LOOP_VIDEOS, config.loopVideos) put(OPEN_VIDEOS_ON_SEPARATE_SCREEN, config.openVideosOnSeparateScreen) put(ALLOW_VIDEO_GESTURES, config.allowVideoGestures) @@ -738,7 +740,6 @@ class SettingsActivity : SimpleActivity() { FILE_LOADING_PRIORITY -> config.fileLoadingPriority = value.toInt() AUTOPLAY_VIDEOS -> config.autoplayVideos = value.toBoolean() REMEMBER_LAST_VIDEO_POSITION -> config.rememberLastVideoPosition = value.toBoolean() - LAST_VIDEO_PATH -> config.lastVideoPath = value.toString() LOOP_VIDEOS -> config.loopVideos = value.toBoolean() OPEN_VIDEOS_ON_SEPARATE_SCREEN -> config.openVideosOnSeparateScreen = value.toBoolean() ALLOW_VIDEO_GESTURES -> config.allowVideoGestures = value.toBoolean() @@ -799,6 +800,10 @@ class SettingsActivity : SimpleActivity() { LAST_CONFLICT_RESOLUTION -> config.lastConflictResolution = value.toInt() LAST_CONFLICT_APPLY_TO_ALL -> config.lastConflictApplyToAll = value.toBoolean() } + + if(key.startsWith(LAST_VIDEO_POSITION_PREFIX)) { + config.saveLastVideoPosition(key, value as Int) + } } toast(if (configValues.size > 0) R.string.settings_imported_successfully else R.string.no_entries_for_importing) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt index 4578e906e..ef3b1f046 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt @@ -324,8 +324,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen } private fun setLastVideoSavedPosition() { - if (config.lastVideoPath == mUri.toString() && config.lastVideoPosition > 0) { - setPosition(config.lastVideoPosition) + val pos = config.getLastVideoPosition(mUri.toString()) + if(pos > 0) { + setPosition(pos) } } @@ -353,18 +354,12 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen private fun saveVideoProgress() { if (!didVideoEnd()) { - config.apply { - lastVideoPosition = mExoPlayer!!.currentPosition.toInt() / 1000 - lastVideoPath = mUri.toString() - } + config.saveLastVideoPosition(mUri.toString(), mExoPlayer!!.currentPosition.toInt() / 1000) } } private fun clearLastVideoSavedProgress() { - config.apply { - lastVideoPosition = 0 - lastVideoPath = "" - } + config.removeLastVideoPosition(mUri.toString()) } private fun setVideoSize() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index 7cd46cb6e..c8913e8db 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -61,8 +61,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mStoredBottomActions = true private var mStoredExtendedDetails = 0 private var mStoredRememberLastVideoPosition = false - private var mStoredLastVideoPath = "" - private var mStoredLastVideoPosition = 0 private lateinit var mTimeHolder: View private lateinit var mBrightnessSideScroll: MediaSideScroll @@ -183,7 +181,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setupVideoDuration() if (mStoredRememberLastVideoPosition) { - setLastVideoSavedPosition() + restoreLastVideoSavedPosition() } updateInstantSwitchWidths() @@ -263,8 +261,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mStoredExtendedDetails = extendedDetails mStoredBottomActions = bottomActions mStoredRememberLastVideoPosition = rememberLastVideoPosition - mStoredLastVideoPath = lastVideoPath - mStoredLastVideoPosition = lastVideoPosition } } @@ -285,19 +281,14 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun saveVideoProgress() { if (!videoEnded()) { - mStoredLastVideoPosition = mExoPlayer!!.currentPosition.toInt() / 1000 - mStoredLastVideoPath = mMedium.path - } - - mConfig.apply { - lastVideoPosition = mStoredLastVideoPosition - lastVideoPath = mStoredLastVideoPath + mConfig.saveLastVideoPosition(mMedium.path, mExoPlayer!!.currentPosition.toInt() / 1000) } } - private fun setLastVideoSavedPosition() { - if (mStoredLastVideoPath == mMedium.path && mStoredLastVideoPosition > 0) { - setPosition(mStoredLastVideoPosition) + private fun restoreLastVideoSavedPosition() { + val pos = mConfig.getLastVideoPosition(mMedium.path) + if(pos > 0) { + setPosition(pos) } } @@ -563,8 +554,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } if (mStoredRememberLastVideoPosition) { - setLastVideoSavedPosition() - clearLastVideoSavedProgress() + restoreLastVideoSavedPosition() } if (!wasEnded || !mConfig.loopVideos) { @@ -582,11 +572,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } - private fun clearLastVideoSavedProgress() { - mStoredLastVideoPosition = 0 - mStoredLastVideoPath = "" - } - private fun pauseVideo() { if (mExoPlayer == null) { return diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index f033c6ece..c2b0f50d6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -375,18 +375,30 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(BOTTOM_ACTIONS, true) set(bottomActions) = prefs.edit().putBoolean(BOTTOM_ACTIONS, bottomActions).apply() + fun removeLastVideoPosition(path: String) { + System.out.println("Remove position: $path") + prefs.edit().remove(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase()).apply() + } + + fun saveLastVideoPosition(path: String, value: Int) { + if (!path.isEmpty()) { + System.out.println("Saving position: $path at $value") + prefs.edit().putInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), value).apply() + } + } + + fun getLastVideoPosition(path: String): Int { + val value = prefs.getInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), 0) + System.out.println("Get position: $path at $value") + return value + } + + fun getAllLastVideoPositions() = prefs.all.filterKeys { it.startsWith(LAST_VIDEO_POSITION_PREFIX) } + var rememberLastVideoPosition: Boolean get() = prefs.getBoolean(REMEMBER_LAST_VIDEO_POSITION, false) set(rememberLastVideoPosition) = prefs.edit().putBoolean(REMEMBER_LAST_VIDEO_POSITION, rememberLastVideoPosition).apply() - var lastVideoPath: String - get() = prefs.getString(LAST_VIDEO_PATH, "") - set(lastVideoPath) = prefs.edit().putString(LAST_VIDEO_PATH, lastVideoPath).apply() - - var lastVideoPosition: Int - get() = prefs.getInt(LAST_VIDEO_POSITION, 0) - set(lastVideoPosition) = prefs.edit().putInt(LAST_VIDEO_POSITION, lastVideoPosition).apply() - var visibleBottomActions: Int get() = prefs.getInt(VISIBLE_BOTTOM_ACTIONS, DEFAULT_BOTTOM_ACTIONS) set(visibleBottomActions) = prefs.edit().putInt(VISIBLE_BOTTOM_ACTIONS, visibleBottomActions).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt index f620f154c..0ea8d7062 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt @@ -52,8 +52,7 @@ const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock" const val LAST_FILEPICKER_PATH = "last_filepicker_path" const val TEMP_SKIP_DELETE_CONFIRMATION = "temp_skip_delete_confirmation" const val BOTTOM_ACTIONS = "bottom_actions" -const val LAST_VIDEO_PATH = "last_video_path" -const val LAST_VIDEO_POSITION = "last_video_position" +const val LAST_VIDEO_POSITION_PREFIX = "last_video_position_" const val VISIBLE_BOTTOM_ACTIONS = "visible_bottom_actions" const val WERE_FAVORITES_PINNED = "were_favorites_pinned" const val WAS_RECYCLE_BIN_PINNED = "was_recycle_bin_pinned" From 062fe21567101c130477e59a63c2ee6b1f4cd7a0 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 Mar 2019 11:45:18 +0200 Subject: [PATCH 2/4] Remove leftover System.out.println --- .../kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index c2b0f50d6..856bb71ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -376,20 +376,17 @@ class Config(context: Context) : BaseConfig(context) { set(bottomActions) = prefs.edit().putBoolean(BOTTOM_ACTIONS, bottomActions).apply() fun removeLastVideoPosition(path: String) { - System.out.println("Remove position: $path") prefs.edit().remove(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase()).apply() } fun saveLastVideoPosition(path: String, value: Int) { if (!path.isEmpty()) { - System.out.println("Saving position: $path at $value") prefs.edit().putInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), value).apply() } } fun getLastVideoPosition(path: String): Int { val value = prefs.getInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), 0) - System.out.println("Get position: $path at $value") return value } From 56723320aad20c78bb29d5278047243b38dc5a35 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 Mar 2019 11:47:59 +0200 Subject: [PATCH 3/4] Use Kotlin way of concatenation --- .../com/simplemobiletools/gallery/pro/helpers/Config.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index 856bb71ae..4cfcc5cd9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -376,18 +376,17 @@ class Config(context: Context) : BaseConfig(context) { set(bottomActions) = prefs.edit().putBoolean(BOTTOM_ACTIONS, bottomActions).apply() fun removeLastVideoPosition(path: String) { - prefs.edit().remove(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase()).apply() + prefs.edit().remove("$LAST_VIDEO_POSITION_PREFIX${path.toLowerCase()}").apply() } fun saveLastVideoPosition(path: String, value: Int) { if (!path.isEmpty()) { - prefs.edit().putInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), value).apply() + prefs.edit().putInt("$LAST_VIDEO_POSITION_PREFIX${path.toLowerCase()}", value).apply() } } fun getLastVideoPosition(path: String): Int { - val value = prefs.getInt(LAST_VIDEO_POSITION_PREFIX + path.toLowerCase(), 0) - return value + return prefs.getInt("$LAST_VIDEO_POSITION_PREFIX${path.toLowerCase()}", 0) } fun getAllLastVideoPositions() = prefs.all.filterKeys { it.startsWith(LAST_VIDEO_POSITION_PREFIX) } From 48f5108b5db36b24e0d5c417ee628e16afa69b10 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 Mar 2019 18:48:31 +0200 Subject: [PATCH 4/4] Fix missing and escaping of apostrophe in recent update to Danish strings.xml --- app/src/main/res/values-da/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 27caebede..a6dc092ee 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -32,7 +32,7 @@ Fikser… Datoer fikset med succes Del en skaleret version - Hey,\n\ndet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \'Opgrader til Pro\' knap i toppen af appen's indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte dine app indstillinger.\n\nTak! + Hey,\n\ndet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \'Opgrader til Pro\' knap i toppen af appen\'s indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte dine app indstillinger.\n\nTak! Filtrér medier @@ -194,9 +194,9 @@ Hvordan kan jeg lave Simple Gallery til standard-galleriet på min enhed? Først skal du finde det nuværende standard galleri, i Apps sektionen af din enheds indstillinger. Kig efter en knap som hedder noget i stil med \"Åbn som standard\", klik på denne og vælg \"Ryd standarder\". - Næste gang du forsøger at åbne et billede eller en video, bør du se en app-vælger, hvor du kan vælge Simple Gallery og gøre den til standard app'en. - Jeg har låst app'en med en adgangskode, men jeg har glemt den. Hvad kan jeg gøre? - Du kan løse dette på to måder. Du kan enten geninstallere app'en, eller finde app'en i indstillingerne på din enhed og vælge \"Ryd data\". Dette vil nulstille alle dine indstillinger, det vil ikke slette nogle mediefiler. + Næste gang du forsøger at åbne et billede eller en video, bør du se en app-vælger, hvor du kan vælge Simple Gallery og gøre den til standard app\'en. + Jeg har låst app\'en med en adgangskode, men jeg har glemt den. Hvad kan jeg gøre? + Du kan løse dette på to måder. Du kan enten geninstallere app\'en, eller finde app\'en i indstillingerne på din enhed og vælge \"Ryd data\". Dette vil nulstille alle dine indstillinger, det vil ikke slette nogle mediefiler. Hvordan kan jeg altid få et bestemt album vist i toppen? Du kan holde fingeren nede på det ønskede album, og vælge tegnstift-ikonet i menuen, dette vil fastgøre den til toppen. Du kan fastgøre flere mapper også. Fastgjorte elementer vil blive sorteret efter standard sorterings-metoden. Hvordan kan jeg spole fremad i videoer? @@ -217,9 +217,9 @@ Sortering efter Dato Taget ser ikke ud til at fungere. Hvordan kan jeg fikse dette? Det skyldes højst sandsynligt at filerne er kopieret fra et andet sted. Du kan fikse det, ved at vælge filens miniature, og vælge \"Fiks Dato Taget værdi\". Jeg ser noget color banding på billederne. Hvordan kan jeg forbedre kvaliteten? - Den nuværende løsning til visning af billeder virker fint i langt de fleste tilfælde, men hvis du vil have en endnu bedre billedkvalitet, kan du aktivere \"Vis billeder i den højst mulige kvalitet\" i app'ens indstillinger, i sektionen \"Dybt zoombare billeder\". + Den nuværende løsning til visning af billeder virker fint i langt de fleste tilfælde, men hvis du vil have en endnu bedre billedkvalitet, kan du aktivere \"Vis billeder i den højst mulige kvalitet\" i app\'ens indstillinger, i sektionen \"Dybt zoombare billeder\". Jeg har en skjult fil/mappe. Hvordan kan jeg få den vist igen? - Du kan enten trykke på menupunktet \"Vis midlertidigt skjulte\" på hovedskærmen, eller aktivere \"Vis skjulte elementer\" i app'ens indstillinger for at se det skjulte element. Hvis du vil fjerne skjulningen, skal du blot holde fingeren nede og vælge \"Fjern skjulning\". Mapper er skjult ved at tilføje en skjult \".nomedia\" fil i dem, du kan også slette med enhver filhåndterings-app. + Du kan enten trykke på menupunktet \"Vis midlertidigt skjulte\" på hovedskærmen, eller aktivere \"Vis skjulte elementer\" i app\'ens indstillinger for at se det skjulte element. Hvis du vil fjerne skjulningen, skal du blot holde fingeren nede og vælge \"Fjern skjulning\". Mapper er skjult ved at tilføje en skjult \".nomedia\" fil i dem, du kan også slette med enhver filhåndterings-app.