From 880f63ab3a9e7a6f08678b0ed7541e93ec93e726 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 29 Mar 2019 20:13:58 +0100 Subject: [PATCH] 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"