Merge pull request #47 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2019-02-14 19:30:57 +03:00 committed by GitHub
commit 27eaa0098d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
46 changed files with 154 additions and 137 deletions

View file

@ -1,6 +1,18 @@
Changelog Changelog
========== ==========
Version 6.5.1 *(2019-02-11)*
----------------------------
* Fixed a glitch with image panning
* Added a couple stability improvements
Version 6.5.0 *(2019-02-07)*
----------------------------
* Allow rotating fullscreen images with gestures, if "Allow deep zooming images" option is enabled
* Zoom out videos and gifs after device rotation
Version 6.4.1 *(2019-01-29)* Version 6.4.1 *(2019-01-29)*
---------------------------- ----------------------------

View file

@ -15,8 +15,8 @@ android {
applicationId "com.simplemobiletools.gallery.pro" applicationId "com.simplemobiletools.gallery.pro"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 226 versionCode 229
versionName "6.4.1" versionName "6.5.1"
multiDexEnabled true multiDexEnabled true
setProperty("archivesBaseName", "gallery") setProperty("archivesBaseName", "gallery")
} }
@ -61,7 +61,7 @@ android {
} }
dependencies { dependencies {
implementation 'com.simplemobiletools:commons:5.7.5' implementation 'com.simplemobiletools:commons:5.7.7'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.multidex:multidex:2.0.1'
implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1'
@ -74,8 +74,8 @@ dependencies {
implementation 'info.androidhive:imagefilters:1.0.7' implementation 'info.androidhive:imagefilters:1.0.7'
implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.caverock:androidsvg-aar:1.3' implementation 'com.caverock:androidsvg-aar:1.3'
implementation 'com.github.tibbi:gestureviews:985ba285fb' implementation 'com.github.tibbi:gestureviews:bd0a8e67a1'
implementation 'com.github.tibbi:subsampling-scale-image-view:3ccd2f9c2b' implementation 'com.github.tibbi:subsampling-scale-image-view:6c14987053'
kapt 'com.github.bumptech.glide:compiler:4.8.0' // keep it here too, not just in Commons, else loading SVGs wont work kapt 'com.github.bumptech.glide:compiler:4.8.0' // keep it here too, not just in Commons, else loading SVGs wont work
kapt 'androidx.room:room-compiler:2.0.0' kapt 'androidx.room:room-compiler:2.0.0'

View file

@ -70,7 +70,6 @@ class SettingsActivity : SimpleActivity() {
setupEnablePullToRefresh() setupEnablePullToRefresh()
setupAllowZoomingImages() setupAllowZoomingImages()
setupShowHighestQuality() setupShowHighestQuality()
setupOneFingerZoom()
setupAllowOneToOneZoom() setupAllowOneToOneZoom()
setupAllowInstantChange() setupAllowInstantChange()
setupShowExtendedDetails() setupShowExtendedDetails()
@ -402,7 +401,6 @@ class SettingsActivity : SimpleActivity() {
} }
private fun updateDeepZoomToggleButtons() { private fun updateDeepZoomToggleButtons() {
settings_one_finger_zoom_holder.beVisibleIf(config.allowZoomingImages)
settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages) settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages)
settings_allow_one_to_one_zoom_holder.beVisibleIf(config.allowZoomingImages) settings_allow_one_to_one_zoom_holder.beVisibleIf(config.allowZoomingImages)
} }
@ -415,14 +413,6 @@ class SettingsActivity : SimpleActivity() {
} }
} }
private fun setupOneFingerZoom() {
settings_one_finger_zoom.isChecked = config.oneFingerZoom
settings_one_finger_zoom_holder.setOnClickListener {
settings_one_finger_zoom.toggle()
config.oneFingerZoom = settings_one_finger_zoom.isChecked
}
}
private fun setupAllowOneToOneZoom() { private fun setupAllowOneToOneZoom() {
settings_allow_one_to_one_zoom.isChecked = config.allowOneToOneZoom settings_allow_one_to_one_zoom.isChecked = config.allowOneToOneZoom
settings_allow_one_to_one_zoom_holder.setOnClickListener { settings_allow_one_to_one_zoom_holder.setOnClickListener {
@ -612,7 +602,6 @@ class SettingsActivity : SimpleActivity() {
put(SCREEN_ROTATION, config.screenRotation) put(SCREEN_ROTATION, config.screenRotation)
put(ALLOW_ZOOMING_IMAGES, config.allowZoomingImages) put(ALLOW_ZOOMING_IMAGES, config.allowZoomingImages)
put(SHOW_HIGHEST_QUALITY, config.showHighestQuality) put(SHOW_HIGHEST_QUALITY, config.showHighestQuality)
put(ONE_FINGER_ZOOM, config.oneFingerZoom)
put(ALLOW_ONE_TO_ONE_ZOOM, config.allowOneToOneZoom) put(ALLOW_ONE_TO_ONE_ZOOM, config.allowOneToOneZoom)
put(SHOW_EXTENDED_DETAILS, config.showExtendedDetails) put(SHOW_EXTENDED_DETAILS, config.showExtendedDetails)
put(HIDE_EXTENDED_DETAILS, config.hideExtendedDetails) put(HIDE_EXTENDED_DETAILS, config.hideExtendedDetails)
@ -733,7 +722,6 @@ class SettingsActivity : SimpleActivity() {
SCREEN_ROTATION -> config.screenRotation = value.toInt() SCREEN_ROTATION -> config.screenRotation = value.toInt()
ALLOW_ZOOMING_IMAGES -> config.allowZoomingImages = value.toBoolean() ALLOW_ZOOMING_IMAGES -> config.allowZoomingImages = value.toBoolean()
SHOW_HIGHEST_QUALITY -> config.showHighestQuality = value.toBoolean() SHOW_HIGHEST_QUALITY -> config.showHighestQuality = value.toBoolean()
ONE_FINGER_ZOOM -> config.oneFingerZoom = value.toBoolean()
ALLOW_ONE_TO_ONE_ZOOM -> config.allowOneToOneZoom = value.toBoolean() ALLOW_ONE_TO_ONE_ZOOM -> config.allowOneToOneZoom = value.toBoolean()
SHOW_EXTENDED_DETAILS -> config.showExtendedDetails = value.toBoolean() SHOW_EXTENDED_DETAILS -> config.showExtendedDetails = value.toBoolean()
HIDE_EXTENDED_DETAILS -> config.hideExtendedDetails = value.toBoolean() HIDE_EXTENDED_DETAILS -> config.hideExtendedDetails = value.toBoolean()

View file

@ -132,6 +132,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
super.onConfigurationChanged(newConfig) super.onConfigurationChanged(newConfig)
setVideoSize() setVideoSize()
initTimeHolder() initTimeHolder()
video_surface_frame.onGlobalLayout {
video_surface_frame.controller.resetState()
}
} }
private fun setupOrientation() { private fun setupOrientation() {

View file

@ -54,7 +54,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private var mPos = -1 private var mPos = -1
private var mShowAll = false private var mShowAll = false
private var mIsSlideshowActive = false private var mIsSlideshowActive = false
private var mRotationDegrees = 0
private var mPrevHashcode = 0 private var mPrevHashcode = 0
private var mSlideshowHandler = Handler() private var mSlideshowHandler = Handler()
@ -142,7 +141,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path)
val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0
getCurrentPhotoFragment()?.mCurrentRotationDegrees = mRotationDegrees val rotationDegrees = getCurrentPhotoFragment()?.mCurrentRotationDegrees ?: 0
menu.apply { menu.apply {
findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 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_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0
@ -154,16 +153,16 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 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_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0
findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0 findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0
findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0
findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() 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_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_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_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0
findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) 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).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0
findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon())
findItem(R.id.menu_rotate).setShowAsAction( findItem(R.id.menu_rotate).setShowAsAction(
if (mRotationDegrees != 0) { if (rotationDegrees != 0) {
MenuItem.SHOW_AS_ACTION_ALWAYS MenuItem.SHOW_AS_ACTION_ALWAYS
} else { } else {
MenuItem.SHOW_AS_ACTION_IF_ROOM MenuItem.SHOW_AS_ACTION_IF_ROOM
@ -195,7 +194,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
R.id.menu_properties -> showProperties() R.id.menu_properties -> showProperties()
R.id.menu_show_on_map -> showOnMap() R.id.menu_show_on_map -> showOnMap()
R.id.menu_rotate_right -> rotateImage(90) R.id.menu_rotate_right -> rotateImage(90)
R.id.menu_rotate_left -> rotateImage(270) R.id.menu_rotate_left -> rotateImage(-90)
R.id.menu_rotate_one_eighty -> rotateImage(180) R.id.menu_rotate_one_eighty -> rotateImage(180)
R.id.menu_add_to_favorites -> toggleFavorite() R.id.menu_add_to_favorites -> toggleFavorite()
R.id.menu_remove_from_favorites -> toggleFavorite() R.id.menu_remove_from_favorites -> toggleFavorite()
@ -563,8 +562,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
private fun rotateBy(degrees: Int) { private fun rotateBy(degrees: Int) {
mRotationDegrees = (mRotationDegrees + degrees) % 360 getCurrentPhotoFragment()?.rotateImageViewBy(degrees)
getCurrentPhotoFragment()?.rotateImageViewBy(mRotationDegrees)
supportInvalidateOptionsMenu() supportInvalidateOptionsMenu()
} }
@ -592,9 +590,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
handleSAFDialog(it) { handleSAFDialog(it) {
toast(R.string.saving) toast(R.string.saving)
Thread { Thread {
saveRotatedImageToFile(currPath, it, mRotationDegrees, true) { val photoFragment = getCurrentPhotoFragment() ?: return@Thread
saveRotatedImageToFile(currPath, it, photoFragment.mCurrentRotationDegrees, true) {
toast(R.string.file_saved) toast(R.string.file_saved)
mRotationDegrees = 0
getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0 getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0
invalidateOptionsMenu() invalidateOptionsMenu()
} }
@ -1075,7 +1073,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (mPos != position) { if (mPos != position) {
mPos = position mPos = position
updateActionbarTitle() updateActionbarTitle()
mRotationDegrees = 0
invalidateOptionsMenu() invalidateOptionsMenu()
scheduleSwipe() scheduleSwipe()
} }

View file

@ -448,7 +448,6 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
val showVideoDuration = medium.isVideo() && config.showThumbnailVideoDuration val showVideoDuration = medium.isVideo() && config.showThumbnailVideoDuration
if (showVideoDuration) { if (showVideoDuration) {
video_duration.text = medium.videoDuration.getFormattedDuration() video_duration.text = medium.videoDuration.getFormattedDuration()
video_duration.setTextColor(textColor)
} }
video_duration.beVisibleIf(showVideoDuration) video_duration.beVisibleIf(showVideoDuration)

View file

@ -374,8 +374,13 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, callback: (() -> Unit)? = nu
} }
fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, degrees: Int, showToasts: Boolean, callback: () -> Unit) { fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, degrees: Int, showToasts: Boolean, callback: () -> Unit) {
var newDegrees = degrees
if (newDegrees < 0) {
newDegrees += 360
}
if (oldPath == newPath && oldPath.isJpg()) { if (oldPath == newPath && oldPath.isJpg()) {
if (tryRotateByExif(oldPath, degrees, showToasts, callback)) { if (tryRotateByExif(oldPath, newDegrees, showToasts, callback)) {
return return
} }
} }
@ -394,11 +399,11 @@ fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String,
val oldLastModified = File(oldPath).lastModified() val oldLastModified = File(oldPath).lastModified()
if (oldPath.isJpg()) { if (oldPath.isJpg()) {
copyFile(oldPath, tmpPath) copyFile(oldPath, tmpPath)
saveExifRotation(ExifInterface(tmpPath), degrees) saveExifRotation(ExifInterface(tmpPath), newDegrees)
} else { } else {
val inputstream = getFileInputStreamSync(oldPath) val inputstream = getFileInputStreamSync(oldPath)
val bitmap = BitmapFactory.decodeStream(inputstream) val bitmap = BitmapFactory.decodeStream(inputstream)
saveFile(tmpPath, bitmap, it as FileOutputStream, degrees) saveFile(tmpPath, bitmap, it as FileOutputStream, newDegrees)
} }
if (getDoesFilePathExist(newPath)) { if (getDoesFilePathExist(newPath)) {

View file

@ -56,6 +56,7 @@ import java.util.*
class PhotoFragment : ViewPagerFragment() { class PhotoFragment : ViewPagerFragment() {
private val DEFAULT_DOUBLE_TAP_ZOOM = 2f private val DEFAULT_DOUBLE_TAP_ZOOM = 2f
private val ZOOMABLE_VIEW_LOAD_DELAY = 150L private val ZOOMABLE_VIEW_LOAD_DELAY = 150L
private val SAME_ASPECT_RATIO_THRESHOLD = 0.01
// devices with good displays, but the rest of the hardware not good enough for them // devices with good displays, but the rest of the hardware not good enough for them
private val WEIRD_DEVICES = arrayListOf( private val WEIRD_DEVICES = arrayListOf(
@ -70,7 +71,6 @@ class PhotoFragment : ViewPagerFragment() {
private var mIsPanorama = false private var mIsPanorama = false
private var mIsSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it private var mIsSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it
private var mImageOrientation = -1 private var mImageOrientation = -1
private var mOriginalSubsamplingScale = 0f
private var mLoadZoomableViewHandler = Handler() private var mLoadZoomableViewHandler = Handler()
private var mScreenWidth = 0 private var mScreenWidth = 0
private var mScreenHeight = 0 private var mScreenHeight = 0
@ -80,7 +80,6 @@ class PhotoFragment : ViewPagerFragment() {
private var mStoredHideExtendedDetails = false private var mStoredHideExtendedDetails = false
private var mStoredAllowDeepZoomableImages = false private var mStoredAllowDeepZoomableImages = false
private var mStoredShowHighestQuality = false private var mStoredShowHighestQuality = false
private var mStoredAllowOneFingerZoom = false
private var mStoredExtendedDetails = 0 private var mStoredExtendedDetails = 0
private lateinit var mView: ViewGroup private lateinit var mView: ViewGroup
@ -130,7 +129,7 @@ class PhotoFragment : ViewPagerFragment() {
} }
subsampling_view.setOnTouchListener { v, event -> subsampling_view.setOnTouchListener { v, event ->
if (subsampling_view.scale == mOriginalSubsamplingScale) { if (subsampling_view.isZoomedOut()) {
handleEvent(event) handleEvent(event)
} }
false false
@ -199,8 +198,7 @@ class PhotoFragment : ViewPagerFragment() {
} }
if (mWasInit) { if (mWasInit) {
if (config.allowZoomingImages != mStoredAllowDeepZoomableImages || config.showHighestQuality != mStoredShowHighestQuality || if (config.allowZoomingImages != mStoredAllowDeepZoomableImages || config.showHighestQuality != mStoredShowHighestQuality) {
config.oneFingerZoom != mStoredAllowOneFingerZoom) {
mIsSubsamplingVisible = false mIsSubsamplingVisible = false
mView.subsampling_view.beGone() mView.subsampling_view.beGone()
loadImage() loadImage()
@ -244,6 +242,7 @@ class PhotoFragment : ViewPagerFragment() {
mView.onGlobalLayout { mView.onGlobalLayout {
measureScreen() measureScreen()
Handler().postDelayed({ Handler().postDelayed({
mView.gif_view_frame.controller.resetState()
loadGif() loadGif()
}, 50) }, 50)
} }
@ -272,7 +271,6 @@ class PhotoFragment : ViewPagerFragment() {
mStoredHideExtendedDetails = hideExtendedDetails mStoredHideExtendedDetails = hideExtendedDetails
mStoredAllowDeepZoomableImages = allowZoomingImages mStoredAllowDeepZoomableImages = allowZoomingImages
mStoredShowHighestQuality = showHighestQuality mStoredShowHighestQuality = showHighestQuality
mStoredAllowOneFingerZoom = oneFingerZoom
mStoredExtendedDetails = extendedDetails mStoredExtendedDetails = extendedDetails
} }
} }
@ -355,15 +353,15 @@ class PhotoFragment : ViewPagerFragment() {
.into(mView.gestures_view) .into(mView.gestures_view)
} }
private fun loadBitmap(degrees: Int = mCurrentRotationDegrees) { private fun loadBitmap(addZoomableView: Boolean = true) {
val options = RequestOptions() val options = RequestOptions()
.signature(mMedium.path.getFileSignature()) .signature(mMedium.path.getFileSignature())
.format(DecodeFormat.PREFER_ARGB_8888) .format(DecodeFormat.PREFER_ARGB_8888)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE) .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.fitCenter() .fitCenter()
if (degrees != 0) { if (mCurrentRotationDegrees != 0) {
options.transform(GlideRotateTransformation(degrees)) options.transform(GlideRotateTransformation(mCurrentRotationDegrees))
options.diskCacheStrategy(DiskCacheStrategy.NONE) options.diskCacheStrategy(DiskCacheStrategy.NONE)
} }
@ -373,13 +371,13 @@ class PhotoFragment : ViewPagerFragment() {
.listener(object : RequestListener<Drawable> { .listener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
if (activity != null) { if (activity != null) {
tryLoadingWithPicasso(degrees) tryLoadingWithPicasso(addZoomableView)
} }
return false return false
} }
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
if (mIsFragmentVisible && degrees == 0) { if (mIsFragmentVisible && addZoomableView) {
scheduleZoomableView() scheduleZoomableView()
} }
return false return false
@ -387,7 +385,7 @@ class PhotoFragment : ViewPagerFragment() {
}).into(mView.gestures_view) }).into(mView.gestures_view)
} }
private fun tryLoadingWithPicasso(degrees: Int = 0) { private fun tryLoadingWithPicasso(addZoomableView: Boolean) {
var pathToLoad = if (mMedium.path.startsWith("content://")) mMedium.path else "file://${mMedium.path}" var pathToLoad = if (mMedium.path.startsWith("content://")) mMedium.path else "file://${mMedium.path}"
pathToLoad = pathToLoad.replace("%", "%25").replace("#", "%23") pathToLoad = pathToLoad.replace("%", "%25").replace("#", "%23")
@ -398,16 +396,16 @@ class PhotoFragment : ViewPagerFragment() {
.stableKey(mMedium.path.getFileKey()) .stableKey(mMedium.path.getFileKey())
.resize(mScreenWidth, mScreenHeight) .resize(mScreenWidth, mScreenHeight)
if (degrees != 0) { if (mCurrentRotationDegrees != 0) {
picasso.rotate(degrees.toFloat()) picasso.rotate(mCurrentRotationDegrees.toFloat())
} else { } else {
degreesForRotation(mImageOrientation).toFloat() degreesForRotation(mImageOrientation).toFloat()
} }
picasso.into(mView.gestures_view, object : Callback { picasso.into(mView.gestures_view, object : Callback {
override fun onSuccess() { override fun onSuccess() {
mView.gestures_view.controller.settings.isZoomEnabled = degrees != 0 || context?.config?.allowZoomingImages == false mView.gestures_view.controller.settings.isZoomEnabled = mCurrentRotationDegrees != 0 || context?.config?.allowZoomingImages == false
if (mIsFragmentVisible && degrees == 0) { if (mIsFragmentVisible && addZoomableView) {
scheduleZoomableView() scheduleZoomableView()
} }
} }
@ -428,7 +426,7 @@ class PhotoFragment : ViewPagerFragment() {
private fun scheduleZoomableView() { private fun scheduleZoomableView() {
mLoadZoomableViewHandler.removeCallbacksAndMessages(null) mLoadZoomableViewHandler.removeCallbacksAndMessages(null)
mLoadZoomableViewHandler.postDelayed({ mLoadZoomableViewHandler.postDelayed({
if (mIsFragmentVisible && context?.config?.allowZoomingImages == true && mMedium.isImage() && !mIsSubsamplingVisible && mCurrentRotationDegrees == 0) { if (mIsFragmentVisible && context?.config?.allowZoomingImages == true && mMedium.isImage() && !mIsSubsamplingVisible) {
addZoomableView() addZoomableView()
} }
}, ZOOMABLE_VIEW_LOAD_DELAY) }, ZOOMABLE_VIEW_LOAD_DELAY)
@ -447,6 +445,11 @@ class PhotoFragment : ViewPagerFragment() {
override fun make() = PicassoRegionDecoder() override fun make() = PicassoRegionDecoder()
} }
var newOrientation = (rotation + mCurrentRotationDegrees) % 360
if (newOrientation < 0) {
newOrientation += 360
}
val config = context!!.config val config = context!!.config
mView.subsampling_view.apply { mView.subsampling_view.apply {
setMaxTileSize(if (config.showHighestQuality) Integer.MAX_VALUE else 4096) setMaxTileSize(if (config.showHighestQuality) Integer.MAX_VALUE else 4096)
@ -456,23 +459,15 @@ class PhotoFragment : ViewPagerFragment() {
regionDecoderFactory = regionDecoder regionDecoderFactory = regionDecoder
maxScale = 10f maxScale = 10f
beVisible() beVisible()
isQuickScaleEnabled = config.oneFingerZoom
isOneToOneZoomEnabled = config.allowOneToOneZoom isOneToOneZoomEnabled = config.allowOneToOneZoom
orientation = rotation orientation = newOrientation
setImage(path) setImage(path)
onImageEventListener = object : SubsamplingScaleImageView.OnImageEventListener { onImageEventListener = object : SubsamplingScaleImageView.OnImageEventListener {
override fun onImageLoaded() {
}
override fun onReady() { override fun onReady() {
background = ColorDrawable(if (config.blackBackground) Color.BLACK else config.backgroundColor) background = ColorDrawable(if (config.blackBackground) Color.BLACK else config.backgroundColor)
val useWidth = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sHeight else sWidth val useWidth = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sHeight else sWidth
val useHeight = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sWidth else sHeight val useHeight = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sWidth else sHeight
doubleTapZoomScale = getDoubleTapZoomScale(useWidth, useHeight) doubleTapZoomScale = getDoubleTapZoomScale(useWidth, useHeight)
mOriginalSubsamplingScale = scale
}
override fun onTileLoadError(e: Exception) {
} }
override fun onImageLoadError(e: Exception) { override fun onImageLoadError(e: Exception) {
@ -481,6 +476,16 @@ class PhotoFragment : ViewPagerFragment() {
mIsSubsamplingVisible = false mIsSubsamplingVisible = false
beGone() beGone()
} }
override fun onImageRotation(degrees: Int) {
val fullRotation = (rotation + degrees) % 360
val useWidth = if (fullRotation == 90 || fullRotation == 270) sHeight else sWidth
val useHeight = if (fullRotation == 90 || fullRotation == 270) sWidth else sHeight
doubleTapZoomScale = getDoubleTapZoomScale(useWidth, useHeight)
mCurrentRotationDegrees = (mCurrentRotationDegrees + degrees) % 360
loadBitmap(false)
activity?.invalidateOptionsMenu()
}
} }
} }
} }
@ -537,7 +542,7 @@ class PhotoFragment : ViewPagerFragment() {
val bitmapAspectRatio = height / width.toFloat() val bitmapAspectRatio = height / width.toFloat()
val screenAspectRatio = mScreenHeight / mScreenWidth.toFloat() val screenAspectRatio = mScreenHeight / mScreenWidth.toFloat()
return if (context == null || bitmapAspectRatio == screenAspectRatio) { return if (context == null || Math.abs(bitmapAspectRatio - screenAspectRatio) < SAME_ASPECT_RATIO_THRESHOLD) {
DEFAULT_DOUBLE_TAP_ZOOM DEFAULT_DOUBLE_TAP_ZOOM
} else if (context!!.portrait && bitmapAspectRatio <= screenAspectRatio) { } else if (context!!.portrait && bitmapAspectRatio <= screenAspectRatio) {
mScreenHeight / height.toFloat() mScreenHeight / height.toFloat()
@ -553,11 +558,14 @@ class PhotoFragment : ViewPagerFragment() {
} }
fun rotateImageViewBy(degrees: Int) { fun rotateImageViewBy(degrees: Int) {
mCurrentRotationDegrees = degrees if (mIsSubsamplingVisible) {
mLoadZoomableViewHandler.removeCallbacksAndMessages(null) mView.subsampling_view.rotateBy(degrees)
mView.subsampling_view.beGone() } else {
mIsSubsamplingVisible = false mCurrentRotationDegrees = (mCurrentRotationDegrees + degrees) % 360
loadBitmap(degrees) mLoadZoomableViewHandler.removeCallbacksAndMessages(null)
mIsSubsamplingVisible = false
loadBitmap()
}
} }
private fun initExtendedDetails() { private fun initExtendedDetails() {

View file

@ -246,6 +246,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
initTimeHolder() initTimeHolder()
checkExtendedDetails() checkExtendedDetails()
updateInstantSwitchWidths() updateInstantSwitchWidths()
mView.video_surface_frame.onGlobalLayout {
mView.video_surface_frame.controller.resetState()
}
} }
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
@ -253,7 +256,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
outState.putInt(PROGRESS, mCurrTime) outState.putInt(PROGRESS, mCurrTime)
} }
private fun storeStateVariables() { private fun storeStateVariables() {
mConfig.apply { mConfig.apply {
mStoredShowExtendedDetails = showExtendedDetails mStoredShowExtendedDetails = showExtendedDetails

View file

@ -206,10 +206,6 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getInt(getDirectoryColumnsField(), getDefaultDirectoryColumnCount()) get() = prefs.getInt(getDirectoryColumnsField(), getDefaultDirectoryColumnCount())
set(dirColumnCnt) = prefs.edit().putInt(getDirectoryColumnsField(), dirColumnCnt).apply() set(dirColumnCnt) = prefs.edit().putInt(getDirectoryColumnsField(), dirColumnCnt).apply()
var oneFingerZoom: Boolean
get() = prefs.getBoolean(ONE_FINGER_ZOOM, false)
set(oneFingerZoom) = prefs.edit().putBoolean(ONE_FINGER_ZOOM, oneFingerZoom).apply()
var allowInstantChange: Boolean var allowInstantChange: Boolean
get() = prefs.getBoolean(ALLOW_INSTANT_CHANGE, false) get() = prefs.getBoolean(ALLOW_INSTANT_CHANGE, false)
set(allowInstantChange) = prefs.edit().putBoolean(ALLOW_INSTANT_CHANGE, allowInstantChange).apply() set(allowInstantChange) = prefs.edit().putBoolean(ALLOW_INSTANT_CHANGE, allowInstantChange).apply()

View file

@ -47,7 +47,6 @@ const val VIEW_TYPE_FILES = "view_type_files"
const val SHOW_EXTENDED_DETAILS = "show_extended_details" const val SHOW_EXTENDED_DETAILS = "show_extended_details"
const val EXTENDED_DETAILS = "extended_details" const val EXTENDED_DETAILS = "extended_details"
const val HIDE_EXTENDED_DETAILS = "hide_extended_details" const val HIDE_EXTENDED_DETAILS = "hide_extended_details"
const val ONE_FINGER_ZOOM = "one_finger_zoom"
const val ALLOW_INSTANT_CHANGE = "allow_instant_change" const val ALLOW_INSTANT_CHANGE = "allow_instant_change"
const val DO_EXTRA_CHECK = "do_extra_check" const val DO_EXTRA_CHECK = "do_extra_check"
const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock" const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock"

View file

@ -819,30 +819,6 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:id="@+id/settings_one_finger_zoom_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingLeft="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_one_finger_zoom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/one_finger_zoom"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_allow_one_to_one_zoom_holder" android:id="@+id/settings_allow_one_to_one_zoom_holder"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -6,12 +6,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView
android:id="@+id/top_shadow"
android:layout_width="match_parent"
android:layout_height="@dimen/default_status_action_height"
android:background="@drawable/gradient_background_flipped"/>
<com.alexvasilkov.gestures.GestureFrameLayout <com.alexvasilkov.gestures.GestureFrameLayout
android:id="@+id/video_surface_frame" android:id="@+id/video_surface_frame"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -37,6 +31,12 @@
android:layout_width="@dimen/media_side_slider_width" android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
<ImageView
android:id="@+id/top_shadow"
android:layout_width="match_parent"
android:layout_height="@dimen/default_status_action_height"
android:background="@drawable/gradient_background_flipped"/>
<TextView <TextView
android:id="@+id/video_bottom_gradient" android:id="@+id/video_bottom_gradient"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -177,6 +177,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">المصغرات</string> <string name="thumbnails">المصغرات</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnails</string> <string name="thumbnails">Thumbnails</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permet 1:1 zoom amb dos tocs dobles</string> <string name="allow_one_to_one_zoom">Permet 1:1 zoom amb dos tocs dobles</string>
<string name="open_videos_on_separate_screen">Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals</string> <string name="open_videos_on_separate_screen">Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals</string>
<string name="show_notch">Mostra una osca si està disponible</string> <string name="show_notch">Mostra una osca si està disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatures</string> <string name="thumbnails">Miniatures</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Náhledy</string> <string name="thumbnails">Náhledy</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Fiks Dato Taget værdi</string> <string name="fix_date_taken">Fiks Dato Taget værdi</string>
<string name="fixing">Fikser…</string> <string name="fixing">Fikser…</string>
<string name="dates_fixed_successfully">Datoer fikset med succes</string> <string name="dates_fixed_successfully">Datoer fikset med succes</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Del en skaleret version</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtrér medier</string> <string name="filter_media">Filtrér medier</string>
@ -172,7 +172,8 @@
<string name="allow_down_gesture">Luk fuldskærmsvisning ved at swipe ned</string> <string name="allow_down_gesture">Luk fuldskærmsvisning ved at swipe ned</string>
<string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string> <string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Vis en notch hvis tilgængelig</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniaturer</string> <string name="thumbnails">Miniaturer</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnails</string> <string name="thumbnails">Thumbnails</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω</string> <string name="allow_down_gesture">Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω</string>
<string name="allow_one_to_one_zoom">Allow 1:1 μεγένθυση με δύο διπλά χτυπήματα</string> <string name="allow_one_to_one_zoom">Allow 1:1 μεγένθυση με δύο διπλά χτυπήματα</string>
<string name="open_videos_on_separate_screen">Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες</string> <string name="open_videos_on_separate_screen">Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες</string>
<string name="show_notch">Εμφάνιση μιας εγκοπή αν διατίθεται</string> <string name="show_notch">Εμφάνιση μιας εγκοπής αν διατίθεται</string>
<string name="allow_rotating_gestures">Επιτρέπει την περιστροφή εικόνων με χειρονομίες</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Εικονίδια</string> <string name="thumbnails">Εικονίδια</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permitir zoom 1:1 con dos toques dobles</string> <string name="allow_one_to_one_zoom">Permitir zoom 1:1 con dos toques dobles</string>
<string name="open_videos_on_separate_screen">Siempre abre videos en una pantalla separada con nuevos gestos horizontales</string> <string name="open_videos_on_separate_screen">Siempre abre videos en una pantalla separada con nuevos gestos horizontales</string>
<string name="show_notch">Mostrar una muesca si está disponible</string> <string name="show_notch">Mostrar una muesca si está disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniaturas</string> <string name="thumbnails">Miniaturas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Esikatselukuvat</string> <string name="thumbnails">Esikatselukuvat</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Corriger la valeur des dates de prise des photos</string> <string name="fix_date_taken">Corriger la valeur des dates de prise des photos</string>
<string name="fixing">Correction en cours....</string> <string name="fixing">Correction en cours....</string>
<string name="dates_fixed_successfully">Dates corrigées</string> <string name="dates_fixed_successfully">Dates corrigées</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Partager une version redimensionnée</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtrer les médias</string> <string name="filter_media">Filtrer les médias</string>
@ -88,8 +88,8 @@
<string name="flip">Retourner</string> <string name="flip">Retourner</string>
<string name="flip_horizontally">Retourner horizontalement</string> <string name="flip_horizontally">Retourner horizontalement</string>
<string name="flip_vertically">Retourner verticalement</string> <string name="flip_vertically">Retourner verticalement</string>
<string name="free_aspect_ratio">Libre</string> <!-- available as an option: 1:1, 4:3, 16:9, free --> <string name="free_aspect_ratio">Libre</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other --> <string name="other_aspect_ratio">Autre</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Fond d\'écran simple</string> <string name="simple_wallpaper">Fond d\'écran simple</string>
@ -116,7 +116,7 @@
<string name="loop_slideshow">Diaporama en boucle</string> <string name="loop_slideshow">Diaporama en boucle</string>
<string name="slideshow_ended">Diaporama terminé</string> <string name="slideshow_ended">Diaporama terminé</string>
<string name="no_media_for_slideshow">Aucun média trouvé pour le diaporama</string> <string name="no_media_for_slideshow">Aucun média trouvé pour le diaporama</string>
<string name="use_crossfade_animation">Use crossfade animations</string> <string name="use_crossfade_animation">Utiliser des animations en fondu enchaîné</string>
<!-- View types --> <!-- View types -->
<string name="change_view_type">Changer de mode d\'affichage</string> <string name="change_view_type">Changer de mode d\'affichage</string>
@ -134,12 +134,12 @@
<string name="by_extension">Extension</string> <string name="by_extension">Extension</string>
<!-- Widgets --> <!-- Widgets -->
<string name="folder_on_widget">Folder shown on the widget:</string> <string name="folder_on_widget">Dossier affiché sur le widget :</string>
<string name="show_folder_name">Show folder name</string> <string name="show_folder_name">Afficher le nom du dossier</string>
<!-- Settings --> <!-- Settings -->
<string name="autoplay_videos">Lecture automatique des vidéos</string> <string name="autoplay_videos">Lecture automatique des vidéos</string>
<string name="remember_last_video_position">Remember last video playback position</string> <string name="remember_last_video_position">Mémoriser la dernière position de lecture vidéo</string>
<string name="toggle_filename">Permuter la visibilité des noms de fichier</string> <string name="toggle_filename">Permuter la visibilité des noms de fichier</string>
<string name="loop_videos">Lecture en boucle des vidéos</string> <string name="loop_videos">Lecture en boucle des vidéos</string>
<string name="animate_gifs">GIFs animés sur les miniatures</string> <string name="animate_gifs">GIFs animés sur les miniatures</string>
@ -170,9 +170,10 @@
<string name="show_highest_quality">Afficher les images avec la meilleur qualité possible</string> <string name="show_highest_quality">Afficher les images avec la meilleur qualité possible</string>
<string name="show_recycle_bin_last">Afficher la corbeille en dernière place sur l\'écran principal</string> <string name="show_recycle_bin_last">Afficher la corbeille en dernière place sur l\'écran principal</string>
<string name="allow_down_gesture">Fermeture de la vue plein écran par un geste vers le bas</string> <string name="allow_down_gesture">Fermeture de la vue plein écran par un geste vers le bas</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Permet d\'effectuer un zoom avant 1:1 avec un double appui</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Ouvrez toujours les vidéos sur un écran séparé avec de nouveaux gestes horizontaux.</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Afficher un cran si disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatures</string> <string name="thumbnails">Miniatures</string>
@ -193,7 +194,7 @@
<string name="faq_3_title">Comment faire pour qu\'un album soit toujours affiché tout en haut ?</string> <string name="faq_3_title">Comment faire pour qu\'un album soit toujours affiché tout en haut ?</string>
<string name="faq_3_text">Vous devez simplement à effectuer un appui prolongé sur l\'album en question et choisir l\'icône \"Épingler\" dans le menu d\'actions. Vous pouvez en épingler plusieurs. Les éléments épinglés seront alors triés selon l\'ordre par défaut.</string> <string name="faq_3_text">Vous devez simplement à effectuer un appui prolongé sur l\'album en question et choisir l\'icône \"Épingler\" dans le menu d\'actions. Vous pouvez en épingler plusieurs. Les éléments épinglés seront alors triés selon l\'ordre par défaut.</string>
<string name="faq_4_title">Comment avancer rapidement dans les vidéos ?</string> <string name="faq_4_title">Comment avancer rapidement dans les vidéos ?</string>
<string name="faq_4_text">You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward.</string> <string name="faq_4_text">Vous pouvez soit faire glisser votre doigt horizontalement sur le lecteur vidéo, soit cliquer sur le texte en cours ou la durée maximale près de la barre de recherche. Cela déplacera la vidéo vers l\'arrière ou vers l\'avant.</string>
<string name="faq_5_title">Quelle est la différence entre masquer et exclure un dossier ?</string> <string name="faq_5_title">Quelle est la différence entre masquer et exclure un dossier ?</string>
<string name="faq_5_text">\"Exclure un dossier\" permet de ne pas l\'afficher uniquement dans Simple Gallery, alors que \"Masquer un dossier\" rend le dossier invisible sur l\'ensemble de l\'appareil, y compris les autres applications de galerie. Dans le dernier cas, un fichier \".nomedia\" est créé dans le dossier masqué, et peut être supprimé avec n\'importe quel explorateur de fichiers.</string> <string name="faq_5_text">\"Exclure un dossier\" permet de ne pas l\'afficher uniquement dans Simple Gallery, alors que \"Masquer un dossier\" rend le dossier invisible sur l\'ensemble de l\'appareil, y compris les autres applications de galerie. Dans le dernier cas, un fichier \".nomedia\" est créé dans le dossier masqué, et peut être supprimé avec n\'importe quel explorateur de fichiers.</string>
<string name="faq_6_title">Pourquoi des dossiers avec des pochettes d\'albums musicaux ou des miniatures d\'images sont affichés ?</string> <string name="faq_6_title">Pourquoi des dossiers avec des pochettes d\'albums musicaux ou des miniatures d\'images sont affichés ?</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Iconas</string> <string name="thumbnails">Iconas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Dopusti zumiranje 1: 1 s dva dvostruka dodira</string> <string name="allow_one_to_one_zoom">Dopusti zumiranje 1: 1 s dva dvostruka dodira</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Sličice</string> <string name="thumbnails">Sličice</string>

View file

@ -173,7 +173,8 @@
<string name="allow_down_gesture">Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal</string> <string name="allow_down_gesture">Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal</string>
<string name="allow_one_to_one_zoom">Engedélyezi az 1:1 nagyítást két dupla érintéssel</string> <string name="allow_one_to_one_zoom">Engedélyezi az 1:1 nagyítást két dupla érintéssel</string>
<string name="open_videos_on_separate_screen">Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal</string> <string name="open_videos_on_separate_screen">Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Notch mutatása, ha elérhető</string>
<string name="allow_rotating_gestures">Engedélyezi a kép forgatását gesztusokkal</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatűrök</string> <string name="thumbnails">Miniatűrök</string>
@ -200,7 +201,7 @@ A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót,
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák?</string> <string name="faq_6_title">Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák?</string>
<string name="faq_6_text">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.</string> <string name="faq_6_text">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.</string>
<string name="faq_7_title">A képek mappája nem jelenik meg, mit tehetek?</string> <string name="faq_7_title">A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek?</string>
<string name="faq_7_text">Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -&gt; Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát.</string> <string name="faq_7_text">Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -&gt; Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát.</string>
<string name="faq_8_title">Mi van, ha csak néhány különleges mappát szeretnék látni?</string> <string name="faq_8_title">Mi van, ha csak néhány különleges mappát szeretnék látni?</string>
<string name="faq_8_text">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 -&gt; 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 -&gt; Befoglalt mappák kezelése menüpontban. <string name="faq_8_text">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 -&gt; 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 -&gt; Befoglalt mappák kezelése menüpontban.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnail</string> <string name="thumbnails">Thumbnail</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permetti l\'ingrandimento 1:1 con un doppio tasto</string> <string name="allow_one_to_one_zoom">Permetti l\'ingrandimento 1:1 con un doppio tasto</string>
<string name="open_videos_on_separate_screen">Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali</string> <string name="open_videos_on_separate_screen">Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali</string>
<string name="show_notch">Mostra un notch se disponibile</string> <string name="show_notch">Mostra un notch se disponibile</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Anteprime</string> <string name="thumbnails">Anteprime</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">サムネイル設定</string> <string name="thumbnails">サムネイル設定</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">섬네일</string> <string name="thumbnails">섬네일</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatiūros</string> <string name="thumbnails">Miniatiūros</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Korriger Dato tatt-verdi</string> <string name="fix_date_taken">Korriger Dato tatt-verdi</string>
<string name="fixing">Korrigerer…</string> <string name="fixing">Korrigerer…</string>
<string name="dates_fixed_successfully">Datoer er korrigerte</string> <string name="dates_fixed_successfully">Datoer er korrigerte</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Del versjon med endret størrelse</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtrer media</string> <string name="filter_media">Filtrer media</string>
@ -172,7 +172,8 @@
<string name="allow_down_gesture">Tillat lukking av mediavisningen med en nedoverbevegelse</string> <string name="allow_down_gesture">Tillat lukking av mediavisningen med en nedoverbevegelse</string>
<string name="allow_one_to_one_zoom">Tillat å zoome 1:1 med to dobbeltrykk</string> <string name="allow_one_to_one_zoom">Tillat å zoome 1:1 med to dobbeltrykk</string>
<string name="open_videos_on_separate_screen">Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser</string> <string name="open_videos_on_separate_screen">Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Vis flik hvis tilgjengelig</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Minibilder</string> <string name="thumbnails">Minibilder</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">1:1 zoomen na 2x dubbelklikken</string> <string name="allow_one_to_one_zoom">1:1 zoomen na 2x dubbelklikken</string>
<string name="open_videos_on_separate_screen">Video\'s altijd in apart scherm met horizontale veeggebaren openen</string> <string name="open_videos_on_separate_screen">Video\'s altijd in apart scherm met horizontale veeggebaren openen</string>
<string name="show_notch">Inkeping scherm tonen indien aanwezig</string> <string name="show_notch">Inkeping scherm tonen indien aanwezig</string>
<string name="allow_rotating_gestures">Afbeeldingen met veeggebaren draaien</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatuurvoorbeelden</string> <string name="thumbnails">Miniatuurvoorbeelden</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Napraw datę utworzenia</string> <string name="fix_date_taken">Napraw datę utworzenia</string>
<string name="fixing">Naprawiam…</string> <string name="fixing">Naprawiam…</string>
<string name="dates_fixed_successfully">Daty zostały naprawione</string> <string name="dates_fixed_successfully">Daty zostały naprawione</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Udostępnij zmienioną wersję</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtruj multimedia</string> <string name="filter_media">Filtruj multimedia</string>
@ -89,7 +89,7 @@
<string name="flip_horizontally">Przewróć w poziomie</string> <string name="flip_horizontally">Przewróć w poziomie</string>
<string name="flip_vertically">Przewróć w pionie</string> <string name="flip_vertically">Przewróć w pionie</string>
<string name="free_aspect_ratio">Wolne</string> <!-- available as an option: 1:1, 4:3, 16:9, free --> <string name="free_aspect_ratio">Wolne</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Inny</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other --> <string name="other_aspect_ratio">Inne</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Tapeta</string> <string name="simple_wallpaper">Tapeta</string>
@ -116,7 +116,7 @@
   <string name="loop_slideshow">Zapętlaj</string>    <string name="loop_slideshow">Zapętlaj</string>
<string name="slideshow_ended">Pokaz slajdów zakończony</string> <string name="slideshow_ended">Pokaz slajdów zakończony</string>
<string name="no_media_for_slideshow">Nie znalazłem multimediów do pokazu slajdów</string> <string name="no_media_for_slideshow">Nie znalazłem multimediów do pokazu slajdów</string>
<string name="use_crossfade_animation">Use crossfade animations</string> <string name="use_crossfade_animation">Używaj animacji przejścia</string>
<!-- View types --> <!-- View types -->
   <string name="change_view_type">Zmień typ widoku</string>    <string name="change_view_type">Zmień typ widoku</string>
@ -170,9 +170,10 @@
<string name="show_highest_quality">Pokazuj obrazy w najwyższej możliwej rozdzielczości</string> <string name="show_highest_quality">Pokazuj obrazy w najwyższej możliwej rozdzielczości</string>
<string name="show_recycle_bin_last">Pokazuj kosz jako ostatni element na głównym ekranie</string> <string name="show_recycle_bin_last">Pokazuj kosz jako ostatni element na głównym ekranie</string>
<string name="allow_down_gesture">Zezwalaj na zamykanie pełnoekranowego widoku gestem pociągnięcia w dół</string> <string name="allow_down_gesture">Zezwalaj na zamykanie pełnoekranowego widoku gestem pociągnięcia w dół</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Zezwalaj na powiększanie 1:1 dwoma podwójnymi dotknięciami</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Zawsze otwieraj filmy na osobnym ekranie z nowymi poziomymi gestami</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Pokazuj wcięcie (jeśli dostępne)</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
   <string name="thumbnails">Miniatury</string>    <string name="thumbnails">Miniatury</string>
@ -215,7 +216,7 @@
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string> <string name="app_short_description">Galeria pozwalająca na zarządzanie Twoimi plikami bez reklam, szanująca Twoją prywatność.</string>
<string name="app_long_description"> <string name="app_long_description">
Wysoce konfigurowalna galeria obsługująca wiele formatów obrazów i filmów, w tym SVG, RAW oraz multimedia panoramiczne. Wysoce konfigurowalna galeria obsługująca wiele formatów obrazów i filmów, w tym SVG, RAW oraz multimedia panoramiczne.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniaturas</string> <string name="thumbnails">Miniaturas</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">Sair de ecrã completo com um gesto para baixo</string> <string name="allow_down_gesture">Sair de ecrã completo com um gesto para baixo</string>
<string name="allow_one_to_one_zoom">Permitir ampliação 1:1 com dois toques</string> <string name="allow_one_to_one_zoom">Permitir ampliação 1:1 com dois toques</string>
<string name="open_videos_on_separate_screen">Abrir vídeos em ecrã distinto com os novos toques horizontais</string> <string name="open_videos_on_separate_screen">Abrir vídeos em ecrã distinto com os novos toques horizontais</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Mostrar \"notch\", se disponível</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniaturas</string> <string name="thumbnails">Miniaturas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Масштаб 1:1 двумя двойными нажатиями</string> <string name="allow_one_to_one_zoom">Масштаб 1:1 двумя двойными нажатиями</string>
<string name="open_videos_on_separate_screen">Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами</string> <string name="open_videos_on_separate_screen">Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами</string>
<string name="show_notch">Показывать метку при наличии</string> <string name="show_notch">Показывать метку при наличии</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Миниатюры</string> <string name="thumbnails">Миниатюры</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Povoliť 1:1 priblíženie dvojnásobným dvojklikom</string> <string name="allow_one_to_one_zoom">Povoliť 1:1 priblíženie dvojnásobným dvojklikom</string>
<string name="open_videos_on_separate_screen">Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami</string> <string name="open_videos_on_separate_screen">Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami</string>
<string name="show_notch">Zobraziť výrez obrazovky, ak je dostupný</string> <string name="show_notch">Zobraziť výrez obrazovky, ak je dostupný</string>
<string name="allow_rotating_gestures">Povoliť otáčanie obrázkov gestami</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Náhľady</string> <string name="thumbnails">Náhľady</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Dovoli 1:1 povečavo z dvojnim pritiskom</string> <string name="allow_one_to_one_zoom">Dovoli 1:1 povečavo z dvojnim pritiskom</string>
<string name="open_videos_on_separate_screen">Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami</string> <string name="open_videos_on_separate_screen">Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Sličice</string> <string name="thumbnails">Sličice</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Korrigera fotodatum</string> <string name="fix_date_taken">Korrigera fotodatum</string>
<string name="fixing">Korrigerar…</string> <string name="fixing">Korrigerar…</string>
<string name="dates_fixed_successfully">Datumen har korrigerats</string> <string name="dates_fixed_successfully">Datumen har korrigerats</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Dela en version med ändrad storlek</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtrera media</string> <string name="filter_media">Filtrera media</string>
@ -89,7 +89,7 @@
<string name="flip_horizontally">Vänd horisontellt</string> <string name="flip_horizontally">Vänd horisontellt</string>
<string name="flip_vertically">Vänd vertikalt</string> <string name="flip_vertically">Vänd vertikalt</string>
<string name="free_aspect_ratio">Fritt</string> <!-- available as an option: 1:1, 4:3, 16:9, free --> <string name="free_aspect_ratio">Fritt</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other --> <string name="other_aspect_ratio">Annat</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Bakgrund</string> <string name="simple_wallpaper">Bakgrund</string>
@ -116,7 +116,7 @@
<string name="loop_slideshow">Spela upp i en slinga</string> <string name="loop_slideshow">Spela upp i en slinga</string>
<string name="slideshow_ended">Bildspelet har avslutats</string> <string name="slideshow_ended">Bildspelet har avslutats</string>
<string name="no_media_for_slideshow">Ingen media hittades för bildspelet</string> <string name="no_media_for_slideshow">Ingen media hittades för bildspelet</string>
<string name="use_crossfade_animation">Use crossfade animations</string> <string name="use_crossfade_animation">Använd övertoningsanimationer</string>
<!-- View types --> <!-- View types -->
<string name="change_view_type">Ändra vy</string> <string name="change_view_type">Ändra vy</string>
@ -134,18 +134,18 @@
<string name="by_extension">Filnamnstillägg</string> <string name="by_extension">Filnamnstillägg</string>
<!-- Widgets --> <!-- Widgets -->
<string name="folder_on_widget">Folder shown on the widget:</string> <string name="folder_on_widget">Mapp som visas i widgeten:</string>
<string name="show_folder_name">Show folder name</string> <string name="show_folder_name">Visa mappnamnet</string>
<!-- Settings --> <!-- Settings -->
<string name="autoplay_videos">Spela upp videor automatiskt</string> <string name="autoplay_videos">Spela upp videor automatiskt</string>
<string name="remember_last_video_position">Remember last video playback position</string> <string name="remember_last_video_position">Kom ihåg senaste videouppspelningsposition</string>
<string name="toggle_filename">Visa/dölj filnamn</string> <string name="toggle_filename">Visa/dölj filnamn</string>
<string name="loop_videos">Spela upp videor om och om igen</string> <string name="loop_videos">Spela upp videor om och om igen</string>
<string name="animate_gifs">Animera GIF-bilders miniatyrer</string> <string name="animate_gifs">Animera GIF-bilders miniatyrer</string>
<string name="max_brightness">Maximal ljusstyrka när media visas i helskärmsläge</string> <string name="max_brightness">Maximal ljusstyrka när media visas i helskärmsläge</string>
<string name="crop_thumbnails">Beskär miniatyrer till kvadrater</string> <string name="crop_thumbnails">Beskär miniatyrer till kvadrater</string>
<string name="show_thumbnail_video_duration">Show video durations</string> <string name="show_thumbnail_video_duration">Visa videolängder</string>
<string name="screen_rotation_by">Rotera media i helskärmsläge</string> <string name="screen_rotation_by">Rotera media i helskärmsläge</string>
<string name="screen_rotation_system_setting">Systeminställning</string> <string name="screen_rotation_system_setting">Systeminställning</string>
<string name="screen_rotation_device_rotation">Enhetens rotation</string> <string name="screen_rotation_device_rotation">Enhetens rotation</string>
@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatyrer</string> <string name="thumbnails">Miniatyrer</string>
@ -217,7 +218,7 @@
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string> <string name="app_short_description">Ett offlinegalleri för dina filer utan reklam, respekterar din integritet.</string>
<string name="app_long_description"> <string name="app_long_description">
A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Küçük resimler</string> <string name="thumbnails">Küçük resimler</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Дозволити масштабування до 1:1 подвійним тапом</string> <string name="allow_one_to_one_zoom">Дозволити масштабування до 1:1 подвійним тапом</string>
<string name="open_videos_on_separate_screen">Завжди відкривати відео на окремому екрані з новими горизонтальними жестами</string> <string name="open_videos_on_separate_screen">Завжди відкривати відео на окремому екрані з новими горизонтальними жестами</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Ескізи</string> <string name="thumbnails">Ескізи</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">使用下滑手势关闭全屏视图</string> <string name="allow_down_gesture">使用下滑手势关闭全屏视图</string>
<string name="allow_one_to_one_zoom">双击两次后 1:1 放大图像</string> <string name="allow_one_to_one_zoom">双击两次后 1:1 放大图像</string>
<string name="open_videos_on_separate_screen">使用新的水平手势在独立页面播放视频</string> <string name="open_videos_on_separate_screen">使用新的水平手势在独立页面播放视频</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">显示留海(如果可用)</string>
<string name="allow_rotating_gestures">允许使用手势旋转图像</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">缩略图</string> <string name="thumbnails">缩略图</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">允許用兩次雙擊來1:1縮放</string> <string name="allow_one_to_one_zoom">允許用兩次雙擊來1:1縮放</string>
<string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string> <string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string>
<string name="show_notch">如果可以,顯示瀏海螢幕</string> <string name="show_notch">如果可以,顯示瀏海螢幕</string>
<string name="allow_rotating_gestures">允許用手勢來旋轉圖片</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">縮圖</string> <string name="thumbnails">縮圖</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string> <string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string> <string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string> <string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnails</string> <string name="thumbnails">Thumbnails</string>

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '1.3.11' ext.kotlin_version = '1.3.21'
repositories { repositories {
google() google()
@ -9,7 +9,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.3.0' classpath 'com.android.tools.build:gradle:3.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong