From 7e510c0d7d39b2322923520ea3dcda6acac1284a Mon Sep 17 00:00:00 2001 From: Ilya Zasimov Date: Sun, 28 Oct 2018 17:49:17 +0300 Subject: [PATCH] Support slideshow option on media list --- .../gallery/activities/MediaActivity.kt | 15 +++++++++++++ .../gallery/activities/ViewPagerActivity.kt | 22 ++++++++++++++++++- .../gallery/helpers/Constants.kt | 1 + app/src/main/res/menu/menu_media.xml | 4 ++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 0d37b2013..e92177b03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -251,11 +251,26 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { R.id.reduce_column_count -> reduceColumnCount() R.id.settings -> launchSettings() R.id.about -> launchAbout() + R.id.slideshow -> startSlideshow() else -> return super.onOptionsItemSelected(item) } return true } + private fun startSlideshow() { + if (mMedia.isNotEmpty()) { + Intent(this, ViewPagerActivity::class.java).apply { + val item = mMedia[0] + if (item is Medium) { + putExtra(PATH, item.path) + } + putExtra(SHOW_ALL, mShowAll) + putExtra(SLIDESHOW_START_ON_ENTER, true) + startActivity(this) + } + } + } + private fun storeStateVariables() { config.apply { mStoredAnimateGifs = animateGifs diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt index 56cec98fb..97a12f19d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -53,6 +53,8 @@ import java.io.InputStream import java.io.OutputStream import java.util.* +private val SLIDESHOW_INITED_ON_START_KEY = "SLIDESHOW_INITED_ON_START" + class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, ViewPagerFragment.FragmentListener { private var mPath = "" private var mDirectory = "" @@ -68,6 +70,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private var mSlideshowMoveBackwards = false private var mSlideshowMedia = mutableListOf() private var mAreSlideShowMediaVisible = false + private var mSlideshowInitedOnStart = false + private var mIsOrientationLocked = false private var mMediaFiles = ArrayList() @@ -100,6 +104,23 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } initFavorites() + handleSlideshowRequest(savedInstanceState) + } + + private fun handleSlideshowRequest(state: Bundle?) { + if (intent.getBooleanExtra(SLIDESHOW_START_ON_ENTER, false)) { + if (state == null || !state.getBoolean(SLIDESHOW_INITED_ON_START_KEY, false)) { + mSlideshowHandler.post { + initSlideshow() + } + } + mSlideshowInitedOnStart = true + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putBoolean(SLIDESHOW_INITED_ON_START_KEY, mSlideshowInitedOnStart) } override fun onResume() { @@ -247,7 +268,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } else { visibility and View.SYSTEM_UI_FLAG_FULLSCREEN != 0 } - view_pager.adapter?.let { (it as MyPagerAdapter).toggleFullscreen(mIsFullScreen) checkSystemUI() 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 29c738dfa..fc438b9f6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -76,6 +76,7 @@ const val SLIDESHOW_MOVE_BACKWARDS = "slideshow_move_backwards" const val SLIDESHOW_LOOP = "loop_slideshow" const val SLIDESHOW_DEFAULT_INTERVAL = 5 const val SLIDESHOW_SCROLL_DURATION = 500L +const val SLIDESHOW_START_ON_ENTER= "slideshow_start_on_enter" const val NOMEDIA = ".nomedia" const val FAVORITES = "favorites" diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index fbae61223..2d2d30115 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -87,4 +87,8 @@ android:id="@+id/about" android:title="@string/about" app:showAsAction="never"/> +