From 3795f8790f01748971d7860837863fbf97345ad6 Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Tue, 3 Nov 2020 13:34:40 +0100 Subject: [PATCH] Slideshow UI fix --- .../droidfs/file_viewers/ImageViewer.kt | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt index 0ce0c21..5523b3c 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt @@ -48,12 +48,10 @@ class ImageViewer: FileViewerActivity() { action_buttons.visibility = View.GONE action_bar.visibility = View.GONE } - private val slideshowLoop = object : Runnable { - override fun run() { - if (slideshowActive){ - swipeImage(-1F) - handler.postDelayed(this, ConstValues.slideshow_delay) - } + private val slideshowNext = Runnable { + if (slideshowActive){ + image_viewer.resetZoomFactor() + swipeImage(-1F, true) } } override fun viewFile() { @@ -107,7 +105,7 @@ class ImageViewer: FileViewerActivity() { handler.postDelayed(hideUI, hideDelay) } - private fun swipeImage(deltaX: Float){ + private fun swipeImage(deltaX: Float, slideshowSwipe: Boolean = false){ if (!wasMapped){ for (e in gocryptfsVolume.recursiveMapFiles(PathUtils.getParentPath(filePath))){ if (e.isRegularFile && ConstValues.isImage(e.name)){ @@ -142,6 +140,12 @@ class ImageViewer: FileViewerActivity() { } filePath = mappedImages[currentMappedImageIndex].fullPath loadImage() + if (slideshowActive){ + if (!slideshowSwipe) { //reset slideshow delay if user swipes + handler.removeCallbacks(slideshowNext) + } + handler.postDelayed(slideshowNext, ConstValues.slideshow_delay) + } } } @@ -172,7 +176,7 @@ class ImageViewer: FileViewerActivity() { fun onClickSlideshow(view: View) { if (!slideshowActive){ slideshowActive = true - handler.postDelayed(slideshowLoop, ConstValues.slideshow_delay) + handler.postDelayed(slideshowNext, ConstValues.slideshow_delay) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) hideUI.run() Toast.makeText(this, R.string.slideshow_started, Toast.LENGTH_SHORT).show() @@ -236,12 +240,13 @@ class ImageViewer: FileViewerActivity() { } private fun askSaveRotation(callback: () -> Unit){ - if (rotationAngle%360 != 0f){ + if (rotationAngle%360 != 0f && !slideshowActive){ ColoredAlertDialogBuilder(this) .keepFullScreen() .setTitle(R.string.warning) .setMessage(R.string.ask_save_img_rotated) .setNegativeButton(R.string.no) { _, _ -> callback() } + .setNeutralButton(R.string.cancel, null) .setPositiveButton(R.string.yes) { _, _ -> val outputStream = ByteArrayOutputStream() if (rotatedBitmap?.compress(