From 70656183a843b5dc4e9cfc2fc9ebdb7b1093e631 Mon Sep 17 00:00:00 2001 From: matej bobek Date: Tue, 30 Oct 2018 23:14:25 +0100 Subject: [PATCH 1/3] #505 remembering last video position --- .../gallery/activities/SettingsActivity.kt | 9 ++++ .../gallery/fragments/VideoFragment.kt | 42 +++++++++++++++++++ .../gallery/helpers/Config.kt | 12 ++++++ .../gallery/helpers/Constants.kt | 3 ++ app/src/main/res/layout/activity_settings.xml | 24 +++++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 91 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt index c50d01c1a..45badc869 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -45,6 +45,7 @@ class SettingsActivity : SimpleActivity() { setupShowHiddenItems() setupDoExtraCheck() setupAutoplayVideos() + setupRememberLastVideo() setupLoopVideos() setupAnimateGifs() setupMaxBrightness() @@ -175,6 +176,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupRememberLastVideo() { + settings_remember_last_video.isChecked = config.rememberLastVideo + settings_remember_last_video_holder.setOnClickListener { + settings_remember_last_video.toggle() + config.rememberLastVideo = settings_remember_last_video.isChecked + } + } + private fun setupLoopVideos() { settings_loop_videos.isChecked = config.loopVideos settings_loop_videos_holder.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt index 438565493..c60f20c31 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -66,6 +66,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mStoredHideExtendedDetails = false private var mStoredBottomActions = true private var mStoredExtendedDetails = 0 + private var mStoredRememberLastVideo = false + private var mStoredLastVideoPath = "" + private var mStoredLastVideoProgress = 0 private lateinit var mTimeHolder: View private lateinit var mBrightnessSideScroll: MediaSideScroll @@ -167,6 +170,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } setupVideoDuration() + if (mStoredRememberLastVideo) { + setSavedProgress() + } + updateInstantSwitchWidths() return mView @@ -201,6 +208,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onPause() { super.onPause() pauseVideo() + if (mStoredRememberLastVideo) { + saveVideoProgress() + } + storeStateVariables() } @@ -237,6 +248,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mStoredHideExtendedDetails = hideExtendedDetails mStoredExtendedDetails = extendedDetails mStoredBottomActions = bottomActions + mStoredRememberLastVideo = rememberLastVideo + mStoredLastVideoPath = lastVideoPath + mStoredLastVideoProgress = lastVideoProgress } } @@ -253,6 +267,18 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S checkExtendedDetails() } + private fun saveVideoProgress() { + if (!videoEnded()) { + mStoredLastVideoProgress = mExoPlayer!!.currentPosition.toInt() / 1000 + mStoredLastVideoPath = medium.path + } + + context!!.config.apply { + lastVideoProgress = mStoredLastVideoProgress + lastVideoPath = mStoredLastVideoPath + } + } + private fun initExoPlayer() { val isContentUri = medium.path.startsWith("content://") val uri = if (isContentUri) Uri.parse(medium.path) else Uri.fromFile(File(medium.path)) @@ -316,6 +342,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S listener?.fragmentClicked() } + private fun setSavedProgress() { + if (mStoredLastVideoPath == medium.path && mStoredLastVideoProgress > 0) { + setProgress(mStoredLastVideoProgress) + } + } + private fun initTimeHolder() { val res = resources val left = 0 @@ -434,6 +466,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setProgress(0) } + if (mStoredRememberLastVideo) { + setSavedProgress() + clearSavedProgress() + } + if (!wasEnded || context?.config?.loopVideos == false) { mView.video_play_outline.setImageResource(R.drawable.ic_pause) mView.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA @@ -445,6 +482,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } + private fun clearSavedProgress() { + mStoredLastVideoProgress = 0 + mStoredLastVideoPath = "/" + } + private fun pauseVideo() { if (mExoPlayer == null) { return diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt index 40838d5cd..fbb3a0831 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -148,6 +148,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(AUTOPLAY_VIDEOS, false) set(autoplay) = prefs.edit().putBoolean(AUTOPLAY_VIDEOS, autoplay).apply() + var rememberLastVideo: Boolean + get() = prefs.getBoolean(REMEMBER_LAST_VIDEO, false) + set(rememberVideo) = prefs.edit().putBoolean(REMEMBER_LAST_VIDEO, rememberVideo).apply() + var animateGifs: Boolean get() = prefs.getBoolean(ANIMATE_GIFS, false) set(animateGifs) = prefs.edit().putBoolean(ANIMATE_GIFS, animateGifs).apply() @@ -365,6 +369,14 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(BOTTOM_ACTIONS, true) set(bottomActions) = prefs.edit().putBoolean(BOTTOM_ACTIONS, bottomActions).apply() + var lastVideoPath: String + get() = prefs.getString(LAST_VIDEO_PATH, "/") + set(lastVideoPath) = prefs.edit().putString(LAST_VIDEO_PATH, lastVideoPath).apply() + + var lastVideoProgress: Int + get() = prefs.getInt(LAST_VIDEO_PROGRESS, 0) + set(lastVideoProgress) = prefs.edit().putInt(LAST_VIDEO_PROGRESS, lastVideoProgress).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/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt index fc438b9f6..529eae1c6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -10,6 +10,7 @@ const val SHOW_HIDDEN_MEDIA = "show_hidden_media" const val TEMPORARILY_SHOW_HIDDEN = "temporarily_show_hidden" const val IS_THIRD_PARTY_INTENT = "is_third_party_intent" const val AUTOPLAY_VIDEOS = "autoplay_videos" +const val REMEMBER_LAST_VIDEO = "remember_last_video" const val LOOP_VIDEOS = "loop_videos" const val ANIMATE_GIFS = "animate_gifs" const val MAX_BRIGHTNESS = "max_brightness" @@ -51,6 +52,8 @@ const val LAST_FILEPICKER_PATH = "last_filepicker_path" const val WAS_OTG_HANDLED = "was_otg_handled" 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_PROGRESS = "last_video_progress" 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" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 480a71a42..7699cd830 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -278,6 +278,30 @@ + + + + + + Play videos automatically + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails From e3a3d34d700e0254340c07a872b77b5a5c9520f3 Mon Sep 17 00:00:00 2001 From: matej bobek Date: Wed, 31 Oct 2018 17:07:57 +0100 Subject: [PATCH 2/3] #505 creating string node remember_last_video for every language --- app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-ca/strings.xml | 1 + app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-da/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 3 ++- app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-hr/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko-rKR/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nb/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + 29 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 792aa421e..fac0d1817 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -214,6 +214,7 @@ استوديو لعرض الصور والفيديو بدون اعلانات. أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n https://www.simplemobiletools.com + Remember last video playback position تشغيل الفديوهات تلقائيا + Remember last video playback position تبديل رؤية اسم الملف حلقة الفيديو عرض صور GIF المتحركة في الصور المصغرة @@ -214,7 +215,6 @@ استوديو لعرض الصور والفيديو بدون اعلانات. أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n https://www.simplemobiletools.com - Remember last video playback position Play videos automatically + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails @@ -221,7 +222,6 @@ This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - Remember last video playback position Reproduir vídeos automàticament + Remember last video playback position Canviar la visibilitat del nom d\'arxiu Reproducció continua de vídeos Animar les miniatures dels GIFs @@ -221,7 +222,6 @@ Aquesta aplicació es només una peça d\'una sèrie més gran d\'aplicacions. Pots trobar la resta a https://www.simplemobiletools.com - Remember last video playback position Automaticky přehrávat videa + Remember last video playback position Přepnout viditelnost názvů souborů Přehrávat videa ve smyčce Animovat náhledy souborů GIF @@ -221,7 +222,6 @@ Táto aplikace je jen jednou ze skupiny aplikací. Všechny tyto aplikace naleznete na https://www.simplemobiletools.com - Remember last video playback position Afspil automatisk videoer + Remember last video playback position Toggle filename visibility Kør videoer i sløjfe Animér GIF\'er i miniaturer @@ -221,7 +222,6 @@ This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - Remember last video playback position Videos automatisch abspielen + Remember last video playback position Beschriftungen ein/aus Videos in Endlosschleife abspielen Kacheln von GIFs animieren @@ -220,7 +221,6 @@ Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf https://www.simplemobiletools.com - Remember last video playback position Αυτόματη αναπαραγωγή βίντεο + Remember last video playback position Αλλαγή προβολής ονόματος αρχείων Επανάληψη βίντεο Εμφάνιση κινούμενων GIFs στα εικονίδια @@ -221,7 +222,6 @@ Αυτή η εφαρμογή είναι μέρος μιας σειράς εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com - Remember last video playback position Reproducir vídeos automáticamente + Remember last video playback position Cambiar la visibilidad del nombre de archivo Reproducción continua de vídeos Animar las miniaturas de GIFs @@ -221,7 +222,6 @@ Esta aplicación es solamente una pieza de una serie más grande de aplicaciones. Puede encontrar el resto en https://www.simplemobiletools.com - Remember last video playback position Toista videot automaattisesti + Remember last video playback position Tiedostonimien näkyvyys Jatkuvat videot Animoi GIFit pienoiskuvissa @@ -221,7 +222,6 @@ Tämä sovellus on vain yksi osa suurempaa kokoelmaa. Löydät loput osoitteesta https://www.simplemobiletools.com - Remember last video playback position Lecture automatique des vidéos + Remember last video playback position Permuter la visibilité des noms de fichier Lecture en boucle des vidéos GIFs animés sur les miniatures @@ -221,7 +222,6 @@ Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com - Remember last video playback position Reproducir vídeos automticamente + Remember last video playback position Mudar a visibilidade do ficheiro videos en bucle Animar os GIFs na icona @@ -221,7 +222,6 @@ Este aplicativo é só unha das pezas de unha grande familia. Pode atopar o resto en https://www.simplemobiletools.com - Remember last video playback position Automatsko pokretanje videa + Remember last video playback position Uključi prikaz naziva datoteka Ponavljanje videa Prikaz animacije GIF-ova na sličicama @@ -221,7 +222,6 @@ Ova je aplikacija samo dio većeg broja aplikacija. Možete pronaći ostatak na https://www.simplemobiletools.com - Remember last video playback position Play videos automatically + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails @@ -221,7 +222,6 @@ This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - Remember last video playback position Riproduci i video automaticamente + Remember last video playback position Visibilità nome del file Ripeti i video Anima le GIF in miniatura @@ -221,7 +222,6 @@ Questa app è solo una piccola parte di una grande serie di altre app. Puoi trovarle tutte su https://www.simplemobiletools.com - Remember last video playback position ビデオを自動再生 + Remember last video playback position ファイル名の表示を切り替え ビデオを繰り返し再生 アニメーションGIFを動かす @@ -221,7 +222,6 @@ このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます - Remember last video playback position 비디오 자동재생 + Remember last video playback position 파일이름 보기 비디오 반복 섬네일에서 GIFs 애니메이션 활성화 @@ -225,7 +226,6 @@ 이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 https://www.simplemobiletools.com 에서 찾아보실 수 있습니다. - Remember last video playback position Groti vaizdo įrašus automatiškai + Remember last video playback position Perjungti bylos pavadinimo matomumą Klipuoti vaizdo įrašus Animuoti GIF\'us miniatiūrose @@ -221,7 +222,6 @@ Ši programėle yra vienina iš keletos mūsų programėlių. Likusias Jūs galite rasti čia http://www.simplemobiletools.com - Remember last video playback position Avspill videoer automatisk + Remember last video playback position Vis/skjul filnavn Gjenta videoer Animert GIF i minibildevisning @@ -221,7 +222,6 @@ This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - Remember last video playback position Video\'s automatisch afspelen + Remember last video playback position Bestandsnamen tonen Video\'s herhalen GIF-bestanden afspelen in overzicht @@ -221,7 +222,6 @@ Deze app is onderdeel van een grotere verzameling. Vind de andere apps op https://www.simplemobiletools.com - Remember last video playback position Odtwarzaj filmy automatycznie + Remember last video playback position Pokazuj / ukrywaj nazwy plików Zapętlaj odtwarzanie filmów Animowane miniatury GIFów @@ -217,7 +218,6 @@       Jest ona tylko częścią naszej kolekcji prostych narzędzi. Ta, jak i pozostałe, dostępne są na stronie https://www.simplemobiletools.com - Remember last video playback position Reproduzir vídeos automaticamente + Remember last video playback position Mostrar/ocultar nome do arquivo Reproduzir vídeos em ciclo Animação de GIFs nas miniaturas @@ -221,7 +222,6 @@ Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com - Remember last video playback position Reproduzir vídeos automaticamente + Remember last video playback position Mostrar/ocultar nome do ficheiro Vídeos em ciclo Animação de GIF nas miniaturas @@ -221,7 +222,6 @@ Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com - Remember last video playback position Воспроизводить видео автоматически + Remember last video playback position Переключить отображение имени файла Повтор видео Анимировать эскизы GIF @@ -221,7 +222,6 @@ Simple Gallery — это приложение из серии Simple Mobile Tools. Остальные приложения из этой серии можно найти здесь: https://www.simplemobiletools.com - Remember last video playback position Spúšťať videá automaticky + Remember last video playback position Prepnúť viditeľnosť názvov súborov Automaticky reštartovať videá Animovať GIF súbory pri náhľade @@ -221,7 +222,6 @@ Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com - Remember last video playback position Spela upp videor automatiskt + Remember last video playback position Visa/dölj filnamn Spela upp videor om och om igen Animera GIF-bilders miniatyrer @@ -221,7 +222,6 @@ Denna app är bara en del av en större serie appar. Du hittar resten av dem på https://www.simplemobiletools.com - Remember last video playback position Videoları otomatik olarak oynat + Remember last video playback position Dosya adı görünürlüğünü değiştir Videolar döngüsü Küçük resimlerde GIF\'leri canlandırın @@ -221,7 +222,6 @@ Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanını şu adresten bulabilirsiniz https://www.simplemobiletools.com - Remember last video playback position Відтворювати відео автоматично + Remember last video playback position Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів @@ -221,7 +222,6 @@ Цей додаток є частиною великої серії схожих додатків. Ви можете знайти решту з них на https://www.simplemobiletools.com - Remember last video playback position 自动播放 + Remember last video playback position 显示文件名 循环播放视频 GIF 缩略图 @@ -219,7 +220,6 @@ 这个应用只是一系列应用中的一小部份。您可以在 https://www.simplemobiletools.com 找到其余的应用。 - Remember last video playback position 自動播放影片 + Remember last video playback position 顯示檔案名稱 影片循環播放 縮圖顯示GIF動畫 @@ -221,7 +222,6 @@ 這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 https://www.simplemobiletools.com - Remember last video playback position