From 1fd3301b4a7ff64d7db0d806cd89f005f034cf50 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 10:24:26 +0100 Subject: [PATCH 01/59] updating a polish string --- .../com/simplemobiletools/gallery/activities/EditActivity.kt | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt index 2ab28c6c4..6d4ceeb76 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt @@ -9,10 +9,10 @@ import android.graphics.Point import android.net.Uri import android.os.Bundle import android.provider.MediaStore -import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import android.widget.RelativeLayout +import androidx.recyclerview.widget.LinearLayoutManager import com.bumptech.glide.Glide import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.DiskCacheStrategy diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 3cbb219cb..5be75c8c7 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -39,7 +39,7 @@ GIFy Obrazy RAW Obrazy SVG - Nie znalazłem multimediów z wybranymi filtrami. + Nie znaleziono multimediów zgodnych z zastosowanymi filtrami. Zmień filtry From 1cd3abbe2acd8bc5b4ce1b1edb7338c5af4db36f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 13:06:38 +0100 Subject: [PATCH 02/59] update commons to 5.2.11 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 0fc90d3d4..a6177dd36 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.8' + implementation 'com.simplemobiletools:commons:5.2.11' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' From 7e510c0d7d39b2322923520ea3dcda6acac1284a Mon Sep 17 00:00:00 2001 From: Ilya Zasimov Date: Sun, 28 Oct 2018 17:49:17 +0300 Subject: [PATCH 03/59] 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"/> + From 2e097c59cb29f344d04ee40d2d4a394cda981b82 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 18:51:27 +0100 Subject: [PATCH 04/59] some updates to starting slideshow from the thumbnails screen --- .../gallery/activities/MediaActivity.kt | 8 ++---- .../gallery/activities/ViewPagerActivity.kt | 28 ++++++------------- app/src/main/res/menu/menu_media.xml | 8 +++--- 3 files changed, 15 insertions(+), 29 deletions(-) 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 e92177b03..59cfc4f03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -249,9 +249,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden() R.id.increase_column_count -> increaseColumnCount() R.id.reduce_column_count -> reduceColumnCount() + R.id.slideshow -> startSlideshow() R.id.settings -> launchSettings() R.id.about -> launchAbout() - R.id.slideshow -> startSlideshow() else -> return super.onOptionsItemSelected(item) } return true @@ -260,10 +260,8 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun startSlideshow() { if (mMedia.isNotEmpty()) { Intent(this, ViewPagerActivity::class.java).apply { - val item = mMedia[0] - if (item is Medium) { - putExtra(PATH, item.path) - } + val item = mMedia.firstOrNull { it is Medium } as? Medium ?: return + putExtra(PATH, item.path) putExtra(SHOW_ALL, mShowAll) putExtra(SLIDESHOW_START_ON_ENTER, true) startActivity(this) 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 97a12f19d..55cc0d488 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -53,8 +53,6 @@ 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 = "" @@ -70,7 +68,6 @@ 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 @@ -104,23 +101,6 @@ 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() { @@ -243,6 +223,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (!isDestroyed) { if (mMediaFiles.isNotEmpty()) { gotMedia(mMediaFiles as ArrayList) + checkSlideshowOnEnter() } } } @@ -268,6 +249,7 @@ 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() @@ -389,6 +371,12 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun checkSlideshowOnEnter() { + if (intent.getBooleanExtra(SLIDESHOW_START_ON_ENTER, false)) { + initSlideshow() + } + } + private fun initSlideshow() { SlideshowDialog(this) { startSlideshow() diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index 2d2d30115..4693f03f1 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -79,6 +79,10 @@ android:id="@+id/reduce_column_count" android:title="@string/reduce_column_count" app:showAsAction="never"/> + - From d821547b3d3d4b476be303088b57012359bbca16 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 18:56:57 +0100 Subject: [PATCH 05/59] move the Menu related functions more up on the viewpager activity --- .../gallery/activities/ViewPagerActivity.kt | 144 +++++++++--------- 1 file changed, 72 insertions(+), 72 deletions(-) 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 55cc0d488..8f03f378d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -155,6 +155,78 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_viewpager, menu) + val currentMedium = getCurrentMedium() ?: return true + currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) + val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 + + menu.apply { + findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 + findItem(R.id.menu_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0 + findItem(R.id.menu_properties).isVisible = visibleBottomActions and BOTTOM_ACTION_PROPERTIES == 0 + findItem(R.id.menu_delete).isVisible = visibleBottomActions and BOTTOM_ACTION_DELETE == 0 + findItem(R.id.menu_share).isVisible = visibleBottomActions and BOTTOM_ACTION_SHARE == 0 + findItem(R.id.menu_edit).isVisible = visibleBottomActions and BOTTOM_ACTION_EDIT == 0 && !currentMedium.isSVG() + findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 + findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 + findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 + findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 + findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 + findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(filesDir.absolutePath) + findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 + findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) + findItem(R.id.menu_rotate).setShowAsAction( + if (mRotationDegrees != 0) { + MenuItem.SHOW_AS_ACTION_ALWAYS + } else { + MenuItem.SHOW_AS_ACTION_IF_ROOM + }) + } + + if (visibleBottomActions != 0) { + updateBottomActionIcons(currentMedium) + } + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (getCurrentMedium() == null) + return true + + when (item.itemId) { + R.id.menu_set_as -> setAs(getCurrentPath()) + R.id.menu_slideshow -> initSlideshow() + R.id.menu_copy_to -> copyMoveTo(true) + R.id.menu_move_to -> copyMoveTo(false) + R.id.menu_open_with -> openPath(getCurrentPath(), true) + R.id.menu_hide -> toggleFileVisibility(true) + R.id.menu_unhide -> toggleFileVisibility(false) + R.id.menu_share -> shareMediumPath(getCurrentPath()) + R.id.menu_delete -> checkDeleteConfirmation() + R.id.menu_rename -> renameFile() + R.id.menu_edit -> openEditor(getCurrentPath()) + R.id.menu_properties -> showProperties() + R.id.menu_show_on_map -> showOnMap() + R.id.menu_rotate_right -> rotateImage(90) + R.id.menu_rotate_left -> rotateImage(270) + R.id.menu_rotate_one_eighty -> rotateImage(180) + R.id.menu_add_to_favorites -> toggleFavorite() + R.id.menu_remove_from_favorites -> toggleFavorite() + R.id.menu_restore_file -> restoreFile() + R.id.menu_force_portrait -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) + R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) + R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) + R.id.menu_save_as -> saveImageAs() + R.id.menu_settings -> launchSettings() + else -> return super.onOptionsItemSelected(item) + } + return true + } + private fun initViewPager() { measureScreen() val uri = intent.data @@ -287,78 +359,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_viewpager, menu) - val currentMedium = getCurrentMedium() ?: return true - currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) - val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 - - menu.apply { - findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 - findItem(R.id.menu_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0 - findItem(R.id.menu_properties).isVisible = visibleBottomActions and BOTTOM_ACTION_PROPERTIES == 0 - findItem(R.id.menu_delete).isVisible = visibleBottomActions and BOTTOM_ACTION_DELETE == 0 - findItem(R.id.menu_share).isVisible = visibleBottomActions and BOTTOM_ACTION_SHARE == 0 - findItem(R.id.menu_edit).isVisible = visibleBottomActions and BOTTOM_ACTION_EDIT == 0 && !currentMedium.isSVG() - findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 - findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 - findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 - findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(filesDir.absolutePath) - findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 - findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) - findItem(R.id.menu_rotate).setShowAsAction( - if (mRotationDegrees != 0) { - MenuItem.SHOW_AS_ACTION_ALWAYS - } else { - MenuItem.SHOW_AS_ACTION_IF_ROOM - }) - } - - if (visibleBottomActions != 0) { - updateBottomActionIcons(currentMedium) - } - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (getCurrentMedium() == null) - return true - - when (item.itemId) { - R.id.menu_set_as -> setAs(getCurrentPath()) - R.id.menu_slideshow -> initSlideshow() - R.id.menu_copy_to -> copyMoveTo(true) - R.id.menu_move_to -> copyMoveTo(false) - R.id.menu_open_with -> openPath(getCurrentPath(), true) - R.id.menu_hide -> toggleFileVisibility(true) - R.id.menu_unhide -> toggleFileVisibility(false) - R.id.menu_share -> shareMediumPath(getCurrentPath()) - R.id.menu_delete -> checkDeleteConfirmation() - R.id.menu_rename -> renameFile() - R.id.menu_edit -> openEditor(getCurrentPath()) - R.id.menu_properties -> showProperties() - R.id.menu_show_on_map -> showOnMap() - R.id.menu_rotate_right -> rotateImage(90) - R.id.menu_rotate_left -> rotateImage(270) - R.id.menu_rotate_one_eighty -> rotateImage(180) - R.id.menu_add_to_favorites -> toggleFavorite() - R.id.menu_remove_from_favorites -> toggleFavorite() - R.id.menu_restore_file -> restoreFile() - R.id.menu_force_portrait -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) - R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) - R.id.menu_save_as -> saveImageAs() - R.id.menu_settings -> launchSettings() - else -> return super.onOptionsItemSelected(item) - } - return true - } - private fun updatePagerItems(media: MutableList) { val pagerAdapter = MyPagerAdapter(this, supportFragmentManager, media) if (!isDestroyed) { From 27166b98e2204d4bad426565ddcf50fd67eadf80 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 19:00:38 +0100 Subject: [PATCH 06/59] fix #1020, slideshow looping --- .../simplemobiletools/gallery/activities/ViewPagerActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 8f03f378d..6fb63e5d4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -452,9 +452,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun slideshowEnded(forward: Boolean) { if (config.loopSlideshow) { if (forward) { - view_pager.setCurrentItem(view_pager.adapter!!.count - 1, false) - } else { view_pager.setCurrentItem(0, false) + } else { + view_pager.setCurrentItem(view_pager.adapter!!.count - 1, false) } } else { stopSlideshow() From 6eb2f60a55b83e0c06ea39a22fa45bf2ce568066 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 19:25:41 +0100 Subject: [PATCH 07/59] fix #1030, handle third party intents sent by Instagram style --- .../gallery/activities/MainActivity.kt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index de25bfda5..84719102c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -664,14 +664,22 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (resultCode == Activity.RESULT_OK) { if (requestCode == PICK_MEDIA && resultData != null) { val resultIntent = Intent() + var resultUri: Uri? = null if (mIsThirdPartyIntent) { when { - intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> fillExtraOutput(resultData) + intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> { + resultUri = fillExtraOutput(resultData) + } resultData.extras?.containsKey(PICKED_PATHS) == true -> fillPickedPaths(resultData, resultIntent) else -> fillIntentPath(resultData, resultIntent) } } + if (resultUri != null) { + resultIntent.data = resultUri + resultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } + setResult(Activity.RESULT_OK, resultIntent) finish() } else if (requestCode == PICK_WALLPAPER) { @@ -682,22 +690,25 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { super.onActivityResult(requestCode, resultCode, resultData) } - private fun fillExtraOutput(resultData: Intent) { - val path = resultData.data.path + private fun fillExtraOutput(resultData: Intent): Uri? { + val file = File(resultData.data.path) var inputStream: InputStream? = null var outputStream: OutputStream? = null try { val output = intent.extras.get(MediaStore.EXTRA_OUTPUT) as Uri - inputStream = FileInputStream(File(path)) + inputStream = FileInputStream(file) outputStream = contentResolver.openOutputStream(output) inputStream.copyTo(outputStream) } catch (e: SecurityException) { showErrorToast(e) } catch (ignored: FileNotFoundException) { + return getFilePublicUri(file, BuildConfig.APPLICATION_ID) } finally { inputStream?.close() outputStream?.close() } + + return null } private fun fillPickedPaths(resultData: Intent, resultIntent: Intent) { From 11b04aed4341e5cae8100bdc32fc1c8425e624ee Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 19:32:57 +0100 Subject: [PATCH 08/59] fix #1016, allow selecting multiple items at third party intents, when appropriate --- .../com/simplemobiletools/gallery/adapters/MediaAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt index 52d40caf8..66de13acd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -81,7 +81,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList if (tmbItem is Medium) { setupThumbnail(itemView, tmbItem) From 9f14626f8430393f8398aeb32f12c39cb8448ebc Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 19:46:48 +0100 Subject: [PATCH 09/59] add some helper extension constants for accessing the recycle bin --- .../simplemobiletools/gallery/activities/MediaActivity.kt | 2 +- .../gallery/activities/ViewPagerActivity.kt | 4 ++-- .../com/simplemobiletools/gallery/adapters/MediaAdapter.kt | 4 ++-- .../com/simplemobiletools/gallery/extensions/Activity.kt | 6 +++--- .../com/simplemobiletools/gallery/extensions/Context.kt | 7 +++++-- 5 files changed, 13 insertions(+), 10 deletions(-) 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 59cfc4f03..cd0eb87dc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -851,7 +851,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { return } - if (config.useRecycleBin && !filtered.first().path.startsWith(filesDir.absolutePath)) { + if (config.useRecycleBin && !filtered.first().path.startsWith(recycleBinPath)) { val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) toast(movingItems) 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 6fb63e5d4..efd5fe23b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -176,7 +176,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(filesDir.absolutePath) + findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) findItem(R.id.menu_rotate).setShowAsAction( @@ -594,7 +594,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } - val tmpPath = "${filesDir.absolutePath}/.tmp_${newPath.getFilenameFromPath()}" + val tmpPath = "$recycleBinPath/.tmp_${newPath.getFilenameFromPath()}" val tmpFileDirItem = FileDirItem(tmpPath, tmpPath.getFilenameFromPath()) try { getFileOutputStream(tmpFileDirItem) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt index 66de13acd..acfbac0aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -115,7 +115,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, mediumDao var pathsCnt = paths.size paths.forEach { val file = File(it) - val internalFile = File(filesDir.absolutePath, it) + val internalFile = File(recycleBinPath, it) try { if (file.copyRecursively(internalFile, true)) { mediumDao.updateDeleted(it, System.currentTimeMillis()) @@ -229,7 +229,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa Thread { paths.forEach { val source = it - val destination = it.removePrefix(filesDir.absolutePath) + val destination = it.removePrefix(recycleBinPath) var inputStream: InputStream? = null var out: OutputStream? = null @@ -256,7 +256,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { Thread { - filesDir.deleteRecursively() + recycleBin.deleteRecursively() galleryDB.MediumDao().clearRecycleBin() galleryDB.DirectoryDao().deleteRecycleBin() toast(R.string.recycle_bin_emptied) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt index 0a54abf6a..2bc1d7c69 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt @@ -104,6 +104,10 @@ val Context.config: Config get() = Config.newInstance(applicationContext) val Context.galleryDB: GalleryDatabase get() = GalleryDatabase.getInstance(applicationContext) +val Context.recycleBin: File get() = filesDir + +val Context.recycleBinPath: String get() = filesDir.absolutePath + fun Context.movePinnedDirectoriesToFront(dirs: ArrayList): ArrayList { val foundFolders = ArrayList() val pinnedFolders = config.pinnedFolders @@ -430,7 +434,6 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag val grouped = mediaFetcher.groupMedia(media, pathToUse) callback(grouped.clone() as ArrayList) - val recycleBinPath = filesDir.absolutePath val mediaToDelete = ArrayList() media.filter { !getDoesFilePathExist(it.path) }.forEach { if (it.path.startsWith(recycleBinPath)) { @@ -470,7 +473,7 @@ fun Context.getFavoritePaths() = galleryDB.MediumDao().getFavoritePaths() as Arr fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { val media = mediumDao.getDeletedMedia() as ArrayList media.forEach { - it.path = File(filesDir.absolutePath, it.path).toString() + it.path = File(recycleBinPath, it.path).toString() } return media } From a37170662c677b0bfb87ed56af65ca8e6ed23125 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 20:09:20 +0100 Subject: [PATCH 10/59] fix #1028, disable the Move operation on items at the recycle bin --- app/build.gradle | 2 +- .../gallery/activities/ViewPagerActivity.kt | 6 ++++++ .../gallery/adapters/MediaAdapter.kt | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a6177dd36..d2a4740fc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.11' + implementation 'com.simplemobiletools:commons:5.2.13' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' 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 efd5fe23b..1a50a42a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -25,6 +25,7 @@ import android.view.MenuItem import android.view.View import android.view.WindowManager import android.view.animation.DecelerateInterpolator +import android.widget.Toast import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.simplemobiletools.commons.dialogs.PropertiesDialog @@ -524,6 +525,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun copyMoveTo(isCopyOperation: Boolean) { val currPath = getCurrentPath() + if (!isCopyOperation && currPath.startsWith(recycleBinPath)) { + toast(R.string.moving_recycle_bin_items_disabled, Toast.LENGTH_LONG) + return + } + val fileDirItems = arrayListOf(FileDirItem(currPath, currPath.getFilenameFromPath())) tryCopyMoveFilesTo(fileDirItems, isCopyOperation) { config.tempFolderPath = "" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt index acfbac0aa..1e8324fde 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -8,6 +8,7 @@ import android.provider.MediaStore import android.view.Menu import android.view.View import android.view.ViewGroup +import android.widget.Toast import com.bumptech.glide.Glide import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter @@ -277,9 +278,18 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList Date: Sun, 28 Oct 2018 20:55:40 +0100 Subject: [PATCH 11/59] fix glitchy fullscreen toggling at PhotoVideo activity --- .../gallery/activities/PhotoVideoActivity.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index 5a2cafd4b..db5f17b03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -9,11 +9,13 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View +import android.view.WindowManager import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.IS_FROM_GALLERY import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.REAL_FILE_PATH +import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.extensions.* import com.simplemobiletools.gallery.fragments.PhotoFragment @@ -83,6 +85,11 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } } + if (isPiePlus()) { + window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + } + showSystemUI(true) val bundle = Bundle() val file = File(mUri.toString()) From cb346af279837ff905ea7be337473864a6dbcdcb Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 20:59:40 +0100 Subject: [PATCH 12/59] hide the bottom Rename button at PhotoVideo activity --- .../simplemobiletools/gallery/activities/PhotoVideoActivity.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index db5f17b03..a0fdc7157 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -188,7 +188,8 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } private fun initBottomActionButtons() { - arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, bottom_toggle_file_visibility).forEach { + arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, + bottom_toggle_file_visibility, bottom_rename).forEach { it.beGone() } From b53bd52adfd444d23cfb89c2935f97f10687a5b1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 22:21:20 +0100 Subject: [PATCH 13/59] fix #1032, make the instant switch area at landscape mode wider --- .../gallery/fragments/PhotoFragment.kt | 8 ++++ .../gallery/fragments/VideoFragment.kt | 48 +++++++++++-------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt index ed82b721c..28897383b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt @@ -162,6 +162,7 @@ class PhotoFragment : ViewPagerFragment() { initExtendedDetails() wasInit = true checkIfPanorama() + updateInstantSwitchWidths() return view } @@ -542,6 +543,7 @@ class PhotoFragment : ViewPagerFragment() { } initExtendedDetails() + updateInstantSwitchWidths() } private fun hideZoomableView() { @@ -557,6 +559,12 @@ class PhotoFragment : ViewPagerFragment() { listener?.fragmentClicked() } + private fun updateInstantSwitchWidths() { + val newWidth = resources.getDimension(R.dimen.instant_change_bar_width) + if (activity?.portrait == false) activity!!.navigationBarWidth else 0 + view.instant_prev_item.layoutParams.width = newWidth.toInt() + view.instant_next_item.layoutParams.width = newWidth.toInt() + } + override fun fullscreenToggled(isFullscreen: Boolean) { this.isFullscreen = isFullscreen view.photo_details.apply { 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 b4a09d681..787bab494 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -43,7 +43,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mTextureView: TextureView? = null private var mCurrTimeView: TextView? = null private var mSeekBar: SeekBar? = null - private var mView: View? = null private var mExoPlayer: SimpleExoPlayer? = null private var mVideoSize = Point(0, 0) private var mTimerHandler = Handler() @@ -68,6 +67,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private lateinit var mBrightnessSideScroll: MediaSideScroll private lateinit var mVolumeSideScroll: MediaSideScroll + lateinit var mView: View lateinit var medium: Medium override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -103,7 +103,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S storeStateVariables() medium = arguments!!.getSerializable(MEDIUM) as Medium - Glide.with(context!!).load(medium.path).into(mView!!.video_preview) + Glide.with(context!!).load(medium.path).into(mView.video_preview) // setMenuVisibility is not called at VideoActivity (third party intent) if (!mIsFragmentVisible && activity is VideoActivity) { @@ -117,7 +117,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mVideoSize.y = y mIsPanorama = x == y * 2 if (mIsPanorama) { - mView!!.apply { + mView.apply { panorama_outline.beVisible() video_play_outline.beGone() mVolumeSideScroll.beGone() @@ -144,7 +144,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setVideoSize() } - mView!!.apply { + mView.apply { mBrightnessSideScroll.initialize(activity!!, slide_info, true, container) { x, y -> video_holder.performClick() } @@ -162,17 +162,18 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } setupVideoDuration() + updateInstantSwitchWidths() return mView } override fun onResume() { super.onResume() - activity!!.updateTextColors(mView!!.video_holder) + activity!!.updateTextColors(mView.video_holder) val config = context!!.config val allowVideoGestures = config.allowVideoGestures val allowInstantChange = config.allowInstantChange - mView!!.apply { + mView.apply { video_volume_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) video_brightness_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) @@ -222,6 +223,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setVideoSize() initTimeHolder() checkExtendedDetails() + updateInstantSwitchWidths() } private fun storeStateVariables() { @@ -237,9 +239,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S if (activity == null) return - mView!!.video_play_outline.setOnClickListener { togglePlayPause() } + mView.video_play_outline.setOnClickListener { togglePlayPause() } - mTextureView = mView!!.video_surface + mTextureView = mView.video_surface mTextureView!!.setOnClickListener { toggleFullscreen() } mTextureView!!.surfaceTextureListener = this @@ -331,7 +333,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mTimeHolder.setPadding(left, top, right, bottom) - mSeekBar = mView!!.video_seekbar + mSeekBar = mView.video_seekbar mSeekBar!!.setOnSeekBarChangeListener(this) mTimeHolder.beInvisibleIf(mIsFullscreen) } @@ -356,7 +358,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun setupTimeHolder() { mSeekBar!!.max = mDuration - mView!!.video_duration.text = mDuration.getFormattedDuration() + mView.video_duration.text = mDuration.getFormattedDuration() setupTimer() } @@ -417,8 +419,8 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S return } - if (mView!!.video_preview.isVisible()) { - mView!!.video_preview.beGone() + if (mView.video_preview.isVisible()) { + mView.video_preview.beGone() initExoPlayer() } @@ -428,8 +430,8 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mIsPlaying = true mExoPlayer?.playWhenReady = true - mView!!.video_play_outline.setImageResource(R.drawable.ic_pause) - mView!!.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA + mView.video_play_outline.setImageResource(R.drawable.ic_pause) + mView.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) schedulePlayPauseFadeOut() } @@ -444,8 +446,8 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mExoPlayer?.playWhenReady = false } - mView?.video_play_outline?.setImageResource(R.drawable.ic_play) - mView?.video_play_outline?.alpha = PLAY_PAUSE_VISIBLE_ALPHA + mView.video_play_outline?.setImageResource(R.drawable.ic_play) + mView.video_play_outline?.alpha = PLAY_PAUSE_VISIBLE_ALPHA activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) schedulePlayPauseFadeOut() } @@ -453,7 +455,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun schedulePlayPauseFadeOut() { mHidePlayPauseHandler.removeCallbacksAndMessages(null) mHidePlayPauseHandler.postDelayed({ - mView!!.video_play_outline.animate().alpha(0f).start() + mView.video_play_outline.animate().alpha(0f).start() }, HIDE_PLAY_PAUSE_DELAY) } @@ -564,7 +566,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun checkExtendedDetails() { if (context!!.config.showExtendedDetails) { - mView!!.video_details.apply { + mView.video_details.apply { beInvisible() // make it invisible so we can measure it, but not show yet text = getMediumExtendedDetails(medium) onGlobalLayout { @@ -579,7 +581,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } } else { - mView!!.video_details.beGone() + mView.video_details.beGone() } } @@ -633,10 +635,16 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } + private fun updateInstantSwitchWidths() { + val newWidth = resources.getDimension(R.dimen.instant_change_bar_width) + if (activity?.portrait == false) activity!!.navigationBarWidth else 0 + mView.instant_prev_item.layoutParams.width = newWidth.toInt() + mView.instant_next_item.layoutParams.width = newWidth.toInt() + } + override fun fullscreenToggled(isFullscreen: Boolean) { mIsFullscreen = isFullscreen checkFullscreen() - mView!!.video_details.apply { + mView.video_details.apply { if (mStoredShowExtendedDetails && isVisible()) { animate().y(getExtendedDetailsY(height)) From 9ed420daa13fd2f96f9ef578fe704112739b0074 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 28 Oct 2018 23:04:09 +0100 Subject: [PATCH 14/59] fix #835, open files without extension at PhotoVideo activity --- .../gallery/activities/PhotoVideoActivity.kt | 20 +++++++++++-------- .../gallery/activities/ViewPagerActivity.kt | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index a0fdc7157..e3a243a53 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -64,20 +64,24 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList mUri = intent.data ?: return if (intent.extras?.containsKey(REAL_FILE_PATH) == true) { val realPath = intent.extras.getString(REAL_FILE_PATH) - sendViewPagerIntent(realPath) - finish() - return + if (realPath?.getFilenameFromPath()?.contains('.') == true) { + sendViewPagerIntent(realPath) + finish() + return + } } mIsFromGallery = intent.getBooleanExtra(IS_FROM_GALLERY, false) if (mUri!!.scheme == "file") { - scanPathRecursively(mUri!!.path) - sendViewPagerIntent(mUri!!.path) - finish() - return + if (mUri!!.path?.getFilenameFromPath()?.contains('.') == true) { + scanPathRecursively(mUri!!.path) + sendViewPagerIntent(mUri!!.path) + finish() + return + } } else { val path = applicationContext.getRealPathFromURI(mUri!!) ?: "" - if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms") { + if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && mUri!!.path.getFilenameFromPath().contains('.')) { scanPathRecursively(mUri!!.path) sendViewPagerIntent(path) finish() 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 1a50a42a4..d7f5812a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -1004,7 +1004,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun gotMedia(thumbnailItems: ArrayList) { - val media = thumbnailItems.filter { it is Medium }.map { it as Medium } as ArrayList + val media = thumbnailItems.asSequence().filter { it is Medium }.map { it as Medium }.toMutableList() as ArrayList if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) { return } From 8ff808b7e6f4c362d0437e3faea9046d6a53d393 Mon Sep 17 00:00:00 2001 From: FTno <16176811+FTno@users.noreply.github.com> Date: Mon, 29 Oct 2018 16:02:40 +0100 Subject: [PATCH 15/59] Update strings.xml Norwegian (nb) translation update --- app/src/main/res/values-nb/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index dbaa4a07f..238c35114 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -38,7 +38,7 @@ Videoer GIF-bilder RAW-format-bilder - SVGs + SVG-bilder Ingen media-filer er funnet med de valgte filtrene. Endre filtere @@ -159,10 +159,10 @@ Gjør en ekstra sjekk for å unngå visning av ugyldige filer Vis noen handlingsknapper nederst på skjermen Vis papirkurven på mappeskjermen - Deep zoomable images - Show images in the highest possible quality - Show the Recycle Bin as the last item on the main screen - Allow closing the fullscreen view with a down gesture + Dyp zoombare bilder + Vis bilder i høyest mulig kvalitet + Vis papirkurven som siste element på hovedskjermen + Tillat lukking av mediavisningen med en nedoverbevegelse Minibilder From 6d0c5fdf65012d1533090475a0a719805494861c Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 19:19:32 +0100 Subject: [PATCH 16/59] improving the panoramic video check, do not rely on 2:1 aspect ratio --- app/build.gradle | 2 +- .../gallery/fragments/VideoFragment.kt | 68 ++++++++++++++++++- .../gallery/helpers/IsoTypeReader.kt | 27 ++++++++ 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/helpers/IsoTypeReader.kt diff --git a/app/build.gradle b/app/build.gradle index d2a4740fc..7db11603b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.13' + implementation 'com.simplemobiletools:commons:5.2.14' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' 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 787bab494..8192b204e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -36,9 +36,13 @@ import com.simplemobiletools.gallery.views.MediaSideScroll import kotlinx.android.synthetic.main.bottom_video_time_holder.view.* import kotlinx.android.synthetic.main.pager_video_item.view.* import java.io.File +import java.io.FileInputStream +import java.nio.ByteBuffer +import java.nio.channels.FileChannel class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, SeekBar.OnSeekBarChangeListener { private val PROGRESS = "progress" + private val FILE_CHANNEL_CONTAINERS = arrayListOf("moov", "trak", "mdia", "minf", "udta", "stbl") private var mTextureView: TextureView? = null private var mCurrTimeView: TextView? = null @@ -112,10 +116,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mIsFullscreen = activity!!.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN initTimeHolder() + checkIfPanorama() + medium.path.getVideoResolution()?.apply { mVideoSize.x = x mVideoSize.y = y - mIsPanorama = x == y * 2 if (mIsPanorama) { mView.apply { panorama_outline.beVisible() @@ -628,6 +633,67 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mIsDragged = false } + private fun checkIfPanorama() { + try { + val fis = FileInputStream(File(medium.path)) + parseFileChannel(fis.channel, 0, 0, 0) + } catch (ignored: Exception) { + } catch (ignored: OutOfMemoryError) { + } + } + + // based on https://github.com/sannies/mp4parser/blob/master/examples/src/main/java/com/google/code/mp4parser/example/PrintStructure.java + private fun parseFileChannel(fc: FileChannel, level: Int, start: Long, end: Long) { + try { + var iteration = 0 + var currEnd = end + fc.position(start) + if (currEnd <= 0) { + currEnd = start + fc.size() + } + + while (currEnd - fc.position() > 8) { + // just a check to avoid deadloop at some videos + if (iteration++ > 50) { + return + } + + val begin = fc.position() + val byteBuffer = ByteBuffer.allocate(8) + fc.read(byteBuffer) + byteBuffer.rewind() + val size = IsoTypeReader.readUInt32(byteBuffer) + val type = IsoTypeReader.read4cc(byteBuffer) + val newEnd = begin + size + + if (type == "uuid") { + val fis = FileInputStream(File(medium.path)) + fis.skip(begin) + + val sb = StringBuilder() + val buffer = ByteArray(1024) + while (true) { + val n = fis.read(buffer) + if (n != -1) { + sb.append(String(buffer, 0, n)) + } else { + break + } + } + mIsPanorama = sb.toString().contains("true") || sb.toString().contains("GSpherical:Spherical=\"True\"") + return + } + + if (FILE_CHANNEL_CONTAINERS.contains(type)) { + parseFileChannel(fc, level + 1, begin + 8, newEnd) + } + + fc.position(newEnd) + } + } catch (ignored: Exception) { + } + } + private fun openPanorama() { Intent(context, PanoramaVideoActivity::class.java).apply { putExtra(PATH, medium.path) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/IsoTypeReader.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/IsoTypeReader.kt new file mode 100644 index 000000000..70d6f6afa --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/IsoTypeReader.kt @@ -0,0 +1,27 @@ +package com.simplemobiletools.gallery.helpers + +import java.io.UnsupportedEncodingException +import java.nio.ByteBuffer +import java.nio.charset.Charset + +// file taken from the https://github.com/sannies/mp4parser project, used at determining if a video is a panoramic one +object IsoTypeReader { + fun readUInt32(bb: ByteBuffer): Long { + var i = bb.int.toLong() + if (i < 0) { + i += 1L shl 32 + } + return i + } + + fun read4cc(bb: ByteBuffer): String? { + val codeBytes = ByteArray(4) + bb.get(codeBytes) + + return try { + String(codeBytes, Charset.forName("ISO-8859-1")) + } catch (e: UnsupportedEncodingException) { + null + } + } +} From e63393cbd09142a6451b0ce6c8e93e2f2ccb47fa Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 19:36:58 +0100 Subject: [PATCH 17/59] avoid showing the Pause button at video end with Loop videos option enabled --- .../gallery/fragments/VideoFragment.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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 8192b204e..f28f5f886 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -429,16 +429,20 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S initExoPlayer() } - if (videoEnded()) { + val wasEnded = videoEnded() + if (wasEnded) { setProgress(0) } + if (!wasEnded || context?.config?.loopVideos == false) { + mView.video_play_outline.setImageResource(R.drawable.ic_pause) + mView.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA + } + + schedulePlayPauseFadeOut() mIsPlaying = true mExoPlayer?.playWhenReady = true - mView.video_play_outline.setImageResource(R.drawable.ic_pause) - mView.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - schedulePlayPauseFadeOut() } private fun pauseVideo() { @@ -453,8 +457,8 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mView.video_play_outline?.setImageResource(R.drawable.ic_play) mView.video_play_outline?.alpha = PLAY_PAUSE_VISIBLE_ALPHA - activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) schedulePlayPauseFadeOut() + activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } private fun schedulePlayPauseFadeOut() { @@ -464,7 +468,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S }, HIDE_PLAY_PAUSE_DELAY) } - private fun videoEnded() = mExoPlayer?.currentPosition ?: 0 >= mExoPlayer?.duration ?: 0 + private fun videoEnded(): Boolean { + val currentPos = mExoPlayer?.currentPosition ?: 0 + val duration = mExoPlayer?.duration ?: 0 + return currentPos != 0L && currentPos >= duration + } private fun setProgress(seconds: Int) { mExoPlayer?.seekTo(seconds * 1000L) From ca85e8a3dfe85cadad64bd058c773c5c44d77b23 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 22:20:07 +0100 Subject: [PATCH 18/59] renaming some hidden item password protection related items --- app/build.gradle | 2 +- .../gallery/activities/SettingsActivity.kt | 10 +++++----- app/src/main/res/layout/activity_settings.xml | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7db11603b..664509f03 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.14' + implementation 'com.simplemobiletools:commons:5.2.15' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' 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 f58789dd1..502975d2d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -53,7 +53,7 @@ class SettingsActivity : SimpleActivity() { setupScrollHorizontally() setupScreenRotation() setupHideSystemUI() - setupPasswordProtection() + setupHiddenItemPasswordProtection() setupAppPasswordProtection() setupDeleteEmptyFolders() setupAllowPhotoGestures() @@ -235,14 +235,14 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupPasswordProtection() { - settings_password_protection.isChecked = config.isPasswordProtectionOn - settings_password_protection_holder.setOnClickListener { + private fun setupHiddenItemPasswordProtection() { + settings_hidden_item_password_protection.isChecked = config.isPasswordProtectionOn + settings_hidden_item_password_protection_holder.setOnClickListener { val tabToShow = if (config.isPasswordProtectionOn) config.protectionType else SHOW_ALL_TABS SecurityDialog(this, config.passwordHash, tabToShow) { hash, type, success -> if (success) { val hasPasswordProtection = config.isPasswordProtectionOn - settings_password_protection.isChecked = !hasPasswordProtection + settings_hidden_item_password_protection.isChecked = !hasPasswordProtection config.isPasswordProtectionOn = !hasPasswordProtection config.passwordHash = if (hasPasswordProtection) "" else hash config.protectionType = type diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 27fd9bd44..f2271780d 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -898,7 +898,7 @@ android:textSize="@dimen/smaller_text_size"/> Date: Tue, 30 Oct 2018 22:53:19 +0100 Subject: [PATCH 19/59] adding a checkbox for password protection file deletion --- app/build.gradle | 2 +- .../gallery/activities/MainActivity.kt | 2 +- .../gallery/activities/SettingsActivity.kt | 51 ++++++++++++++----- .../gallery/activities/ViewPagerActivity.kt | 2 +- app/src/main/res/layout/activity_settings.xml | 24 +++++++++ 5 files changed, 64 insertions(+), 17 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 664509f03..158049f58 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.15' + implementation 'com.simplemobiletools:commons:5.2.17' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index 84719102c..d2ab4df1f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -117,7 +117,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { showFilterMediaDialog() } - mIsPasswordProtectionPending = config.appPasswordProtectionOn + mIsPasswordProtectionPending = config.isAppPasswordProtectionOn setupLatestMediaId() // notify some users about the Clock app 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 502975d2d..c50d01c1a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -55,6 +55,7 @@ class SettingsActivity : SimpleActivity() { setupHideSystemUI() setupHiddenItemPasswordProtection() setupAppPasswordProtection() + setupFileDeletionPasswordProtection() setupDeleteEmptyFolders() setupAllowPhotoGestures() setupAllowVideoGestures() @@ -236,19 +237,19 @@ class SettingsActivity : SimpleActivity() { } private fun setupHiddenItemPasswordProtection() { - settings_hidden_item_password_protection.isChecked = config.isPasswordProtectionOn + settings_hidden_item_password_protection.isChecked = config.isHiddenPasswordProtectionOn settings_hidden_item_password_protection_holder.setOnClickListener { - val tabToShow = if (config.isPasswordProtectionOn) config.protectionType else SHOW_ALL_TABS - SecurityDialog(this, config.passwordHash, tabToShow) { hash, type, success -> + val tabToShow = if (config.isHiddenPasswordProtectionOn) config.hiddenProtectionType else SHOW_ALL_TABS + SecurityDialog(this, config.hiddenPasswordHash, tabToShow) { hash, type, success -> if (success) { - val hasPasswordProtection = config.isPasswordProtectionOn + val hasPasswordProtection = config.isHiddenPasswordProtectionOn settings_hidden_item_password_protection.isChecked = !hasPasswordProtection - config.isPasswordProtectionOn = !hasPasswordProtection - config.passwordHash = if (hasPasswordProtection) "" else hash - config.protectionType = type + config.isHiddenPasswordProtectionOn = !hasPasswordProtection + config.hiddenPasswordHash = if (hasPasswordProtection) "" else hash + config.hiddenProtectionType = type - if (config.isPasswordProtectionOn) { - val confirmationTextId = if (config.protectionType == PROTECTION_FINGERPRINT) + if (config.isHiddenPasswordProtectionOn) { + val confirmationTextId = if (config.hiddenProtectionType == PROTECTION_FINGERPRINT) R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } } @@ -258,18 +259,18 @@ class SettingsActivity : SimpleActivity() { } private fun setupAppPasswordProtection() { - settings_app_password_protection.isChecked = config.appPasswordProtectionOn + settings_app_password_protection.isChecked = config.isAppPasswordProtectionOn settings_app_password_protection_holder.setOnClickListener { - val tabToShow = if (config.appPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS + val tabToShow = if (config.isAppPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS SecurityDialog(this, config.appPasswordHash, tabToShow) { hash, type, success -> if (success) { - val hasPasswordProtection = config.appPasswordProtectionOn + val hasPasswordProtection = config.isAppPasswordProtectionOn settings_app_password_protection.isChecked = !hasPasswordProtection - config.appPasswordProtectionOn = !hasPasswordProtection + config.isAppPasswordProtectionOn = !hasPasswordProtection config.appPasswordHash = if (hasPasswordProtection) "" else hash config.appProtectionType = type - if (config.appPasswordProtectionOn) { + if (config.isAppPasswordProtectionOn) { val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT) R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } @@ -279,6 +280,28 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupFileDeletionPasswordProtection() { + settings_file_deletion_password_protection.isChecked = config.isDeletePasswordProtectionOn + settings_file_deletion_password_protection_holder.setOnClickListener { + val tabToShow = if (config.isDeletePasswordProtectionOn) config.deleteProtectionType else SHOW_ALL_TABS + SecurityDialog(this, config.deletePasswordHash, tabToShow) { hash, type, success -> + if (success) { + val hasPasswordProtection = config.isDeletePasswordProtectionOn + settings_file_deletion_password_protection.isChecked = !hasPasswordProtection + config.isDeletePasswordProtectionOn = !hasPasswordProtection + config.deletePasswordHash = if (hasPasswordProtection) "" else hash + config.deleteProtectionType = type + + if (config.isDeletePasswordProtectionOn) { + val confirmationTextId = if (config.deleteProtectionType == PROTECTION_FINGERPRINT) + R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully + ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } + } + } + } + } + } + private fun setupDeleteEmptyFolders() { settings_delete_empty_folders.isChecked = config.deleteEmptyFolders settings_delete_empty_folders_holder.setOnClickListener { 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 d7f5812a4..eee326af9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -270,7 +270,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (intent.extras?.containsKey(IS_VIEW_INTENT) == true) { if (isShowHiddenFlagNeeded()) { - if (!config.isPasswordProtectionOn) { + if (!config.isHiddenPasswordProtectionOn) { config.temporarilyShowHidden = true } } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index f2271780d..480a71a42 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -945,6 +945,30 @@ + + + + + + Date: Tue, 30 Oct 2018 23:18:36 +0100 Subject: [PATCH 20/59] adding password protection to file move and deleting --- app/build.gradle | 2 +- .../gallery/activities/ViewPagerActivity.kt | 14 +++++- .../gallery/adapters/DirectoryAdapter.kt | 44 ++++++++++++------- .../gallery/adapters/MediaAdapter.kt | 14 +++++- 4 files changed, 52 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 158049f58..233965a04 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.17' + implementation 'com.simplemobiletools:commons:5.2.18' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' 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 eee326af9..920745ec6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -202,7 +202,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_set_as -> setAs(getCurrentPath()) R.id.menu_slideshow -> initSlideshow() R.id.menu_copy_to -> copyMoveTo(true) - R.id.menu_move_to -> copyMoveTo(false) + R.id.menu_move_to -> moveFileTo() R.id.menu_open_with -> openPath(getCurrentPath(), true) R.id.menu_hide -> toggleFileVisibility(true) R.id.menu_unhide -> toggleFileVisibility(false) @@ -523,6 +523,12 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun moveFileTo() { + handleDeletePasswordProtection { + copyMoveTo(false) + } + } + private fun copyMoveTo(isCopyOperation: Boolean) { val currPath = getCurrentPath() if (!isCopyOperation && currPath.startsWith(recycleBinPath)) { @@ -918,7 +924,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View return } - if (config.tempSkipDeleteConfirmation || config.skipDeleteConfirmation) { + if (config.isDeletePasswordProtectionOn) { + handleDeletePasswordProtection { + deleteConfirmed() + } + } else if (config.tempSkipDeleteConfirmation || config.skipDeleteConfirmation) { deleteConfirmed() } else { askConfirmDelete() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt index b40908788..58418c0fd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt @@ -96,7 +96,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList toggleFoldersVisibility(false) R.id.cab_exclude -> tryExcludeFolder() R.id.cab_copy_to -> copyMoveTo(true) - R.id.cab_move_to -> copyMoveTo(false) + R.id.cab_move_to -> moveFilesTo() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() R.id.cab_select_photo -> changeAlbumCover(false) @@ -310,6 +310,12 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList() val showHidden = activity.config.shouldShowHidden @@ -343,24 +349,28 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList activity.handleDeletePasswordProtection { deleteFolders() } + config.skipDeleteConfirmation -> deleteFolders() + else -> { + val itemsCnt = selectedKeys.size + val items = resources.getQuantityString(R.plurals.delete_items, itemsCnt, itemsCnt) + val fileDirItem = getFirstSelectedItem() ?: return + val baseString = if (!config.useRecycleBin || (isOneItemSelected() && fileDirItem.isRecycleBin()) || (isOneItemSelected() && fileDirItem.areFavorites())) { + R.string.deletion_confirmation + } else { + R.string.move_to_recycle_bin_confirmation + } + + var question = String.format(resources.getString(baseString), items) + val warning = resources.getQuantityString(R.plurals.delete_warning, itemsCnt, itemsCnt) + question += "\n\n$warning" + ConfirmationDialog(activity, question) { + deleteFolders() + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt index 1e8324fde..14cb627d0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -140,7 +140,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList restoreFiles() R.id.cab_share -> shareMedia() R.id.cab_copy_to -> copyMoveTo(true) - R.id.cab_move_to -> copyMoveTo(false) + R.id.cab_move_to -> moveFilesTo() R.id.cab_select_all -> selectAll() R.id.cab_open_with -> openPath() R.id.cab_fix_date_taken -> fixDateTaken() @@ -275,6 +275,12 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList Date: Tue, 30 Oct 2018 23:24:31 +0100 Subject: [PATCH 21/59] launch the panorama viewer at video fragment when seekbar is pressed --- .../com/simplemobiletools/gallery/fragments/VideoFragment.kt | 5 +++++ 1 file changed, 5 insertions(+) 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 f28f5f886..438565493 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -629,6 +629,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } override fun onStopTrackingTouch(seekBar: SeekBar) { + if (mIsPanorama) { + openPanorama() + return + } + if (mExoPlayer == null) return From a5f52416b40bc669cd50e9cffcfad701d4b1d7f5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 23:32:40 +0100 Subject: [PATCH 22/59] update commons to 5.2.19 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 233965a04..814423e67 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.18' + implementation 'com.simplemobiletools:commons:5.2.19' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' From c7039df24a15445b31e6d0f214d1ce4c5fb3d542 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 23:36:05 +0100 Subject: [PATCH 23/59] adding the new option for password protection to release notes --- .../com/simplemobiletools/gallery/activities/MainActivity.kt | 1 + app/src/main/res/values/donottranslate.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index d2ab4df1f..8662466f9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -1239,6 +1239,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { add(Release(184, R.string.release_184)) add(Release(201, R.string.release_201)) add(Release(202, R.string.release_202)) + add(Release(206, R.string.release_206)) checkWhatsNew(this, BuildConfig.VERSION_CODE) } } diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index ec39823c1..2c669f7a8 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -2,6 +2,7 @@ + Added a new option for password protecting file deletion/move Added a new option for showing the Recycle Bin as the last folder Added a new settings toggle \"Show images in the highest possible quality\"\n From b28dde747b4fe3cccf86db2b9e3edcad8feacb39 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 23:40:52 +0100 Subject: [PATCH 24/59] update version to 5.1.2 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 814423e67..984af8da6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.simplemobiletools.gallery" minSdkVersion 21 targetSdkVersion 28 - versionCode 205 - versionName "5.1.1" + versionCode 206 + versionName "5.1.2" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From c8d7935705262ea797b9ef691f52c6de34d5f12e Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 30 Oct 2018 23:40:57 +0100 Subject: [PATCH 25/59] updating changelog --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4f494494..aef213af3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ Changelog ========== +Version 5.1.2 *(2018-10-30)* +---------------------------- + + * Added a new option for password protecting file deletion/move + * Improved panorama video detection + * Improved the opening of media files without file extension + * Disabled move operation on Recycle bin items, use Restore + * Fixed handling of some third party image picker intents + * Fixed slideshow looping and a couple other UX glitches + * Improved the stability of retrieving cached files + * Hi + Version 5.1.1 *(2018-10-23)* ---------------------------- From 70656183a843b5dc4e9cfc2fc9ebdb7b1093e631 Mon Sep 17 00:00:00 2001 From: matej bobek Date: Tue, 30 Oct 2018 23:14:25 +0100 Subject: [PATCH 26/59] #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 27/59] #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 استوديو لعرض الصور والفيديو بدون اعلانات. - أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n - https://www.simplemobiletools.com + + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + + It is open source, contains no ads or unnecessary permissions. + + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Şəkil və videolara baxmaq üçün reklamsız qalereya. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 07c2011a0..69eefa7e1 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -211,15 +211,31 @@ Una galeria per veure imatges i vídeos sense publicitat. - Una eina senzilla que es pot fer servir per veure imatges i vídeos. Els elements es poden ordenar per data, mida o nom, tant ascendent com descendent. Es pot fer zoom a les imatges. Els arxius de mitjans es mostren en múltiples columnes depenent de la mida de la pantalla i es pot canviar el número de columnes mitjançant gestos. Permet canviar el nom, compartir, esborrar, i moure. Les imatges també es poden retalla, rotar o utilitzar com a fons de pantalla directament des de l\'aplicació. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Gallery també s\'ofereix per us de tercers, per visualitzar imatges/vídeos, agregar adjunts a clients de correu, etc. Es perfecta per l\'ús diari. + It is open source, contains no ads or unnecessary permissions. - El permís d\'empremtes dactilars és necessari per bloquejar la visibilitat d\'elements ocults o tota l\'aplicació. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - No conté ni publicitat ni permisos innecessaris. Es totalment Lliure i proporciona colors personalitzables. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - 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 + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Galerie na prohlížení obrázků a videí bez reklam. - Jednoduchý nástroj použitelný na prohlížení obrázků a videí. Položky mohou být seřazeny podle data, velikosti či názvu vzestupně i sestupně. Obrázky lze přiblížit. Položky jsou zobrazeny ve více sloupcích v závislosti na velikosti displeje, počet sloupců je možné měnit gestem. Soubory můžete přejmenovávat, sdílet, mazat, kopírovat i přesouvat. Obrázky lze ořezávat, otáčen, nebo nastavit jako tapetu přímo v aplikaci. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerie je též k disposici ostatním aplikacím za účelem zobrazení fotografií a videí a přidávání příloh v e-mailových klientech. Je vhodná ke každodennímu použití. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Neobsahuje žádné reklamy ani nepotřebná oprávnění a má otevřený zdrojový kód. Poskytuje možnost změny barev rozhraní. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Táto aplikace je jen jednou ze skupiny aplikací. Všechny tyto aplikace naleznete na https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1339b5dda..8daec363c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -210,15 +210,31 @@ Eine schlichte Galerie zum Betrachten von Bildern und Videos, ganz ohne Werbung. - Eine schlichte App zum Betrachten von Bildern und Videos. Alle Medien können nach Datum, Größe, Name sowie auf- oder absteigend sortiert werden, in Bilder kann auch hineingezoomt werden. Die Vorschau-Kacheln werden in mehreren Spalten abhängig von der Displaygröße angezeigt, die Spaltenanzahl ist mit Zweifingergesten änderbar. Die Medien können umbenannt, geteilt, gelöscht, kopiert und verschoben werden. Bilder können direkt aus der App heraus zugeschnitten, gedreht oder als Hintergrund festgelegt werden. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Diese Galerie bietet auch für Drittanbieter einige Funktionen an: zur Vorschau von Bildern/Videos, zum Hinzufügen von Anhängen bei Email-Apps, etc. Sie ist perfekt für den täglichen Gebrauch. + It is open source, contains no ads or unnecessary permissions. - Die Berechtigung für Fingerabdrücke wird nur benötigt, um die Sichtbarkeit von versteckten Dateien oder die gesamte App zu sperren. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Beinhaltet keine Werbung oder unnötige Berechtigungen. Sie ist komplett Open Source, alle verwendeten Farben sind anpassbar. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Μία Gallery για την προβολή φωτογραφιών και βίντεο χωρίς διαφημίσεις. - Μία απλή εφαρμογή για την προβολή φωτογραφιών και βίντεο. Τα αντικείμενα μπορούνα να ταξινομηθούν με βάση την ημερ/νία, το μέγεθος και το όνομα με αύξουσα ή φθήνουσα σειρά, οι φωτογραφίες μπορούν να μεγεθυνθούν. Τα αρχεία πολυμέσων εμφανίζονται σε πολλαπλές στήλες ανάλογα με τον μέγεθος της οθόνης και μπορείτε να αλλάξετε τον αριθμό των στηλών με τα 2 δάχτυλα (pintch). Μπορούν να μετονομαστούν, να μοιραστούν, να διαγραφούν, να αντιγραφούν και να μετακινηθούν. Οι εικόνες επίσης μπορούν να κοπούν, να περιστραφούν, να αντιστραφούν ή να οριστούν ως ταπετσαρίες κατευθείαν από την εφαρμογή. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Η Gallery επίσης μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές για προεμφάνιση φωτογραφιών / βίντεο, να μπουν ως επισυνάψεις σε εφαρμογές email κλπ. Είναι τέλεια για καθημερινή χρήση. + It is open source, contains no ads or unnecessary permissions. - Η εξουσιοδότηση δαχτυλικού αποτυπώματος χρειάζεται για το κλείδωμα των κρυφών αντικειμένων ή ολόκληρης της εφαρμογής. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Δεν περιέχει διαφημίσεις ή περιττά δικαιώματα. Έιναι όλη ανοιχτού κώδικα και παρέχει προσαρμόσιμα χρώματα για την εφαρμογή. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Αυτή η εφαρμογή είναι μέρος μιας σειράς εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Una galería para ver fotos y vídeos sin publicidad. - Una herramienta sencilla que se puede usar para ver fotos y vídeos. Los elementos se pueden ordenar por fecha, tamaño, nombre tanto ascendente como descendente; se puede hacer zoom en las fotos. Los archivos de medios se muestran en múltiples columnas dependiendo del tamaño de la pantalla, y se puede cambiar el número de columnas mediante gestos. Permite renombrar, compartir, borrar, mover. Las imágenes también se pueden recortar, rotar o usarse como fondo de pantalla directamente desde la aplicación. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Gallery también se ofrece para uso de terceros para previsualizar imágenes/vídeos, agregar adjuntos en clientes de correo, etc. Es perfecta para uso diario. + It is open source, contains no ads or unnecessary permissions. - El permiso de huella digital es necesario para bloquear la visibilidad de elementos ocultos o toda la aplicación. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - No contiene publicidad ni permisos innecesarios. Es totalmente libre, proporciona colores personalizables. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Esta aplicación es solamente una pieza de una serie más grande de aplicaciones. Puede encontrar el resto en https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Galleria kuvien ja videoiden katsomiseen ilman mainoksia. - Yksinkertainen työkalu kuvien ja videoiden katsomiseen. Kohteita voidaan lajitella päivän, koon, nimen mukaan, nousevassa ja laskevassa järjestyksessä. Kuvia voidaan zoomata. Mediatiedostot näkyvät useissa sarakkeissa joiden määrää muutetaan nipistys-eleellä. Tiedostoja voidaan uudelleennimetä, jakaa, poistaa, kopioida. Kuvia voi rajata, pyörittää tai asettaa taustakuvaksi suoraan sovelluksesta. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galleriaa tarjotaan myös kolmansille osapuolille kuvien / videoiden tarkasteluun, liitteiden lisäämiseksi sähköpostiin yms. Täydellinen jokapäiväiseen käyttöön. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Ei sisällä mainoksia tai turhia käyttöoikeuksia. Täysin avointa lähdekoodia, tarjoaa muokattavat värit. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Tämä sovellus on vain yksi osa suurempaa kokoelmaa. Löydät loput osoitteesta https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Lecture automatique des vidéos @@ -158,7 +157,6 @@ Utiliser le zoom maximal des images Ne pas afficher les informations supplémentaires si la barre d\'état est masquée Éviter l\'affichage de fichiers non conformes - Afficher les éléments masqués Afficher les boutons d\'action Afficher la corbeille en vue \"Dossier\" Niveau de zoom maximal des images @@ -211,15 +209,31 @@ Une galerie pour visionner photos et vidéos sans publicité. - Un outil simple pour visionner les photos et les vidéos. Elles peuvent être triées par dates, dimensions, noms dans les deux ordres (alphabétique ou alphabétique inversé), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la dimension de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être pivotées, rognées ou être définies comme fond d\'écran directement depuis l\'application. - - La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients de courriel, etc… C\'est parfait pour un usage au quotidien. - - L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers masqués et/ou l\'application. - - L\'application ne contient ni publicité, ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables. - - Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + + It is open source, contains no ads or unnecessary permissions. + + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Unha galería para ver fotos e videos, pero non publicidade. - Unha simple ferramenta para ver fotos e vídeos. Pode organizar os elementos por data, tamaño, nome tanto ascendentes como descendentes, pode facer zoom nas fotografías. Os ficheiros de medios móstranse en múltiples columnas dependendo do tamaño da pantalla, pode mudar o número de columnas con xestos de belisco. Poden ser renomeados, compartidos, eliminados, copiados, movidos. As imaxes tamén se poden recortar, rotar, voltear ou establecer como fondo de pantalla directamente no aplicativo. - - A Galería tamén se ofrece como aplicación de terceiros para vista previa de imaxes / vídeos, engadir anexos en correos etc. É perfecta para o uso diario. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - O permiso de pegada é preciso para bloquear a visibilidade de elementos ocultos ou o aplicativo completo. + It is open source, contains no ads or unnecessary permissions. - Non contén anuncios nin solicita permisos innecesarios. É de código aberto, con cores personalizadas. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Este aplicativo é só unha das pezas de unha grande familia. Pode atopar o resto en https://www.simplemobiletools.com + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Galerija za gledanje fotografija i videozapisa bez oglasa. - Jednostavan alat za pregled slika, GIFova i videa. Datoteke možete sortirati po datumu, veličini, imenu i to uzlazno i silazno. Također možete zumirati slike. Medijski sadržaj se prikazuje u višestrukim stupcima ovisno o veličini ekrana, a vi samo možete birati broj stupaca s gestom štipkanja. Možete preimenovati, dijeliti, brisati, kopirati, premještati datoteke. Slike također možete izrezati, rotirati ili postaviki kao pozadinu ekrana, odmah iz aplikacije. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerija se također može koristiti za pregledavanje slika i videa u drugim aplikacijama, prikačivanja datoteka u e-mail aplikacije itd. Savršeno za svakodnevno korištenje. + It is open source, contains no ads or unnecessary permissions. - Dopuštenje otiska prsta je potrebno za zaključavanje prikaza skrivene stavke ili cijele aplikacije. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Ne sadrži oglase ili nepotrebne dozvole. Aplikacije je otvorenog koda, pruža prilagodljive boje. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Ova je aplikacija samo dio većeg broja aplikacija. Možete pronaći ostatak na https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bc230b8a9..444839b6a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -211,15 +211,31 @@ Una galleria per visualizzare foto e video senza pubblicità. - Un semplice strumento per visualizzare foto e video. Gli elementi possono essere ordinati per data, dimensioni, nome sia ascendente che discendente; le foto possono essere ingrandite. I file sono mostrati in colonne multiple a seconda delle dimensioni dello schermo, puoi modificare il numero di colonne con il tocco. Possono essere rinominate, condivise, eliminate, copiate, spostate. Le immagini possono anche essere ritagliate, ruotate o impostate come sfondo direttamente dalla app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Simple Gallery è anche offerta per utilizzo di terze parti per anteprime di immagini / video, aggiunta di allegati ai client email, ecc. È perfetta per un uso quotidiano. + It is open source, contains no ads or unnecessary permissions. - L\'autorizzazione per le impronte è necessaria per bloccare la visibilità di alcuni elementi o dell\'intera app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Non contiene pubblicità o autorizzazioni non necessarie. È completamente opensource, offre colori personalizzabili. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Questa app è solo una piccola parte di una grande serie di altre app. Puoi trovarle tutte su https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com 写真やビデオを見るためのギャラリー。広告はありません。 - 写真やビデオを見るためのシンプルなツール。 日付、サイズ、名前で、昇順または降順にアイテムを並べ替えることができ、写真は拡大表示できます。 メディアファイルは、画面のサイズに応じて最適な列数で表示されます。 名前の変更、共有、削除、コピー、移動が可能です。 画像をトリミング、回転、または壁紙としてアプリから直接設定することもできます。 + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - ギャラリーは、画像やビデオのプレビュー、メールクライアントで添付ファイルの追加など、サードパーティの用途にも提供されます。 日々の使用には最適です。 + It is open source, contains no ads or unnecessary permissions. - 隠しアイテムを表示したりアプリそのものをロックするには指紋認証の許可が必要です。 + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - 広告や不要なアクセス許可は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。 + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com 광고없이 사진과 동영상을 볼 수 있는 갤러리. - 사진과 동영상을 간편하게 관리 할 수 있는 툴입니다. - - 날짜, 크기, 이름을 기준으로 정렬 할 수 있으며 사진을 확대 할 수 있습니다. 미디어 파일은 디스플레이의 크기에 맞춰 여러 열로 표시되며 핀치 제스처를 이용하여 변경 할 수도 있습니다. - - 이름변경, 공유, 삭제, 복사, 이동, 이미지편집, 배경화면 설정 등의 기능을 제공합니다. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 갤러리는 \'이미지/비디오 미리보기\', \'이메일 클라이언트에서 첨부파일 추가하기\' 등의 기능을 서드파티 애플리케이션에 제공합니다. 언제나 완벽하게 사용할 수 있습니다. + It is open source, contains no ads or unnecessary permissions. - 앱을 잠그거나 숨김파일을 보기위하여 지문인식 기능을 사용하는 경우 지문사용 권한이 필요합니다. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - 광고가 포함되어 있거나, 불필요한 권한을 요청하지 않습니다. 이 앱의 모든 소스는 오픈소스이며, 사용자가 직접 애플리케이션의 컬러를 설정 할 수 있습니다. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - 이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 https://www.simplemobiletools.com 에서 찾아보실 수 있습니다. + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Galerija, skirta peržiūrėti nuotraukas ir vaizdo įrašus be reklamų. - Paprastas įrankis, naudojamas peržiūrėti nuotraukas ir vaizdo įrašus. Elementus galima suskirstyti pagal datą, dydį, pavadinimą tiek didėjančia, tiek mažėjančia tvarka, nuotraukos gali būti priartintos. Vaizdo bylos rodomos keliuose stulpeliuose, priklausomai nuo ekrano dydžio, kolonėlių skaičių galite keisti naudodami gesinimo gestus. Jas galima pervardyti, bendrinti, ištrinti, kopijuoti, perkelti. Vaizdus taip pat galima apkarpyti, pasukti, apversti arba nustatyti kaip "Darbalaukio paveikslėliu" tiesiai iš programėlės. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerija taip pat siūloma trečiosioms šalims peržiūrėti atvaizdus / vaizdo įrašus, pridėti priedus el. Pašto klientams ir pan. Tai idealu kasdieniam naudojimui. + It is open source, contains no ads or unnecessary permissions. - Pirštų atspaudų leidimas reikalingas norint užblokuoti paslėptą elemento matomumą arba visą programą. - - Neturi reklamų ar nereikalingų leidimų. Programėlė visiškai atviro kodo, yra galimybė keisti spalvas. - - Ši programėle yra vienina iš keletos mūsų programėlių. Likusias Jūs galite rasti čia http://www.simplemobiletools.com + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a6b0b62da..8f3e79059 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -211,15 +211,31 @@ Een galerij voor afbeeldingen en video\'s, zonder advertenties. - Een eenvoudige galerij voor afbeeldingen en video\'s. Bestanden kunnen worden gesorteerd op datum, grootte en naam. Afbeeldingen kunnen in- en uitgezoomd worden. Bestanden worden afhankelijk van de schermgrootte weergegeven in kolommen, waarbij het aantal kolommen kan worden aangepast via knijpgebaren. Bestanden kunnen worden gedeeld, hernoemd, gekopieerd, verplaatst en verwijderd. Afbeeldingen kunnen ook worden bijgesneden, gedraaid, gekanteld of direct vanuit de app als achtergrond worden ingesteld. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - De galerij kan ook worden gebruikt voor het bekijken van afbeeldingen of video\'s vanuit andere apps, om bijlagen toe te voegen in e-mail, etc. Perfect voor dagelijks gebruik. + It is open source, contains no ads or unnecessary permissions. - De machtiging voor het uitlezen van vingerafdrukken is benodigd voor het vergendelen van verborgen items of de gehele app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Deze app is onderdeel van een grotere verzameling. Vind de andere apps op https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Prosta galeria bez reklam do przeglądania obrazów i filmów. -       Prosta aplikacja galerii do oglądania obrazów i filmów. Pliki mogą być sortowane według daty, rozmiaru i nazwy, zarówno w porządku rosnącym, jak i malejącym. W zależności od wielkości ekranu, wyświetlane mogą być w wielu kolumnach. Liczbę kolumn można zmieniać za pomocą gestów, a zdjęcia mogą być powiększane, przycinane, obracane lub ustawiane jako tapeta bezpośrednio z poziomu aplikacji. Jej kolorystykę można dowolnie modyfikować. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. -       Uprawnienie od odcisków palców potrzebne jest w celu blokowania widoczności elementów, bądź też całej aplikacji. + It is open source, contains no ads or unnecessary permissions. -       Nie zawiera żadnych reklam, nie potrzebuje wielu uprawnień i jest w pełni otwartoźródłowa. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) -       Jest ona tylko częścią naszej kolekcji prostych narzędzi. Ta, jak i pozostałe, dostępne są na stronie https://www.simplemobiletools.com + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Um aplicativo para visualizar fotos e vídeos. - Uma ferramenta simples para ver fotos e vídeos. Pode organizar os itens por data, tamanho, nome e ampliar as fotografias. As pastas são mostradas em colunas, e a sua exibição dependerá do tamanho da tela, aonde o usuário poderá alterar o número de colunas através de gestos. Você pode renomear, compartilhar, apagar, copiar e mover os arquivos. Também pode recortar, girar e definir as imagens como fundo de tela. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Também pode ser utilizada para pré-visualizar imagens e vídeos, ou para adicionar como anexos ao e-mail, entre outros. É perfeita para a utilização diária. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Não contém anúncios, nem permissões desnecessárias. Disponibiliza um tema escuro, e é totalmente \'open source\'. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Uma aplicação para ver fotografias e vídeos. - Uma ferramenta simples para ver fotos e vídeos. Pode organizar os itens por data, tamanho, nome e ampliar as fotografias. Os ficheiros multimédia são mostrados em colunas e a sua exibição está dependente do tamanho do ecrã, podendo alterar o número de colunas através de gestos. Pode renomear, partilhar, apagar, copiar e mover as fotografias. Também pode recortar, rodar e definir as imagens como fundo do ecrã a partir da aplicação. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Também pode ser utilizada para pré-visualizar imagens e vídeos ou para adicionar como anexos ao e-mail, entre outros. É perfeita para a utilização diária. + It is open source, contains no ads or unnecessary permissions. - A permissão Impressão digital é necessária para bloquear a visualização dos itens ocultos ou de toda a aplicação. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Não contém anúncios nem permissões desnecessárias. Disponibiliza um tema escuro e é totalmente \'open source\'. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Галерея для просмотра изображений и видео. Без рекламы. - Простое приложение для просмотра изображений и видеозаписей. Отображаемые файлы могут быть отсортированы как по возрастанию, так и по убыванию даты, размера или имени. Фотографии можно масштабировать. В зависимости от размера экрана, медиафайлы располагаются в несколько столбцов, можно изменять число столбцов щипком двумя пальцами. Можно переименовывать, удалять, копировать, перемещать и делиться файлами из галереи. В приложении есть возможность обрезать и поворачивать изображения или устанавливать их в качестве обоев. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Галерея идеальна для повседневных задач (предпросмотр фото/видео, добавление вложений в почтовых клиентах и т.д.). + It is open source, contains no ads or unnecessary permissions. - Разрешение \"Отпечаток пальца\" необходимо для блокировки видимости скрытых объектов или всего приложения. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Это приложение не будет показывать рекламу или запрашивать ненужные разрешения. У него полностью открытый исходный код и настраиваемые цвета оформления. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Simple Gallery — это приложение из серии Simple Mobile Tools. Остальные приложения из этой серии можно найти здесь: https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Galéria na prezeranie obrázkov a videí bez reklám. - Jednoduchá nástroj použiteľný na prezeranie obrázkov a videí. Položky môžu byť zoradené podľa dátumu, veľkosti, názvu oboma smermi, obrázky je možné aj priblížiť. Položky sú zobrazované vo viacerých stĺpcoch v závislosti od veľkosti displeja, počet stĺpcov je možné meniť pomocou gesta prstami. Súbory môžete premenovať, zdieľať, mazať, kopírovať, premiestňovať. Obrázky môžete orezať, otočiť, alebo nastaviť ako tapeta priamo v aplikácií. + Nastaviteľná galéria na zobrazovanie množstva rozličných druhov obrázkov a videí, vrátane SVG, RAW súborov, panoramatických fotiek a videí. - Galéria je tiež poskytovaná pre použitie treťou stranou pre prehliadanie fotiek a videí, pridávanie príloh v emailových klientoch. Je perfektná na každodenné použitie. + Je open source, neobsahuje reklamy, ani nepotrebné oprávnenia. - Prístup ku odtlačkom prstov je potrebný pre uzamykanie skrytých položiek, alebo celej apky. + Tu je niekoľko funkcií hodných spomenutia: + 1. Vyhľadávanie + 2. Slideshow + 3. Podpora pre zárez v displeji + 4. Pripínanie priečinkov na vrch + 5. Filtrovanie médií podľa typu + 6. Odpadkový kôš pre jednoduchú obnovu súborov + 7. Uzamykanie orientácie celoobrazovkového režimu + 8. Označovanie obľúbených položiek pre jednoduchý prístup + 9. Rýchle ukončovanie celoobrazovkového režimu pomocou potiahnutia prstom dole + 10. Editor na úpravu obrázkov a aplikáciu filtrov + 11. Ochrana heslom pre zobrazovanie skrytých súborov, alebo celej aplikácie + 12. Zmena počtu stĺpcov s náhľadmi buď gestúrami, alebo pomocou menu tlačidiel + 13. Nastaviteľné spodné akcie na celoobrazovkovom režime pre rýchly prístup + 14. Zobrazenie nastaviteľných rozšírených vlastností ponad celoobrazovkové médiá + 15. Niekoľko rozličných spôsobov radenia a zoskupovania položiek vzostupne, alebo zostupne + 16. Ukrývanie priečinkov (ovplyvňuje aj iné aplikácie), alebo ich vylúčenie (ovplyvní iba Jednoduchú galériu) - Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb. + Prístup k odtlačkom prstov je potrebný pre ochranu zobrazenia skrytých položiek, celej aplikácie, alebo ochranu súborov pred ich odstránením. Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 0eeff1265..f4337458d 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -211,15 +211,31 @@ Ett galleri för att visa foton och videor utan reklam. - Ett enkelt verktyg för att visa foton och videor. Det kan zooma in på foton och sortera objekt i stigande eller fallande ordning efter datum, storlek eller namn. Mediefiler visas i flera kolumner. Antalet kolumner beror på skärmens storlek och kan ändras med nypgester. Mediefiler kan döpas om, delas, tas bort, kopieras eller flyttas. Bilder kan även beskäras, roteras, vändas eller anges som bakgrundsbilder direkt i appen. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galleriet kan även användas av tredjepartsappar för att förhandsgranska bilder och videor, lägga till bilagor i e-postklienter etc. Det är perfekt för daglig användning. + It is open source, contains no ads or unnecessary permissions. - Fingeravtrycksbehörigheten behövs för att låsa hela appen eller synligheten för dolda objekt. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Innehåller ingen reklam eller onödiga behörigheter. Det har helt öppen källkod och anpassningsbara färger. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Denna app är bara en del av en större serie appar. Du hittar resten av dem på https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Fotoğrafları ve videoları reklamsız görüntülemek için kullanılan bir galeri. - Fotoğrafları ve videoları görüntülemek için kullanılabilecek basit bir araç. Öğeler tarihine, boyutuna, adına göre artan veya azalan olarak sıralanabilir, fotoğraflar yakınlaştırılabilir. Medya dosyaları, ekranın boyutuna bağlı olarak birden fazla sütunda gösterilir, sıkıştırma hareketleriyle sütun sayısını değiştirebilirsiniz. Yeniden adlandırılabilir, paylaşılabilir, silinebilir, kopyalanabilir, taşınabilirler. Resimler ayrıca kırpılabilir, döndürülebilir veya doğrudan uygulama\'dan Duvar kağıdı olarak ayarlanabilir. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galeri, görüntüleri/videoları önizlemek, e-posta istemcilerine ek ekler yapmak için üçüncü taraf kullanımı için de önerilir. Bu\'s günlük kullanım için mükemmel. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Reklam içermeyen veya gereksiz izinler. Tamamen açık kaynaktır, özelleştirilebilir renkler sağlar. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanını şu adresten bulabilirsiniz https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Галерея для перегляду фото та відео без реклами. - Простий інструмент для перегляду фотографій і відео. Елементи можна сортувати за датою, розміром, ім\'ям як за зростанням, так і за спаданням, фотографії можна масштабувати. Медіафайли показуються у кілька колонок залежно від розміру екрану, їх кількість може бути змінена жестом \"щипок екрану\". Медіафайли можна перейменовувати, копіювати, переміщувати, видаляти або ділитися ними. Зображення також можна обрізати, обертати, віддзеркалювати або встановлювати як шпалери безпосередньо з додатку. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Галерея також пропонується для використання третіми сторонами для перегляду зображень / відео, додавання долучень до клієнтів електронної пошти тощо. Вона ідеально підходить для щоденного використання. + It is open source, contains no ads or unnecessary permissions. - Дозвіл на доступ до відбитків пальців потрібен для блокування відображення прихованих елементів або для блокування всього застосунку. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Не містить реклами або непотрібних дозволів. Додаток повністю OpenSource, забезпечує налаштування кольорів. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Цей додаток є частиною великої серії схожих додатків. Ви можете знайти решту з них на https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com 一个没有广告,用来观看照片及视频的相册。 - 一个观看照片和视频的简单实用工具。项目可以根据日期、大小、名称来递增或递减排序,照片可以缩放。媒体文件根据屏幕的大小排列在多个方格中,您可以使用缩放手势来调整每一列的方格数量。媒体文件可以被重命名、分享、删除、复制以及移动。照片亦可被剪切、旋转或是直接在应用中设为壁纸。 + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 相册亦提供能让第三方应用预览图片/视频、向电子邮件客户端添加附件等的功能。非常适合日常使用。 + It is open source, contains no ads or unnecessary permissions. - 这个应用需要指纹权限来锁定隐藏的项目或是整个应用。 + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - 应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。 + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - 这个应用只是一系列应用中的一小部份。您可以在 https://www.simplemobiletools.com 找到其余的应用。 + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com 一個用來瀏覽相片和影片,且沒有廣告的相簿。 - 一個用來瀏覽相片和影片的簡單工具。可以根據日期、大小、名稱來遞增或遞減排序項目,相片能被縮放。媒體檔案會依畫面大小呈現在數個欄位內,你可以使用縮放手勢來改變欄數。媒體檔案可以重新命名、分享、刪除、複製、移動;圖片還能縮放、旋轉、翻轉,或者直接設為桌布。 - - 這相簿也支援第三方使用,像是預覽圖片/影片、添加電子信箱附件…等功能,日常使用上相當適合。 + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 指紋權限用來鎖定隱藏的項目或是整個程式。 + It is open source, contains no ads or unnecessary permissions. - 不包含廣告及非必要的權限,而且完全開放原始碼,並提供自訂顏色。 - - 這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 https://www.simplemobiletools.com + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com From 494e71e5e34a88255033e449cec47ce407ddeba0 Mon Sep 17 00:00:00 2001 From: matej bobek Date: Wed, 31 Oct 2018 17:42:48 +0100 Subject: [PATCH 29/59] #505 moving string node remember_last_video to corresponding strings --- app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-az/strings.xml | 2 +- app/src/main/res/values-ca/strings.xml | 2 +- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-da/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-fi/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-gl/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ko-rKR/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-nb/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index fac0d1817..cf3bbe06a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -137,6 +137,7 @@ تشغيل الفديوهات تلقائيا + 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 Una galleria per visualizzare foto e video senza pubblicità. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Una galleria altamente personalizzabile e capace di visualizzare tipi di file immagini e video differenti, fra cui SVG, RAW, foto panoramiche e video. - It is open source, contains no ads or unnecessary permissions. + È open source, non contiene pubblicità e permessi superflui. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Alcune funzionalità che vale la pena accennare: + 1. Ricerca + 2. Presentazione + 3. Supporto al notch + 4. Fissare le cartelle in alto + 5. Filtro dei file per tipo + 6. Cestino per un recupero facile dei file + 7. Blocco dell'orientamento nella vista a schermo intero + 8. Selezionare file preferiti per un accesso facile + 9. Chisura rapida della vista schermo intero con un movimento verso il basso + 10. Un editor per modificare le immagini ed applicare filtri + 11. Protezione con password per proteggere elementi nascosti o l'intera applicazione + 12. Cambio delle colonne delle anteprime con un movimento o tramite dei pulsanti nel menu + 13. Pulsanti rapidi per azioni personalizzabili nella vista schermo intero + 14. Visualizzazione di determinati dettagli aggiuntivi nella vista a schermo intero + 15. Molti modi per ordinare o raggruppare gli elementi, sia in ordine crescente che decrescente + 16. Cartelle nascoste (anche per altre applicazioni), cartelle escluse (solo per Simple Gallery) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Il permesso di leggere le impronte digitali è necessario per il blocco della visibilità degli elementi, dell'intera applicazione o per proteggere alcuni file dalla loro eliminazione. + + Questa applicazione è solamente una di una serie più grande. Si possono trovare le altre su https://www.simplemobiletools.com تشغيل الفديوهات تلقائيا - Remember last video playback position + Remember last video playback position تبديل رؤية اسم الملف حلقة الفيديو عرض صور GIF المتحركة في الصور المصغرة diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index f958f3eb4..d2eb21889 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -133,7 +133,7 @@ Play videos automatically - Remember last video playback position + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index c50f3f613..8bf6392b2 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -133,7 +133,7 @@ Reproduir vídeos automàticament - Remember last video playback position + Remember last video playback position Canviar la visibilitat del nom d\'arxiu Reproducció continua de vídeos Animar les miniatures dels GIFs diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index d04c4332d..b08b981a0 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -133,7 +133,7 @@ Automaticky přehrávat videa - Remember last video playback position + Remember last video playback position Přepnout viditelnost názvů souborů Přehrávat videa ve smyčce Animovat náhledy souborů GIF diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 1ab75de23..945387d93 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -133,7 +133,7 @@ Afspil automatisk videoer - Remember last video playback position + Remember last video playback position Toggle filename visibility Kør videoer i sløjfe Animér GIF\'er i miniaturer diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6f40cef7e..ca0c2ac16 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -133,7 +133,7 @@ Videos automatisch abspielen - Remember last video playback position + Remember last video playback position Beschriftungen ein/aus Videos in Endlosschleife abspielen Kacheln von GIFs animieren diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index bd01a4fae..60e75cf2e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -133,7 +133,7 @@ Αυτόματη αναπαραγωγή βίντεο - Remember last video playback position + Remember last video playback position Αλλαγή προβολής ονόματος αρχείων Επανάληψη βίντεο Εμφάνιση κινούμενων GIFs στα εικονίδια diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 32544705f..095e6ba66 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -133,7 +133,7 @@ Reproducir vídeos automáticamente - Remember last video playback position + Remember last video playback position Cambiar la visibilidad del nombre de archivo Reproducción continua de vídeos Animar las miniaturas de GIFs diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 83246ed98..c862f51f2 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -133,7 +133,7 @@ Toista videot automaattisesti - Remember last video playback position + Remember last video playback position Tiedostonimien näkyvyys Jatkuvat videot Animoi GIFit pienoiskuvissa diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9e7d19c1e..d7ec4d5c2 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -133,7 +133,7 @@ Lecture automatique des vidéos - Remember last video playback position + Remember last video playback position Permuter la visibilité des noms de fichier Lecture en boucle des vidéos GIFs animés sur les miniatures diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index b11e531bb..0a7f4032f 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -133,7 +133,7 @@ Reproducir vídeos automticamente - Remember last video playback position + Remember last video playback position Mudar a visibilidade do ficheiro videos en bucle Animar os GIFs na icona diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index f0e73dd54..5ac572a6e 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -133,7 +133,7 @@ Automatsko pokretanje videa - Remember last video playback position + Remember last video playback position Uključi prikaz naziva datoteka Ponavljanje videa Prikaz animacije GIF-ova na sličicama diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9cccd5d2f..d6d5c1f4f 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -133,7 +133,7 @@ Play videos automatically - Remember last video playback position + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index dbf796ed5..21b24254c 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -133,7 +133,7 @@ Riproduci i video automaticamente - Remember last video playback position + Remember last video playback position Visibilità nome del file Ripeti i video Anima le GIF in miniatura diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 63f2adf24..96707db26 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -133,7 +133,7 @@ ビデオを自動再生 - Remember last video playback position + Remember last video playback position ファイル名の表示を切り替え ビデオを繰り返し再生 アニメーションGIFを動かす diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index dcb77ea3c..9a69c6c48 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -133,7 +133,7 @@ 비디오 자동재생 - Remember last video playback position + Remember last video playback position 파일이름 보기 비디오 반복 섬네일에서 GIFs 애니메이션 활성화 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 152d534e9..37d2ff2e7 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -133,7 +133,7 @@ Groti vaizdo įrašus automatiškai - Remember last video playback position + Remember last video playback position Perjungti bylos pavadinimo matomumą Klipuoti vaizdo įrašus Animuoti GIF\'us miniatiūrose diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index b20d3af59..fb0887b88 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -133,7 +133,7 @@ Avspill videoer automatisk - Remember last video playback position + Remember last video playback position Vis/skjul filnavn Gjenta videoer Animert GIF i minibildevisning diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 166bdd00f..d08be33b3 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -133,7 +133,7 @@ Video\'s automatisch afspelen - Remember last video playback position + Remember last video playback position Bestandsnamen tonen Video\'s herhalen GIF-bestanden afspelen in overzicht diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e3a9098ce..39b32cbf5 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -133,7 +133,7 @@ Odtwarzaj filmy automatycznie - Remember last video playback position + Remember last video playback position Pokazuj / ukrywaj nazwy plików Zapętlaj odtwarzanie filmów Animowane miniatury GIFów diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fc7633fe0..dddb7b49f 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -133,7 +133,7 @@ Reproduzir vídeos automaticamente - Remember last video playback position + Remember last video playback position Mostrar/ocultar nome do arquivo Reproduzir vídeos em ciclo Animação de GIFs nas miniaturas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b33623736..6298c9547 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -133,7 +133,7 @@ Reproduzir vídeos automaticamente - Remember last video playback position + Remember last video playback position Mostrar/ocultar nome do ficheiro Vídeos em ciclo Animação de GIF nas miniaturas diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 2d360ade9..616e02ea9 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -133,7 +133,7 @@ Воспроизводить видео автоматически - Remember last video playback position + Remember last video playback position Переключить отображение имени файла Повтор видео Анимировать эскизы GIF diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 2e93e630d..7d057a389 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -133,7 +133,7 @@ Spúšťať videá automaticky - Remember last video playback position + Zapamätať si pozíciu posledného prehraného videa Prepnúť viditeľnosť názvov súborov Automaticky reštartovať videá Animovať GIF súbory pri náhľade diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 05048a1a1..3137d4210 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -133,7 +133,7 @@ Spela upp videor automatiskt - Remember last video playback position + Remember last video playback position Visa/dölj filnamn Spela upp videor om och om igen Animera GIF-bilders miniatyrer diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bc8cdbd39..bab52d012 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -133,7 +133,7 @@ Videoları otomatik olarak oynat - Remember last video playback position + 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 diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e4c77e84f..4a0eaa563 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -133,7 +133,7 @@ Відтворювати відео автоматично - Remember last video playback position + Remember last video playback position Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 2ef5c0a83..8087e0103 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -133,7 +133,7 @@ 自动播放 - Remember last video playback position + Remember last video playback position 显示文件名 循环播放视频 GIF 缩略图 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index c417b293c..fadb18f64 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -133,7 +133,7 @@ 自動播放影片 - Remember last video playback position + Remember last video playback position 顯示檔案名稱 影片循環播放 縮圖顯示GIF動畫 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bac1070bc..ef69c4da9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -133,7 +133,7 @@ Play videos automatically - Remember last video playback position + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails From 3d44cad15452ec4abdc8fdd5cf65bd2c7677e361 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Thu, 1 Nov 2018 12:56:22 +0100 Subject: [PATCH 33/59] Dutch --- app/src/main/res/values-nl/strings.xml | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d08be33b3..9785e0569 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -212,31 +212,31 @@ Een galerij voor afbeeldingen en video\'s, zonder advertenties. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Een zeer goed aan te passen galerij voor afbeeldingen en video\'s in vele bestandsformaten, waaronder SVG, RAW, panoramafoto's en -video\'s. - It is open source, contains no ads or unnecessary permissions. + Deze app is open-source, bevat geen advertenties en vraagt niet om onnodige machtigingen. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Een lijst met de belangrijkste mogelijkheden: + 1. Zoeken + 2. Diavoorstelling + 3. Ondersteuning voor schermen met een inkeping + 4. Mappen bovenaan vastzetten + 5. Media filteren op bestandstype + 6. Een prullenbak + 7. Oriëntatie vastzetten voor volledig scherm + 8. Favorieten + 9. Veeggebaren in volledig scherm + 10. Afbeeldingen bewerken en filters toepassen + 11. Verborgen items of de gehele app beveiligen met een wachtwoord + 12. Het aantal kolommen aanpassen via veeggebaren of menuknoppen + 13. De acties op de werkbalk in volledig scherm aanpassen + 14. Uitgebreide informatie tonen over de bestanden in volledig scherm + 15. Items sorteren en groeperen op verschillende manieren + 16. Mappen verbergen (ook voor andere apps), of mappen uitsluiten (alleen voor deze app) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + De machtiging voor vingerafdrukken is benodigd voor het beveiligen van verborgen items, of de hele app, of om te voorkomen dat bestanden kunnen worden verwijderd. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Deze app is onderdeel van een grotere collectie. De andere apps zijn te vinden op https://www.simplemobiletools.com Een galerij voor afbeeldingen en video\'s, zonder advertenties. - Een zeer goed aan te passen galerij voor afbeeldingen en video\'s in vele bestandsformaten, waaronder SVG, RAW, panoramafoto's en -video\'s. + Een zeer goed aan te passen galerij voor afbeeldingen en video\'s in vele bestandsformaten, waaronder SVG, RAW, panoramafoto\'s en -video\'s. Deze app is open-source, bevat geen advertenties en vraagt niet om onnodige machtigingen. From 6969753673dba5c61e73412b34932bf13e7afc86 Mon Sep 17 00:00:00 2001 From: sawka6630 Date: Thu, 1 Nov 2018 20:03:17 +0200 Subject: [PATCH 35/59] Updated Ukrainian translation --- app/src/main/res/values-uk/strings.xml | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 4a0eaa563..bc1247102 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -133,7 +133,7 @@ Відтворювати відео автоматично - Remember last video playback position + Запам'ятовувати місце зупинки перегляду Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів @@ -212,31 +212,31 @@ Галерея для перегляду фото та відео без реклами. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Тонко налаштовувана галерея, здатна відображати зображення та відео різноманітних типів, включаючи SVG-зображення, RAW-зображення,панорамні фото і відео. - It is open source, contains no ads or unnecessary permissions. + Джерельний код галереї відкритий, вона не містить реклами та не вимагає зайвих дозволів. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Ось кілька її переваг, які варто згадати: + 1. Пошук + 2. Слайдшоу + 3. Підтримка закладок (Notch) + 4. Закріплення тек вгорі екрану + 5. Фільтрування медіафайлів за типом + 6. Кошик для легкого відновлення файлів + 7. Фіксація повороту екрану при повноекранному перегляді + 8. Позначення улюблених файлів для швидкого доступу + 9. Швидке закриття повноекранного перегляду жестом згори вниз + 10. Редактор для редагування зображень та накладання фільтрів + 11. Захист паролем для захисту прихованих елементів або всього додатку + 12. Зміна кількості колонок піктограм жестом чи через меню + 13. Налаштовувані кнопки швидких дій внизу екрану при повноекранному перегляді + 14. Показ детальної інформації з обраними властивостями файлу при повноекранному перегляді + 15. Кілька різних способів сортування або групування елементів - як за зростанням, так і за спаданням + 16. Приховування тек (і в інших додатках також), виключення тек (тільки в Simple Gallery) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + Дозвіл на доступ до відбитку пальця потрібен для блокування або видимості прихованих елементів, або всього додатку, або для захисту файлів від видалення. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Цей додаток входить в велику серію додатків. Ви можете знайти їх на https://www.simplemobiletools.com Відтворювати відео автоматично - Запам'ятовувати місце зупинки перегляду + Запам\'ятовувати місце зупинки перегляду Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів From ff9135c2151b960d55adf73118adc19980bd12f6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 1 Nov 2018 19:47:22 +0100 Subject: [PATCH 37/59] store only the current fragments video position, if it was started --- .../gallery/fragments/VideoFragment.kt | 36 ++++++++++--------- .../gallery/helpers/Config.kt | 6 ++-- .../gallery/helpers/Constants.kt | 2 +- 3 files changed, 23 insertions(+), 21 deletions(-) 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 842eebf9e..5f2f7f517 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -59,6 +59,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mWasFragmentInit = false private var mIsExoPlayerInitialized = false private var mIsPanorama = false + private var mWasVideoStarted = false private var mCurrTime = 0 private var mDuration = 0 @@ -68,7 +69,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mStoredExtendedDetails = 0 private var mStoredRememberLastVideoPosition = false private var mStoredLastVideoPath = "" - private var mStoredLastVideoProgress = 0 + private var mStoredLastVideoPosition = 0 private lateinit var mTimeHolder: View private lateinit var mBrightnessSideScroll: MediaSideScroll @@ -171,7 +172,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setupVideoDuration() if (mStoredRememberLastVideoPosition) { - setLastVideoSavedProgress() + setLastVideoSavedPosition() } updateInstantSwitchWidths() @@ -208,7 +209,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onPause() { super.onPause() pauseVideo() - if (mStoredRememberLastVideoPosition) { + if (mStoredRememberLastVideoPosition && mIsFragmentVisible && mWasVideoStarted) { saveVideoProgress() } @@ -250,7 +251,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mStoredBottomActions = bottomActions mStoredRememberLastVideoPosition = rememberLastVideoPosition mStoredLastVideoPath = lastVideoPath - mStoredLastVideoProgress = lastVideoProgress + mStoredLastVideoPosition = lastVideoPosition } } @@ -269,12 +270,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun saveVideoProgress() { if (!videoEnded()) { - mStoredLastVideoProgress = mExoPlayer!!.currentPosition.toInt() / 1000 + mStoredLastVideoPosition = mExoPlayer!!.currentPosition.toInt() / 1000 mStoredLastVideoPath = medium.path } context!!.config.apply { - lastVideoProgress = mStoredLastVideoProgress + lastVideoPosition = mStoredLastVideoPosition lastVideoPath = mStoredLastVideoPath } } @@ -342,9 +343,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S listener?.fragmentClicked() } - private fun setLastVideoSavedProgress() { - if (mStoredLastVideoPath == medium.path && mStoredLastVideoProgress > 0) { - setProgress(mStoredLastVideoProgress) + private fun setLastVideoSavedPosition() { + if (mStoredLastVideoPath == medium.path && mStoredLastVideoPosition > 0) { + setPosition(mStoredLastVideoPosition) } } @@ -462,11 +463,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S val wasEnded = videoEnded() if (wasEnded) { - setProgress(0) + setPosition(0) } if (mStoredRememberLastVideoPosition) { - setLastVideoSavedProgress() + setLastVideoSavedPosition() clearLastVideoSavedProgress() } @@ -476,13 +477,14 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } schedulePlayPauseFadeOut() + mWasVideoStarted = true mIsPlaying = true mExoPlayer?.playWhenReady = true activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } private fun clearLastVideoSavedProgress() { - mStoredLastVideoProgress = 0 + mStoredLastVideoPosition = 0 mStoredLastVideoPath = "" } @@ -515,7 +517,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S return currentPos != 0L && currentPos >= duration } - private fun setProgress(seconds: Int) { + private fun setPosition(seconds: Int) { mExoPlayer?.seekTo(seconds * 1000L) mSeekBar!!.progress = seconds mCurrTimeView!!.text = seconds.getFormattedDuration() @@ -530,14 +532,14 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } setupTimeHolder() - setProgress(0) + setPosition(0) } private fun videoPrepared() { if (mDuration == 0) { mDuration = (mExoPlayer!!.duration / 1000).toInt() setupTimeHolder() - setProgress(mCurrTime) + setPosition(mCurrTime) if (mIsFragmentVisible && (context!!.config.autoplayVideos)) { playVideo() @@ -649,7 +651,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S val newProgress = if (forward) curr + twoPercents else curr - twoPercents val roundProgress = Math.round(newProgress / 1000f) val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt(), roundProgress), 0) - setProgress(limitedProgress) + setPosition(limitedProgress) if (!mIsPlaying) { togglePlayPause() } @@ -657,7 +659,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { if (mExoPlayer != null && fromUser) { - setProgress(progress) + setPosition(progress) } } 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 5336f8fb6..a37a75bfe 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -373,9 +373,9 @@ class Config(context: Context) : BaseConfig(context) { 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 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) 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 2ffde92d2..5efefb58f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -53,7 +53,7 @@ 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 LAST_VIDEO_POSITION = "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 124cb9334cc96daf24e674084764b865941183b5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 1 Nov 2018 20:20:47 +0100 Subject: [PATCH 38/59] fix #1043, remove some glitches related to opening third party intents --- .../gallery/activities/PhotoVideoActivity.kt | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index e3a243a53..19465cb20 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -62,18 +62,23 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList private fun checkIntent(savedInstanceState: Bundle? = null) { mUri = intent.data ?: return + var filename = getFilenameFromUri(mUri!!) if (intent.extras?.containsKey(REAL_FILE_PATH) == true) { val realPath = intent.extras.getString(REAL_FILE_PATH) - if (realPath?.getFilenameFromPath()?.contains('.') == true) { - sendViewPagerIntent(realPath) - finish() - return + if (realPath != null) { + if (realPath.getFilenameFromPath().contains('.') || filename.contains('.')) { + sendViewPagerIntent(realPath) + finish() + return + } else { + filename = realPath.getFilenameFromPath() + } } } mIsFromGallery = intent.getBooleanExtra(IS_FROM_GALLERY, false) if (mUri!!.scheme == "file") { - if (mUri!!.path?.getFilenameFromPath()?.contains('.') == true) { + if (filename.contains('.')) { scanPathRecursively(mUri!!.path) sendViewPagerIntent(mUri!!.path) finish() @@ -81,7 +86,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } } else { val path = applicationContext.getRealPathFromURI(mUri!!) ?: "" - if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && mUri!!.path.getFilenameFromPath().contains('.')) { + if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && filename.contains('.')) { scanPathRecursively(mUri!!.path) sendViewPagerIntent(path) finish() @@ -97,7 +102,6 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList showSystemUI(true) val bundle = Bundle() val file = File(mUri.toString()) - val filename = getFilenameFromUri(mUri!!) val type = when { filename.isVideoFast() -> TYPE_VIDEOS filename.isGif() -> TYPE_GIFS @@ -106,6 +110,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList else -> TYPE_IMAGES } + mIsVideo = type == TYPE_VIDEOS mMedium = Medium(null, filename, mUri.toString(), mUri!!.path.getParentPath(), 0, 0, file.length(), type, false, 0L) supportActionBar?.title = mMedium!!.name bundle.putSerializable(MEDIUM, mMedium) From 0cad141a5b6d733854315be58a8256d6824d85d2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 1 Nov 2018 21:47:20 +0100 Subject: [PATCH 39/59] change the string used for determining if a video is a panoramic one --- .../com/simplemobiletools/gallery/fragments/VideoFragment.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 5f2f7f517..580d06091 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -736,7 +736,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S break } } - mIsPanorama = sb.toString().contains("true") || sb.toString().contains("GSpherical:Spherical=\"True\"") + + val xmlString = sb.toString().toLowerCase() + mIsPanorama = xmlString.contains("gspherical:projectiontype>equirectangular") || + xmlString.contains("gspherical:projectiontype=\"equirectangular\"") return } From 22e22dd0fb7c5da97443c63f4334ed35f2ab7920 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 1 Nov 2018 21:58:42 +0100 Subject: [PATCH 40/59] do not exclude the Data folder by default there is another way of attempting to remove spam folders already --- .../com/simplemobiletools/gallery/helpers/Config.kt | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) 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 a37a75bfe..e194cb0fa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -117,17 +117,9 @@ class Config(context: Context) : BaseConfig(context) { } var excludedFolders: MutableSet - get() = prefs.getStringSet(EXCLUDED_FOLDERS, getDataFolder()) + get() = prefs.getStringSet(EXCLUDED_FOLDERS, HashSet()) set(excludedFolders) = prefs.edit().remove(EXCLUDED_FOLDERS).putStringSet(EXCLUDED_FOLDERS, excludedFolders).apply() - private fun getDataFolder(): Set { - val folders = HashSet() - val dataFolder = context.externalCacheDir?.parentFile?.parent?.trimEnd('/') ?: "" - if (dataFolder.endsWith("data")) - folders.add(dataFolder) - return folders - } - fun addIncludedFolder(path: String) { val currIncludedFolders = HashSet(includedFolders) currIncludedFolders.add(path) From c6661d8a929d08e0fe8b56bd760835c2011a8b3e Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 1 Nov 2018 22:25:21 +0100 Subject: [PATCH 41/59] update commons to 5.3.0 --- app/build.gradle | 2 +- .../gallery/activities/SettingsActivity.kt | 9 ------- .../gallery/models/Directory.kt | 2 +- .../gallery/models/Medium.kt | 2 +- app/src/main/res/layout/activity_settings.xml | 26 +------------------ build.gradle | 2 +- 6 files changed, 5 insertions(+), 38 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 984af8da6..174761961 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.19' + implementation 'com.simplemobiletools:commons:5.3.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' 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 ed4b332a9..01a413724 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -38,7 +38,6 @@ class SettingsActivity : SimpleActivity() { setupPurchaseThankYou() setupCustomizeColors() setupUseEnglish() - setupAvoidWhatsNew() setupManageIncludedFolders() setupManageExcludedFolders() setupManageHiddenFolders() @@ -114,14 +113,6 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupAvoidWhatsNew() { - settings_avoid_whats_new.isChecked = config.avoidWhatsNew - settings_avoid_whats_new_holder.setOnClickListener { - settings_avoid_whats_new.toggle() - config.avoidWhatsNew = settings_avoid_whats_new.isChecked - } - } - private fun setupManageIncludedFolders() { settings_manage_included_folders_holder.setOnClickListener { startActivity(Intent(this, IncludedFoldersActivity::class.java)) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt index b6332d6f6..e73002b51 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt @@ -14,7 +14,7 @@ import com.simplemobiletools.gallery.helpers.FAVORITES import com.simplemobiletools.gallery.helpers.RECYCLE_BIN import java.io.Serializable -@Entity(tableName = "directories", indices = [Index(value = "path", unique = true)]) +@Entity(tableName = "directories", indices = [Index(value = ["path"], unique = true)]) data class Directory( @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo(name = "path") var path: String, diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt index aea443b78..093a62991 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt @@ -15,7 +15,7 @@ import com.simplemobiletools.gallery.helpers.* import java.io.Serializable import java.util.* -@Entity(tableName = "media", indices = [(Index(value = "full_path", unique = true))]) +@Entity(tableName = "media", indices = [(Index(value = ["full_path"], unique = true))]) data class Medium( @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo(name = "filename") var name: String, diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 06912da55..a76152ada 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -80,30 +80,6 @@ - - - - - - + app:switchPadding="@dimen/medium_margin"/> diff --git a/build.gradle b/build.gradle index 0b0dbc07b..17a20ee31 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.0' repositories { google() From bc6b8358f76e30e49a7981acd9ffa9387ffdeca6 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Fri, 2 Nov 2018 16:37:03 +0100 Subject: [PATCH 42/59] Dutch --- app/src/main/res/values-nl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index be5b827c8..f62a9bf3f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -133,7 +133,7 @@ Video\'s automatisch afspelen - Remember last video playback position + Laatste positie in video\'s onthouden Bestandsnamen tonen Video\'s herhalen GIF-bestanden afspelen in overzicht From 6c4de62515236651d225cee76aeb4527e613d2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Fri, 2 Nov 2018 22:26:04 +0100 Subject: [PATCH 43/59] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 8bf6392b2..64560eac6 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -133,7 +133,7 @@ Reproduir vídeos automàticament - Remember last video playback position + Recordeu la posició de la darrera reproducció de vídeo Canviar la visibilitat del nom d\'arxiu Reproducció continua de vídeos Animar les miniatures dels GIFs @@ -212,31 +212,31 @@ Una galeria per veure imatges i vídeos sense publicitat. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Una galeria molt personalitzable capaç de mostrar molts tipus d\'imatge i de vídeo diferents, inclosos SVGs, RAWs, fotos panoràmiques i vídeos. - It is open source, contains no ads or unnecessary permissions. + És de codi obert, no conté anuncis ni permisos innecessaris. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Anem a enumerar algunes de les seves característiques que val la pena esmentar: + 1. Cerca + 2. Presentació de diapositives + 3. Suport per notch + 4. Enganxar carpetes a la part superior + 5. Filtrar fitxers multimèdia per tipus + 6. Paperera de reciclatge per a una fàcil recuperació d\'arxius + 7. Bloqueig d\'orientació de la vista en pantalla completa + 8. Marcatge dels fitxers preferits per facilitar l\'accés + 9. Tancament ràpid de mitjans de pantalla amb gest d\'avall + 10. Un editor per modificar imatges i aplicar filtres + 11. Protecció per contrasenya per protegir elements ocults o tota l\'aplicació + 12. Canviar el número de columnes en miniatura amb gestos o botons de menú + 13. Botons inferiors personalitzables a la vista de pantalla completa per a un accés ràpid + 14. Mostrar detalls ampliats sobre els suports de pantalla completa amb les propietats del fitxer desitjades + 15. Diverses maneres diferents de classificar o agrupar elements, tant ascendents com descendents + 16. Ocultació de carpetes (també afecta altres aplicacions), eExclusió de carpetes (afecta només a la Galeria simple) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + El permís d'empremtes dactilars és necessari per bloquejar la visibilitat d\'elements ocults, l\'aplicació sencera o la protecció dels fitxers. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Aquesta aplicació és només una part d'una sèrie més gran d\'aplicacions. Podeu trobar la resta a https://www.simplemobiletools.com Reproducir vídeos automáticamente - Remember last video playback position + Recuerde la última posición de reproducción de video Cambiar la visibilidad del nombre de archivo Reproducción continua de vídeos Animar las miniaturas de GIFs @@ -212,31 +212,31 @@ Una galería para ver fotos y vídeos sin publicidad. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Una galería altamente personalizable capaz de mostrar diferentes tipos de imágenes y videos, incluyendo SVG, RAW, fotos panorámicas y videos. - It is open source, contains no ads or unnecessary permissions. + Es de código abierto, no contiene anuncios o permisos innecesarios. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Vamos a enumerar algunas de sus características que vale la pena mencionar: + 1. Buscar + 2. Presentación de diapositivas + 3. Soporte de muesca + 4. Fijado de carpetas en la parte superior. + 5. Filtrado de archivos multimedia por tipo + 6. Papelera de reciclaje para una fácil recuperación de archivos + 7. Bloqueo de orientación de vista de pantalla completa + 8. Marcar los archivos favoritos para facilitar el acceso + 9. Cierre rápido de medios a pantalla completa con gesto hacia abajo. + 10. Un editor para modificar imágenes y aplicar filtros. + 11. Protección de contraseña para proteger elementos ocultos o la aplicación completa + 12. Cambiar el número de la columna de miniaturas con gestos o botones de menú + 13. Acciones inferiores personalizables en la vista de pantalla completa para un acceso rápido + 14. Mostrar detalles extendidos en medios de pantalla completa con las propiedades de archivo deseadas + 15. Varias formas diferentes de clasificar o agrupar elementos, tanto ascendentes como descendentes + 16. Ocultar carpetas (afecta también a otras aplicaciones), excluyendo carpetas (afecta solo a Simple Gallery) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + El permiso de huella digital es necesario para bloquear la visibilidad de los elementos ocultos, la aplicación completa o proteger los archivos para evitar que se eliminen. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Esta aplicación es solo una parte de una serie más grande de aplicaciones. Puede encontrar el resto de ellos en https://www.simplemobiletools.com - Filter media - Images - Videos - GIFs - RAW images - SVGs - No media files have been found with the selected filters. - Change filters + Média szűrő + Kép + Videó + GIF + RAW kép + SVG + A kiválasztott szűrők nem találtak médiafájlokat. + Szűrők változtatása - This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? - Exclude - Excluded folders - Manage excluded folders - This will exclude the selection together with its subfolders from Simple Gallery only. You can manage excluded folders in Settings. - Exclude a parent instead? - Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\\n\\nIf you want to hide them from other apps too, use the Hide function. - Remove all - Remove all folders from the list of excluded? This will not delete the folders. - Hidden folders - Manage hidden folders - Seems like you don\'t have any folders hidden with a \".nomedia\" file. + Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? + Kizárás + Kizárt mappák + Kizárt mappák kezelése + Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti. + Kizárja a szülő mappát? + A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót. + Összes eltávolítása + Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat. + Rejtett mappák + Rejtett mappák kezelése + Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. - Included folders - Manage included folders - Add folder - If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. + Befoglalt mappák + Befoglalt mappák kezelése + Mappa hozzáadása + Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. - Resize - Resize selection and save - Width - Height - Keep aspect ratio - Please enter a valid resolution + Átméretezés + Kiválasztás átméretezése és mentés + Szélesség + Magasság + Képarány megtartása + Írjon be érvényes felbontást - Editor - Save - Rotate - Path - Invalid image path - Image editing failed - Edit image with: - No image editor found - Unknown file location - Could not overwrite the source file - Rotate left - Rotate right - Rotate by 180º - Flip - Flip horizontally - Flip vertically - Edit with - Free + Szerkesztő + Mentés + Forgatás + Elérési útvonal + Érvénytelen kép elérési útvonal + Sikertelen kép szerkesztés + Kép szerkesztés ezzel: + Nem található kép szerkesztő + Ismeretlen fájl hely + Nem lehet felülírni a forrás fájlt + Forgatás balra + Forgatás jobbra + 180º-os forgatás + Tükrözés + Tükrözés vízszintesen + Tükrözés függőlegesen + Szerkesztés ezzel + Szabad + Simple Wallpaper - Set as Wallpaper - Setting as Wallpaper failed - Set as wallpaper with: - Setting wallpaper… - Wallpaper set successfully - Portrait aspect ratio - Landscape aspect ratio - Home screen - Lock screen - Home and lock screen + Beállítás háttérképként + Nem sikerült a beállítás háttérképként + Beállítás háttérképként ezzel: + Beállítás háttérképként… + Sikeresen beállítva háttérképnek + Álló képarány + Fekvő képarány + Kezdő képernyő + Zárolás képernyő + Kezdő és zárolás képernyő - Slideshow - Interval (seconds): - Include photos - Include videos - Include GIFs - Random order - Use fade animations - Move backwards - Loop slideshow - The slideshow ended - No media for the slideshow have been found + Diavetítés + Időköz (másodperc): + Fotók befoglalása + Videók befoglalása + GIF befoglalása + Véletlen sorrend + Halványuló animáció használat + Áthelyezés hátra + Diavetítés ismétlése + A diavetítés vége + A diavetítéshez nem található média - Change view type - Grid - List - Group direct subfolders + Nézet típus változtatása + Rács + Lista + Közvetlen almappa csoport - Group by - Do not group files - Folder - Last modified - Date taken - File type - Extension + Csoport + Nincsenek csoportosított fájlok + Mappa + Utolsó módosítás + Dátum + Fájl típus + Kiterjesztés - Play videos automatically - Remember last video playback position - Toggle filename visibility - Loop videos - Animate GIFs at thumbnails - Max brightness when viewing media - Crop thumbnails into squares - Rotate fullscreen media by - System setting - Device rotation - Aspect ratio - Black background and status bar at fullscreen media - Scroll thumbnails horizontally - Automatically hide system UI at fullscreen media - Delete empty folders after deleting their content - Allow controlling photo brightness with vertical gestures - Allow controlling video volume and brightness with vertical gestures - Show folder media count on the main view - Replace Share with Rotate at fullscreen menu - Show extended details over fullscreen media - Manage extended details - Allow one finger zoom at fullscreen media - Allow instantly changing media by clicking on screen sides - Allow deep zooming images - Hide extended details when status bar is hidden - Do an extra check to avoid showing invalid files - Show some action buttons at the bottom of the screen - Show the Recycle Bin at the folders screen - Deep zoomable images - Show images in the highest possible quality - Show the Recycle Bin as the last item on the main screen - Allow closing the fullscreen view with a down gesture + Automatikus videó lejátszás + Emlékezzen a videó utolsó lejátszási pozícióra + Fájlnév láthatóság módosítása + Videók ismétlése + Animált GIF miniatűr + Maximális fényerő a teljes képernyős médiánál + Miniatűrök négyzet alakúra vágva + Teljes képernyős média forgatása + Rendszer beállítások + Eszköz elforgatás + Képarány + Fekete háttérszín és állapotsáv teljes képernyős médiánál + Miniatűrök görgetése vízszintesen + Automatikusan elrejti a rendszer UI-t teljes képernyőn + Az üres mappák törlése a tartalom törlése után + Engedélyezi a kép fényerő módosítást függőleges gesztusokkal + Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal + Mutassa be a mappák számát a főnézetben + Cserélje meg a Megosztást a Forgatással a teljes képernyős menüben + Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül + Bővített részletek kezelése + Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában + Engedélyezi a azonnali média váltást a képernyő oldalára kattintva + Engedélyezi a képek mély nagyítását + Bővített részletek elrejtése az állapotsor rejtett állapotában + Végezzen extra ellenőrzést, hogy elkerülje az érvénytelen fájlok mutatását + Mutassa a művelet gombokat a képernyő alján + Mutassa a Lomtárat a mappák képernyőjén + Mély nagyítású képek + Mutassa a képeket a lehető legjobb minőségben + Mutassa a Lomtárat a fő képernyő utolsó elemeként + Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal - Thumbnails - Fullscreen media - Extended details - Bottom actions + Miniatűrök + Teljes képernyős média + Bővített részletek + Gomb műveletek - Manage visible bottom actions - Toggle favorite - Toggle file visibility + Látható gomb műveletek kezelése + Kedvencek módosítása + Fájl láthatóság módosítása - How can I make Simple Gallery the default device gallery? - First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\". - The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app. - I locked the app with a password, but I forgot it. What can I do? - You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files. - How can I make an album always appear at the top? - You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method. - How can I fast-forward videos? - You can click on the current or max duration texts near the seekbar, that will move the video either backward, or forward. - What is the difference between hiding and excluding a folder? - Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too. - Why do folders with music cover art or stickers show up? - It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too. - A folder with images isn\'t showing up, what can I do? - That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder. - What if I want just a few particular folders visible? - Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. - That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up. - Fullscreen images have weird artifacts, can I somehow improve the quality? - Yea, there is a toggle in Settings saying \"Replace deep zoomable images with better quality ones\", you can use that. It will improve the quality of the images, but they will get blurred once you try zooming in too much. - Can I crop images with this app? - Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view. - Can I somehow group media file thumbnails? - Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. - Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? - It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". - I see some color banding on the images. How can I improve the quality? - The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. - I have hidden a file/folder. How can I unhide it? - You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. + Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? + Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. +A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót, megjelenik egy alkalmazásválasztó, ahol kiválaszthatja a Simple Gallery lehetőséget, és beállíthatja alapértelmezett alkalmazásnak. + Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek? + 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat. + Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen? + Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi. + Hogyan tudom előre tekerni a videókat? + A keresősáv közelében lévő aktuális vagy maximális időtartamú szövegekre kattintva előre vagy hátra mozgathatja a videót. + Mi a különbség a mappa elrejtése és kizárása között? + A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is. + Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák? + Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen. + A képek mappája nem jelenik meg, mit tehetek? + Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát. + Mi van, ha csak néhány különleges mappát szeretnék látni? + A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban. +Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglalás rekurzív. Ha egy mappát hozzáadunk mindkettőhöz, akkor megjelenik. + A teljes képernyős képek furcsán néznek ki, tudnám valahogy javítani a minőséget? + Igen, van egy kapcsoló a Beállításokban: \"Cserélje le a mély nagyítású képeket jobb minőségűekre\", akkor használhatja. Javítja a képek minőségét, de elmosódik, ha túl nagy zoomolást használ. + Tudom vágni a képeket ezzel az alkalmazással? + Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben. + Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit? + Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket. + A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani? + Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg. + Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget? + Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban. + Elrejtettem egy fájlt/mappát. Hogyan tudom látni? + A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. - A gallery for viewing photos and videos without ads. + Galéria a fotók és videók hirdetések nélküli megtekintéséhez. - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + Nagyon testreszabható galéria, amely alkalmas számos különböző kép- és videotípus megjelenítésére, beleértve az SVG-ket, RAW-t, panorámaképeket és videókat. - It is open source, contains no ads or unnecessary permissions. + Nyitott forráskódú, nem tartalmaz hirdetéseket vagy szükségtelen engedélyeket. - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + Lista néhány fontosabb funkcióról + 1. Keresés + 2. Diavetítés + 3. Notch támogatás + 4. Mappa kitűzés felülre + 5. Médiafájlok szűrése típus szerint + 6. Lomtár a törölt fájlok könnyű helyreállításához + 7. Teljes képernyős nézet tájolás zárolása + 8. Kedvenc fájlok megjelölése az egyszerű eléréshez + 9. Teljes képernyős média gyors bezárása lefelé mozdulattal + 10. Szerkesztő a képek módosításához és szűrők alkalmazásához + 11. Jelszavas védelem a rejtett elemekhez vagy az egész alkalmazáshoz + 12. Az indexkép oszlop módosítása mozdulatokkal vagy a menüben + 13. Testreszabható gomb műveletek a teljes képernyős nézetben a gyors elérés érdekében + 14. Bővített részletek mutatása a teljes képernyős nézetben a kívánt fájlok tulajdonságainál + 15. Az elemek rendezése vagy csoportosítása különböző növekvő és csökkenő módon + 16. Mappák elrejtése (más alkalmazásokra is hatással van), kivéve a mappákat (csak a Simple Gallery-t érinti) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + Az ujjlenyomat engedély szükséges a rejtett elemek láthatóságának, az egész alkalmazásnak és a fájlok törlésének védelme érdekében. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Ez az alkalmazás csak egy része egy nagyobb alkalmazás sorozatnak. A többi megtalálható a https://www.simplemobiletools.com címen. Avspill videoer automatisk - Remember last video playback position + Husk siste videoavspillingsposisjon Vis/skjul filnavn Gjenta videoer Animert GIF i minibildevisning From d9021efacba3f28d7e281d310086b1497396cf4c Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 3 Nov 2018 20:17:48 +0100 Subject: [PATCH 48/59] escaping an apostrophe --- app/src/main/res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 7d0059648..a5272db32 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -236,7 +236,7 @@ El permís d\'empremtes dactilars és necessari per bloquejar la visibilitat d\'elements ocults, l\'aplicació sencera o la protecció dels fitxers. - Aquesta aplicació és només una part d'una sèrie més gran d\'aplicacions. Podeu trobar la resta a https://www.simplemobiletools.com + Aquesta aplicació és només una part d\'una sèrie més gran d\'aplicacions. Podeu trobar la resta a https://www.simplemobiletools.com 自动播放 - Remember last video playback position + 记住上次视频播放位置 显示文件名 循环播放视频 GIF 缩略图 @@ -210,31 +210,31 @@ 一个没有广告,用来观看照片及视频的相册。 - A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + 一个高度可定制的图库,支持很多的图像和视频类型,包括SVG,RAW,全景照片和视频。 - It is open source, contains no ads or unnecessary permissions. + 本应用是开源的,没有广告以及不必要的权限。 - Let\'s list some of its features worth mentioning: - 1. Search - 2. Slideshow - 3. Notch support - 4. Pinning folders to the top - 5. Filtering media files by type - 6. Recycle bin for easy file recovery - 7. Fullscreen view orientation locking - 8. Marking favorite files for easy access - 9. Quick fullscreen media closing with down gesture - 10. An editor for modifying images and applying filters - 11. Password protection for protecting hidden items or the whole app - 12. Changing the thumbnail column count with gestures or menu buttons - 13. Customizable bottom actions at the fullscreen view for quick access - 14. Showing extended details over fullscreen media with desired file properties - 15. Several different ways of sorting or grouping items, both ascending and descending - 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + 列举一些值得一提的功能: + 1.搜索 + 2.幻灯片 + 3.支持留海屏 + 4.固定文件夹到顶部 + 5.按类型过滤媒体文件 + 6.回收站(便于恢复文件) + 7.全屏视图方向锁定 + 8.标记收藏文件以便于访问 + 9.使用下滑手势关闭全屏视图 + 10.图片编辑器,可用于修改图像和应用滤镜 + 11.密码保护,可用于保护应用和隐藏项目 + 12.可使用手势或菜单按钮来更改缩略图列数 + 13.可自定义全屏视图中的底栏操作按钮,方便快速 + 14.在全屏视图下显示文件属性具有的扩展详细信息 + 15.按照不同的方式对项目进行排序或分组,包括升序和降序 + 16.隐藏文件夹(会影响其他应用),排除文件夹(仅影响本应用) - The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + 如需锁定隐藏项目的可见性,或是锁定本应用,或是保护文件不被删除,则需要指纹权限。 - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + 这个应用只是一个更大的应用系列的一小部分。您可以在https://www.simplemobiletools.com找到其余的应用。