Matheus Victor 2020-03-18 09:25:56 -03:00
commit 6048576a6a
103 changed files with 2010 additions and 587 deletions

23
.editorconfig Normal file
View file

@ -0,0 +1,23 @@
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided this notice is
# preserved. This file is offered as-is, without any warranty.
# Names of contributors must not be used to endorse or promote products
# derived from this file without specific prior written permission.
# EditorConfig
# http://EditorConfig.org
# top-most EditorConfig file
root = true
# LF end-of-line, insert an empty new line and UTF-8
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 4
continuation_indent_size = 8
[*.xml]
continuation_indent_size = 4

View file

@ -1,6 +1,66 @@
Changelog Changelog
========== ==========
Version 6.13.4 *(2020-03-08)*
----------------------------
* Fixed some hiding, excluding and including related glitches
* Flipped Pin and Properties icons at the top menu for better user experience
* Avoid showing Portrait image folders at the main folders screen
Version 6.13.3 *(2020-03-01)*
----------------------------
* Avoid showing the "No Date Takens found" error in some cases
Version 6.13.2 *(2020-03-01)*
----------------------------
* Properly handle videos at slideshows
* Fixed some gestures during video playback
* Fixed a glitch with videos randomly restarting in some cases
Version 6.13.1 *(2020-02-28)*
----------------------------
* Adding a quick crashfix
Version 6.13.0 *(2020-02-28)*
----------------------------
* Allow fast forwarding videos by double clicking on screen sides
* Fixed an issue with the editor producing low quality outputs in some cases
* Improve some error messages, make them clearer
* Many translation and stability improvements
Version 6.12.5 *(2020-02-12)*
----------------------------
* Fixed some sorting related glitches
* Keep the old last modified value at file editing
Version 6.12.4 *(2020-02-11)*
----------------------------
* Fixed some folder sorting related glitches
Version 6.12.3 *(2020-02-10)*
----------------------------
* Fixed image disappearing at using the Editor
* Properly copy over EXIF values after editing an image
Version 6.12.2 *(2020-02-10)*
----------------------------
* Fixed some sorting and thumbnail related issues
Version 6.12.1 *(2020-02-10)*
----------------------------
* Improved the performance of the initial screen loading
* Fixed some editor related glitches
Version 6.12.0 *(2020-01-28)* Version 6.12.0 *(2020-01-28)*
---------------------------- ----------------------------

View file

@ -17,10 +17,10 @@ android {
applicationId "com.simplemobiletools.gallery.pro" applicationId "com.simplemobiletools.gallery.pro"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 289 versionCode 299
versionName "6.12.0" versionName "6.13.4"
multiDexEnabled true multiDexEnabled true
setProperty("archivesBaseName", "gallery") setProperty("archivesBaseName", "gallery-$versionCode")
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
} }
@ -51,6 +51,15 @@ android {
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
if (is_proprietary) {
main.java.srcDirs += 'src/proprietary/kotlin'
}
}
flavorDimensions "licensing"
productFlavors {
proprietary { }
foss { }
} }
lintOptions { lintOptions {
@ -69,19 +78,20 @@ android {
} }
dependencies { dependencies {
implementation 'com.simplemobiletools:commons:5.21.28' implementation 'com.simplemobiletools:commons:5.22.19'
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'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.18' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6'
implementation 'com.google.vr:sdk-panowidget:1.180.0' implementation 'com.google.vr:sdk-panowidget:1.180.0'
implementation 'com.google.vr:sdk-videowidget:1.180.0' implementation 'com.google.vr:sdk-videowidget:1.180.0'
implementation 'org.apache.sanselan:sanselan:0.97-incubator' implementation 'org.apache.sanselan:sanselan:0.97-incubator'
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:8dccb8450b' implementation 'com.github.tibbi:gestureviews:512f929d82'
implementation 'com.github.tibbi:subsampling-scale-image-view:d404e74e39' implementation 'com.github.tibbi:subsampling-scale-image-view:d404e74e39'
kapt 'com.github.bumptech.glide:compiler:4.10.0' kapt 'com.github.bumptech.glide:compiler:4.10.0'
@ -92,31 +102,30 @@ dependencies {
} }
// Apply the PESDKPlugin // Apply the PESDKPlugin
apply plugin: 'ly.img.android.pesdk' if (is_proprietary) {
apply plugin: 'ly.img.android.sdk'
pesdkConfig { imglyConfig {
pesdk {
enabled true
licencePath 'pesdk_license' licencePath 'pesdk_license'
}
supportLibVersion "28.0.0" supportLibVersion "28.0.0"
modules { modules {
include 'ly.img.android.pesdk.operation:text' include 'ui:core'
include 'ly.img.android.pesdk.operation:focus' include 'ui:text'
include 'ly.img.android.pesdk.operation:brush' include 'ui:focus'
include 'ly.img.android.pesdk.operation:filter' include 'ui:brush'
include 'ly.img.android.pesdk.operation:adjustment' include 'ui:filter'
include 'ui:transform'
include 'ui:adjustment'
include 'ly.img.android.pesdk.ui.mobile_ui:core' include 'backend:serializer'
include 'ly.img.android.pesdk.ui.mobile_ui:text'
include 'ly.img.android.pesdk.ui.mobile_ui:focus'
include 'ly.img.android.pesdk.ui.mobile_ui:brush'
include 'ly.img.android.pesdk.ui.mobile_ui:filter'
include 'ly.img.android.pesdk.ui.mobile_ui:transform'
include 'ly.img.android.pesdk.ui.mobile_ui:adjustment'
include 'ly.img.android.pesdk:serializer' include 'assets:font-basic'
include 'assets:filter-basic'
include 'ly.img.android.pesdk.assets:font-basic' }
include 'ly.img.android.pesdk.assets:filter-basic'
} }
} }

View file

@ -201,20 +201,18 @@
</activity> </activity>
<activity <activity
android:name=".activities.NewEditActivity" android:name=".activities.EditActivity"
android:label="@string/editor"> android:label="@string/editor">
<intent-filter>
<intent-filter
android:name="foss-editor">
<action android:name="android.intent.action.EDIT"/> <action android:name="android.intent.action.EDIT"/>
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*"/> <data android:mimeType="image/*"/>
</intent-filter> </intent-filter>
</activity>
<activity
android:name=".activities.EditActivity"
android:label="@string/editor">
<intent-filter> <intent-filter>
<action android:name="com.android.camera.action.CROP"/> <action android:name="com.android.camera.action.CROP"/>

View file

@ -6,6 +6,7 @@ import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Bitmap.CompressFormat import android.graphics.Bitmap.CompressFormat
import android.graphics.Color import android.graphics.Color
import android.graphics.Point
import android.media.ExifInterface import android.media.ExifInterface
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
@ -14,6 +15,16 @@ import android.provider.MediaStore
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.RelativeLayout 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.DecodeFormat
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.Target
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
@ -23,29 +34,62 @@ import com.simplemobiletools.commons.helpers.isNougatPlus
import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.gallery.pro.BuildConfig import com.simplemobiletools.gallery.pro.BuildConfig
import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.adapters.FiltersAdapter
import com.simplemobiletools.gallery.pro.dialogs.OtherAspectRatioDialog import com.simplemobiletools.gallery.pro.dialogs.OtherAspectRatioDialog
import com.simplemobiletools.gallery.pro.dialogs.ResizeDialog
import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.extensions.fixDateTaken import com.simplemobiletools.gallery.pro.extensions.fixDateTaken
import com.simplemobiletools.gallery.pro.extensions.openEditor
import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.helpers.*
import com.simplemobiletools.gallery.pro.models.FilterItem
import com.theartofdev.edmodo.cropper.CropImageView import com.theartofdev.edmodo.cropper.CropImageView
import com.zomato.photofilters.FilterPack
import com.zomato.photofilters.imageprocessors.Filter
import kotlinx.android.synthetic.main.activity_edit.* import kotlinx.android.synthetic.main.activity_edit.*
import kotlinx.android.synthetic.main.bottom_actions_aspect_ratio.* import kotlinx.android.synthetic.main.bottom_actions_aspect_ratio.*
import kotlinx.android.synthetic.main.bottom_editor_actions_filter.*
import kotlinx.android.synthetic.main.bottom_editor_crop_rotate_actions.* import kotlinx.android.synthetic.main.bottom_editor_crop_rotate_actions.*
import kotlinx.android.synthetic.main.bottom_editor_draw_actions.*
import kotlinx.android.synthetic.main.bottom_editor_primary_actions.*
import java.io.* import java.io.*
class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener { class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener {
companion object {
init {
System.loadLibrary("NativeImageProcessor")
}
}
private val TEMP_FOLDER_NAME = "images" private val TEMP_FOLDER_NAME = "images"
private val ASPECT_X = "aspectX" private val ASPECT_X = "aspectX"
private val ASPECT_Y = "aspectY" private val ASPECT_Y = "aspectY"
private val CROP = "crop"
// constants for bottom primary action groups
private val PRIMARY_ACTION_NONE = 0
private val PRIMARY_ACTION_FILTER = 1
private val PRIMARY_ACTION_CROP_ROTATE = 2
private val PRIMARY_ACTION_DRAW = 3
private val CROP_ROTATE_NONE = 0
private val CROP_ROTATE_ASPECT_RATIO = 1
private lateinit var uri: Uri private lateinit var uri: Uri
private lateinit var saveUri: Uri private lateinit var saveUri: Uri
private var resizeWidth = 0 private var resizeWidth = 0
private var resizeHeight = 0 private var resizeHeight = 0
private var drawColor = 0
private var lastOtherAspectRatio: Pair<Float, Float>? = null private var lastOtherAspectRatio: Pair<Float, Float>? = null
private var currPrimaryAction = PRIMARY_ACTION_NONE
private var currCropRotateAction = CROP_ROTATE_ASPECT_RATIO
private var currAspectRatio = ASPECT_RATIO_FREE private var currAspectRatio = ASPECT_RATIO_FREE
private var isCropIntent = false
private var isEditingWithThirdParty = false
private var isSharingBitmap = false private var isSharingBitmap = false
private var wasDrawCanvasPositioned = false
private var oldExif: ExifInterface? = null private var oldExif: ExifInterface? = null
private var filterInitialBitmap: Bitmap? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -65,6 +109,19 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
} }
override fun onResume() {
super.onResume()
isEditingWithThirdParty = false
bottom_draw_width.setColors(config.textColor, getAdjustedPrimaryColor(), config.backgroundColor)
}
override fun onStop() {
super.onStop()
if (isEditingWithThirdParty) {
finish()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_editor, menu) menuInflater.inflate(R.menu.menu_editor, menu)
updateMenuItemColors(menu) updateMenuItemColors(menu)
@ -74,6 +131,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.save_as -> saveImage() R.id.save_as -> saveImage()
R.id.edit -> editWith()
R.id.share -> shareImage() R.id.share -> shareImage()
else -> return super.onOptionsItemSelected(item) else -> return super.onOptionsItemSelected(item)
} }
@ -112,9 +170,14 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
else -> uri else -> uri
} }
isCropIntent = intent.extras?.get(CROP) == "true"
if (isCropIntent) {
bottom_editor_primary_actions.beGone()
(bottom_editor_crop_rotate_actions.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1) (bottom_editor_crop_rotate_actions.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1)
setupCropRotateActionButtons() }
setupAspectRatioButtons()
loadDefaultImageView()
setupBottomActions()
if (config.lastEditorCropAspectRatio == ASPECT_RATIO_OTHER) { if (config.lastEditorCropAspectRatio == ASPECT_RATIO_OTHER) {
if (config.lastEditorCropOtherAspectRatioX == 0f) { if (config.lastEditorCropOtherAspectRatioX == 0f) {
@ -127,26 +190,115 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
lastOtherAspectRatio = Pair(config.lastEditorCropOtherAspectRatioX, config.lastEditorCropOtherAspectRatioY) lastOtherAspectRatio = Pair(config.lastEditorCropOtherAspectRatioX, config.lastEditorCropOtherAspectRatioY)
} }
updateAspectRatio(config.lastEditorCropAspectRatio) updateAspectRatio(config.lastEditorCropAspectRatio)
crop_image_view.guidelines = CropImageView.Guidelines.ON crop_image_view.guidelines = CropImageView.Guidelines.ON
bottom_aspect_ratios.beVisible()
}
private fun loadDefaultImageView() {
default_image_view.beVisible()
crop_image_view.beGone()
editor_draw_canvas.beGone()
val options = RequestOptions()
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
Glide.with(this)
.asBitmap()
.load(uri)
.apply(options)
.listener(object : RequestListener<Bitmap> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Bitmap>?, isFirstResource: Boolean) = false
override fun onResourceReady(bitmap: Bitmap?, model: Any?, target: Target<Bitmap>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
val currentFilter = getFiltersAdapter()?.getCurrentFilter()
if (filterInitialBitmap == null) {
loadCropImageView() loadCropImageView()
bottomCropRotateClicked()
}
if (filterInitialBitmap != null && currentFilter != null && currentFilter.filter.name != getString(R.string.none)) {
default_image_view.onGlobalLayout {
applyFilter(currentFilter)
}
} else {
filterInitialBitmap = bitmap
}
if (isCropIntent) {
bottom_primary_filter.beGone()
bottom_primary_draw.beGone()
}
return false
}
}).into(default_image_view)
} }
private fun loadCropImageView() { private fun loadCropImageView() {
default_image_view.beGone()
editor_draw_canvas.beGone()
crop_image_view.apply { crop_image_view.apply {
beVisible()
setOnCropImageCompleteListener(this@EditActivity) setOnCropImageCompleteListener(this@EditActivity)
setImageUriAsync(uri) setImageUriAsync(uri)
guidelines = CropImageView.Guidelines.ON guidelines = CropImageView.Guidelines.ON
if (shouldCropSquare()) { if (isCropIntent && shouldCropSquare()) {
updateAspectRatio(ASPECT_RATIO_ONE_ONE) currAspectRatio = ASPECT_RATIO_ONE_ONE
setFixedAspectRatio(true) setFixedAspectRatio(true)
bottom_aspect_ratios.beGone() bottom_aspect_ratio.beGone()
} }
} }
} }
private fun loadDrawCanvas() {
default_image_view.beGone()
crop_image_view.beGone()
editor_draw_canvas.beVisible()
if (!wasDrawCanvasPositioned) {
wasDrawCanvasPositioned = true
editor_draw_canvas.onGlobalLayout {
ensureBackgroundThread {
fillCanvasBackground()
}
}
}
}
private fun fillCanvasBackground() {
val size = Point()
windowManager.defaultDisplay.getSize(size)
val options = RequestOptions()
.format(DecodeFormat.PREFER_ARGB_8888)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
try {
val builder = Glide.with(applicationContext)
.asBitmap()
.load(uri)
.apply(options)
.into(editor_draw_canvas.width, editor_draw_canvas.height)
val bitmap = builder.get()
runOnUiThread {
editor_draw_canvas.apply {
updateBackgroundBitmap(bitmap)
layoutParams.width = bitmap.width
layoutParams.height = bitmap.height
y = (height - bitmap.height) / 2f
requestLayout()
}
}
} catch (e: Exception) {
showErrorToast(e)
}
}
@TargetApi(Build.VERSION_CODES.N) @TargetApi(Build.VERSION_CODES.N)
private fun saveImage() { private fun saveImage() {
var inputStream: InputStream? = null var inputStream: InputStream? = null
@ -160,16 +312,68 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
inputStream?.close() inputStream?.close()
} }
if (crop_image_view.isVisible()) {
crop_image_view.getCroppedImageAsync() crop_image_view.getCroppedImageAsync()
} else if (editor_draw_canvas.isVisible()) {
val bitmap = editor_draw_canvas.getBitmap()
if (saveUri.scheme == "file") {
SaveAsDialog(this, saveUri.path!!, true) {
saveBitmapToFile(bitmap, it, true)
}
} else if (saveUri.scheme == "content") {
val filePathGetter = getNewFilePath()
SaveAsDialog(this, filePathGetter.first, filePathGetter.second) {
saveBitmapToFile(bitmap, it, true)
}
}
} else {
val currentFilter = getFiltersAdapter()?.getCurrentFilter() ?: return
val filePathGetter = getNewFilePath()
SaveAsDialog(this, filePathGetter.first, filePathGetter.second) {
toast(R.string.saving)
// clean up everything to free as much memory as possible
default_image_view.setImageResource(0)
crop_image_view.setImageBitmap(null)
bottom_actions_filter_list.adapter = null
bottom_actions_filter_list.beGone()
ensureBackgroundThread {
try {
val originalBitmap = Glide.with(applicationContext).asBitmap().load(uri).submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get()
currentFilter.filter.processFilter(originalBitmap)
saveBitmapToFile(originalBitmap, it, false)
} catch (e: OutOfMemoryError) {
toast(R.string.out_of_memory_error)
}
}
}
}
} }
private fun shareImage() { private fun shareImage() {
ensureBackgroundThread { ensureBackgroundThread {
when {
default_image_view.isVisible() -> {
val currentFilter = getFiltersAdapter()?.getCurrentFilter()
if (currentFilter == null) {
toast(R.string.unknown_error_occurred)
return@ensureBackgroundThread
}
val originalBitmap = Glide.with(applicationContext).asBitmap().load(uri).submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get()
currentFilter.filter.processFilter(originalBitmap)
shareBitmap(originalBitmap)
}
crop_image_view.isVisible() -> {
isSharingBitmap = true isSharingBitmap = true
runOnUiThread { runOnUiThread {
crop_image_view.getCroppedImageAsync() crop_image_view.getCroppedImageAsync()
} }
} }
editor_draw_canvas.isVisible() -> shareBitmap(editor_draw_canvas.getBitmap())
}
}
} }
private fun getTempImagePath(bitmap: Bitmap, callback: (path: String?) -> Unit) { private fun getTempImagePath(bitmap: Bitmap, callback: (path: String?) -> Unit) {
@ -212,11 +416,66 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
} }
private fun getFiltersAdapter() = bottom_actions_filter_list.adapter as? FiltersAdapter
private fun setupBottomActions() {
setupPrimaryActionButtons()
setupCropRotateActionButtons()
setupAspectRatioButtons()
setupDrawButtons()
}
private fun setupPrimaryActionButtons() {
bottom_primary_filter.setOnClickListener {
bottomFilterClicked()
}
bottom_primary_crop_rotate.setOnClickListener {
bottomCropRotateClicked()
}
bottom_primary_draw.setOnClickListener {
bottomDrawClicked()
}
}
private fun bottomFilterClicked() {
currPrimaryAction = if (currPrimaryAction == PRIMARY_ACTION_FILTER) {
PRIMARY_ACTION_NONE
} else {
PRIMARY_ACTION_FILTER
}
updatePrimaryActionButtons()
}
private fun bottomCropRotateClicked() {
currPrimaryAction = if (currPrimaryAction == PRIMARY_ACTION_CROP_ROTATE) {
PRIMARY_ACTION_NONE
} else {
PRIMARY_ACTION_CROP_ROTATE
}
updatePrimaryActionButtons()
}
private fun bottomDrawClicked() {
currPrimaryAction = if (currPrimaryAction == PRIMARY_ACTION_DRAW) {
PRIMARY_ACTION_NONE
} else {
PRIMARY_ACTION_DRAW
}
updatePrimaryActionButtons()
}
private fun setupCropRotateActionButtons() { private fun setupCropRotateActionButtons() {
bottom_rotate.setOnClickListener { bottom_rotate.setOnClickListener {
crop_image_view.rotateImage(90) crop_image_view.rotateImage(90)
} }
bottom_resize.beGoneIf(isCropIntent)
bottom_resize.setOnClickListener {
resizeImage()
}
bottom_flip_horizontally.setOnClickListener { bottom_flip_horizontally.setOnClickListener {
crop_image_view.flipImageHorizontally() crop_image_view.flipImageHorizontally()
} }
@ -224,6 +483,19 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
bottom_flip_vertically.setOnClickListener { bottom_flip_vertically.setOnClickListener {
crop_image_view.flipImageVertically() crop_image_view.flipImageVertically()
} }
bottom_aspect_ratio.setOnClickListener {
currCropRotateAction = if (currCropRotateAction == CROP_ROTATE_ASPECT_RATIO) {
crop_image_view.guidelines = CropImageView.Guidelines.OFF
bottom_aspect_ratios.beGone()
CROP_ROTATE_NONE
} else {
crop_image_view.guidelines = CropImageView.Guidelines.ON
bottom_aspect_ratios.beVisible()
CROP_ROTATE_ASPECT_RATIO
}
updateCropRotateActionButtons()
}
} }
private fun setupAspectRatioButtons() { private fun setupAspectRatioButtons() {
@ -255,6 +527,126 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
updateAspectRatioButtons() updateAspectRatioButtons()
} }
private fun setupDrawButtons() {
updateDrawColor(config.lastEditorDrawColor)
bottom_draw_width.progress = config.lastEditorBrushSize
updateBrushSize(config.lastEditorBrushSize)
bottom_draw_color_clickable.setOnClickListener {
ColorPickerDialog(this, drawColor) { wasPositivePressed, color ->
if (wasPositivePressed) {
updateDrawColor(color)
}
}
}
bottom_draw_width.onSeekBarChangeListener {
config.lastEditorBrushSize = it
updateBrushSize(it)
}
bottom_draw_undo.setOnClickListener {
editor_draw_canvas.undo()
}
}
private fun updateBrushSize(percent: Int) {
editor_draw_canvas.updateBrushSize(percent)
val scale = Math.max(0.03f, percent / 100f)
bottom_draw_color.scaleX = scale
bottom_draw_color.scaleY = scale
}
private fun updatePrimaryActionButtons() {
if (crop_image_view.isGone() && currPrimaryAction == PRIMARY_ACTION_CROP_ROTATE) {
loadCropImageView()
} else if (default_image_view.isGone() && currPrimaryAction == PRIMARY_ACTION_FILTER) {
loadDefaultImageView()
} else if (editor_draw_canvas.isGone() && currPrimaryAction == PRIMARY_ACTION_DRAW) {
loadDrawCanvas()
}
arrayOf(bottom_primary_filter, bottom_primary_crop_rotate, bottom_primary_draw).forEach {
it.applyColorFilter(Color.WHITE)
}
val currentPrimaryActionButton = when (currPrimaryAction) {
PRIMARY_ACTION_FILTER -> bottom_primary_filter
PRIMARY_ACTION_CROP_ROTATE -> bottom_primary_crop_rotate
PRIMARY_ACTION_DRAW -> bottom_primary_draw
else -> null
}
currentPrimaryActionButton?.applyColorFilter(getAdjustedPrimaryColor())
bottom_editor_filter_actions.beVisibleIf(currPrimaryAction == PRIMARY_ACTION_FILTER)
bottom_editor_crop_rotate_actions.beVisibleIf(currPrimaryAction == PRIMARY_ACTION_CROP_ROTATE)
bottom_editor_draw_actions.beVisibleIf(currPrimaryAction == PRIMARY_ACTION_DRAW)
if (currPrimaryAction == PRIMARY_ACTION_FILTER && bottom_actions_filter_list.adapter == null) {
ensureBackgroundThread {
val thumbnailSize = resources.getDimension(R.dimen.bottom_filters_thumbnail_size).toInt()
val bitmap = try {
Glide.with(this)
.asBitmap()
.load(uri).listener(object : RequestListener<Bitmap> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Bitmap>?, isFirstResource: Boolean): Boolean {
showErrorToast(e.toString())
return false
}
override fun onResourceReady(resource: Bitmap?, model: Any?, target: Target<Bitmap>?, dataSource: DataSource?, isFirstResource: Boolean) = false
})
.submit(thumbnailSize, thumbnailSize)
.get()
} catch (e: GlideException) {
showErrorToast(e)
finish()
return@ensureBackgroundThread
}
runOnUiThread {
val filterThumbnailsManager = FilterThumbnailsManager()
filterThumbnailsManager.clearThumbs()
val noFilter = Filter(getString(R.string.none))
filterThumbnailsManager.addThumb(FilterItem(bitmap, noFilter))
FilterPack.getFilterPack(this).forEach {
val filterItem = FilterItem(bitmap, it)
filterThumbnailsManager.addThumb(filterItem)
}
val filterItems = filterThumbnailsManager.processThumbs()
val adapter = FiltersAdapter(applicationContext, filterItems) {
val layoutManager = bottom_actions_filter_list.layoutManager as LinearLayoutManager
applyFilter(filterItems[it])
if (it == layoutManager.findLastCompletelyVisibleItemPosition() || it == layoutManager.findLastVisibleItemPosition()) {
bottom_actions_filter_list.smoothScrollBy(thumbnailSize, 0)
} else if (it == layoutManager.findFirstCompletelyVisibleItemPosition() || it == layoutManager.findFirstVisibleItemPosition()) {
bottom_actions_filter_list.smoothScrollBy(-thumbnailSize, 0)
}
}
bottom_actions_filter_list.adapter = adapter
adapter.notifyDataSetChanged()
}
}
}
if (currPrimaryAction != PRIMARY_ACTION_CROP_ROTATE) {
bottom_aspect_ratios.beGone()
currCropRotateAction = CROP_ROTATE_NONE
}
updateCropRotateActionButtons()
}
private fun applyFilter(filterItem: FilterItem) {
val newBitmap = Bitmap.createBitmap(filterInitialBitmap!!)
default_image_view.setImageBitmap(filterItem.filter.processFilter(newBitmap))
}
private fun updateAspectRatio(aspectRatio: Int) { private fun updateAspectRatio(aspectRatio: Int) {
currAspectRatio = aspectRatio currAspectRatio = aspectRatio
config.lastEditorCropAspectRatio = aspectRatio config.lastEditorCropAspectRatio = aspectRatio
@ -292,6 +684,40 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
currentAspectRatioButton.setTextColor(getAdjustedPrimaryColor()) currentAspectRatioButton.setTextColor(getAdjustedPrimaryColor())
} }
private fun updateCropRotateActionButtons() {
arrayOf(bottom_aspect_ratio).forEach {
it.applyColorFilter(Color.WHITE)
}
val primaryActionView = when (currCropRotateAction) {
CROP_ROTATE_ASPECT_RATIO -> bottom_aspect_ratio
else -> null
}
primaryActionView?.applyColorFilter(getAdjustedPrimaryColor())
}
private fun updateDrawColor(color: Int) {
drawColor = color
bottom_draw_color.applyColorFilter(color)
config.lastEditorDrawColor = color
editor_draw_canvas.updateColor(color)
}
private fun resizeImage() {
val point = getAreaSize()
if (point == null) {
toast(R.string.unknown_error_occurred)
return
}
ResizeDialog(this, point) {
resizeWidth = it.x
resizeHeight = it.y
crop_image_view.getCroppedImageAsync()
}
}
private fun shouldCropSquare(): Boolean { private fun shouldCropSquare(): Boolean {
val extras = intent.extras val extras = intent.extras
return if (extras != null && extras.containsKey(ASPECT_X) && extras.containsKey(ASPECT_Y)) { return if (extras != null && extras.containsKey(ASPECT_X) && extras.containsKey(ASPECT_Y)) {
@ -301,6 +727,16 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
} }
private fun getAreaSize(): Point? {
val rect = crop_image_view.cropRect ?: return null
val rotation = crop_image_view.rotatedDegrees
return if (rotation == 0 || rotation == 180) {
Point(rect.width(), rect.height())
} else {
Point(rect.height(), rect.width())
}
}
override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) { override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) {
if (result.error == null) { if (result.error == null) {
val bitmap = result.bitmap val bitmap = result.bitmap
@ -310,8 +746,9 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
return return
} }
if (isCropIntent) {
if (saveUri.scheme == "file") { if (saveUri.scheme == "file") {
saveBitmapToFile(bitmap, saveUri.path!!) saveBitmapToFile(bitmap, saveUri.path!!, true)
} else { } else {
var inputStream: InputStream? = null var inputStream: InputStream? = null
var outputStream: OutputStream? = null var outputStream: OutputStream? = null
@ -333,12 +770,48 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
finish() finish()
} }
} else if (saveUri.scheme == "file") {
SaveAsDialog(this, saveUri.path!!, true) {
saveBitmapToFile(bitmap, it, true)
}
} else if (saveUri.scheme == "content") {
val filePathGetter = getNewFilePath()
SaveAsDialog(this, filePathGetter.first, filePathGetter.second) {
saveBitmapToFile(bitmap, it, true)
}
} else {
toast(R.string.unknown_file_location)
}
} else { } else {
toast("${getString(R.string.image_editing_failed)}: ${result.error.message}") toast("${getString(R.string.image_editing_failed)}: ${result.error.message}")
} }
} }
private fun saveBitmapToFile(bitmap: Bitmap, path: String) { private fun getNewFilePath(): Pair<String, Boolean> {
var newPath = applicationContext.getRealPathFromURI(saveUri) ?: ""
if (newPath.startsWith("/mnt/")) {
newPath = ""
}
var shouldAppendFilename = true
if (newPath.isEmpty()) {
val filename = applicationContext.getFilenameFromContentUri(saveUri) ?: ""
if (filename.isNotEmpty()) {
val path = if (intent.extras?.containsKey(REAL_FILE_PATH) == true) intent.getStringExtra(REAL_FILE_PATH).getParentPath() else internalStoragePath
newPath = "$path/$filename"
shouldAppendFilename = false
}
}
if (newPath.isEmpty()) {
newPath = "$internalStoragePath/${getCurrentFormattedDateTime()}.${saveUri.toString().getFilenameExtension()}"
shouldAppendFilename = false
}
return Pair(newPath, shouldAppendFilename)
}
private fun saveBitmapToFile(bitmap: Bitmap, path: String, showSavingToast: Boolean) {
if (!packageName.contains("slootelibomelpmis".reversed(), true)) { if (!packageName.contains("slootelibomelpmis".reversed(), true)) {
if (baseConfig.appRunCount > 100) { if (baseConfig.appRunCount > 100) {
val label = "sknahT .moc.slootelibomelpmis.www morf eno lanigiro eht daolnwod ytefas nwo ruoy roF .ppa eht fo noisrev ekaf a gnisu era uoY".reversed() val label = "sknahT .moc.slootelibomelpmis.www morf eno lanigiro eht daolnwod ytefas nwo ruoy roF .ppa eht fo noisrev ekaf a gnisu era uoY".reversed()
@ -357,7 +830,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
val fileDirItem = FileDirItem(path, path.getFilenameFromPath()) val fileDirItem = FileDirItem(path, path.getFilenameFromPath())
getFileOutputStream(fileDirItem, true) { getFileOutputStream(fileDirItem, true) {
if (it != null) { if (it != null) {
saveBitmap(file, bitmap, it) saveBitmap(file, bitmap, it, showSavingToast)
} else { } else {
toast(R.string.image_editing_failed) toast(R.string.image_editing_failed)
} }
@ -371,8 +844,10 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
@TargetApi(Build.VERSION_CODES.N) @TargetApi(Build.VERSION_CODES.N)
private fun saveBitmap(file: File, bitmap: Bitmap, out: OutputStream) { private fun saveBitmap(file: File, bitmap: Bitmap, out: OutputStream, showSavingToast: Boolean) {
if (showSavingToast) {
toast(R.string.saving) toast(R.string.saving)
}
if (resizeWidth > 0 && resizeHeight > 0) { if (resizeWidth > 0 && resizeHeight > 0) {
val resized = Bitmap.createScaledBitmap(bitmap, resizeWidth, resizeHeight, false) val resized = Bitmap.createScaledBitmap(bitmap, resizeWidth, resizeHeight, false)
@ -394,6 +869,11 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
out.close() out.close()
} }
private fun editWith() {
openEditor(uri.toString(), true)
isEditingWithThirdParty = true
}
private fun scanFinalPath(path: String) { private fun scanFinalPath(path: String) {
val paths = arrayListOf(path) val paths = arrayListOf(path)
rescanPaths(paths) { rescanPaths(paths) {

View file

@ -73,6 +73,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private var mTempShowHiddenHandler = Handler() private var mTempShowHiddenHandler = Handler()
private var mZoomListener: MyRecyclerView.MyZoomListener? = null private var mZoomListener: MyRecyclerView.MyZoomListener? = null
private var mSearchMenuItem: MenuItem? = null private var mSearchMenuItem: MenuItem? = null
private var mLastMediaFetcher: MediaFetcher? = null
private var mDirs = ArrayList<Directory>() private var mDirs = ArrayList<Directory>()
private var mStoredAnimateGifs = true private var mStoredAnimateGifs = true
@ -245,6 +246,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
unregisterFileUpdateListener() unregisterFileUpdateListener()
if (!config.showAll) { if (!config.showAll) {
mLastMediaFetcher?.shouldStop = true
GalleryDatabase.destroyInstance() GalleryDatabase.destroyInstance()
} }
} }
@ -470,7 +472,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private fun showSortingDialog() { private fun showSortingDialog() {
ChangeSortingDialog(this, true, false) { ChangeSortingDialog(this, true, false) {
directories_grid.adapter = null directories_grid.adapter = null
if (config.directorySorting and SORT_BY_DATE_MODIFIED > 0 || config.directorySorting and SORT_BY_DATE_TAKEN > 0) { if (config.directorySorting and SORT_BY_DATE_MODIFIED != 0 || config.directorySorting and SORT_BY_DATE_TAKEN != 0) {
getDirectories() getDirectories()
} else { } else {
ensureBackgroundThread { ensureBackgroundThread {
@ -881,33 +883,44 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} }
// cached folders have been loaded, recheck folders one by one starting with the first displayed // cached folders have been loaded, recheck folders one by one starting with the first displayed
val mediaFetcher = MediaFetcher(applicationContext) mLastMediaFetcher?.shouldStop = true
mLastMediaFetcher = MediaFetcher(applicationContext)
val getImagesOnly = mIsPickImageIntent || mIsGetImageContentIntent val getImagesOnly = mIsPickImageIntent || mIsGetImageContentIntent
val getVideosOnly = mIsPickVideoIntent || mIsGetVideoContentIntent val getVideosOnly = mIsPickVideoIntent || mIsGetVideoContentIntent
val hiddenString = getString(R.string.hidden) val hiddenString = getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers() val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders val includedFolders = config.includedFolders
val tempFolderPath = config.tempFolderPath val tempFolderPath = config.tempFolderPath
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0
val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0 val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0
val favoritePaths = getFavoritePaths() val favoritePaths = getFavoritePaths()
val dirPathsToRemove = ArrayList<String>() val dirPathsToRemove = ArrayList<String>()
try { try {
for (directory in dirs) { for (directory in dirs) {
if (mShouldStopFetching) { if (mShouldStopFetching || isDestroyed || isFinishing) {
return return
} }
val curMedia = mediaFetcher.getFilesFrom(directory.path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) val sorting = config.getFileSorting(directory.path)
val grouping = config.getFolderGrouping(directory.path)
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 ||
sorting and SORT_BY_DATE_TAKEN != 0 ||
grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 ||
grouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0
val getProperLastModified = config.directorySorting and SORT_BY_DATE_MODIFIED != 0 ||
sorting and SORT_BY_DATE_MODIFIED != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0
val curMedia = mLastMediaFetcher!!.getFilesFrom(directory.path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, false)
val newDir = if (curMedia.isEmpty()) { val newDir = if (curMedia.isEmpty()) {
if (directory.path != tempFolderPath) { if (directory.path != tempFolderPath) {
dirPathsToRemove.add(directory.path) dirPathsToRemove.add(directory.path)
} }
directory directory
} else { } else {
createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
} }
// we are looping through the already displayed folders looking for changes, do not do anything if nothing changed // we are looping through the already displayed folders looking for changes, do not do anything if nothing changed
@ -923,6 +936,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
taken = newDir.taken taken = newDir.taken
this@apply.size = newDir.size this@apply.size = newDir.size
types = newDir.types types = newDir.types
sortValue = getDirectorySortingValue(curMedia, path, name, size)
} }
setupAdapter(dirs) setupAdapter(dirs)
@ -955,7 +969,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
val foldersToScan = mediaFetcher.getFoldersToScan() val foldersToScan = mLastMediaFetcher!!.getFoldersToScan()
foldersToScan.add(FAVORITES) foldersToScan.add(FAVORITES)
if (config.showRecycleBinAtFolders) { if (config.showRecycleBinAtFolders) {
foldersToScan.add(RECYCLE_BIN) foldersToScan.add(RECYCLE_BIN)
@ -969,11 +983,23 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
// check the remaining folders which were not cached at all yet // check the remaining folders which were not cached at all yet
for (folder in foldersToScan) { for (folder in foldersToScan) {
if (mShouldStopFetching) { if (mShouldStopFetching || isDestroyed || isFinishing) {
return return
} }
val newMedia = mediaFetcher.getFilesFrom(folder, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) val sorting = config.getFileSorting(folder)
val grouping = config.getFolderGrouping(folder)
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 ||
sorting and SORT_BY_DATE_TAKEN != 0 ||
grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 ||
grouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0
val getProperLastModified = config.directorySorting and SORT_BY_DATE_MODIFIED != 0 ||
sorting and SORT_BY_DATE_MODIFIED != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0
val newMedia = mLastMediaFetcher!!.getFilesFrom(folder, getImagesOnly, getVideosOnly, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, false)
if (newMedia.isEmpty()) { if (newMedia.isEmpty()) {
continue continue
} }
@ -987,7 +1013,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} }
} }
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
dirs.add(newDir) dirs.add(newDir)
setupAdapter(dirs) setupAdapter(dirs)
try { try {
@ -1129,7 +1155,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} else if (it.path != config.tempFolderPath) { } else if (it.path != config.tempFolderPath) {
val children = if (isPathOnOTG(it.path)) getOTGFolderChildrenNames(it.path) else File(it.path).list()?.asList() val children = if (isPathOnOTG(it.path)) getOTGFolderChildrenNames(it.path) else File(it.path).list()?.asList()
val hasMediaFile = children?.any { val hasMediaFile = children?.any {
it?.isMediaFile() == true || (File(it!!).isDirectory && it.startsWith("img_", true)) it != null && (it.isMediaFile() || (File(it).isDirectory && it.startsWith("img_", true)))
} ?: false } ?: false
if (!hasMediaFile) { if (!hasMediaFile) {
@ -1289,6 +1315,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
add(Release(225, R.string.release_225)) add(Release(225, R.string.release_225))
add(Release(258, R.string.release_258)) add(Release(258, R.string.release_258))
add(Release(277, R.string.release_277)) add(Release(277, R.string.release_277))
add(Release(295, R.string.release_295))
checkWhatsNew(this, BuildConfig.VERSION_CODE) checkWhatsNew(this, BuildConfig.VERSION_CODE)
} }
} }

View file

@ -60,6 +60,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
private var mShowAll = false private var mShowAll = false
private var mLoadedInitialPhotos = false private var mLoadedInitialPhotos = false
private var mIsSearchOpen = false private var mIsSearchOpen = false
private var mLastSearchedText = ""
private var mLatestMediaId = 0L private var mLatestMediaId = 0L
private var mLatestMediaDateId = 0L private var mLatestMediaDateId = 0L
private var mLastMediaHandler = Handler() private var mLastMediaHandler = Handler()
@ -301,6 +302,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
override fun onQueryTextChange(newText: String): Boolean { override fun onQueryTextChange(newText: String): Boolean {
if (mIsSearchOpen) { if (mIsSearchOpen) {
mLastSearchedText = newText
searchQueryChanged(newText) searchQueryChanged(newText)
} }
return true return true
@ -319,6 +321,8 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
if (mIsSearchOpen) { if (mIsSearchOpen) {
mIsSearchOpen = false mIsSearchOpen = false
mLastSearchedText = ""
media_refresh_layout.isEnabled = config.enablePullToRefresh media_refresh_layout.isEnabled = config.enablePullToRefresh
searchQueryChanged("") searchQueryChanged("")
} }
@ -389,11 +393,14 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
media_grid.adapter = this media_grid.adapter = this
} }
setupLayoutManager() setupLayoutManager()
} else { measureRecyclerViewContent(mMedia)
} else if (mLastSearchedText.isEmpty()) {
(currAdapter as MediaAdapter).updateMedia(mMedia) (currAdapter as MediaAdapter).updateMedia(mMedia)
measureRecyclerViewContent(mMedia)
} else {
searchQueryChanged(mLastSearchedText)
} }
measureRecyclerViewContent(mMedia)
setupScrollDirection() setupScrollDirection()
} }

View file

@ -359,4 +359,6 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
override fun goToNextItem() {} override fun goToNextItem() {}
override fun launchViewVideoIntent(path: String) {} override fun launchViewVideoIntent(path: String) {}
override fun isSlideShowActive() = false
} }

View file

@ -134,11 +134,14 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
media_grid.adapter = this media_grid.adapter = this
} }
setupLayoutManager() setupLayoutManager()
} else { measureRecyclerViewContent(mAllMedia)
} else if (mLastSearchedText.isEmpty()) {
(currAdapter as MediaAdapter).updateMedia(mAllMedia) (currAdapter as MediaAdapter).updateMedia(mAllMedia)
measureRecyclerViewContent(mAllMedia)
} else {
textChanged(mLastSearchedText)
} }
measureRecyclerViewContent(mAllMedia)
setupScrollDirection() setupScrollDirection()
} }

View file

@ -159,10 +159,11 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
fullscreenToggled(isFullscreen) fullscreenToggled(isFullscreen)
} }
video_curr_time.setOnClickListener { skip(false) } video_curr_time.setOnClickListener { doSkip(false) }
video_duration.setOnClickListener { skip(true) } video_duration.setOnClickListener { doSkip(true) }
video_toggle_play_pause.setOnClickListener { togglePlayPause() } video_toggle_play_pause.setOnClickListener { togglePlayPause() }
video_surface_frame.setOnClickListener { toggleFullscreen() } video_surface_frame.setOnClickListener { toggleFullscreen() }
video_surface_frame.controller.settings.swallowDoubleTaps = true
video_next_file.beVisibleIf(intent.getBooleanExtra(SHOW_NEXT_ITEM, false)) video_next_file.beVisibleIf(intent.getBooleanExtra(SHOW_NEXT_ITEM, false))
video_next_file.setOnClickListener { handleNextFile() } video_next_file.setOnClickListener { handleNextFile() }
@ -170,8 +171,20 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
video_prev_file.beVisibleIf(intent.getBooleanExtra(SHOW_PREV_ITEM, false)) video_prev_file.beVisibleIf(intent.getBooleanExtra(SHOW_PREV_ITEM, false))
video_prev_file.setOnClickListener { handlePrevFile() } video_prev_file.setOnClickListener { handlePrevFile() }
val gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
override fun onDoubleTap(e: MotionEvent?): Boolean {
if (e != null) {
handleDoubleTap(e.rawX)
}
return true
}
})
video_surface_frame.setOnTouchListener { view, event -> video_surface_frame.setOnTouchListener { view, event ->
handleEvent(event) handleEvent(event)
gestureDetector.onTouchEvent(event)
false false
} }
@ -179,13 +192,17 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
video_surface.surfaceTextureListener = this video_surface.surfaceTextureListener = this
if (config.allowVideoGestures) { if (config.allowVideoGestures) {
video_brightness_controller.initialize(this, slide_info, true, video_player_holder) { x, y -> video_brightness_controller.initialize(this, slide_info, true, video_player_holder, singleTap = { x, y ->
toggleFullscreen() toggleFullscreen()
} }, doubleTap = { x, y ->
doSkip(false)
})
video_volume_controller.initialize(this, slide_info, false, video_player_holder) { x, y -> video_volume_controller.initialize(this, slide_info, false, video_player_holder, singleTap = { x, y ->
toggleFullscreen() toggleFullscreen()
} }, doubleTap = { x, y ->
doSkip(true)
})
} else { } else {
video_brightness_controller.beGone() video_brightness_controller.beGone()
video_volume_controller.beGone() video_volume_controller.beGone()
@ -287,6 +304,15 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
} }
} }
private fun handleDoubleTap(x: Float) {
val instantWidth = mScreenWidth / 7
when {
x <= instantWidth -> doSkip(false)
x >= mScreenWidth - instantWidth -> doSkip(true)
else -> togglePlayPause()
}
}
private fun resumeVideo() { private fun resumeVideo() {
video_toggle_play_pause.setImageResource(R.drawable.ic_pause_outline) video_toggle_play_pause.setImageResource(R.drawable.ic_pause_outline)
if (mExoPlayer == null) { if (mExoPlayer == null) {
@ -470,16 +496,15 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
}) })
} }
private fun skip(forward: Boolean) { private fun doSkip(forward: Boolean) {
if (mExoPlayer == null) { if (mExoPlayer == null) {
return return
} }
val curr = mExoPlayer!!.currentPosition val curr = mExoPlayer!!.currentPosition
val twoPercents = Math.max((mExoPlayer!!.duration / 50).toInt(), MIN_SKIP_LENGTH) val newProgress = if (forward) curr + FAST_FORWARD_VIDEO_MS else curr - FAST_FORWARD_VIDEO_MS
val newProgress = if (forward) curr + twoPercents else curr - twoPercents
val roundProgress = Math.round(newProgress / 1000f) val roundProgress = Math.round(newProgress / 1000f)
val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt(), roundProgress), 0) val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt() / 1000, roundProgress), 0)
setPosition(limitedProgress) setPosition(limitedProgress)
if (!mIsPlaying) { if (!mIsPlaying) {
togglePlayPause() togglePlayPause()

View file

@ -1104,7 +1104,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private fun gotMedia(thumbnailItems: ArrayList<ThumbnailItem>) { private fun gotMedia(thumbnailItems: ArrayList<ThumbnailItem>) {
val media = thumbnailItems.asSequence().filter { it is Medium && !mIgnoredPaths.contains(it.path) }.map { it as Medium }.toMutableList() as ArrayList<Medium> val media = thumbnailItems.asSequence().filter { it is Medium && !mIgnoredPaths.contains(it.path) }.map { it as Medium }.toMutableList() as ArrayList<Medium>
if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) { if (isDirEmpty(media) || media.hashCode() == mPrevHashcode || (getCurrentFragment() as? VideoFragment)?.mIsPlaying == true) {
return return
} }
@ -1185,6 +1185,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
return mIsSlideshowActive return mIsSlideshowActive
} }
override fun isSlideShowActive() = mIsSlideshowActive
override fun goToPrevItem() { override fun goToPrevItem() {
view_pager.setCurrentItem(view_pager.currentItem - 1, false) view_pager.setCurrentItem(view_pager.currentItem - 1, false)
checkOrientation() checkOrientation()

View file

@ -0,0 +1,58 @@
package com.simplemobiletools.gallery.pro.adapters
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.models.FilterItem
import kotlinx.android.synthetic.main.editor_filter_item.view.*
import java.util.*
class FiltersAdapter(val context: Context, val filterItems: ArrayList<FilterItem>, val itemClick: (Int) -> Unit) : RecyclerView.Adapter<FiltersAdapter.ViewHolder>() {
private var currentSelection = filterItems.first()
private var strokeBackground = context.resources.getDrawable(R.drawable.stroke_background)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindView(filterItems[position])
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.editor_filter_item, parent, false)
return ViewHolder(view)
}
override fun getItemCount() = filterItems.size
fun getCurrentFilter() = currentSelection
private fun setCurrentFilter(position: Int) {
val filterItem = filterItems.getOrNull(position) ?: return
if (currentSelection != filterItem) {
currentSelection = filterItem
notifyDataSetChanged()
itemClick.invoke(position)
}
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bindView(filterItem: FilterItem): View {
itemView.apply {
editor_filter_item_label.text = filterItem.filter.name
editor_filter_item_thumbnail.setImageBitmap(filterItem.bitmap)
editor_filter_item_thumbnail.background = if (getCurrentFilter() == filterItem) {
strokeBackground
} else {
null
}
setOnClickListener {
setCurrentFilter(adapterPosition)
}
}
return itemView
}
}
}

View file

@ -2,6 +2,7 @@ package com.simplemobiletools.gallery.pro.asynctasks
import android.content.Context import android.content.Context
import android.os.AsyncTask import android.os.AsyncTask
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.extensions.config
@ -18,22 +19,31 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickImage
override fun doInBackground(vararg params: Void): ArrayList<ThumbnailItem> { override fun doInBackground(vararg params: Void): ArrayList<ThumbnailItem> {
val pathToUse = if (showAll) SHOW_ALL else mPath val pathToUse = if (showAll) SHOW_ALL else mPath
val getProperDateTaken = context.config.getFileSorting(pathToUse) and SORT_BY_DATE_TAKEN != 0 || context.config.getFolderGrouping(pathToUse) and GROUP_BY_DATE_TAKEN_DAILY != 0 val folderGrouping = context.config.getFolderGrouping(pathToUse)
val getProperFileSize = context.config.getFileSorting(pathToUse) and SORT_BY_SIZE != 0 val fileSorting = context.config.getFileSorting(pathToUse)
val getProperDateTaken = fileSorting and SORT_BY_DATE_TAKEN != 0 ||
folderGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 ||
folderGrouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0
val getProperLastModified = fileSorting and SORT_BY_DATE_MODIFIED != 0 ||
folderGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 ||
folderGrouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0
val getProperFileSize = fileSorting and SORT_BY_SIZE != 0
val favoritePaths = context.getFavoritePaths() val favoritePaths = context.getFavoritePaths()
val getVideoDurations = context.config.showThumbnailVideoDuration val getVideoDurations = context.config.showThumbnailVideoDuration
val media = if (showAll) { val media = if (showAll) {
val foldersToScan = mediaFetcher.getFoldersToScan().filter { it != RECYCLE_BIN && it != FAVORITES && !context.config.isFolderProtected(it) } val foldersToScan = mediaFetcher.getFoldersToScan().filter { it != RECYCLE_BIN && it != FAVORITES && !context.config.isFolderProtected(it) }
val media = ArrayList<Medium>() val media = ArrayList<Medium>()
foldersToScan.forEach { foldersToScan.forEach {
val newMedia = mediaFetcher.getFilesFrom(it, isPickImage, isPickVideo, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations, false) val newMedia = mediaFetcher.getFilesFrom(it, isPickImage, isPickVideo, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, getVideoDurations)
media.addAll(newMedia) media.addAll(newMedia)
} }
mediaFetcher.sortMedia(media, context.config.getFileSorting(SHOW_ALL)) mediaFetcher.sortMedia(media, context.config.getFileSorting(SHOW_ALL))
media media
} else { } else {
mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations) mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, getVideoDurations)
} }
return mediaFetcher.groupMedia(media, pathToUse) return mediaFetcher.groupMedia(media, pathToUse)
} }

View file

@ -9,7 +9,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase
import com.simplemobiletools.gallery.pro.interfaces.* import com.simplemobiletools.gallery.pro.interfaces.*
import com.simplemobiletools.gallery.pro.models.* import com.simplemobiletools.gallery.pro.models.*
@Database(entities = [Directory::class, Medium::class, Widget::class, DateTaken::class, Favorite::class], version = 7) @Database(entities = [Directory::class, Medium::class, Widget::class, DateTaken::class, Favorite::class], version = 8)
abstract class GalleryDatabase : RoomDatabase() { abstract class GalleryDatabase : RoomDatabase() {
abstract fun DirectoryDao(): DirectoryDao abstract fun DirectoryDao(): DirectoryDao
@ -34,6 +34,7 @@ abstract class GalleryDatabase : RoomDatabase() {
.addMigrations(MIGRATION_4_5) .addMigrations(MIGRATION_4_5)
.addMigrations(MIGRATION_5_6) .addMigrations(MIGRATION_5_6)
.addMigrations(MIGRATION_6_7) .addMigrations(MIGRATION_6_7)
.addMigrations(MIGRATION_7_8)
.build() .build()
} }
} }
@ -67,5 +68,11 @@ abstract class GalleryDatabase : RoomDatabase() {
database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)") database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)")
} }
} }
private val MIGRATION_7_8 = object : Migration(7, 8) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE directories ADD COLUMN sort_value TEXT default '' NOT NULL")
}
}
} }
} }

View file

@ -80,7 +80,7 @@ fun Activity.launchCamera() {
fun SimpleActivity.launchAbout() { fun SimpleActivity.launchAbout() {
val licenses = LICENSE_GLIDE or LICENSE_CROPPER or LICENSE_RTL or LICENSE_SUBSAMPLING or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GIF_DRAWABLE or val licenses = LICENSE_GLIDE or LICENSE_CROPPER or LICENSE_RTL or LICENSE_SUBSAMPLING or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GIF_DRAWABLE or
LICENSE_PICASSO or LICENSE_EXOPLAYER or LICENSE_PANORAMA_VIEW or LICENSE_SANSELAN or LICENSE_GESTURE_VIEWS LICENSE_PICASSO or LICENSE_EXOPLAYER or LICENSE_PANORAMA_VIEW or LICENSE_SANSELAN or LICENSE_FILTERS or LICENSE_GESTURE_VIEWS
val faqItems = arrayListOf( val faqItems = arrayListOf(
FAQItem(R.string.faq_5_title_commons, R.string.faq_5_text_commons), FAQItem(R.string.faq_5_title_commons, R.string.faq_5_text_commons),
@ -156,13 +156,10 @@ fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) {
} else { } else {
try { try {
file.createNewFile() file.createNewFile()
applicationContext.scanFileRecursively(file) {
callback()
}
} catch (e: Exception) { } catch (e: Exception) {
showErrorToast(e) showErrorToast(e)
callback()
} }
callback()
} }
} }
@ -453,6 +450,17 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, showToasts: Boolean, hasResc
} }
} }
if (!didUpdateFile) {
if (showToasts) {
toast(R.string.no_date_takens_found)
}
runOnUiThread {
callback?.invoke()
}
return@ensureBackgroundThread
}
val resultSize = contentResolver.applyBatch(MediaStore.AUTHORITY, operations).size val resultSize = contentResolver.applyBatch(MediaStore.AUTHORITY, operations).size
if (resultSize == 0) { if (resultSize == 0) {
didUpdateFile = false didUpdateFile = false

View file

@ -165,25 +165,26 @@ fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Direct
dirs.sortWith(Comparator { o1, o2 -> dirs.sortWith(Comparator { o1, o2 ->
o1 as Directory o1 as Directory
o2 as Directory o2 as Directory
var result = when { var result = when {
sorting and SORT_BY_NAME != 0 -> { sorting and SORT_BY_NAME != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) { if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase()) AlphanumericComparator().compare(o1.sortValue.toLowerCase(), o2.sortValue.toLowerCase())
} else { } else {
o1.name.toLowerCase().compareTo(o2.name.toLowerCase()) o1.sortValue.toLowerCase().compareTo(o2.sortValue.toLowerCase())
} }
} }
sorting and SORT_BY_PATH != 0 -> { sorting and SORT_BY_PATH != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) { if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) AlphanumericComparator().compare(o1.sortValue.toLowerCase(), o2.sortValue.toLowerCase())
} else { } else {
o1.path.toLowerCase().compareTo(o2.path.toLowerCase()) o1.sortValue.toLowerCase().compareTo(o2.sortValue.toLowerCase())
} }
} }
sorting and SORT_BY_PATH != 0 -> AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) sorting and SORT_BY_PATH != 0 -> AlphanumericComparator().compare(o1.sortValue.toLowerCase(), o2.sortValue.toLowerCase())
sorting and SORT_BY_SIZE != 0 -> o1.size.compareTo(o2.size) sorting and SORT_BY_SIZE != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0)
sorting and SORT_BY_DATE_MODIFIED != 0 -> o1.modified.compareTo(o2.modified) sorting and SORT_BY_DATE_MODIFIED != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0)
else -> o1.taken.compareTo(o2.taken) else -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0)
} }
if (sorting and SORT_DESCENDING != 0) { if (sorting and SORT_DESCENDING != 0) {
@ -252,7 +253,7 @@ fun Context.getDirectParentSubfolders(dirs: ArrayList<Directory>, currentPathPre
val parent = File(path).parent val parent = File(path).parent
if (parent != null && !folders.contains(parent) && dirs.none { it.path == parent }) { if (parent != null && !folders.contains(parent) && dirs.none { it.path == parent }) {
currentPaths.add(parent) currentPaths.add(parent)
val isSortingAscending = config.sorting and SORT_DESCENDING == 0 val isSortingAscending = config.sorting.isSortingAscending()
val subDirs = dirs.filter { File(it.path).parent.equals(File(path).parent, true) } as ArrayList<Directory> val subDirs = dirs.filter { File(it.path).parent.equals(File(path).parent, true) } as ArrayList<Directory>
if (subDirs.isNotEmpty()) { if (subDirs.isNotEmpty()) {
val lastModified = if (isSortingAscending) { val lastModified = if (isSortingAscending) {
@ -281,7 +282,8 @@ fun Context.getDirectParentSubfolders(dirs: ArrayList<Directory>, currentPathPre
dateTaken, dateTaken,
subDirs.sumByLong { it.size }, subDirs.sumByLong { it.size },
getPathLocation(parent), getPathLocation(parent),
mediaTypes) mediaTypes,
"")
directory.containsMediaFilesDirectly = false directory.containsMediaFilesDirectly = false
dirs.add(directory) dirs.add(directory)
@ -479,7 +481,7 @@ fun Context.addTempFolderIfNeeded(dirs: ArrayList<Directory>): ArrayList<Directo
val tempFolderPath = config.tempFolderPath val tempFolderPath = config.tempFolderPath
return if (tempFolderPath.isNotEmpty()) { return if (tempFolderPath.isNotEmpty()) {
val directories = ArrayList<Directory>() val directories = ArrayList<Directory>()
val newFolder = Directory(null, tempFolderPath, "", tempFolderPath.getFilenameFromPath(), 0, 0, 0, 0L, getPathLocation(tempFolderPath), 0) val newFolder = Directory(null, tempFolderPath, "", tempFolderPath.getFilenameFromPath(), 0, 0, 0, 0L, getPathLocation(tempFolderPath), 0, "")
directories.add(newFolder) directories.add(newFolder)
directories.addAll(dirs) directories.addAll(dirs)
directories directories
@ -706,7 +708,7 @@ fun Context.updateDBMediaPath(oldPath: String, newPath: String) {
fun Context.updateDBDirectory(directory: Directory) { fun Context.updateDBDirectory(directory: Directory) {
try { try {
directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types) directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types, directory.sortValue)
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} }
@ -855,19 +857,27 @@ fun Context.addPathToDB(path: String) {
} }
fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String, fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
includedFolders: MutableSet<String>, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory { includedFolders: MutableSet<String>, getProperFileSize: Boolean): Directory {
val OTGPath = config.OTGPath val OTGPath = config.OTGPath
var thumbnail = curMedia.firstOrNull { getDoesFilePathExist(it.path, OTGPath) }?.path ?: "" val grouped = MediaFetcher(this).groupMedia(curMedia, path)
var thumbnail: String? = null
albumCovers.forEach { albumCovers.forEach {
if (it.path == path && getDoesFilePathExist(it.tmb, OTGPath)) { if (it.path == path && getDoesFilePathExist(it.tmb, OTGPath)) {
thumbnail = it.tmb thumbnail = it.tmb
} }
} }
if (config.OTGPath.isNotEmpty() && thumbnail.startsWith(config.OTGPath)) { if (thumbnail == null) {
thumbnail = thumbnail.getOTGPublicPath(applicationContext) val sortedMedia = grouped.filter { it is Medium }.toMutableList() as ArrayList<Medium>
thumbnail = sortedMedia.firstOrNull { getDoesFilePathExist(it.path, OTGPath) }?.path ?: ""
} }
if (config.OTGPath.isNotEmpty() && thumbnail!!.startsWith(config.OTGPath)) {
thumbnail = thumbnail!!.getOTGPublicPath(applicationContext)
}
val isSortingAscending = config.directorySorting.isSortingAscending()
val defaultMedium = Medium(0, "", "", "", 0L, 0L, 0L, 0, 0, false, 0L) val defaultMedium = Medium(0, "", "", "", 0L, 0L, 0L, 0, 0, false, 0L)
val firstItem = curMedia.firstOrNull() ?: defaultMedium val firstItem = curMedia.firstOrNull() ?: defaultMedium
val lastItem = curMedia.lastOrNull() ?: defaultMedium val lastItem = curMedia.lastOrNull() ?: defaultMedium
@ -876,7 +886,34 @@ fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>,
val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken) val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken)
val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L
val mediaTypes = curMedia.getDirMediaTypes() val mediaTypes = curMedia.getDirMediaTypes()
return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes) val sortValue = getDirectorySortingValue(curMedia, path, dirName, size)
return Directory(null, path, thumbnail!!, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes, sortValue)
}
fun Context.getDirectorySortingValue(media: ArrayList<Medium>, path: String, name: String, size: Long): String {
val sorting = config.directorySorting
val sorted = when {
sorting and SORT_BY_NAME != 0 -> return name
sorting and SORT_BY_PATH != 0 -> return path
sorting and SORT_BY_SIZE != 0 -> return size.toString()
sorting and SORT_BY_DATE_MODIFIED != 0 -> media.sortedBy { it.modified }
sorting and SORT_BY_DATE_TAKEN != 0 -> media.sortedBy { it.taken }
else -> media
}
val relevantMedium = if (sorting.isSortingAscending()) {
sorted.firstOrNull() ?: return ""
} else {
sorted.lastOrNull() ?: return ""
}
val result: Any = when {
sorting and SORT_BY_DATE_MODIFIED != 0 -> relevantMedium.modified
sorting and SORT_BY_DATE_TAKEN != 0 -> relevantMedium.taken
else -> 0
}
return result.toString()
} }
fun Context.updateDirectoryPath(path: String) { fun Context.updateDirectoryPath(path: String) {
@ -886,12 +923,23 @@ fun Context.updateDirectoryPath(path: String) {
val hiddenString = getString(R.string.hidden) val hiddenString = getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers() val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders val includedFolders = config.includedFolders
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 val sorting = config.getFileSorting(path)
val grouping = config.getFolderGrouping(path)
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 ||
sorting and SORT_BY_DATE_TAKEN != 0 ||
grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 ||
grouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0
val getProperLastModified = config.directorySorting and SORT_BY_DATE_MODIFIED != 0 ||
sorting and SORT_BY_DATE_MODIFIED != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 ||
grouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0
val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0 val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0
val favoritePaths = getFavoritePaths() val favoritePaths = getFavoritePaths()
val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, false)
val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
updateDBDirectory(directory) updateDBDirectory(directory)
} }
@ -910,7 +958,7 @@ fun Context.getFileDateTaken(path: String): Long {
do { do {
try { try {
return cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) return cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
} catch (e: Exception) { } catch (ignored: Exception) {
} }
} while (cursor.moveToNext()) } while (cursor.moveToNext())
} }
@ -918,5 +966,3 @@ fun Context.getFileDateTaken(path: String): Long {
return 0L return 0L
} }
fun Context.isChromebook() = packageManager.hasSystemFeature("org.chromium.arc.device_management")

View file

@ -0,0 +1,5 @@
package com.simplemobiletools.gallery.pro.extensions
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
fun Int.isSortingAscending() = this and SORT_DESCENDING == 0

View file

@ -7,9 +7,9 @@ import com.simplemobiletools.commons.helpers.NOMEDIA
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedPaths.any { startsWith(it, true) } fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedPaths.any { equals(it, true) } || includedPaths.any { "$this/".startsWith("$it/", true) }
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) } fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { equals(it, true) } || excludedPaths.any { "$this/".startsWith("$it/", true) }
fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean { fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
if (isEmpty()) { if (isEmpty()) {
@ -20,7 +20,7 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
if (file.name.startsWith("img_", true)) { if (file.name.startsWith("img_", true)) {
val files = file.list() val files = file.list()
if (files != null) { if (files != null) {
if (files.any { it.contains("portrait", true) && it.contains("burst", true) }) { if (files.any { it.contains("burst", true) }) {
return false return false
} }
} }
@ -32,7 +32,12 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
return true return true
} }
val containsNoMedia = if (showHidden) false else File(this, NOMEDIA).exists() val containsNoMedia = if (showHidden) {
false
} else {
File(this, NOMEDIA).exists()
}
return if (!showHidden && containsNoMedia) { return if (!showHidden && containsNoMedia) {
false false
} else if (excludedPaths.contains(this)) { } else if (excludedPaths.contains(this)) {

View file

@ -111,7 +111,7 @@ class PhotoFragment : ViewPagerFragment() {
instant_prev_item.parentView = container instant_prev_item.parentView = container
instant_next_item.parentView = container instant_next_item.parentView = container
photo_brightness_controller.initialize(activity!!, slide_info, true, container) { x, y -> photo_brightness_controller.initialize(activity!!, slide_info, true, container, singleTap = { x, y ->
mView.apply { mView.apply {
if (subsampling_view.isVisible()) { if (subsampling_view.isVisible()) {
subsampling_view.sendFakeClick(x, y) subsampling_view.sendFakeClick(x, y)
@ -119,7 +119,7 @@ class PhotoFragment : ViewPagerFragment() {
gestures_view.sendFakeClick(x, y) gestures_view.sendFakeClick(x, y)
} }
} }
} })
if (context.config.allowDownGesture) { if (context.config.allowDownGesture) {
gif_view.setOnTouchListener { v, event -> gif_view.setOnTouchListener { v, event ->
@ -767,9 +767,8 @@ class PhotoFragment : ViewPagerFragment() {
} }
private fun updateInstantSwitchWidths() { 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 = mScreenWidth / 7
mView.instant_prev_item.layoutParams.width = newWidth.toInt() mView.instant_next_item.layoutParams.width = mScreenWidth / 7
mView.instant_next_item.layoutParams.width = newWidth.toInt()
} }
override fun fullscreenToggled(isFullscreen: Boolean) { override fun fullscreenToggled(isFullscreen: Boolean) {

View file

@ -44,7 +44,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
private var mWasFragmentInit = false private var mWasFragmentInit = false
private var mIsPanorama = false private var mIsPanorama = false
private var mIsFragmentVisible = false private var mIsFragmentVisible = false
private var mIsPlaying = false
private var mIsDragged = false private var mIsDragged = false
private var mWasVideoStarted = false private var mWasVideoStarted = false
private var mWasPlayerInited = false private var mWasPlayerInited = false
@ -55,6 +54,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
private var mDuration = 0 private var mDuration = 0
private var mPositionWhenInit = 0 private var mPositionWhenInit = 0
private var mPositionAtPause = 0L private var mPositionAtPause = 0L
var mIsPlaying = false
private var mExoPlayer: SimpleExoPlayer? = null private var mExoPlayer: SimpleExoPlayer? = null
private var mVideoSize = Point(1, 1) private var mVideoSize = Point(1, 1)
@ -81,14 +81,13 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
mMedium = arguments!!.getSerializable(MEDIUM) as Medium mMedium = arguments!!.getSerializable(MEDIUM) as Medium
mConfig = context!!.config mConfig = context!!.config
mView = inflater.inflate(R.layout.pager_video_item, container, false).apply { mView = inflater.inflate(R.layout.pager_video_item, container, false).apply {
instant_prev_item.setOnClickListener { listener?.goToPrevItem() }
instant_next_item.setOnClickListener { listener?.goToNextItem() }
panorama_outline.setOnClickListener { openPanorama() } panorama_outline.setOnClickListener { openPanorama() }
video_curr_time.setOnClickListener { skip(false) } video_curr_time.setOnClickListener { skip(false) }
video_duration.setOnClickListener { skip(true) } video_duration.setOnClickListener { skip(true) }
video_holder.setOnClickListener { toggleFullscreen() } video_holder.setOnClickListener { toggleFullscreen() }
video_preview.setOnClickListener { toggleFullscreen() } video_preview.setOnClickListener { toggleFullscreen() }
video_surface_frame.setOnClickListener { toggleFullscreen() } video_surface_frame.controller.settings.swallowDoubleTaps = true
video_play_outline.setOnClickListener { video_play_outline.setOnClickListener {
if (mConfig.openVideosOnSeparateScreen) { if (mConfig.openVideosOnSeparateScreen) {
launchVideoPlayer() launchVideoPlayer()
@ -114,7 +113,33 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
mTextureView = video_surface mTextureView = video_surface
mTextureView.surfaceTextureListener = this@VideoFragment mTextureView.surfaceTextureListener = this@VideoFragment
if (mConfig.allowDownGesture) { val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
if (!mConfig.allowInstantChange) {
toggleFullscreen()
return true
}
val viewWidth = width
val instantWidth = viewWidth / 7
val clickedX = e?.rawX ?: 0f
when {
clickedX <= instantWidth -> listener?.goToPrevItem()
clickedX >= viewWidth - instantWidth -> listener?.goToNextItem()
else -> toggleFullscreen()
}
return true
}
override fun onDoubleTap(e: MotionEvent?): Boolean {
if (e != null) {
handleDoubleTap(e.rawX)
}
return true
}
})
video_preview.setOnTouchListener { view, event -> video_preview.setOnTouchListener { view, event ->
handleEvent(event) handleEvent(event)
false false
@ -124,10 +149,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
if (video_surface_frame.controller.state.zoom == 1f) { if (video_surface_frame.controller.state.zoom == 1f) {
handleEvent(event) handleEvent(event)
} }
gestureDetector.onTouchEvent(event)
false false
} }
} }
}
if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) { if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) {
return mView return mView
@ -171,13 +197,25 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
setVideoSize() setVideoSize()
mView.apply { mView.apply {
mBrightnessSideScroll.initialize(activity!!, slide_info, true, container) { x, y -> mBrightnessSideScroll.initialize(activity!!, slide_info, true, container, singleTap = { x, y ->
video_holder.performClick() if (mConfig.allowInstantChange) {
listener?.goToPrevItem()
} else {
toggleFullscreen()
} }
}, doubleTap = { x, y ->
doSkip(false)
})
mVolumeSideScroll.initialize(activity!!, slide_info, false, container) { x, y -> mVolumeSideScroll.initialize(activity!!, slide_info, false, container, singleTap = { x, y ->
video_holder.performClick() if (mConfig.allowInstantChange) {
listener?.goToNextItem()
} else {
toggleFullscreen()
} }
}, doubleTap = { x, y ->
doSkip(true)
})
video_surface.onGlobalLayout { video_surface.onGlobalLayout {
if (mIsFragmentVisible && mConfig.autoplayVideos && !mConfig.openVideosOnSeparateScreen) { if (mIsFragmentVisible && mConfig.autoplayVideos && !mConfig.openVideosOnSeparateScreen) {
@ -192,7 +230,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
restoreLastVideoSavedPosition() restoreLastVideoSavedPosition()
} }
updateInstantSwitchWidths()
return mView return mView
} }
@ -201,17 +238,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
mConfig = context!!.config // make sure we get a new config, in case the user changed something in the app settings mConfig = context!!.config // make sure we get a new config, in case the user changed something in the app settings
activity!!.updateTextColors(mView.video_holder) activity!!.updateTextColors(mView.video_holder)
val allowVideoGestures = mConfig.allowVideoGestures val allowVideoGestures = mConfig.allowVideoGestures
val allowInstantChange = mConfig.allowInstantChange
mTextureView.beGoneIf(mConfig.openVideosOnSeparateScreen || mIsPanorama) mTextureView.beGoneIf(mConfig.openVideosOnSeparateScreen || mIsPanorama)
mView.apply { mView.video_surface_frame.beGoneIf(mTextureView.isGone())
video_surface_frame.beGoneIf(mTextureView.isGone())
video_volume_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) mVolumeSideScroll.beVisibleIf(allowVideoGestures && !mIsPanorama)
video_brightness_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) mBrightnessSideScroll.beVisibleIf(allowVideoGestures && !mIsPanorama)
instant_prev_item.beVisibleIf(allowInstantChange)
instant_next_item.beVisibleIf(allowInstantChange)
}
checkExtendedDetails() checkExtendedDetails()
initTimeHolder() initTimeHolder()
@ -251,7 +282,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
setVideoSize() setVideoSize()
initTimeHolder() initTimeHolder()
checkExtendedDetails() checkExtendedDetails()
updateInstantSwitchWidths()
mView.video_surface_frame.onGlobalLayout { mView.video_surface_frame.onGlobalLayout {
mView.video_surface_frame.controller.resetState() mView.video_surface_frame.controller.resetState()
} }
@ -317,7 +347,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
mExoPlayer = ExoPlayerFactory.newSimpleInstance(context) mExoPlayer = ExoPlayerFactory.newSimpleInstance(context)
mExoPlayer!!.seekParameters = SeekParameters.CLOSEST_SYNC mExoPlayer!!.seekParameters = SeekParameters.CLOSEST_SYNC
if (mConfig.loopVideos) { if (mConfig.loopVideos && listener?.isSlideShowActive() == false) {
mExoPlayer?.repeatMode = Player.REPEAT_MODE_ONE mExoPlayer?.repeatMode = Player.REPEAT_MODE_ONE
} }
@ -394,6 +424,16 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
listener?.fragmentClicked() listener?.fragmentClicked()
} }
private fun handleDoubleTap(x: Float) {
val viewWidth = mView.width
val instantWidth = viewWidth / 7
when {
x <= instantWidth -> doSkip(false)
x >= viewWidth - instantWidth -> doSkip(true)
else -> togglePlayPause()
}
}
private fun checkExtendedDetails() { private fun checkExtendedDetails() {
if (mConfig.showExtendedDetails) { if (mConfig.showExtendedDetails) {
mView.video_details.apply { mView.video_details.apply {
@ -453,12 +493,6 @@ 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) { override fun fullscreenToggled(isFullscreen: Boolean) {
mIsFullscreen = isFullscreen mIsFullscreen = isFullscreen
val newAlpha = if (isFullscreen) 0f else 1f val newAlpha = if (isFullscreen) 0f else 1f
@ -505,11 +539,18 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
} }
mPositionAtPause = 0L mPositionAtPause = 0L
doSkip(forward)
}
private fun doSkip(forward: Boolean) {
if (mExoPlayer == null) {
return
}
val curr = mExoPlayer!!.currentPosition val curr = mExoPlayer!!.currentPosition
val twoPercents = Math.max((mExoPlayer!!.duration / 50).toInt(), MIN_SKIP_LENGTH) val newProgress = if (forward) curr + FAST_FORWARD_VIDEO_MS else curr - FAST_FORWARD_VIDEO_MS
val newProgress = if (forward) curr + twoPercents else curr - twoPercents
val roundProgress = Math.round(newProgress / 1000f) val roundProgress = Math.round(newProgress / 1000f)
val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt(), roundProgress), 0) val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt() / 1000, roundProgress), 0)
setPosition(limitedProgress) setPosition(limitedProgress)
if (!mIsPlaying) { if (!mIsPlaying) {
togglePlayPause() togglePlayPause()
@ -681,10 +722,14 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
} }
mCurrTime = (mExoPlayer!!.duration / 1000).toInt() mCurrTime = (mExoPlayer!!.duration / 1000).toInt()
if (listener?.videoEnded() == false && mConfig.loopVideos) {
playVideo()
} else {
mSeekBar.progress = mSeekBar.max mSeekBar.progress = mSeekBar.max
mCurrTimeView.text = mDuration.getFormattedDuration() mCurrTimeView.text = mDuration.getFormattedDuration()
pauseVideo() pauseVideo()
} }
}
private fun cleanup() { private fun cleanup() {
pauseVideo() pauseVideo()

View file

@ -31,6 +31,8 @@ abstract class ViewPagerFragment : Fragment() {
fun goToNextItem() fun goToNextItem()
fun launchViewVideoIntent(path: String) fun launchViewVideoIntent(path: String)
fun isSlideShowActive(): Boolean
} }
fun getMediumExtendedDetails(medium: Medium): String { fun getMediumExtendedDetails(medium: Medium): String {
@ -140,7 +142,7 @@ abstract class ViewPagerFragment : Fragment() {
val diffY = mTouchDownY - event.y val diffY = mTouchDownY - event.y
val downGestureDuration = System.currentTimeMillis() - mTouchDownTime val downGestureDuration = System.currentTimeMillis() - mTouchDownTime
if (!mIgnoreCloseDown && Math.abs(diffY) > Math.abs(diffX) && diffY < -mCloseDownThreshold && downGestureDuration < MAX_CLOSE_DOWN_GESTURE_DURATION) { if (!mIgnoreCloseDown && Math.abs(diffY) > Math.abs(diffX) && diffY < -mCloseDownThreshold && downGestureDuration < MAX_CLOSE_DOWN_GESTURE_DURATION && context?.config?.allowDownGesture == true) {
activity?.supportFinishAfterTransition() activity?.supportFinishAfterTransition()
} }
mIgnoreCloseDown = false mIgnoreCloseDown = false

View file

@ -475,6 +475,14 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(ALLOW_ROTATING_WITH_GESTURES, true) get() = prefs.getBoolean(ALLOW_ROTATING_WITH_GESTURES, true)
set(allowRotatingWithGestures) = prefs.edit().putBoolean(ALLOW_ROTATING_WITH_GESTURES, allowRotatingWithGestures).apply() set(allowRotatingWithGestures) = prefs.edit().putBoolean(ALLOW_ROTATING_WITH_GESTURES, allowRotatingWithGestures).apply()
var lastEditorDrawColor: Int
get() = prefs.getInt(LAST_EDITOR_DRAW_COLOR, primaryColor)
set(lastEditorDrawColor) = prefs.edit().putInt(LAST_EDITOR_DRAW_COLOR, lastEditorDrawColor).apply()
var lastEditorBrushSize: Int
get() = prefs.getInt(LAST_EDITOR_BRUSH_SIZE, 50)
set(lastEditorBrushSize) = prefs.edit().putInt(LAST_EDITOR_BRUSH_SIZE, lastEditorBrushSize).apply()
var showNotch: Boolean var showNotch: Boolean
get() = prefs.getBoolean(SHOW_NOTCH, true) get() = prefs.getBoolean(SHOW_NOTCH, true)
set(showNotch) = prefs.edit().putBoolean(SHOW_NOTCH, showNotch).apply() set(showNotch) = prefs.edit().putBoolean(SHOW_NOTCH, showNotch).apply()

View file

@ -73,6 +73,8 @@ const val GROUP_DIRECT_SUBFOLDERS = "group_direct_subfolders"
const val SHOW_WIDGET_FOLDER_NAME = "show_widget_folder_name" const val SHOW_WIDGET_FOLDER_NAME = "show_widget_folder_name"
const val ALLOW_ONE_TO_ONE_ZOOM = "allow_one_to_one_zoom" const val ALLOW_ONE_TO_ONE_ZOOM = "allow_one_to_one_zoom"
const val ALLOW_ROTATING_WITH_GESTURES = "allow_rotating_with_gestures" const val ALLOW_ROTATING_WITH_GESTURES = "allow_rotating_with_gestures"
const val LAST_EDITOR_DRAW_COLOR = "last_editor_draw_color"
const val LAST_EDITOR_BRUSH_SIZE = "last_editor_brush_size"
const val SHOW_NOTCH = "show_notch" const val SHOW_NOTCH = "show_notch"
const val FILE_LOADING_PRIORITY = "file_loading_priority" const val FILE_LOADING_PRIORITY = "file_loading_priority"
const val SPAM_FOLDERS_CHECKED = "spam_folders_checked" const val SPAM_FOLDERS_CHECKED = "spam_folders_checked"
@ -118,6 +120,7 @@ const val MONTH_MILLISECONDS = MONTH_SECONDS * 1000L
const val MIN_SKIP_LENGTH = 2000 const val MIN_SKIP_LENGTH = 2000
const val HIDE_SYSTEM_UI_DELAY = 500L const val HIDE_SYSTEM_UI_DELAY = 500L
const val MAX_PRINT_SIDE_SIZE = 4096 const val MAX_PRINT_SIDE_SIZE = 4096
const val FAST_FORWARD_VIDEO_MS = 10000
const val DIRECTORY = "directory" const val DIRECTORY = "directory"
const val MEDIUM = "medium" const val MEDIUM = "medium"

View file

@ -0,0 +1,27 @@
package com.simplemobiletools.gallery.pro.helpers
import android.graphics.Bitmap
import com.simplemobiletools.gallery.pro.models.FilterItem
import java.util.*
class FilterThumbnailsManager {
private var filterThumbnails = ArrayList<FilterItem>(10)
private var processedThumbnails = ArrayList<FilterItem>(10)
fun addThumb(filterItem: FilterItem) {
filterThumbnails.add(filterItem)
}
fun processThumbs(): ArrayList<FilterItem> {
for (filterItem in filterThumbnails) {
filterItem.bitmap = filterItem.filter.processFilter(Bitmap.createBitmap(filterItem.bitmap))
processedThumbnails.add(filterItem)
}
return processedThumbnails
}
fun clearThumbs() {
filterThumbnails = ArrayList()
processedThumbnails = ArrayList()
}
}

View file

@ -20,8 +20,8 @@ import java.util.*
class MediaFetcher(val context: Context) { class MediaFetcher(val context: Context) {
var shouldStop = false var shouldStop = false
fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperFileSize: Boolean, fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperLastModified: Boolean,
favoritePaths: ArrayList<String>, getVideoDurations: Boolean, sortMedia: Boolean = true): ArrayList<Medium> { getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean): ArrayList<Medium> {
val filterMedia = context.config.filterMedia val filterMedia = context.config.filterMedia
if (filterMedia == 0) { if (filterMedia == 0) {
return ArrayList() return ArrayList()
@ -34,13 +34,11 @@ class MediaFetcher(val context: Context) {
curMedia.addAll(newMedia) curMedia.addAll(newMedia)
} }
} else { } else {
val newMedia = getMediaInFolder(curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations) val newMedia = getMediaInFolder(curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, getVideoDurations)
curMedia.addAll(newMedia) curMedia.addAll(newMedia)
} }
if (sortMedia) {
sortMedia(curMedia, context.config.getFileSorting(curPath)) sortMedia(curMedia, context.config.getFileSorting(curPath))
}
return curMedia return curMedia
} }
@ -69,7 +67,6 @@ class MediaFetcher(val context: Context) {
val includedPaths = config.includedFolders val includedPaths = config.includedFolders
folders.filter { it.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden) }.toMutableList() as ArrayList<String> folders.filter { it.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden) }.toMutableList() as ArrayList<String>
} catch (e: Exception) { } catch (e: Exception) {
context.showErrorToast(e)
ArrayList() ArrayList()
} }
} }
@ -212,7 +209,7 @@ class MediaFetcher(val context: Context) {
} }
private fun getMediaInFolder(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, private fun getMediaInFolder(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean,
getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean): ArrayList<Medium> { getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean): ArrayList<Medium> {
val media = ArrayList<Medium>() val media = ArrayList<Medium>()
val isRecycleBin = folder == RECYCLE_BIN val isRecycleBin = folder == RECYCLE_BIN
val deletedMedia = if (isRecycleBin) { val deletedMedia = if (isRecycleBin) {
@ -297,12 +294,20 @@ class MediaFetcher(val context: Context) {
media.add(this) media.add(this)
} }
} else { } else {
val lastModified = file.lastModified() val lastModified = if (getProperLastModified) file.lastModified() else 0L
var dateTaken = lastModified var dateTaken = lastModified
val videoDuration = if (getVideoDurations && isVideo) path.getVideoDuration() else 0 val videoDuration = if (getVideoDurations && isVideo) path.getVideoDuration() else 0
if (getProperDateTaken) { if (getProperDateTaken) {
dateTaken = dateTakens.remove(path) ?: lastModified var newDateTaken = dateTakens.remove(path)
if (newDateTaken == null) {
newDateTaken = if (getProperLastModified) {
lastModified
} else {
file.lastModified()
}
}
dateTaken = newDateTaken
} }
val type = when { val type = when {

View file

@ -9,7 +9,7 @@ import com.simplemobiletools.gallery.pro.models.Directory
@Dao @Dao
interface DirectoryDao { interface DirectoryDao {
@Query("SELECT path, thumbnail, filename, media_count, last_modified, date_taken, size, location, media_types FROM directories") @Query("SELECT path, thumbnail, filename, media_count, last_modified, date_taken, size, location, media_types, sort_value FROM directories")
fun getAll(): List<Directory> fun getAll(): List<Directory>
@Insert(onConflict = REPLACE) @Insert(onConflict = REPLACE)
@ -21,8 +21,8 @@ interface DirectoryDao {
@Query("DELETE FROM directories WHERE path = :path COLLATE NOCASE") @Query("DELETE FROM directories WHERE path = :path COLLATE NOCASE")
fun deleteDirPath(path: String) fun deleteDirPath(path: String)
@Query("UPDATE OR REPLACE directories SET thumbnail = :thumbnail, media_count = :mediaCnt, last_modified = :lastModified, date_taken = :dateTaken, size = :size, media_types = :mediaTypes WHERE path = :path COLLATE NOCASE") @Query("UPDATE OR REPLACE directories SET thumbnail = :thumbnail, media_count = :mediaCnt, last_modified = :lastModified, date_taken = :dateTaken, size = :size, media_types = :mediaTypes, sort_value = :sortValue WHERE path = :path COLLATE NOCASE")
fun updateDirectory(path: String, thumbnail: String, mediaCnt: Int, lastModified: Long, dateTaken: Long, size: Long, mediaTypes: Int) fun updateDirectory(path: String, thumbnail: String, mediaCnt: Int, lastModified: Long, dateTaken: Long, size: Long, mediaTypes: Int, sortValue: String)
@Query("UPDATE directories SET thumbnail = :thumbnail, filename = :name, path = :newPath WHERE path = :oldPath COLLATE NOCASE") @Query("UPDATE directories SET thumbnail = :thumbnail, filename = :name, path = :newPath WHERE path = :oldPath COLLATE NOCASE")
fun updateDirectoryAfterRename(thumbnail: String, name: String, newPath: String, oldPath: String) fun updateDirectoryAfterRename(thumbnail: String, name: String, newPath: String, oldPath: String)

View file

@ -23,13 +23,14 @@ data class Directory(
@ColumnInfo(name = "size") var size: Long, @ColumnInfo(name = "size") var size: Long,
@ColumnInfo(name = "location") var location: Int, @ColumnInfo(name = "location") var location: Int,
@ColumnInfo(name = "media_types") var types: Int, @ColumnInfo(name = "media_types") var types: Int,
@ColumnInfo(name = "sort_value") var sortValue: String,
// used with "Group direct subfolders" enabled // used with "Group direct subfolders" enabled
@Ignore var subfoldersCount: Int = 0, @Ignore var subfoldersCount: Int = 0,
@Ignore var subfoldersMediaCount: Int = 0, @Ignore var subfoldersMediaCount: Int = 0,
@Ignore var containsMediaFilesDirectly: Boolean = true) { @Ignore var containsMediaFilesDirectly: Boolean = true) {
constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, 0, 0) constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, "", 0, 0)
fun getBubbleText(sorting: Int, context: Context) = when { fun getBubbleText(sorting: Int, context: Context) = when {
sorting and SORT_BY_NAME != 0 -> name sorting and SORT_BY_NAME != 0 -> name

View file

@ -0,0 +1,6 @@
package com.simplemobiletools.gallery.pro.models
import android.graphics.Bitmap
import com.zomato.photofilters.imageprocessors.Filter
data class FilterItem(var bitmap: Bitmap, val filter: Filter)

View file

@ -6,6 +6,7 @@ import android.media.AudioManager
import android.os.Handler import android.os.Handler
import android.provider.Settings import android.provider.Settings
import android.util.AttributeSet import android.util.AttributeSet
import android.view.GestureDetector
import android.view.MotionEvent import android.view.MotionEvent
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.RelativeLayout import android.widget.RelativeLayout
@ -13,8 +14,6 @@ import android.widget.TextView
import com.simplemobiletools.commons.extensions.onGlobalLayout import com.simplemobiletools.commons.extensions.onGlobalLayout
import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.audioManager import com.simplemobiletools.gallery.pro.extensions.audioManager
import com.simplemobiletools.gallery.pro.helpers.CLICK_MAX_DISTANCE
import com.simplemobiletools.gallery.pro.helpers.CLICK_MAX_DURATION
import com.simplemobiletools.gallery.pro.helpers.DRAG_THRESHOLD import com.simplemobiletools.gallery.pro.helpers.DRAG_THRESHOLD
// allow horizontal swipes through the layout, else it can cause glitches at zoomed in images // allow horizontal swipes through the layout, else it can cause glitches at zoomed in images
@ -35,14 +34,17 @@ class MediaSideScroll(context: Context, attrs: AttributeSet) : RelativeLayout(co
private var mSlideInfoFadeHandler = Handler() private var mSlideInfoFadeHandler = Handler()
private var mParentView: ViewGroup? = null private var mParentView: ViewGroup? = null
private var activity: Activity? = null private var activity: Activity? = null
private var doubleTap: ((Float, Float) -> Unit)? = null
private lateinit var slideInfoView: TextView private lateinit var slideInfoView: TextView
private lateinit var callback: (Float, Float) -> Unit private lateinit var singleTap: (Float, Float) -> Unit
fun initialize(activity: Activity, slideInfoView: TextView, isBrightness: Boolean, parentView: ViewGroup?, callback: (x: Float, y: Float) -> Unit) { fun initialize(activity: Activity, slideInfoView: TextView, isBrightness: Boolean, parentView: ViewGroup?, singleTap: (x: Float, y: Float) -> Unit,
doubleTap: ((x: Float, y: Float) -> Unit)? = null) {
this.activity = activity this.activity = activity
this.slideInfoView = slideInfoView this.slideInfoView = slideInfoView
this.callback = callback this.singleTap = singleTap
this.doubleTap = doubleTap
mParentView = parentView mParentView = parentView
mIsBrightnessScroll = isBrightness mIsBrightnessScroll = isBrightness
mSlideInfoText = activity.getString(if (isBrightness) R.string.brightness else R.string.volume) mSlideInfoText = activity.getString(if (isBrightness) R.string.brightness else R.string.volume)
@ -51,6 +53,22 @@ class MediaSideScroll(context: Context, attrs: AttributeSet) : RelativeLayout(co
} }
} }
private val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
if (e != null) {
singleTap(e.rawX, e.rawY)
}
return true
}
override fun onDoubleTap(e: MotionEvent?): Boolean {
if (e != null && doubleTap != null) {
doubleTap!!.invoke(e.rawX, e.rawY)
}
return true
}
})
override fun dispatchTouchEvent(ev: MotionEvent): Boolean { override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
if (mPassTouches) { if (mPassTouches) {
if (ev.actionMasked == MotionEvent.ACTION_DOWN) { if (ev.actionMasked == MotionEvent.ACTION_DOWN) {
@ -66,6 +84,7 @@ class MediaSideScroll(context: Context, attrs: AttributeSet) : RelativeLayout(co
return false return false
} }
gestureDetector.onTouchEvent(event)
when (event.actionMasked) { when (event.actionMasked) {
MotionEvent.ACTION_DOWN -> { MotionEvent.ACTION_DOWN -> {
mTouchDownX = event.x mTouchDownX = event.x
@ -107,12 +126,6 @@ class MediaSideScroll(context: Context, attrs: AttributeSet) : RelativeLayout(co
mLastTouchY = event.y mLastTouchY = event.y
} }
MotionEvent.ACTION_UP -> { MotionEvent.ACTION_UP -> {
val diffX = mTouchDownX - event.x
val diffY = mTouchDownY - event.y
if (Math.abs(diffX) < CLICK_MAX_DISTANCE && Math.abs(diffY) < CLICK_MAX_DISTANCE && System.currentTimeMillis() - mTouchDownTime < CLICK_MAX_DURATION) {
callback(event.rawX, event.rawY)
}
if (mIsBrightnessScroll) { if (mIsBrightnessScroll) {
mTouchDownValue = mTempBrightness mTouchDownValue = mTempBrightness
} }

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M19,12h-2v3h-3v2h5v-5zM7,9h3L10,7L5,7v5h2L7,9zM21,3L3,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,5c0,-1.1 -0.9,-2 -2,-2zM21,19.01L3,19.01L3,4.99h18v14.02z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M7.47,21.49C4.2,19.93 1.86,16.76 1.5,13L0,13c0.51,6.16 5.66,11 11.95,11 0.23,0 0.44,-0.02 0.66,-0.03L8.8,20.15l-1.33,1.34zM12.05,0c-0.23,0 -0.44,0.02 -0.66,0.04l3.81,3.81 1.33,-1.33C19.8,4.07 22.14,7.24 22.5,11L24,11c-0.51,-6.16 -5.66,-11 -11.95,-11zM16,14h2L18,8c0,-1.11 -0.9,-2 -2,-2h-6v2h6v6zM8,16L8,4L6,4v2L4,6v2h2v8c0,1.1 0.89,2 2,2h8v2h2v-2h2v-2L8,16z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M4.59,6.89c0.7,-0.71 1.4,-1.35 1.71,-1.22 0.5,0.2 0,1.03 -0.3,1.52 -0.25,0.42 -2.86,3.89 -2.86,6.31 0,1.28 0.48,2.34 1.34,2.98 0.75,0.56 1.74,0.73 2.64,0.46 1.07,-0.31 1.95,-1.4 3.06,-2.77 1.21,-1.49 2.83,-3.44 4.08,-3.44 1.63,0 1.65,1.01 1.76,1.79 -3.78,0.64 -5.38,3.67 -5.38,5.37 0,1.7 1.44,3.09 3.21,3.09 1.63,0 4.29,-1.33 4.69,-6.1L21,14.88v-2.5h-2.47c-0.15,-1.65 -1.09,-4.2 -4.03,-4.2 -2.25,0 -4.18,1.91 -4.94,2.84 -0.58,0.73 -2.06,2.48 -2.29,2.72 -0.25,0.3 -0.68,0.84 -1.11,0.84 -0.45,0 -0.72,-0.83 -0.36,-1.92 0.35,-1.09 1.4,-2.86 1.85,-3.52 0.78,-1.14 1.3,-1.92 1.3,-3.28C8.95,3.69 7.31,3 6.44,3 5.12,3 3.97,4 3.72,4.25c-0.36,0.36 -0.66,0.66 -0.88,0.93l1.75,1.71zM13.88,18.55c-0.31,0 -0.74,-0.26 -0.74,-0.72 0,-0.6 0.73,-2.2 2.87,-2.76 -0.3,2.69 -1.43,3.48 -2.13,3.48z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M19.02,10v9L5,19L5,5h9L14,3L5.02,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2v-9h-2zM17,10l0.94,-2.06L20,7l-2.06,-0.94L17,4l-0.94,2.06L14,7l2.06,0.94zM13.25,10.75L12,8l-1.25,2.75L8,12l2.75,1.25L12,16l1.25,-2.75L16,12z"/>
</vector>

View file

@ -1,18 +1,36 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_edit_holder" android:id="@+id/activity_edit_holder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView
android:id="@+id/default_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_editor_crop_rotate_actions"
android:layout_marginBottom="@dimen/bottom_filters_height_with_margin"/>
<com.theartofdev.edmodo.cropper.CropImageView <com.theartofdev.edmodo.cropper.CropImageView
android:id="@+id/crop_image_view" android:id="@+id/crop_image_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginBottom="@dimen/bottom_actions_height_bigger" android:layout_marginBottom="@dimen/bottom_actions_height_bigger"
android:visibility="gone"
app:cropBackgroundColor="@color/crop_image_view_background" app:cropBackgroundColor="@color/crop_image_view_background"
app:cropInitialCropWindowPaddingRatio="0"/> app:cropInitialCropWindowPaddingRatio="0"/>
<com.simplemobiletools.gallery.pro.views.EditorDrawCanvas
android:id="@+id/editor_draw_canvas"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/bottom_actions_height_double"
android:background="@android:color/transparent"
android:visibility="gone"/>
<RelativeLayout <RelativeLayout
android:id="@+id/bottom_editor_actions_background" android:id="@+id/bottom_editor_actions_background"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -20,19 +38,40 @@
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:background="@drawable/gradient_background"/> android:background="@drawable/gradient_background"/>
<include
android:id="@+id/bottom_editor_primary_actions"
layout="@layout/bottom_editor_primary_actions"/>
<include <include
android:id="@+id/bottom_aspect_ratios" android:id="@+id/bottom_aspect_ratios"
layout="@layout/bottom_actions_aspect_ratio" layout="@layout/bottom_actions_aspect_ratio"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/bottom_editor_crop_rotate_actions" /> android:layout_above="@+id/bottom_editor_crop_rotate_actions"
android:visibility="gone"/>
<include
android:id="@+id/bottom_editor_filter_actions"
layout="@layout/bottom_editor_actions_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/bottom_editor_primary_actions"
android:visibility="gone"/>
<include <include
android:id="@+id/bottom_editor_crop_rotate_actions" android:id="@+id/bottom_editor_crop_rotate_actions"
layout="@layout/bottom_editor_crop_rotate_actions" layout="@layout/bottom_editor_crop_rotate_actions"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_above="@+id/bottom_editor_primary_actions"
android:layout_marginBottom="@dimen/medium_margin" /> android:visibility="gone"/>
<include
android:id="@+id/bottom_editor_draw_actions"
layout="@layout/bottom_editor_draw_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/bottom_editor_primary_actions"
android:visibility="gone"/>
</RelativeLayout> </RelativeLayout>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_actions_filter_wrapper"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_filters_height"
android:paddingTop="@dimen/medium_margin">
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/bottom_actions_filter_list"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_filters_height"
android:background="@color/crop_image_view_background"
android:orientation="horizontal"
android:overScrollMode="never"
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
</RelativeLayout>

View file

@ -16,11 +16,39 @@
android:padding="@dimen/normal_margin" android:padding="@dimen/normal_margin"
android:src="@drawable/ic_rotate_right_vector" android:src="@drawable/ic_rotate_right_vector"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_flip_horizontally" app:layout_constraintEnd_toStartOf="@+id/bottom_resize"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_resize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/resize"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_minimize"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_rotate"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_aspect_ratio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/free_aspect_ratio"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_aspect_ratio_vector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_flip_horizontally"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_resize"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView <ImageView
android:id="@+id/bottom_flip_horizontally" android:id="@+id/bottom_flip_horizontally"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -32,7 +60,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_flip_vertically" app:layout_constraintEnd_toStartOf="@+id/bottom_flip_vertically"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_rotate" app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
<ImageView <ImageView

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_editor_draw_actions_wrapper"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_actions_height"
android:layout_alignParentBottom="true">
<com.simplemobiletools.commons.views.MySeekBar
android:id="@+id/bottom_draw_width"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="@dimen/activity_margin"
android:layout_marginRight="@dimen/activity_margin"
android:max="100"
android:progress="50"
app:layout_constraintBottom_toBottomOf="@id/bottom_draw_color"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/bottom_draw_color"
app:layout_constraintTop_toTopOf="@+id/bottom_draw_color"/>
<ImageView
android:id="@+id/bottom_draw_color_clickable"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginEnd="@dimen/small_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/change_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/bottom_draw_undo"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_draw_color"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginEnd="@dimen/small_margin"
android:clickable="false"
android:contentDescription="@null"
android:padding="@dimen/small_margin"
android:src="@drawable/circle_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/bottom_draw_undo"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_draw_undo"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginEnd="@dimen/normal_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="false"
android:contentDescription="@string/undo"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_undo_vector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_editor_primary_actions_wrapper"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_actions_height"
android:layout_alignParentBottom="true">
<ImageView
android:id="@+id/bottom_primary_filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/filter"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_photo_filter_vector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_primary_crop_rotate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_primary_crop_rotate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_crop_rotate_vector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_primary_draw"
app:layout_constraintStart_toEndOf="@+id/bottom_primary_filter"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/bottom_primary_draw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_draw_vector"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/bottom_primary_crop_rotate"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/editor_filter_item_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/editor_filter_item_thumbnail"
android:layout_width="@dimen/bottom_filters_thumbnail_size"
android:layout_height="@dimen/bottom_filters_thumbnail_size"
android:layout_above="@+id/editor_filter_item_label"
android:background="@drawable/stroke_background"
android:contentDescription="@null"
android:padding="1dp"/>
<TextView
android:id="@+id/editor_filter_item_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:textColor="@android:color/white"
android:textSize="@dimen/smaller_text_size"
tools:text="Filter"/>
</RelativeLayout>

View file

@ -98,12 +98,12 @@
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch <com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_prev_item" android:id="@+id/instant_prev_item"
android:layout_width="@dimen/instant_change_bar_width" android:layout_width="1dp"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch <com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_next_item" android:id="@+id/instant_next_item"
android:layout_width="@dimen/instant_change_bar_width" android:layout_width="1dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_alignParentEnd="true"/> android:layout_alignParentEnd="true"/>

View file

@ -35,17 +35,6 @@
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"/>
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_prev_item"
android:layout_width="@dimen/instant_change_bar_width"
android:layout_height="match_parent"/>
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_next_item"
android:layout_width="@dimen/instant_change_bar_width"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"/>
<ImageView <ImageView
android:id="@+id/video_play_outline" android:id="@+id/video_play_outline"
android:layout_width="@dimen/play_outline_size_big" android:layout_width="@dimen/play_outline_size_big"

View file

@ -6,6 +6,11 @@
android:icon="@drawable/ic_delete_vector" android:icon="@drawable/ic_delete_vector"
android:title="@string/delete" android:title="@string/delete"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/cab_properties"
android:icon="@drawable/ic_info"
android:title="@string/properties"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/cab_pin" android:id="@+id/cab_pin"
android:icon="@drawable/ic_pin" android:icon="@drawable/ic_pin"
@ -16,11 +21,6 @@
android:icon="@drawable/ic_unpin" android:icon="@drawable/ic_unpin"
android:title="@string/unpin_folder" android:title="@string/unpin_folder"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/cab_properties"
android:icon="@drawable/ic_info"
android:title="@string/properties"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/cab_rename" android:id="@+id/cab_rename"
android:icon="@drawable/ic_rename_new" android:icon="@drawable/ic_rename_new"

View file

@ -6,6 +6,11 @@
android:icon="@drawable/ic_check_vector" android:icon="@drawable/ic_check_vector"
android:title="@string/save_as" android:title="@string/save_as"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/edit"
android:icon="@drawable/ic_edit_vector"
android:title="@string/edit_with"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/share" android:id="@+id/share"
android:icon="@drawable/ic_share_vector" android:icon="@drawable/ic_share_vector"

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">إصلاح تاريخ إلتقاط القيمة</string> <string name="fix_date_taken">إصلاح تاريخ إلتقاط القيمة</string>
<string name="fixing">جارٍ الإصلاح…</string> <string name="fixing">جارٍ الإصلاح…</string>
<string name="dates_fixed_successfully">تم إصلاح التواريخ بنجاح</string> <string name="dates_fixed_successfully">تم إصلاح التواريخ بنجاح</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">مشاركة الصورة الذي تم تغيير حجمها</string> <string name="share_resized">مشاركة الصورة الذي تم تغيير حجمها</string>
<string name="upgraded_from_free">مرحباً,\n\nيبدو أنك قمت بترقية التطبيق المجاني القديم. يمكنك الآن إلغاء تثبيت الإصدار القديم، الذي يحتوي على زر \'الترقية إلى Pro\' في أعلي إعدادات التطبيق.\n\nسيتم حذف عناصر سلة المحذوفات فقط، كما سيتم حذف العناصر المفضلة، كما سيتعين عليك إعادة ضبط إعدادات التطبيق .\n\nشكراً!</string> <string name="upgraded_from_free">مرحباً,\n\nيبدو أنك قمت بترقية التطبيق المجاني القديم. يمكنك الآن إلغاء تثبيت الإصدار القديم، الذي يحتوي على زر \'الترقية إلى Pro\' في أعلي إعدادات التطبيق.\n\nسيتم حذف عناصر سلة المحذوفات فقط، كما سيتم حذف العناصر المفضلة، كما سيتعين عليك إعادة ضبط إعدادات التطبيق .\n\nشكراً!</string>
<string name="switch_to_file_search">التبديل إلي البحث فى الملفات عبر كافة المجلدات المرئية</string> <string name="switch_to_file_search">التبديل إلي البحث فى الملفات عبر كافة المجلدات المرئية</string>
@ -82,6 +83,7 @@
<string name="path">المسار</string> <string name="path">المسار</string>
<string name="invalid_image_path">مسار الصورة غير صحيح</string> <string name="invalid_image_path">مسار الصورة غير صحيح</string>
<string name="image_editing_failed">فشل تعديل الصورة</string> <string name="image_editing_failed">فشل تعديل الصورة</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">تعديل الصورة باستخدام:</string> <string name="edit_image_with">تعديل الصورة باستخدام:</string>
<string name="no_editor_found">لم يتم العثور على أي محرر للصور</string> <string name="no_editor_found">لم يتم العثور على أي محرر للصور</string>
@ -291,7 +293,7 @@
<string name="faq_3_title">كيف يمكنني جعل ألبوماً يظهر دائماً في الأعلى ؟</string> <string name="faq_3_title">كيف يمكنني جعل ألبوماً يظهر دائماً في الأعلى ؟</string>
<string name="faq_3_text">يمكنك الضغط مطولاً علي الألبوم المطلوب وحدد أيقونة "التثبيت" في قائمة الإجراءات، التي ستقوم بتثبيته في الأعلي. يمكنك تثبيت مجلدات متعددة أيضا، سيتم فرز العناصر المثبتة حسب طريقة الفرز الإفتراضية.</string> <string name="faq_3_text">يمكنك الضغط مطولاً علي الألبوم المطلوب وحدد أيقونة "التثبيت" في قائمة الإجراءات، التي ستقوم بتثبيته في الأعلي. يمكنك تثبيت مجلدات متعددة أيضا، سيتم فرز العناصر المثبتة حسب طريقة الفرز الإفتراضية.</string>
<string name="faq_4_title">كيف يمكنني تسريع مقاطع الفيديو؟</string> <string name="faq_4_title">كيف يمكنني تسريع مقاطع الفيديو؟</string>
<string name="faq_4_text">يمكنك إما سحب إصبعك أفقياً على مشغل الفيديو، أو النقر على نصوص المدة الحالية أو أقصي مدة النصوص بالقرب من شريط التحكم (seekbar) . هذا سوف يحرك الفيديو إما إلى الخلف، أو إلى الأمام.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">ما هو الفرق بين إخفاء المجلد وإستبعاده ؟</string> <string name="faq_5_title">ما هو الفرق بين إخفاء المجلد وإستبعاده ؟</string>
<string name="faq_5_text">الإستبعاد يمنع عرض المجلد فقط في الاستديو، بينما الإخفاء يعمل على مستوى النظام ويخفي المجلد من المعارض الأخرى أيضاً. يعمل عن طريق إنشاء ملف فارغ \ ".nomedia \" في المجلد المحدد ، والذي يمكنك إزالته بعد ذلك بواسطة أي مدير ملفات أيضًا.</string> <string name="faq_5_text">الإستبعاد يمنع عرض المجلد فقط في الاستديو، بينما الإخفاء يعمل على مستوى النظام ويخفي المجلد من المعارض الأخرى أيضاً. يعمل عن طريق إنشاء ملف فارغ \ ".nomedia \" في المجلد المحدد ، والذي يمكنك إزالته بعد ذلك بواسطة أي مدير ملفات أيضًا.</string>
<string name="faq_6_title">لماذا تظهر المجلدات مع صورة غلاف الموسيقى أو الملصقات؟</string> <string name="faq_6_title">لماذا تظهر المجلدات مع صورة غلاف الموسيقى أو الملصقات؟</string>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Path</string> <string name="path">Path</string>
<string name="invalid_image_path">Invalid image path</string> <string name="invalid_image_path">Invalid image path</string>
<string name="image_editing_failed">Image editing failed</string> <string name="image_editing_failed">Image editing failed</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Edit image with:</string> <string name="edit_image_with">Edit image with:</string>
<string name="no_editor_found">No image editor found</string> <string name="no_editor_found">No image editor found</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fixar la data de presa</string> <string name="fix_date_taken">Fixar la data de presa</string>
<string name="fixing">Fixant…</string> <string name="fixing">Fixant…</string>
<string name="dates_fixed_successfully">Data fixada correctament</string> <string name="dates_fixed_successfully">Data fixada correctament</string>
<string name="no_date_takens_found">No s\han trobat valors presos per data</string>
<string name="share_resized">Comparteix una versió redimensionada</string> <string name="share_resized">Comparteix una versió redimensionada</string>
<string name="upgraded_from_free">Hola,\n\nsembla que heu actualitzat des de l\'antiga aplicació gratuïta. Ara podeu desinstal·lar la versió antiga, que té un botó "Actualitza a Pro" a la part superior de la configuració de laplicació.\nNomés seliminaran els elements de la paperera, els elements preferits sense marcar i també caldrà restablirla configuració de la vostra aplicació.\n\nGràcies!</string> <string name="upgraded_from_free">Hola,\n\nsembla que heu actualitzat des de l\'antiga aplicació gratuïta. Ara podeu desinstal·lar la versió antiga, que té un botó "Actualitza a Pro" a la part superior de la configuració de laplicació.\nNomés seliminaran els elements de la paperera, els elements preferits sense marcar i també caldrà restablirla configuració de la vostra aplicació.\n\nGràcies!</string>
<string name="switch_to_file_search">Canvia a la cerca de fitxers a totes les carpetes visibles</string> <string name="switch_to_file_search">Canvia a la cerca de fitxers a totes les carpetes visibles</string>
@ -82,6 +83,7 @@
<string name="path">Ruta</string> <string name="path">Ruta</string>
<string name="invalid_image_path">Ruta de imatge no vàlida</string> <string name="invalid_image_path">Ruta de imatge no vàlida</string>
<string name="image_editing_failed">Ha fallat la edició de la imatge</string> <string name="image_editing_failed">Ha fallat la edició de la imatge</string>
<string name="image_editing_cancelled">S\'ha cancel·lat l\'edició de la imatge</string>
<string name="file_edited_successfully">Fitxer editar satisfactoriament</string> <string name="file_edited_successfully">Fitxer editar satisfactoriament</string>
<string name="edit_image_with">Editar imatge utilitzant:</string> <string name="edit_image_with">Editar imatge utilitzant:</string>
<string name="no_editor_found">No sha trobat cap editor dimatges</string> <string name="no_editor_found">No sha trobat cap editor dimatges</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Com puc fer que un àlbum sempre aparegui a la part superior?</string> <string name="faq_3_title">Com puc fer que un àlbum sempre aparegui a la part superior?</string>
<string name="faq_3_text">Podeu prémer làlbum desitjat i seleccionar la icona de la xinxeta al menú dacció i el fixarà a la part superior. També podeu enganxar diverses carpetes, els elements fixats sordenaran pel mètode de classificació predeterminat.</string> <string name="faq_3_text">Podeu prémer làlbum desitjat i seleccionar la icona de la xinxeta al menú dacció i el fixarà a la part superior. També podeu enganxar diverses carpetes, els elements fixats sordenaran pel mètode de classificació predeterminat.</string>
<string name="faq_4_title">Com puc fer avançar els vídeos?</string> <string name="faq_4_title">Com puc fer avançar els vídeos?</string>
<string name="faq_4_text">Podeu arrossegar el dit horitzontalment al reproductor de vídeo o fer clic als textos actuals o de màxima duració a prop de la barra de cerca. Això mourà el vídeo ja sigui cap enrere o cap endavant.</string> <string name="faq_4_text">Podeu fer-ho tocant dues vegades el costat de la pantalla o tocant els textos de durada actual o màxima a prop de la barra de cerca. Si activeu l\obertura de vídeos en una pantalla diferent a la configuració de l\aplicació, també podeu fer servir gestos horitzontals.</string>
<string name="faq_5_title">Quina és la diferència entre ocultar i excloure una carpeta?</string> <string name="faq_5_title">Quina és la diferència entre ocultar i excloure una carpeta?</string>
<string name="faq_5_text">Excloure impedeix mostrar la carpeta només a Simple Galery, mentre que Ocultar també amaga la carpeta a altres galeries. Funciona creant un fitxer \". Nomedia \" buit a la carpeta donada, que podeu eliminar amb qualsevol gestor de fitxers.</string> <string name="faq_5_text">Excloure impedeix mostrar la carpeta només a Simple Galery, mentre que Ocultar també amaga la carpeta a altres galeries. Funciona creant un fitxer \". Nomedia \" buit a la carpeta donada, que podeu eliminar amb qualsevol gestor de fitxers.</string>
<string name="faq_6_title">Per què apareixen les carpetes amb les portades de la música o adhesius?</string> <string name="faq_6_title">Per què apareixen les carpetes amb les portades de la música o adhesius?</string>
@ -367,6 +369,9 @@
<b>Consulteu el conjunt complet deines senzilles aquí: </b> <b>Consulteu el conjunt complet deines senzilles aquí: </b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Lloc web de Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Opravit datum vytvoření</string> <string name="fix_date_taken">Opravit datum vytvoření</string>
<string name="fixing">Opravuji…</string> <string name="fixing">Opravuji…</string>
<string name="dates_fixed_successfully">Datumy byly úspěšně opraveny</string> <string name="dates_fixed_successfully">Datumy byly úspěšně opraveny</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Sdílet verzi se změněnou velikostí</string> <string name="share_resized">Sdílet verzi se změněnou velikostí</string>
<string name="upgraded_from_free">Zdravím,\n\nzdá se, že jste přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji!</string> <string name="upgraded_from_free">Zdravím,\n\nzdá se, že jste přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji!</string>
<string name="switch_to_file_search">Přepnout na vyhledávání souborů ve všech viditelných složkách</string> <string name="switch_to_file_search">Přepnout na vyhledávání souborů ve všech viditelných složkách</string>
@ -82,6 +83,7 @@
<string name="path">Cesta</string> <string name="path">Cesta</string>
<string name="invalid_image_path">Neplatná cesta</string> <string name="invalid_image_path">Neplatná cesta</string>
<string name="image_editing_failed">Úprava souboru selhala</string> <string name="image_editing_failed">Úprava souboru selhala</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Soubor byl úspěšně upraven</string> <string name="file_edited_successfully">Soubor byl úspěšně upraven</string>
<string name="edit_image_with">Upravit soubor pomocí:</string> <string name="edit_image_with">Upravit soubor pomocí:</string>
<string name="no_editor_found">Nebyl nalezen žádný editor</string> <string name="no_editor_found">Nebyl nalezen žádný editor</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Jak mohu dosáhnout, aby bylo dané album stále zobrazeno jako první?</string> <string name="faq_3_title">Jak mohu dosáhnout, aby bylo dané album stále zobrazeno jako první?</string>
<string name="faq_3_text">Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to ji připne nahoru. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení.</string> <string name="faq_3_text">Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to ji připne nahoru. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení.</string>
<string name="faq_4_title">Jak mohu video posunout vpřed?</string> <string name="faq_4_title">Jak mohu video posunout vpřed?</string>
<string name="faq_4_text">Můžete toho dosáhnout buď tažením prstu vodorovně přes okno přehrávače nebo klepnutím na text aktuální či celkové délky videa, který najdete po bocích indikátoru aktuální pozice. To posune video buď zpět nebo vpřed.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Jaký je rozdíl mezi Skrytím a Vyloučením složky?</string> <string name="faq_5_title">Jaký je rozdíl mezi Skrytím a Vyloučením složky?</string>
<string name="faq_5_text">Zatímco vyloučení zamezí zobrazení složky pouze vrámci Jednoduché galerie, skrytí ji ukryje v celém systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného souboru \".nomedia\" v daném adresáři, který můžete vymazat i libovolným správcem souborů.</string> <string name="faq_5_text">Zatímco vyloučení zamezí zobrazení složky pouze vrámci Jednoduché galerie, skrytí ji ukryje v celém systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného souboru \".nomedia\" v daném adresáři, který můžete vymazat i libovolným správcem souborů.</string>
<string name="faq_6_title">Proč se mi zobrazují složky s obaly hudebních alb, nebo nálepkami?</string> <string name="faq_6_title">Proč se mi zobrazují složky s obaly hudebních alb, nebo nálepkami?</string>
@ -367,6 +369,9 @@
<b>Prohlédněte si celou sadu Jednoduchých aplikací na:</b> <b>Prohlédněte si celou sadu Jednoduchých aplikací na:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fiks eksponeringsdato</string> <string name="fix_date_taken">Fiks eksponeringsdato</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="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Del en skaleret version</string> <string name="share_resized">Del en skaleret version</string>
<string name="upgraded_from_free">Hej\n\nDet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \"Opgrader til Pro\"-knap i toppen af appens indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte din apps indstillinger.\n\nTak!</string> <string name="upgraded_from_free">Hej\n\nDet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \"Opgrader til Pro\"-knap i toppen af appens indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte din apps indstillinger.\n\nTak!</string>
<string name="switch_to_file_search">Skift til filsøgning på tværs af synlige mapper</string> <string name="switch_to_file_search">Skift til filsøgning på tværs af synlige mapper</string>
@ -82,6 +83,7 @@
<string name="path">Sti</string> <string name="path">Sti</string>
<string name="invalid_image_path">Ugyldig sti til billede</string> <string name="invalid_image_path">Ugyldig sti til billede</string>
<string name="image_editing_failed">Redigering af billede mislykkedes</string> <string name="image_editing_failed">Redigering af billede mislykkedes</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Rediger billede med:</string> <string name="edit_image_with">Rediger billede med:</string>
<string name="no_editor_found">Der blev ikke fundet en editor til billedbehandling</string> <string name="no_editor_found">Der blev ikke fundet en editor til billedbehandling</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Hvordan kan jeg altid få et bestemt album vist i toppen?</string> <string name="faq_3_title">Hvordan kan jeg altid få et bestemt album vist i toppen?</string>
<string name="faq_3_text">Du kan holde fingeren nede på det ønskede album, og vælge tegnestift-ikonet i menuen, dette vil fastgøre den til toppen. Du kan fastgøre flere mapper også. Fastgjorte elementer vil blive sorteret efter standard sorterings-metoden.</string> <string name="faq_3_text">Du kan holde fingeren nede på det ønskede album, og vælge tegnestift-ikonet i menuen, dette vil fastgøre den til toppen. Du kan fastgøre flere mapper også. Fastgjorte elementer vil blive sorteret efter standard sorterings-metoden.</string>
<string name="faq_4_title">Hvordan kan jeg spole fremad i videoer?</string> <string name="faq_4_title">Hvordan kan jeg spole fremad i videoer?</string>
<string name="faq_4_text">Du kan enten trække din finger vandret over videoafspilleren, eller klikke på den nuværende eller maksimum varighedsteksterne, nær søgefeltet. Det vil enten spole videoen tilbage eller fremad.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Hvad er forskellen på at skjule og ekskludere en mappe?</string> <string name="faq_5_title">Hvad er forskellen på at skjule og ekskludere en mappe?</string>
<string name="faq_5_text">Eksludering forhindrer kun visning af mappen i Simple Gallery, mens Skjul virker på systemniveau og skjuler mappen fra andre gallerier også. Det fungerer ved at oprette en tom \".nomedia\"-fil i den givne mappe, som du kan slette med enhver filhåndterings-app.</string> <string name="faq_5_text">Eksludering forhindrer kun visning af mappen i Simple Gallery, mens Skjul virker på systemniveau og skjuler mappen fra andre gallerier også. Det fungerer ved at oprette en tom \".nomedia\"-fil i den givne mappe, som du kan slette med enhver filhåndterings-app.</string>
<string name="faq_6_title">Hvorfor dukker mapper med musikomslag eller klistermærker op?</string> <string name="faq_6_title">Hvorfor dukker mapper med musikomslag eller klistermærker op?</string>
@ -367,6 +369,9 @@
<b>Se hele suiten af Simple Tools her:</b> <b>Se hele suiten af Simple Tools her:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Aufnahmedatum korrigieren</string> <string name="fix_date_taken">Aufnahmedatum korrigieren</string>
<string name="fixing">Korrigiere…</string> <string name="fixing">Korrigiere…</string>
<string name="dates_fixed_successfully">Datum erfolgreich korrigiert.</string> <string name="dates_fixed_successfully">Datum erfolgreich korrigiert.</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Teile eine verkleinerte Version</string> <string name="share_resized">Teile eine verkleinerte Version</string>
<string name="upgraded_from_free">Hey,\n\nes sieht so aus, als hättest du von der alten kostenlosen App geupgraded. Du kannst nun die alte Version deinstallieren, die oben in den App-Einstellungen einen \'Upgrade auf Pro\' Button hat.\n\nEs wird nur der Papierkorb gelöscht, die Markierungen von Favoriten entfernt und die App-Einstellungen zurückgesetzt.\n\nDanke!</string> <string name="upgraded_from_free">Hey,\n\nes sieht so aus, als hättest du von der alten kostenlosen App geupgraded. Du kannst nun die alte Version deinstallieren, die oben in den App-Einstellungen einen \'Upgrade auf Pro\' Button hat.\n\nEs wird nur der Papierkorb gelöscht, die Markierungen von Favoriten entfernt und die App-Einstellungen zurückgesetzt.\n\nDanke!</string>
<string name="switch_to_file_search">Zur Dateisuche in allen sichtbaren Ordnern wechseln</string> <string name="switch_to_file_search">Zur Dateisuche in allen sichtbaren Ordnern wechseln</string>
@ -82,6 +83,7 @@
<string name="path">Pfad</string> <string name="path">Pfad</string>
<string name="invalid_image_path">Ungültiger Dateipfad</string> <string name="invalid_image_path">Ungültiger Dateipfad</string>
<string name="image_editing_failed">Bildbearbeitung fehlgeschlagen</string> <string name="image_editing_failed">Bildbearbeitung fehlgeschlagen</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Datei erfolgreich bearbeitet</string> <string name="file_edited_successfully">Datei erfolgreich bearbeitet</string>
<string name="edit_image_with">Bild bearbeiten mit:</string> <string name="edit_image_with">Bild bearbeiten mit:</string>
<string name="no_editor_found">Keine Bildeditor-App gefunden</string> <string name="no_editor_found">Keine Bildeditor-App gefunden</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Wie kann ich ein Album immer zuoberst erscheinen lassen?</string> <string name="faq_3_title">Wie kann ich ein Album immer zuoberst erscheinen lassen?</string>
<string name="faq_3_text">Du kannst lange auf das gewünschte Album drücken und im Aktionsmenü das Stecknadelsymbol auswählen; es wird nun zuoberst angepinnt. Ebenso kannst du mehrere Ordner anpinnen. Angepinnte Objekte werden nach der Standardmethode sortiert.</string> <string name="faq_3_text">Du kannst lange auf das gewünschte Album drücken und im Aktionsmenü das Stecknadelsymbol auswählen; es wird nun zuoberst angepinnt. Ebenso kannst du mehrere Ordner anpinnen. Angepinnte Objekte werden nach der Standardmethode sortiert.</string>
<string name="faq_4_title">Wie kann ich in Videos vor- oder zurückspringen?</string> <string name="faq_4_title">Wie kann ich in Videos vor- oder zurückspringen?</string>
<string name="faq_4_text">Du kannst deinen Finger horizontal über den Videoplayer ziehen oder in der Nähe der Suchleiste auf die aktuelle oder maximale Dauer klicken. Das Video wird so entweder vorwärts oder rückwärts bewegt.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Was ist der Unterschied zwischen \'Verstecken\' und \'Ausschließen\' eines Ordners?</string> <string name="faq_5_title">Was ist der Unterschied zwischen \'Verstecken\' und \'Ausschließen\' eines Ordners?</string>
<string name="faq_5_text">\'Ausschließen\' verhindert lediglich, dass der Ordner in Schlichte Galerie angezeigt wird. \'Verstecken\' hingegen versteckt den Ordner auch vor anderen Apps. Dies funktioniert durch das Erstellen einer leeren \".nomedia\"-Datei im betroffenen Ordner, welche du mit jedem Dateimanager wieder löschen kannst.</string> <string name="faq_5_text">\'Ausschließen\' verhindert lediglich, dass der Ordner in Schlichte Galerie angezeigt wird. \'Verstecken\' hingegen versteckt den Ordner auch vor anderen Apps. Dies funktioniert durch das Erstellen einer leeren \".nomedia\"-Datei im betroffenen Ordner, welche du mit jedem Dateimanager wieder löschen kannst.</string>
<string name="faq_6_title">Wieso erscheinen Ordner mit Musik-Cover oder Stickers?</string> <string name="faq_6_title">Wieso erscheinen Ordner mit Musik-Cover oder Stickers?</string>
@ -366,6 +368,9 @@
<b>Schau dir die vollständige Serie der Schlichten Apps hier an:</b> <b>Schau dir die vollständige Serie der Schlichten Apps hier an:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Διόρθωση ημερ. λήψης</string> <string name="fix_date_taken">Διόρθωση ημερ. λήψης</string>
<string name="fixing">Διορθώνεται…</string> <string name="fixing">Διορθώνεται…</string>
<string name="dates_fixed_successfully">Η Ημερ. διορθώθηκε με επιτυχία</string> <string name="dates_fixed_successfully">Η Ημερ. διορθώθηκε με επιτυχία</string>
<string name="no_date_takens_found">Δεν βρέθηκαν Τιμές Ημερομηνίας όταν ελήφθησαν</string>
<string name="share_resized">Διαμοιρασμός έκδοσης με αλλαγμένο μέγεθος</string> <string name="share_resized">Διαμοιρασμός έκδοσης με αλλαγμένο μέγεθος</string>
<string name="upgraded_from_free">Γειά σας,\n\nΦαίνεται πως αναβαθμίσατε από την παλιά δωρεάν εφαρμογή. Τώρα θα πρέπει να απεγκαταστήσετε την παλιά έκδοση, απο το πλήκτρο \"Αναβάθμιση σε Pro\" στο επάνω των ρυθμίσεων της εφαρμογής.\n\nΘα πρέπει να διαγράψετε μόνο τα αντικείμενα του Κάδου, πρέπει να επαναφέρετε τα αγαπημένα στοιχεία που δεν έχουν επισημανθεί καθώς και τις ρυθμίσεις της εφαρμογής σας.\n\nΣας ευχαριστώ!</string> <string name="upgraded_from_free">Γειά σας,\n\nΦαίνεται πως αναβαθμίσατε από την παλιά δωρεάν εφαρμογή. Τώρα θα πρέπει να απεγκαταστήσετε την παλιά έκδοση, απο το πλήκτρο \"Αναβάθμιση σε Pro\" στο επάνω των ρυθμίσεων της εφαρμογής.\n\nΘα πρέπει να διαγράψετε μόνο τα αντικείμενα του Κάδου, πρέπει να επαναφέρετε τα αγαπημένα στοιχεία που δεν έχουν επισημανθεί καθώς και τις ρυθμίσεις της εφαρμογής σας.\n\nΣας ευχαριστώ!</string>
<string name="switch_to_file_search">Εναλλαγή αναζήτησης αρχείων σε όλους τους ορατούς φακέλους</string> <string name="switch_to_file_search">Εναλλαγή αναζήτησης αρχείων σε όλους τους ορατούς φακέλους</string>
@ -82,6 +83,7 @@
<string name="path">Διαδρομή</string> <string name="path">Διαδρομή</string>
<string name="invalid_image_path">Μη έγκυρη διαδρομή εικόνας</string> <string name="invalid_image_path">Μη έγκυρη διαδρομή εικόνας</string>
<string name="image_editing_failed">Η επεξεργασία εικόνας απέτυχε</string> <string name="image_editing_failed">Η επεξεργασία εικόνας απέτυχε</string>
<string name="image_editing_cancelled">Η επεξεργασία εικόνας ακυρώθηκε</string>
<string name="file_edited_successfully">Επιτυχής επεξεργασία αρχείου</string> <string name="file_edited_successfully">Επιτυχής επεξεργασία αρχείου</string>
<string name="edit_image_with">Επεξεργασία εικόνας με:</string> <string name="edit_image_with">Επεξεργασία εικόνας με:</string>
<string name="no_editor_found">Δεν βρέθηκε επεργαστής εικόνων</string> <string name="no_editor_found">Δεν βρέθηκε επεργαστής εικόνων</string>
@ -292,8 +294,8 @@
<string name="faq_2_text">Υπάρχουν 2 λύσεις. Είτε επανεγκατάσταση της εφαρμογής, ή να εντοπίσετε την εφαρμογή στις ρυθμίσεις της συσκευής και να επιλέξετε \"Καθαρισμό δεδομένων\". Θα επαναφέρει όλες τις ρυθμίσεις και δεν θα σβήσει κάποιο αρχείο πολυμέσου.</string> <string name="faq_2_text">Υπάρχουν 2 λύσεις. Είτε επανεγκατάσταση της εφαρμογής, ή να εντοπίσετε την εφαρμογή στις ρυθμίσεις της συσκευής και να επιλέξετε \"Καθαρισμό δεδομένων\". Θα επαναφέρει όλες τις ρυθμίσεις και δεν θα σβήσει κάποιο αρχείο πολυμέσου.</string>
<string name="faq_3_title">Πώς μπορώ να κάνω ένα άλμπουμ να φαίνεται στην κορυφή;</string> <string name="faq_3_title">Πώς μπορώ να κάνω ένα άλμπουμ να φαίνεται στην κορυφή;</string>
<string name="faq_3_text">Μπορείτε να πατήσετε παρατεταμένα στο άλμπουμ και να επιλέξετε το εικονίδιο καρφιτσώματος στο μενού, αυτό θα το καρφιτσώσει στην κορυφή. Επίσης μπορείτε να καρφιτσώσετε πολλαπλούς φακέλους, τα καρφιτσωμένα αντικείμενα θα είναι ταξινομημένα με την προεπιλεγμένη μέθοδο.</string> <string name="faq_3_text">Μπορείτε να πατήσετε παρατεταμένα στο άλμπουμ και να επιλέξετε το εικονίδιο καρφιτσώματος στο μενού, αυτό θα το καρφιτσώσει στην κορυφή. Επίσης μπορείτε να καρφιτσώσετε πολλαπλούς φακέλους, τα καρφιτσωμένα αντικείμενα θα είναι ταξινομημένα με την προεπιλεγμένη μέθοδο.</string>
<string name="faq_4_title">Πώς μπορώ να τρέξω μπροστά (fast-forward) τα βίντεο;</string> <string name="faq_4_title">Πώς μπορώ να τρέξω μπροστά (fast forward) τα βίντεο;</string>
<string name="faq_4_text">Μπορείτε είτε να σύρετε το δάχτυλό σας οριζόντια πάνω από το πρόγραμμα αναπαραγωγής Βίντεο ή να κάνετε κλικ στα γράμματα της τρέχουσας ή της μέγιστης διάρκειας κοντά στο Γραμμή Αναζήτησης. Αυτό θα μετακινήσει το βίντεο προς τα πίσω ή προς τα εμπρός.</string> <string name="faq_4_text">Μπορείτε να το κάνετε πατώντας δύο φορές την πλευρά της οθόνης ή πατώντας το κείμενο τρέχοντος ή μέγιστης διάρκειας κοντά στη γραμμή αναζήτησης. Αν ενεργοποιήσετε το άνοιγμα βίντεο σε ξεχωριστή οθόνη στις ρυθμίσεις εφαρμογής, μπορείτε επίσης να χρησιμοποιήσετε και τις οριζόντιες κινήσεις.</string>
<string name="faq_5_title">Ποια είναι διαφορά μεταξύ απόκρυψης και εξαίρεσης ενός φακέλου;</string> <string name="faq_5_title">Ποια είναι διαφορά μεταξύ απόκρυψης και εξαίρεσης ενός φακέλου;</string>
<string name="faq_5_text">Η εξαίρεση δεν επιτρέπει την εμφάνιση του φακέλου μόνο στην Απλή Συλλογή, ενώ η απόκρυψη λειτουργεί σε επίπεδο συστήματος και θα αποκρύψει τον φάκελο και από άλλες εφαρμογές γκάλερι. Λειτουργεί δημιουργώντας ένα άδειο \".nomedia\" αρχείο στον επιλεγμένο φάκελο, το οποίο μπορείτε να το διαγράψετε και με οποιονδήποτε διαχειριστή αρχείων.</string> <string name="faq_5_text">Η εξαίρεση δεν επιτρέπει την εμφάνιση του φακέλου μόνο στην Απλή Συλλογή, ενώ η απόκρυψη λειτουργεί σε επίπεδο συστήματος και θα αποκρύψει τον φάκελο και από άλλες εφαρμογές γκάλερι. Λειτουργεί δημιουργώντας ένα άδειο \".nomedia\" αρχείο στον επιλεγμένο φάκελο, το οποίο μπορείτε να το διαγράψετε και με οποιονδήποτε διαχειριστή αρχείων.</string>
<string name="faq_6_title">Γιατί εμφανίζονται φάκελοι με εξώφυλλο μουσικής ή αυτόκολλητα;</string> <string name="faq_6_title">Γιατί εμφανίζονται φάκελοι με εξώφυλλο μουσικής ή αυτόκολλητα;</string>
@ -365,9 +367,12 @@
<b>ΠΡΟΣΤΑΣΙΑ ΚΑΙ ΑΠΟΚΡΥΨΗ ΑΡΧΕΙΩΝ ΦΩΤΟ ΚΑΙ ΒΙΝΤΕΟ</b> <b>ΠΡΟΣΤΑΣΙΑ ΚΑΙ ΑΠΟΚΡΥΨΗ ΑΡΧΕΙΩΝ ΦΩΤΟ ΚΑΙ ΒΙΝΤΕΟ</b>
Χρησιμοποιώντας κωδικό, μοτίβο ή τον σαρωτή δακτυλικών αποτυπωμάτων της συσκευής σας, μπορείτε να προστατεύσετε και να αποκρύψετε φωτογραφίες, βίντεο ή ολόκληρα άλμπουμ. Μπορείτε να προστατεύσετε την ίδια την εφαρμογή ή να κλειδώσετε συγκεκριμένες λειτουργίες της. Για παράδειγμα, δεν μπορείτε να διαγράψετε ένα αρχείο χωρίς χρήση των δακτυλικών αποτυπωμάτων, συμβάλλοντας στην προστασία των αρχείων σας από τυχαία διαγραφή. Χρησιμοποιώντας κωδικό, μοτίβο ή τον σαρωτή δακτυλικών αποτυπωμάτων της συσκευής σας, μπορείτε να προστατεύσετε και να αποκρύψετε φωτογραφίες, βίντεο ή ολόκληρα άλμπουμ. Μπορείτε να προστατεύσετε την ίδια την εφαρμογή ή να κλειδώσετε συγκεκριμένες λειτουργίες της. Για παράδειγμα, δεν μπορείτε να διαγράψετε ένα αρχείο χωρίς χρήση των δακτυλικών αποτυπωμάτων, συμβάλλοντας στην προστασία των αρχείων σας από τυχαία διαγραφή.
<b>Δείτε την πλήρη σειρά των Simple Tools εδώ:</b> <b>Δείτε την πλήρη σειρά των Απλών Εργαλείων εδώ:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Αποκλειστική ιστοσελίδα της Απλή Συλλογή Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fijar fecha de toma</string> <string name="fix_date_taken">Fijar fecha de toma</string>
<string name="fixing">Fijando…</string> <string name="fixing">Fijando…</string>
<string name="dates_fixed_successfully">Fecha fijada correctamente</string> <string name="dates_fixed_successfully">Fecha fijada correctamente</string>
<string name="no_date_takens_found">No se han encontrado valores de fechas tomadas</string>
<string name="share_resized">Comparte una versión redimensionada</string> <string name="share_resized">Comparte una versión redimensionada</string>
<string name="upgraded_from_free">Oye,\n\nParece que actualizaste de la aplicación gratuita vieja. Ahora puedes desinstalar la versión vieja, que tiene un botón \'Actualizar a Pro\' en la aprte superior de los ajustes de la app.\n\nSolo tendrás los elementos de la Papelera de Reciclaje eliminados, favoritos desmarcados y también tendrás que reiniciar los ajustes de la app.\n\n¡Gracias!</string> <string name="upgraded_from_free">Oye,\n\nParece que actualizaste de la aplicación gratuita vieja. Ahora puedes desinstalar la versión vieja, que tiene un botón \'Actualizar a Pro\' en la aprte superior de los ajustes de la app.\n\nSolo tendrás los elementos de la Papelera de Reciclaje eliminados, favoritos desmarcados y también tendrás que reiniciar los ajustes de la app.\n\n¡Gracias!</string>
<string name="switch_to_file_search">Cambiar a la búsqueda de archivos en todas las carpetas visibles</string> <string name="switch_to_file_search">Cambiar a la búsqueda de archivos en todas las carpetas visibles</string>
@ -82,6 +83,7 @@
<string name="path">Ruta</string> <string name="path">Ruta</string>
<string name="invalid_image_path">Ruta de imagen no válida</string> <string name="invalid_image_path">Ruta de imagen no válida</string>
<string name="image_editing_failed">Falló la edición de imagen</string> <string name="image_editing_failed">Falló la edición de imagen</string>
<string name="image_editing_cancelled">Edición de imagen cancelada</string>
<string name="file_edited_successfully">Fichero editado satisfactoriamente</string> <string name="file_edited_successfully">Fichero editado satisfactoriamente</string>
<string name="edit_image_with">Editar imagen usando:</string> <string name="edit_image_with">Editar imagen usando:</string>
<string name="no_editor_found">No se encontró editor de imágenes</string> <string name="no_editor_found">No se encontró editor de imágenes</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">¿Cómo puedo hacer que un álbum siempre aparezca en la parte superior?</string> <string name="faq_3_title">¿Cómo puedo hacer que un álbum siempre aparezca en la parte superior?</string>
<string name="faq_3_text">Puede aguantar pulsado el álbum deseado y seleccionar el ícono Pin en el menú de acción, que lo fijará en la parte superior. También puede anclar varias carpetas, los artículos fijados se ordenarán por el método de clasificación predeterminado.</string> <string name="faq_3_text">Puede aguantar pulsado el álbum deseado y seleccionar el ícono Pin en el menú de acción, que lo fijará en la parte superior. También puede anclar varias carpetas, los artículos fijados se ordenarán por el método de clasificación predeterminado.</string>
<string name="faq_4_title">¿Cómo puedo avanzar videos?</string> <string name="faq_4_title">¿Cómo puedo avanzar videos?</string>
<string name="faq_4_text">Puede arrastrar el dedo horizontalmente sobre el reproductor de video, o hacer clic en los textos de duración actual o máxima cerca de la barra de búsqueda, que moverán el video hacia atrás o hacia adelante.</string> <string name="faq_4_text">Puede hacerlo tocando dos veces el costado de la pantalla o tocando los textos de duración actual o máxima cerca de la barra de búsqueda. Si habilita la apertura de videos en una pantalla separada en la configuración de la aplicación, también puede usar gestos horizontales.</string>
<string name="faq_5_title">¿Cuál es la diferencia entre ocultar y excluir una carpeta?</string> <string name="faq_5_title">¿Cuál es la diferencia entre ocultar y excluir una carpeta?</string>
<string name="faq_5_text">Excluir evita mostrar la carpeta solo en Simple Gallery, mientras que Ocultar funciona en el sistema y oculta la carpeta de otras galerías también. Funciona al crear un archivo \".nomedia \" vacío en la carpeta determinada, que luego puede eliminar también con cualquier administrador de archivos.</string> <string name="faq_5_text">Excluir evita mostrar la carpeta solo en Simple Gallery, mientras que Ocultar funciona en el sistema y oculta la carpeta de otras galerías también. Funciona al crear un archivo \".nomedia \" vacío en la carpeta determinada, que luego puede eliminar también con cualquier administrador de archivos.</string>
<string name="faq_6_title">¿Por qué aparecen las carpetas con la portada de la música o las pegatinas?</string> <string name="faq_6_title">¿Por qué aparecen las carpetas con la portada de la música o las pegatinas?</string>
@ -367,6 +369,9 @@
<b>Mira la suite completa de Simple Tools aquí:</b> <b>Mira la suite completa de Simple Tools aquí:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Sitio web de Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Polku</string> <string name="path">Polku</string>
<string name="invalid_image_path">Kuvan polkua ei ole</string> <string name="invalid_image_path">Kuvan polkua ei ole</string>
<string name="image_editing_failed">Kuvan muokkaus epäonnistui</string> <string name="image_editing_failed">Kuvan muokkaus epäonnistui</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Muokkaa kuvaa:</string> <string name="edit_image_with">Muokkaa kuvaa:</string>
<string name="no_editor_found">Kuvamuokkainta ei löytynyt</string> <string name="no_editor_found">Kuvamuokkainta ei löytynyt</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Corriger les dates de prise de vue</string> <string name="fix_date_taken">Corriger les dates de prise de vue</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="no_date_takens_found">Aucune date de prise de vue trouvée</string>
<string name="share_resized">Partager une version redimensionnée</string> <string name="share_resized">Partager une version redimensionnée</string>
<string name="upgraded_from_free">Hé,\n\nvous avez apparemment fait une mise à niveau à partir de l\'ancienne application gratuite. Vous pouvez maintenant désinstaller l\'ancienne version avec le bouton \'Mettre à niveau vers Pro\' en haut des paramètres de l\'application.\n\nVos éléments de la corbeille seront supprimés, les éléments favoris seront non marqués et vous devrez également restaurer les paramètres de votre application.\n\nMerci !</string> <string name="upgraded_from_free">Hé,\n\nvous avez apparemment fait une mise à niveau à partir de l\'ancienne application gratuite. Vous pouvez maintenant désinstaller l\'ancienne version avec le bouton \'Mettre à niveau vers Pro\' en haut des paramètres de l\'application.\n\nVos éléments de la corbeille seront supprimés, les éléments favoris seront non marqués et vous devrez également restaurer les paramètres de votre application.\n\nMerci !</string>
<string name="switch_to_file_search">Basculer vers la recherche de fichiers</string> <string name="switch_to_file_search">Basculer vers la recherche de fichiers</string>
@ -82,6 +83,7 @@
<string name="path">Emplacement</string> <string name="path">Emplacement</string>
<string name="invalid_image_path">Emplacement invalide</string> <string name="invalid_image_path">Emplacement invalide</string>
<string name="image_editing_failed">L\'édition de l\'image a échoué</string> <string name="image_editing_failed">L\'édition de l\'image a échoué</string>
<string name="image_editing_cancelled">L\'édition de l\'image a été annulé</string>
<string name="file_edited_successfully">L\'image a été éditée avec succès</string> <string name="file_edited_successfully">L\'image a été éditée avec succès</string>
<string name="edit_image_with">Modifier l\'image avec:</string> <string name="edit_image_with">Modifier l\'image avec:</string>
<string name="no_editor_found">Aucun éditeur d\'image trouvé</string> <string name="no_editor_found">Aucun éditeur d\'image trouvé</string>
@ -291,7 +293,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">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_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Quelle est la différence entre cacher et exclure un dossier ?</string> <string name="faq_5_title">Quelle est la différence entre cacher 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 \"Cacher 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 caché, 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 \"Cacher 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 caché, 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>
@ -365,6 +367,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Ruta</string> <string name="path">Ruta</string>
<string name="invalid_image_path">Ruta a imaxe non válida</string> <string name="invalid_image_path">Ruta a imaxe non válida</string>
<string name="image_editing_failed">Fallo na edición da imaxe</string> <string name="image_editing_failed">Fallo na edición da imaxe</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Editar imaxe con:</string> <string name="edit_image_with">Editar imaxe con:</string>
<string name="no_editor_found">Non se atopou ningún editor</string> <string name="no_editor_found">Non se atopou ningún editor</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Cómo podo facer que un álbume apareza sempre arriba de todo?</string> <string name="faq_3_title">Cómo podo facer que un álbume apareza sempre arriba de todo?</string>
<string name="faq_3_text">Pode manter premido o álbume e escoller a icona de Fixar no menú de accións, esto fixarao arriba. Pode fixar varios cartafoles tambén, os elementos fixados estarán ordenados polo criterio por omisión.</string> <string name="faq_3_text">Pode manter premido o álbume e escoller a icona de Fixar no menú de accións, esto fixarao arriba. Pode fixar varios cartafoles tambén, os elementos fixados estarán ordenados polo criterio por omisión.</string>
<string name="faq_4_title">Cómo podo aumentar a velocidade de reprodución de vídeo?</string> <string name="faq_4_title">Cómo podo aumentar a velocidade de reprodución de vídeo?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Cal é a diferenza entre agochar e excluír un cartafol?</string> <string name="faq_5_title">Cal é a diferenza entre agochar e excluír un cartafol?</string>
<string name="faq_5_text">A Exclusión prevén que se mostre o cartafol só en Simple Gallery, mentras Agochar funciona para todo o sistema e agocha o cartafol para outras galerías tamén. Esto funciona creando un ficheiro baldeiro de nome \".nomedia\" no cartafol, que tamén pode quitar con calquer xestor de ficheiros.</string> <string name="faq_5_text">A Exclusión prevén que se mostre o cartafol só en Simple Gallery, mentras Agochar funciona para todo o sistema e agocha o cartafol para outras galerías tamén. Esto funciona creando un ficheiro baldeiro de nome \".nomedia\" no cartafol, que tamén pode quitar con calquer xestor de ficheiros.</string>
<string name="faq_6_title">Por qué aparecen cartafoles de música con portadas ou pegatinas?</string> <string name="faq_6_title">Por qué aparecen cartafoles de música con portadas ou pegatinas?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Ispravi vrijednost datuma snimanja</string> <string name="fix_date_taken">Ispravi vrijednost datuma snimanja</string>
<string name="fixing">Popravljam…</string> <string name="fixing">Popravljam…</string>
<string name="dates_fixed_successfully">Datumi uspješno popravljeni</string> <string name="dates_fixed_successfully">Datumi uspješno popravljeni</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Putanja</string> <string name="path">Putanja</string>
<string name="invalid_image_path">Neispravna putanja slike</string> <string name="invalid_image_path">Neispravna putanja slike</string>
<string name="image_editing_failed">Uređivanje slika nije uspjelo</string> <string name="image_editing_failed">Uređivanje slika nije uspjelo</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Uredi sliku pomoću:</string> <string name="edit_image_with">Uredi sliku pomoću:</string>
<string name="no_editor_found">Nije pronađen uređivač slika</string> <string name="no_editor_found">Nije pronađen uređivač slika</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Kako postići da je album uvijek na vrhu?</string> <string name="faq_3_title">Kako postići da je album uvijek na vrhu?</string>
<string name="faq_3_text">Dugo pritisnute željeni album i odaberite ikonu igle na akcijskom izborniku, koji će ga pričvrstiti na vrh. Možete prikvačiti više mapa odjednom, prikvačene stavke će biti razvrstane prema zadanom načinu razvrstavanja.</string> <string name="faq_3_text">Dugo pritisnute željeni album i odaberite ikonu igle na akcijskom izborniku, koji će ga pričvrstiti na vrh. Možete prikvačiti više mapa odjednom, prikvačene stavke će biti razvrstane prema zadanom načinu razvrstavanja.</string>
<string name="faq_4_title">Kako mogu ubrzati video?</string> <string name="faq_4_title">Kako mogu ubrzati video?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Koja je razlika između skrivanja i izuzimanja mape?</string> <string name="faq_5_title">Koja je razlika između skrivanja i izuzimanja mape?</string>
<string name="faq_5_text">Izuzimanje sprječava prikaz mape samo u Jednostavnoj galeriji, a skrivanje radi na razini sustava i skriva mapu iz drugih galerija. Djeluje stvaranjem praznih \".nomedia\" datoteka u zadanoj mapi, koju možete ukloniti pomoću bilo kojeg upraviteljem datoteka.</string> <string name="faq_5_text">Izuzimanje sprječava prikaz mape samo u Jednostavnoj galeriji, a skrivanje radi na razini sustava i skriva mapu iz drugih galerija. Djeluje stvaranjem praznih \".nomedia\" datoteka u zadanoj mapi, koju možete ukloniti pomoću bilo kojeg upraviteljem datoteka.</string>
<string name="faq_6_title">Zašto se prikazuju mape s naslovnicama albuma i minijaturama slika?</string> <string name="faq_6_title">Zašto se prikazuju mape s naslovnicama albuma i minijaturama slika?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Dátum javítása</string> <string name="fix_date_taken">Dátum javítása</string>
<string name="fixing">Javítás...</string> <string name="fixing">Javítás...</string>
<string name="dates_fixed_successfully">Sikeres dátum javítás</string> <string name="dates_fixed_successfully">Sikeres dátum javítás</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Átméretezett verzió megosztása</string> <string name="share_resized">Átméretezett verzió megosztása</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Váltás a fájlkeresésre az összes látható mappában</string> <string name="switch_to_file_search">Váltás a fájlkeresésre az összes látható mappában</string>
@ -82,6 +83,7 @@
<string name="path">Elérési útvonal</string> <string name="path">Elérési útvonal</string>
<string name="invalid_image_path">Érvénytelen kép elérési útvonal</string> <string name="invalid_image_path">Érvénytelen kép elérési útvonal</string>
<string name="image_editing_failed">Sikertelen kép szerkesztés</string> <string name="image_editing_failed">Sikertelen kép szerkesztés</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">A fájl szerkesztése sikerült</string> <string name="file_edited_successfully">A fájl szerkesztése sikerült</string>
<string name="edit_image_with">Kép szerkesztés ezzel:</string> <string name="edit_image_with">Kép szerkesztés ezzel:</string>
<string name="no_editor_found">Nem található kép szerkesztő</string> <string name="no_editor_found">Nem található kép szerkesztő</string>
@ -295,7 +297,7 @@ A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót,
<string name="faq_3_title">Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen?</string> <string name="faq_3_title">Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen?</string>
<string name="faq_3_text">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.</string> <string name="faq_3_text">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.</string>
<string name="faq_4_title">Hogyan tudom előre tekerni a videókat?</string> <string name="faq_4_title">Hogyan tudom előre tekerni a videókat?</string>
<string name="faq_4_text">Húzhatja az ujját vízszintesen a videolejátszón, vagy kattintson az aktuális vagy a max. időtartam szövegekre a keresősáv közelében. Ez visszafelé vagy előre mozgatja a videót.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Mi a különbség a mappa elrejtése és kizárása között?</string> <string name="faq_5_title">Mi a különbség a mappa elrejtése és kizárása között?</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_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>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Perbaiki Tanggal Diambil</string> <string name="fix_date_taken">Perbaiki Tanggal Diambil</string>
<string name="fixing">Memperbaiki…</string> <string name="fixing">Memperbaiki…</string>
<string name="dates_fixed_successfully">Tanggal berhasil diperbaiki</string> <string name="dates_fixed_successfully">Tanggal berhasil diperbaiki</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Bagikan versi yang diubah ukurannya</string> <string name="share_resized">Bagikan versi yang diubah ukurannya</string>
<string name="upgraded_from_free">Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nTerima kasih!</string> <string name="upgraded_from_free">Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nTerima kasih!</string>
<string name="switch_to_file_search">Beralih ke pencarian berkas di semua folder yang terlihat</string> <string name="switch_to_file_search">Beralih ke pencarian berkas di semua folder yang terlihat</string>
@ -82,6 +83,7 @@
<string name="path">Jalur</string> <string name="path">Jalur</string>
<string name="invalid_image_path">Jalur gambar tidak valid</string> <string name="invalid_image_path">Jalur gambar tidak valid</string>
<string name="image_editing_failed">Gagal menyunting gambar</string> <string name="image_editing_failed">Gagal menyunting gambar</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Sunting gambar dengan:</string> <string name="edit_image_with">Sunting gambar dengan:</string>
<string name="no_editor_found">Tidak ditemukan aplikasi penyunting gambar</string> <string name="no_editor_found">Tidak ditemukan aplikasi penyunting gambar</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Bagaimana agar album selalu muncul paling atas di dalam daftar?</string> <string name="faq_3_title">Bagaimana agar album selalu muncul paling atas di dalam daftar?</string>
<string name="faq_3_text">Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, hal tersebut akan membuat album tetap berada di bagian paling atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default.</string> <string name="faq_3_text">Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, hal tersebut akan membuat album tetap berada di bagian paling atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default.</string>
<string name="faq_4_title">Bagaimana cara mempercepat laju video?</string> <string name="faq_4_title">Bagaimana cara mempercepat laju video?</string>
<string name="faq_4_text">Anda bisa menyeret jari anda secara horizontal pada pemutar video, atau klik pada teks durasi saat ini atau maks dekat bilah laju. Hal tersebut akan memundurkan atau memajukan laju video.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Apa perbedaan antara menyembunyikan dan mengecualikan folder?</string> <string name="faq_5_title">Apa perbedaan antara menyembunyikan dan mengecualikan folder?</string>
<string name="faq_5_text">Mengecualikan tidak akan menampilkan folder di Simple Gallery saja, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas.</string> <string name="faq_5_text">Mengecualikan tidak akan menampilkan folder di Simple Gallery saja, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas.</string>
<string name="faq_6_title">Mengapa folder dengan gambar album musik atau stiker muncul?</string> <string name="faq_6_title">Mengapa folder dengan gambar album musik atau stiker muncul?</string>
@ -367,6 +369,9 @@
<b>Lihat semua aplikasi Simple Tools di sini:</b> <b>Lihat semua aplikasi Simple Tools di sini:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Perbaiki Tanggal Diambil</string> <string name="fix_date_taken">Perbaiki Tanggal Diambil</string>
<string name="fixing">Memperbaiki…</string> <string name="fixing">Memperbaiki…</string>
<string name="dates_fixed_successfully">Tanggal berhasil diperbaiki</string> <string name="dates_fixed_successfully">Tanggal berhasil diperbaiki</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Bagikan versi yang diubah ukurannya</string> <string name="share_resized">Bagikan versi yang diubah ukurannya</string>
<string name="upgraded_from_free">Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nTerima kasih!</string> <string name="upgraded_from_free">Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nTerima kasih!</string>
<string name="switch_to_file_search">Beralih ke pencarian berkas di semua folder yang terlihat</string> <string name="switch_to_file_search">Beralih ke pencarian berkas di semua folder yang terlihat</string>
@ -82,6 +83,7 @@
<string name="path">Jalur</string> <string name="path">Jalur</string>
<string name="invalid_image_path">Jalur gambar tidak valid</string> <string name="invalid_image_path">Jalur gambar tidak valid</string>
<string name="image_editing_failed">Gagal menyunting gambar</string> <string name="image_editing_failed">Gagal menyunting gambar</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Sunting gambar dengan:</string> <string name="edit_image_with">Sunting gambar dengan:</string>
<string name="no_editor_found">Tidak ditemukan aplikasi penyunting gambar</string> <string name="no_editor_found">Tidak ditemukan aplikasi penyunting gambar</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Bagaimana agar album selalu muncul paling atas di dalam daftar?</string> <string name="faq_3_title">Bagaimana agar album selalu muncul paling atas di dalam daftar?</string>
<string name="faq_3_text">Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, hal tersebut akan membuat album tetap berada di bagian paling atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default.</string> <string name="faq_3_text">Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, hal tersebut akan membuat album tetap berada di bagian paling atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default.</string>
<string name="faq_4_title">Bagaimana cara mempercepat laju video?</string> <string name="faq_4_title">Bagaimana cara mempercepat laju video?</string>
<string name="faq_4_text">Anda bisa menyeret jari anda secara horizontal pada pemutar video, atau klik pada teks durasi saat ini atau maks dekat bilah laju. Hal tersebut akan memundurkan atau memajukan laju video.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Apa perbedaan antara menyembunyikan dan mengecualikan folder?</string> <string name="faq_5_title">Apa perbedaan antara menyembunyikan dan mengecualikan folder?</string>
<string name="faq_5_text">Mengecualikan tidak akan menampilkan folder di Simple Gallery saja, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas.</string> <string name="faq_5_text">Mengecualikan tidak akan menampilkan folder di Simple Gallery saja, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas.</string>
<string name="faq_6_title">Mengapa folder dengan gambar album musik atau stiker muncul?</string> <string name="faq_6_title">Mengapa folder dengan gambar album musik atau stiker muncul?</string>
@ -367,6 +369,9 @@
<b>Lihat semua aplikasi Simple Tools di sini:</b> <b>Lihat semua aplikasi Simple Tools di sini:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Correggi valore Data acquisizione</string> <string name="fix_date_taken">Correggi valore Data acquisizione</string>
<string name="fixing">Correzione in corso…</string> <string name="fixing">Correzione in corso…</string>
<string name="dates_fixed_successfully">Date aggiornate correttamente</string> <string name="dates_fixed_successfully">Date aggiornate correttamente</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Condividi una versione ridimensionata</string> <string name="share_resized">Condividi una versione ridimensionata</string>
<string name="upgraded_from_free">Hey,\n\nhai aggiornato dalla vecchia versione gratuita. Puoi disinstallare le vecchia versione, che ha un pulsante \'Aggiorna a Pro\' in alto nelle impostazioni.\n\nNon potrai recuperare gli elementi dal cestino, gli elementi marcati come preferiti e dovrai anche reimpostare le impostazioni dell\'app.\n\nGrazie!</string> <string name="upgraded_from_free">Hey,\n\nhai aggiornato dalla vecchia versione gratuita. Puoi disinstallare le vecchia versione, che ha un pulsante \'Aggiorna a Pro\' in alto nelle impostazioni.\n\nNon potrai recuperare gli elementi dal cestino, gli elementi marcati come preferiti e dovrai anche reimpostare le impostazioni dell\'app.\n\nGrazie!</string>
<string name="switch_to_file_search">Passa alla ricerca file su tutte le cartelle visibili</string> <string name="switch_to_file_search">Passa alla ricerca file su tutte le cartelle visibili</string>
@ -82,6 +83,7 @@
<string name="path">Percorso</string> <string name="path">Percorso</string>
<string name="invalid_image_path">Percorso dell\'immagine non valido</string> <string name="invalid_image_path">Percorso dell\'immagine non valido</string>
<string name="image_editing_failed">Modifica dell\'immagine fallita</string> <string name="image_editing_failed">Modifica dell\'immagine fallita</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Modifica immagine con:</string> <string name="edit_image_with">Modifica immagine con:</string>
<string name="no_editor_found">Editor delle immagini non trovato</string> <string name="no_editor_found">Editor delle immagini non trovato</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Come posso fare apparire un album sempre in cima?</string> <string name="faq_3_title">Come posso fare apparire un album sempre in cima?</string>
<string name="faq_3_text">Si può toccare a lungo l\'album desiderato e selezionare l\'icona puntina nel menù azioni, ciò lo fisserà in cima. Si possono anche fissare varie cartelle, gli elementi fissati saranno ordinati dal metodo di ordinamento predefinito.</string> <string name="faq_3_text">Si può toccare a lungo l\'album desiderato e selezionare l\'icona puntina nel menù azioni, ciò lo fisserà in cima. Si possono anche fissare varie cartelle, gli elementi fissati saranno ordinati dal metodo di ordinamento predefinito.</string>
<string name="faq_4_title">Come avanzo velocemente nei video?</string> <string name="faq_4_title">Come avanzo velocemente nei video?</string>
<string name="faq_4_text">Si possono trascinare le proprie dita orrizontalmente sul video, oppure cliccando i testi accanto alla barra di avanzamento. In questo modo il video andrà avanti o indietro.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Che differenza c\'è tra nascondere ed escludere una cartella?</string> <string name="faq_5_title">Che differenza c\'è tra nascondere ed escludere una cartella?</string>
<string name="faq_5_text">Escludere impedisce la visualizzazione della cartella solo in Semplice Galleria, mentre nascondere ha effetto in tutto il sistema e nasconde la cartella anche alle altre gallerie. Funziona creando un file vuoto \".nomedia\" nella cartella in questione, si possono anche rimuovere successivamente con qualsiasi gestore dei file.</string> <string name="faq_5_text">Escludere impedisce la visualizzazione della cartella solo in Semplice Galleria, mentre nascondere ha effetto in tutto il sistema e nasconde la cartella anche alle altre gallerie. Funziona creando un file vuoto \".nomedia\" nella cartella in questione, si possono anche rimuovere successivamente con qualsiasi gestore dei file.</string>
<string name="faq_6_title">Perchè vengono mostrate cartelle con copertine o adesivi di musica?</string> <string name="faq_6_title">Perchè vengono mostrate cartelle con copertine o adesivi di musica?</string>
@ -367,6 +369,9 @@
<b>Controlla le altre applicazioni qui:</b> <b>Controlla le altre applicazioni qui:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">撮影日の値を修正</string> <string name="fix_date_taken">撮影日の値を修正</string>
<string name="fixing">修正中…</string> <string name="fixing">修正中…</string>
<string name="dates_fixed_successfully">撮影日が正常に修正されました</string> <string name="dates_fixed_successfully">撮影日が正常に修正されました</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">リサイズした画像を共有</string> <string name="share_resized">リサイズした画像を共有</string>
<string name="upgraded_from_free">あなたは無料版からアップグレードしたと思われます。\"Upgrade to Pro\"というボタンが設定の上部にある無料版はアンインストールすることができます。\n\nごみ箱の中身は削除され、お気に入りもアプリの設定もリセットされることになります。\n\nありがとう!</string> <string name="upgraded_from_free">あなたは無料版からアップグレードしたと思われます。\"Upgrade to Pro\"というボタンが設定の上部にある無料版はアンインストールすることができます。\n\nごみ箱の中身は削除され、お気に入りもアプリの設定もリセットされることになります。\n\nありがとう!</string>
<string name="switch_to_file_search">表示されているすべてのフォルダで検索 に切り替え</string> <string name="switch_to_file_search">表示されているすべてのフォルダで検索 に切り替え</string>
@ -82,6 +83,7 @@
<string name="path">パス</string> <string name="path">パス</string>
<string name="invalid_image_path">無効な画像パス</string> <string name="invalid_image_path">無効な画像パス</string>
<string name="image_editing_failed">画像の編集に失敗しました</string> <string name="image_editing_failed">画像の編集に失敗しました</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">ファイルの編集に成功しました</string> <string name="file_edited_successfully">ファイルの編集に成功しました</string>
<string name="edit_image_with">画像を編集:</string> <string name="edit_image_with">画像を編集:</string>
<string name="no_editor_found">画像エディターが見つかりません</string> <string name="no_editor_found">画像エディターが見つかりません</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">動画を早送りするにはどうすればよいですか?</string> <string name="faq_4_title">動画を早送りするにはどうすればよいですか?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">찍은 날짜 값 교정</string> <string name="fix_date_taken">찍은 날짜 값 교정</string>
<string name="fixing">교정 중...</string> <string name="fixing">교정 중...</string>
<string name="dates_fixed_successfully">교정이 완료되었습니다</string> <string name="dates_fixed_successfully">교정이 완료되었습니다</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">크기변경 버전 공유</string> <string name="share_resized">크기변경 버전 공유</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">경로</string> <string name="path">경로</string>
<string name="invalid_image_path">유효하지 않은 사진 경로</string> <string name="invalid_image_path">유효하지 않은 사진 경로</string>
<string name="image_editing_failed">사진 편집 실패</string> <string name="image_editing_failed">사진 편집 실패</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">사진 편집 프로그램 연결:</string> <string name="edit_image_with">사진 편집 프로그램 연결:</string>
<string name="no_editor_found">사진 편집 프로그램 없음</string> <string name="no_editor_found">사진 편집 프로그램 없음</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Kelias</string> <string name="path">Kelias</string>
<string name="invalid_image_path">Netinkamas atvaizdo kelias</string> <string name="invalid_image_path">Netinkamas atvaizdo kelias</string>
<string name="image_editing_failed">Atvaizdo redagavimas nepavyko</string> <string name="image_editing_failed">Atvaizdo redagavimas nepavyko</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Redaguoti atvaizdą su:</string> <string name="edit_image_with">Redaguoti atvaizdą su:</string>
<string name="no_editor_found">Nerasta atvaizdų redagavimo programėlės</string> <string name="no_editor_found">Nerasta atvaizdų redagavimo programėlės</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Kaip aš galiu padaryti albumą visada rodomą viršuje?</string> <string name="faq_3_title">Kaip aš galiu padaryti albumą visada rodomą viršuje?</string>
<string name="faq_3_text">Galite ilgai paspausti norimą albumą ir pasirinkti "Prisegti" piktogramą, esančią meniu "Veiksmo meniu", viršuje. Galite prisegti kelis aplankus, prisegti elementai bus rūšiuojami pagal numatytąjį rūšiavimo metodą.</string> <string name="faq_3_text">Galite ilgai paspausti norimą albumą ir pasirinkti "Prisegti" piktogramą, esančią meniu "Veiksmo meniu", viršuje. Galite prisegti kelis aplankus, prisegti elementai bus rūšiuojami pagal numatytąjį rūšiavimo metodą.</string>
<string name="faq_4_title">Kaip galėčiau greitai prasukti vaizdo įrašus?</string> <string name="faq_4_title">Kaip galėčiau greitai prasukti vaizdo įrašus?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Koks skirtumas tarp slėpimo ir išskyrimo iš aplanko?</string> <string name="faq_5_title">Koks skirtumas tarp slėpimo ir išskyrimo iš aplanko?</string>
<string name="faq_5_text">Išskyrimas neleidžia rodyti aplanko tik paprastoje galerijoje, tuo tarpu slėpimas slepia aplanką iš kitų galerijų. Tai veikia, sukuriant tuščią \ ". Nomedia \" bylą tam tikrame aplanke, kurį vėliau galite pašalinti bet kuria bylų tvarkykle.</string> <string name="faq_5_text">Išskyrimas neleidžia rodyti aplanko tik paprastoje galerijoje, tuo tarpu slėpimas slepia aplanką iš kitų galerijų. Tai veikia, sukuriant tuščią \ ". Nomedia \" bylą tam tikrame aplanke, kurį vėliau galite pašalinti bet kuria bylų tvarkykle.</string>
<string name="faq_6_title">Kodėl pasirodo aplankai su muzikos viršeliu ar lipdukais?</string> <string name="faq_6_title">Kodėl pasirodo aplankai su muzikos viršeliu ar lipdukais?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +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="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Del versjon med endret størrelse</string> <string name="share_resized">Del versjon med endret størrelse</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Skift til filsøk i alle synlige mapper</string> <string name="switch_to_file_search">Skift til filsøk i alle synlige mapper</string>
@ -82,6 +83,7 @@
<string name="path">Bane</string> <string name="path">Bane</string>
<string name="invalid_image_path">Ugyldig bildebane</string> <string name="invalid_image_path">Ugyldig bildebane</string>
<string name="image_editing_failed">Bilderedigering feilet</string> <string name="image_editing_failed">Bilderedigering feilet</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Fil vellykket redigert</string> <string name="file_edited_successfully">Fil vellykket redigert</string>
<string name="edit_image_with">Rediger bilde med:</string> <string name="edit_image_with">Rediger bilde med:</string>
<string name="no_editor_found">Ingen bilderedigeringsapp funnet</string> <string name="no_editor_found">Ingen bilderedigeringsapp funnet</string>
@ -226,16 +228,16 @@
<string name="pesdk_focus_title_name">Fokus</string> <string name="pesdk_focus_title_name">Fokus</string>
<string name="pesdk_focus_title_disabled">Ingen</string> <string name="pesdk_focus_title_disabled">Ingen</string>
<string name="pesdk_focus_button_radial">Radial</string> <string name="pesdk_focus_button_radial">Radial</string>
<string name="pesdk_focus_button_linear">Linear</string> <string name="pesdk_focus_button_linear">Lineær</string>
<string name="pesdk_focus_button_mirrored">Mirrored</string> <string name="pesdk_focus_button_mirrored">Speilet</string>
<string name="pesdk_focus_button_gaussian">Gaussian</string> <string name="pesdk_focus_button_gaussian">Gaussisk</string>
<string name="pesdk_text_title_name">Tekst</string> <string name="pesdk_text_title_name">Tekst</string>
<string name="pesdk_text_title_options">Tekstvalg</string> <string name="pesdk_text_title_options">Tekstvalg</string>
<string name="pesdk_text_title_textColor">Tekstfarge</string> <string name="pesdk_text_title_textColor">Tekstfarge</string>
<string name="pesdk_text_title_font">Skrift</string> <string name="pesdk_text_title_font">Skrift</string>
<string name="pesdk_text_button_add">Legg til</string> <string name="pesdk_text_button_add">Legg til</string>
<string name="pesdk_text_button_edit">Rediger</string> <string name="pesdk_text_button_edit">Rediger</string>
<string name="pesdk_text_button_straighten">Straighten</string> <string name="pesdk_text_button_straighten">Rette</string>
<string name="pesdk_text_button_font">Skrift</string> <string name="pesdk_text_button_font">Skrift</string>
<string name="pesdk_text_button_color">Farge</string> <string name="pesdk_text_button_color">Farge</string>
<string name="pesdk_text_button_backgroundColor">Bakg.farge</string> <string name="pesdk_text_button_backgroundColor">Bakg.farge</string>
@ -250,38 +252,38 @@
<string name="pesdk_brush_button_bringToFront">Til front</string> <string name="pesdk_brush_button_bringToFront">Til front</string>
<string name="pesdk_brush_button_delete">Slett</string> <string name="pesdk_brush_button_delete">Slett</string>
<string name="pesdk_brush_title_brushColor">Penselfarge</string> <string name="pesdk_brush_title_brushColor">Penselfarge</string>
<string name="pesdk_editor_title_name">Editor</string> <string name="pesdk_editor_title_name">Redigering</string>
<string name="pesdk_editor_title_closeEditorAlert">Close Editor?</string> <string name="pesdk_editor_title_closeEditorAlert">Lukke Redigering?</string>
<string name="pesdk_editor_text_closeEditorAlert">Do you really want to discard the image?</string> <string name="pesdk_editor_text_closeEditorAlert">Vil du forkaste bildet?</string>
<string name="pesdk_editor_button_closeEditorAlertConfirmation">Yes</string> <string name="pesdk_editor_button_closeEditorAlertConfirmation">Ja</string>
<string name="pesdk_editor_button_closeEditorAlertCancelation">No</string> <string name="pesdk_editor_button_closeEditorAlertCancelation">Nei</string>
<string name="pesdk_editor_cancel">Cancel</string> <string name="pesdk_editor_cancel">Avbryt</string>
<string name="pesdk_editor_accept">Accept</string> <string name="pesdk_editor_accept">Aksepter</string>
<string name="pesdk_editor_save">Save</string> <string name="pesdk_editor_save">Lagre</string>
<string name="pesdk_editor_text_exportProgressUnknown">Exporting image…</string> <string name="pesdk_editor_text_exportProgressUnknown">Eksporterer bilde…</string>
<string name="pesdk_editor_text_exportProgress" formatted="false">Exporting image %s.</string> <string name="pesdk_editor_text_exportProgress" formatted="false">Eksporterer bilde %s.</string>
<string name="pesdk_common_button_flipH">Flip H</string> <string name="pesdk_common_button_flipH">Speilvend H</string>
<string name="pesdk_common_button_flipV">Flip V</string> <string name="pesdk_common_button_flipV">Speilvend V</string>
<string name="pesdk_common_button_undo">Undo</string> <string name="pesdk_common_button_undo">Angre</string>
<string name="pesdk_common_button_redo">Redo</string> <string name="pesdk_common_button_redo">Annuler angre</string>
<string name="pesdk_common_title_colorPicker">Color Picker</string> <string name="pesdk_common_title_colorPicker">Fargevelger</string>
<string name="pesdk_common_title_transparentColor">Transparent</string> <string name="pesdk_common_title_transparentColor">Gjennomsiktig</string>
<string name="pesdk_common_title_whiteColor">White</string> <string name="pesdk_common_title_whiteColor">Hvit</string>
<string name="pesdk_common_title_grayColor">Gray</string> <string name="pesdk_common_title_grayColor">Grå</string>
<string name="pesdk_common_title_blackColor">Black</string> <string name="pesdk_common_title_blackColor">Svart</string>
<string name="pesdk_common_title_lightBlueColor">Light blue</string> <string name="pesdk_common_title_lightBlueColor">Lyseblå</string>
<string name="pesdk_common_title_blueColor">Blue</string> <string name="pesdk_common_title_blueColor">Blå</string>
<string name="pesdk_common_title_purpleColor">Purple</string> <string name="pesdk_common_title_purpleColor">Lilla</string>
<string name="pesdk_common_title_orchidColor">Orchid</string> <string name="pesdk_common_title_orchidColor">Orkide</string>
<string name="pesdk_common_title_pinkColor">Pink</string> <string name="pesdk_common_title_pinkColor">Rosa</string>
<string name="pesdk_common_title_redColor">Red</string> <string name="pesdk_common_title_redColor">Rød</string>
<string name="pesdk_common_title_orangeColor">Orange</string> <string name="pesdk_common_title_orangeColor">Orange</string>
<string name="pesdk_common_title_goldColor">Gold</string> <string name="pesdk_common_title_goldColor">Gull</string>
<string name="pesdk_common_title_yellowColor">Yellow</string> <string name="pesdk_common_title_yellowColor">Gul</string>
<string name="pesdk_common_title_oliveColor">Olive</string> <string name="pesdk_common_title_oliveColor">Oliven</string>
<string name="pesdk_common_title_greenColor">Green</string> <string name="pesdk_common_title_greenColor">Grønn</string>
<string name="pesdk_common_title_aquamarinColor">Aquamarin</string> <string name="pesdk_common_title_aquamarinColor">Akvamarin</string>
<string name="pesdk_common_title_pipettableColor">Pipettable color</string> <string name="pesdk_common_title_pipettableColor">Pipettefarge</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string> <string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Path</string> <string name="path">Path</string>
<string name="invalid_image_path">Invalid image path</string> <string name="invalid_image_path">Invalid image path</string>
<string name="image_editing_failed">Image editing failed</string> <string name="image_editing_failed">Image editing failed</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Edit image with:</string> <string name="edit_image_with">Edit image with:</string>
<string name="no_editor_found">No image editor found</string> <string name="no_editor_found">No image editor found</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Datum opname corrigeren</string> <string name="fix_date_taken">Datum opname corrigeren</string>
<string name="fixing">Corrigeren…</string> <string name="fixing">Corrigeren…</string>
<string name="dates_fixed_successfully">Datums zijn gecorrigeerd</string> <string name="dates_fixed_successfully">Datums zijn gecorrigeerd</string>
<string name="no_date_takens_found">Geen opnamedatums gevonden</string>
<string name="share_resized">Verkleinde versie delen</string> <string name="share_resized">Verkleinde versie delen</string>
<string name="upgraded_from_free">Het lijkt erop dat dit een upgrade is vanaf de oude gratis versie. Deze oude versie, met de knop \"Upgraden naar Pro\" bovenaan de instellingen, kan nu gedeïnstalleerd worden.\n\nDe items in de prullenbak zullen dan wel worden verwijderd, favorieten en instellingen zullen ook opnieuw moeten worden geconfigureerd.</string> <string name="upgraded_from_free">Het lijkt erop dat dit een upgrade is vanaf de oude gratis versie. Deze oude versie, met de knop \"Upgraden naar Pro\" bovenaan de instellingen, kan nu gedeïnstalleerd worden.\n\nDe items in de prullenbak zullen dan wel worden verwijderd, favorieten en instellingen zullen ook opnieuw moeten worden geconfigureerd.</string>
<string name="switch_to_file_search">Zoeken in alle zichtbare mappen</string> <string name="switch_to_file_search">Zoeken in alle zichtbare mappen</string>
@ -82,6 +83,7 @@
<string name="path">Pad</string> <string name="path">Pad</string>
<string name="invalid_image_path">Ongeldig pad naar afbeelding</string> <string name="invalid_image_path">Ongeldig pad naar afbeelding</string>
<string name="image_editing_failed">Fout bij bewerken van afbeelding</string> <string name="image_editing_failed">Fout bij bewerken van afbeelding</string>
<string name="image_editing_cancelled">Afbeelding bewerken is geannuleerd</string>
<string name="file_edited_successfully">Wijzigingen zijn opgeslagen</string> <string name="file_edited_successfully">Wijzigingen zijn opgeslagen</string>
<string name="edit_image_with">Afbeelding bewerken met:</string> <string name="edit_image_with">Afbeelding bewerken met:</string>
<string name="no_editor_found">Geen app gevonden voor fotobewerking</string> <string name="no_editor_found">Geen app gevonden voor fotobewerking</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Hoe kan ik een map bovenaan vastzetten?</string> <string name="faq_3_title">Hoe kan ik een map bovenaan vastzetten?</string>
<string name="faq_3_text">Druk lang op het map en kies vervolgens de punaise in het actiemenu. Als er meerdere mappen zijn vastgezet, zullen deze worden weergeven op basis van de standaardsortering.</string> <string name="faq_3_text">Druk lang op het map en kies vervolgens de punaise in het actiemenu. Als er meerdere mappen zijn vastgezet, zullen deze worden weergeven op basis van de standaardsortering.</string>
<string name="faq_4_title">Hoe kan ik terug- of vooruitspoelen in videos?</string> <string name="faq_4_title">Hoe kan ik terug- of vooruitspoelen in videos?</string>
<string name="faq_4_text">Sleep horizontaal over de videospeler, of klik bij de zoekbalk op de cijfers die de huidige voortgang of de lengte weergeven. Hierbij zal de video respectievelijk terug- of vooruitspringen.</string> <string name="faq_4_text">Dubbelklik op de zijkant van het scherm, of tik op de cijfers die de voortgang of de lengte van de video weergeven om resp. terug of vooruit te springen. Als de instelling om video\'s in een apart scherm te openen is ingeschakeld, dan kunnen ook horizontale veeggebaren worden gebruikt.</string>
<string name="faq_5_title">Wat is het verschil tussen het verbergen en het uitsluiten van mappen?</string> <string name="faq_5_title">Wat is het verschil tussen het verbergen en het uitsluiten van mappen?</string>
<string name="faq_5_text">Met \"Uitsluiten\" wordt het tonen van de map alleen binnen deze app voorkomen, terwijl \"Verbergen\" de map ook zal verbergen voor andere galerij-apps. Met \"Verbergen\" wordt een bestand genaamd \".nomedia\" in de te verbergen map aangemaakt (het verwijderen van dit bestand uit de map maakt het verbergen ongedaan).</string> <string name="faq_5_text">Met \"Uitsluiten\" wordt het tonen van de map alleen binnen deze app voorkomen, terwijl \"Verbergen\" de map ook zal verbergen voor andere galerij-apps. Met \"Verbergen\" wordt een bestand genaamd \".nomedia\" in de te verbergen map aangemaakt (het verwijderen van dit bestand uit de map maakt het verbergen ongedaan).</string>
<string name="faq_6_title">Waarom zie ik mappen met stickers of covers van muziekalbums?</string> <string name="faq_6_title">Waarom zie ik mappen met stickers of covers van muziekalbums?</string>
@ -367,6 +369,9 @@
<b>Kijk ook eens naar de hele collectie apps van Simple Tools:</b> <b>Kijk ook eens naar de hele collectie apps van Simple Tools:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,9 +31,10 @@
<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="no_date_takens_found">Nie znaleziono wartości dat utworzenia</string>
<string name="share_resized">Udostępnij zmienioną wersję</string> <string name="share_resized">Udostępnij zmienioną wersję</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hej,\n\nwygląda na to że zaktualizowałeś ze starszej, darmowej wersji aplikacji. Możesz ją teraz odinstalować przyciskiej \'Upgrade to Pro\' w ustawieniach.\n\nZostaną jedynie usunięte elementy z Kosza, odznaczone Ulubione i konieczne będzie zresetowanie ustawień aplikacji.\n\nDziękujemy!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Przełącz na przeszukiwanie plików we wszystkich widocznych folderach</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtruj multimedia</string> <string name="filter_media">Filtruj multimedia</string>
@ -42,7 +43,7 @@
<string name="gifs">GIFy</string> <string name="gifs">GIFy</string>
<string name="raw_images">Obrazy RAW</string> <string name="raw_images">Obrazy RAW</string>
<string name="svgs">Obrazy SVG</string> <string name="svgs">Obrazy SVG</string>
<string name="portraits">Portraits</string> <string name="portraits">Portrety</string>
<string name="no_media_with_filters">Nie znaleziono multimediów zgodnych z zastosowanymi filtrami.</string> <string name="no_media_with_filters">Nie znaleziono multimediów zgodnych z zastosowanymi filtrami.</string>
<string name="change_filters_underlined"><u>Zmień filtry</u></string> <string name="change_filters_underlined"><u>Zmień filtry</u></string>
@ -65,7 +66,7 @@
<string name="manage_included_folders">Zarządzaj dołączonymi folderami</string> <string name="manage_included_folders">Zarządzaj dołączonymi folderami</string>
<string name="add_folder">Dodaj folder</string> <string name="add_folder">Dodaj folder</string>
<string name="included_activity_placeholder">Jeśli masz jakieś foldery z multimediami, ale aplikacja ich nie wykryła, możesz je dodać ręcznie tutaj.</string> <string name="included_activity_placeholder">Jeśli masz jakieś foldery z multimediami, ale aplikacja ich nie wykryła, możesz je dodać ręcznie tutaj.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string> <string name="no_media_add_included">Nie znaleziono plików z multimediami. Możesz to naprawić poprzez dodanie folderów ręcznie.</string>
<!-- Resizing --> <!-- Resizing -->
<string name="resize">Zmień rozmiar</string> <string name="resize">Zmień rozmiar</string>
@ -82,7 +83,8 @@
<string name="path">Ścieżka</string> <string name="path">Ścieżka</string>
<string name="invalid_image_path">Nieprawidłowa ścieżka</string> <string name="invalid_image_path">Nieprawidłowa ścieżka</string>
<string name="image_editing_failed">Edycja obrazu nie powiodła się</string> <string name="image_editing_failed">Edycja obrazu nie powiodła się</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="image_editing_cancelled">Anulowano edycję obrazu</string>
<string name="file_edited_successfully">Plik wyedytowany</string>
<string name="edit_image_with">Edytuj obraz w:</string> <string name="edit_image_with">Edytuj obraz w:</string>
<string name="no_editor_found">Nie znalazłem edytora zdjęć</string> <string name="no_editor_found">Nie znalazłem edytora zdjęć</string>
<string name="unknown_file_location">Nieznana lokalizacja pliku</string> <string name="unknown_file_location">Nieznana lokalizacja pliku</string>
@ -118,10 +120,10 @@
<string name="random_order">Losowa kolejność</string> <string name="random_order">Losowa kolejność</string>
<string name="move_backwards">Odwrotna kolejność</string> <string name="move_backwards">Odwrotna kolejność</string>
<string name="loop_slideshow">Zapętlaj</string> <string name="loop_slideshow">Zapętlaj</string>
<string name="animation">Animation</string> <string name="animation">Animacja</string>
<string name="no_animation">None</string> <string name="no_animation">Brak</string>
<string name="fade">Fade</string> <string name="fade">Przenikanie</string>
<string name="slide">Slide</string> <string name="slide">Przesuwanie</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>
@ -136,11 +138,11 @@
<string name="do_not_group_files">Nie grupuj plików</string> <string name="do_not_group_files">Nie grupuj plików</string>
<string name="by_folder">Folderu</string> <string name="by_folder">Folderu</string>
<string name="by_last_modified">Daty ostatniej modyfikacji</string> <string name="by_last_modified">Daty ostatniej modyfikacji</string>
<string name="by_last_modified_daily">Last modified (daily)</string> <string name="by_last_modified_daily">Daty ostatniej modyfikacji (dniami)</string>
<string name="by_last_modified_monthly">Last modified (monthly)</string> <string name="by_last_modified_monthly">Daty ostatniej modyfikacji (miesiącami)</string>
<string name="by_date_taken">Daty utworzenia</string> <string name="by_date_taken">Daty utworzenia</string>
<string name="by_date_taken_daily">Date taken (daily)</string> <string name="by_date_taken_daily">Data utworzenia (dniami)</string>
<string name="by_date_taken_monthly">Date taken (monthly)</string> <string name="by_date_taken_monthly">Data utworzenia (miesiącami)</string>
<string name="by_file_type">Typu</string> <string name="by_file_type">Typu</string>
<string name="by_extension">Rozszerzenia</string> <string name="by_extension">Rozszerzenia</string>
<string name="grouping_and_sorting">Uwaga: grupowanie i sortowanie to dwa niezależne pola</string> <string name="grouping_and_sorting">Uwaga: grupowanie i sortowanie to dwa niezależne pola</string>
@ -189,7 +191,7 @@
<string name="speed">Szybkość</string> <string name="speed">Szybkość</string>
<string name="compromise">Kompromis</string> <string name="compromise">Kompromis</string>
<string name="avoid_showing_invalid_files">Unikaj pokazywania niewłaściwych plików</string> <string name="avoid_showing_invalid_files">Unikaj pokazywania niewłaściwych plików</string>
<string name="show_image_file_types">Show image file types</string> <string name="show_image_file_types">Pokazuj rozszerzenia zdjęć</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniatury</string> <string name="thumbnails">Miniatury</string>
@ -203,85 +205,85 @@
<string name="toggle_file_visibility">Widoczność plików</string> <string name="toggle_file_visibility">Widoczność plików</string>
<!-- New editor strings --> <!-- New editor strings -->
<string name="pesdk_transform_button_freeCrop">Custom</string> <string name="pesdk_transform_button_freeCrop">Własne</string>
<string name="pesdk_transform_button_resetCrop">Reset</string> <string name="pesdk_transform_button_resetCrop">Resetuj</string>
<string name="pesdk_transform_button_squareCrop">Square</string> <string name="pesdk_transform_button_squareCrop">Kwadrat</string>
<string name="pesdk_transform_title_name">Transform</string> <string name="pesdk_transform_title_name">Transformacja</string>
<string name="pesdk_filter_title_name">Filter</string> <string name="pesdk_filter_title_name">Filtr</string>
<string name="pesdk_filter_asset_none">None</string> <string name="pesdk_filter_asset_none">Brak</string>
<string name="pesdk_adjustments_title_name">Adjust</string> <string name="pesdk_adjustments_title_name">Dopasuj</string>
<string name="pesdk_adjustments_button_shadowTool">Shadows</string> <string name="pesdk_adjustments_button_shadowTool">Cienie</string>
<string name="pesdk_adjustments_button_exposureTool">Exposure</string> <string name="pesdk_adjustments_button_exposureTool">Ekspozycja</string>
<string name="pesdk_adjustments_button_highlightTool">Highlights</string> <string name="pesdk_adjustments_button_highlightTool">Światła</string>
<string name="pesdk_adjustments_button_brightnessTool">Brightness</string> <string name="pesdk_adjustments_button_brightnessTool">Jasność</string>
<string name="pesdk_adjustments_button_contrastTool">Contrast</string> <string name="pesdk_adjustments_button_contrastTool">Kontrast</string>
<string name="pesdk_adjustments_button_saturationTool">Saturation</string> <string name="pesdk_adjustments_button_saturationTool">Nasycenie</string>
<string name="pesdk_adjustments_button_clarityTool">Clarity</string> <string name="pesdk_adjustments_button_clarityTool">Klarowniść</string>
<string name="pesdk_adjustments_button_gammaTool">Gamma</string> <string name="pesdk_adjustments_button_gammaTool">Gamma</string>
<string name="pesdk_adjustments_button_blacksTool">Blacks</string> <string name="pesdk_adjustments_button_blacksTool">Czerń</string>
<string name="pesdk_adjustments_button_whitesTool">Whites</string> <string name="pesdk_adjustments_button_whitesTool">Biel</string>
<string name="pesdk_adjustments_button_temperatureTool">Temperature</string> <string name="pesdk_adjustments_button_temperatureTool">Temperatura</string>
<string name="pesdk_adjustments_button_sharpnessTool">Sharpness</string> <string name="pesdk_adjustments_button_sharpnessTool">Ostrość</string>
<string name="pesdk_adjustments_button_reset">Reset</string> <string name="pesdk_adjustments_button_reset">Resetuj</string>
<string name="pesdk_focus_title_name">Focus</string> <string name="pesdk_focus_title_name">Focus</string>
<string name="pesdk_focus_title_disabled">None</string> <string name="pesdk_focus_title_disabled">Brak</string>
<string name="pesdk_focus_button_radial">Radial</string> <string name="pesdk_focus_button_radial">Radialny</string>
<string name="pesdk_focus_button_linear">Linear</string> <string name="pesdk_focus_button_linear">Linearny</string>
<string name="pesdk_focus_button_mirrored">Mirrored</string> <string name="pesdk_focus_button_mirrored">Lustrzany</string>
<string name="pesdk_focus_button_gaussian">Gaussian</string> <string name="pesdk_focus_button_gaussian">Gaussa</string>
<string name="pesdk_text_title_name">Text</string> <string name="pesdk_text_title_name">Tekst</string>
<string name="pesdk_text_title_options">Text Options</string> <string name="pesdk_text_title_options">Opcje tekstu</string>
<string name="pesdk_text_title_textColor">Text Color</string> <string name="pesdk_text_title_textColor">Kolor tekstu</string>
<string name="pesdk_text_title_font">Font</string> <string name="pesdk_text_title_font">Czcionka</string>
<string name="pesdk_text_button_add">Add</string> <string name="pesdk_text_button_add">Dodaj</string>
<string name="pesdk_text_button_edit">Edit</string> <string name="pesdk_text_button_edit">Edytuj</string>
<string name="pesdk_text_button_straighten">Straighten</string> <string name="pesdk_text_button_straighten">Wyprostuj</string>
<string name="pesdk_text_button_font">Font</string> <string name="pesdk_text_button_font">Czcionka</string>
<string name="pesdk_text_button_color">Color</string> <string name="pesdk_text_button_color">Kolor</string>
<string name="pesdk_text_button_backgroundColor">BG Color</string> <string name="pesdk_text_button_backgroundColor">Kolor tła</string>
<string name="pesdk_text_button_alignment">Alignment</string> <string name="pesdk_text_button_alignment">Wyrównanie</string>
<string name="pesdk_text_button_bringToFront">To Front</string> <string name="pesdk_text_button_bringToFront">Do przodu</string>
<string name="pesdk_text_button_delete">Delete</string> <string name="pesdk_text_button_delete">Usuń</string>
<string name="pesdk_text_text_editTextPlaceholder">Your text</string> <string name="pesdk_text_text_editTextPlaceholder">Twój tekst</string>
<string name="pesdk_brush_title_name">Brush</string> <string name="pesdk_brush_title_name">Pędzel</string>
<string name="pesdk_brush_button_color">Color</string> <string name="pesdk_brush_button_color">Kolor</string>
<string name="pesdk_brush_button_size">Size</string> <string name="pesdk_brush_button_size">Rozmiar</string>
<string name="pesdk_brush_button_hardness">Hardness</string> <string name="pesdk_brush_button_hardness">Twardość</string>
<string name="pesdk_brush_button_bringToFront">To Front</string> <string name="pesdk_brush_button_bringToFront">Do przodu</string>
<string name="pesdk_brush_button_delete">Delete</string> <string name="pesdk_brush_button_delete">Usuń</string>
<string name="pesdk_brush_title_brushColor">Brush Color</string> <string name="pesdk_brush_title_brushColor">Kolor pędzla</string>
<string name="pesdk_editor_title_name">Editor</string> <string name="pesdk_editor_title_name">Edytor</string>
<string name="pesdk_editor_title_closeEditorAlert">Close Editor?</string> <string name="pesdk_editor_title_closeEditorAlert">Zamknąć edytor?</string>
<string name="pesdk_editor_text_closeEditorAlert">Do you really want to discard the image?</string> <string name="pesdk_editor_text_closeEditorAlert">Odrzucić zmiany w obrazie?</string>
<string name="pesdk_editor_button_closeEditorAlertConfirmation">Yes</string> <string name="pesdk_editor_button_closeEditorAlertConfirmation">Tak</string>
<string name="pesdk_editor_button_closeEditorAlertCancelation">No</string> <string name="pesdk_editor_button_closeEditorAlertCancelation">Nie</string>
<string name="pesdk_editor_cancel">Cancel</string> <string name="pesdk_editor_cancel">Anuluj</string>
<string name="pesdk_editor_accept">Accept</string> <string name="pesdk_editor_accept">Zaakceptuj</string>
<string name="pesdk_editor_save">Save</string> <string name="pesdk_editor_save">Zapisz</string>
<string name="pesdk_editor_text_exportProgressUnknown">Exporting image</string> <string name="pesdk_editor_text_exportProgressUnknown">Eksport obrazu</string>
<string name="pesdk_editor_text_exportProgress" formatted="false">Exporting image %s.</string> <string name="pesdk_editor_text_exportProgress" formatted="false">Wyeksportowano obraz %s.</string>
<string name="pesdk_common_button_flipH">Flip H</string> <string name="pesdk_common_button_flipH">Odbij w poziomie</string>
<string name="pesdk_common_button_flipV">Flip V</string> <string name="pesdk_common_button_flipV">Odbij w pionie</string>
<string name="pesdk_common_button_undo">Undo</string> <string name="pesdk_common_button_undo">Cofnij</string>
<string name="pesdk_common_button_redo">Redo</string> <string name="pesdk_common_button_redo">Ponów</string>
<string name="pesdk_common_title_colorPicker">Color Picker</string> <string name="pesdk_common_title_colorPicker">Wybieracz kolorów</string>
<string name="pesdk_common_title_transparentColor">Transparent</string> <string name="pesdk_common_title_transparentColor">Przezroczysty</string>
<string name="pesdk_common_title_whiteColor">White</string> <string name="pesdk_common_title_whiteColor">Biały</string>
<string name="pesdk_common_title_grayColor">Gray</string> <string name="pesdk_common_title_grayColor">Szary</string>
<string name="pesdk_common_title_blackColor">Black</string> <string name="pesdk_common_title_blackColor">Czarny</string>
<string name="pesdk_common_title_lightBlueColor">Light blue</string> <string name="pesdk_common_title_lightBlueColor">Jasnoniebieski</string>
<string name="pesdk_common_title_blueColor">Blue</string> <string name="pesdk_common_title_blueColor">Niebieski</string>
<string name="pesdk_common_title_purpleColor">Purple</string> <string name="pesdk_common_title_purpleColor">Fioletowy</string>
<string name="pesdk_common_title_orchidColor">Orchid</string> <string name="pesdk_common_title_orchidColor">Orchidea</string>
<string name="pesdk_common_title_pinkColor">Pink</string> <string name="pesdk_common_title_pinkColor">Różowy</string>
<string name="pesdk_common_title_redColor">Red</string> <string name="pesdk_common_title_redColor">Czerwony</string>
<string name="pesdk_common_title_orangeColor">Orange</string> <string name="pesdk_common_title_orangeColor">Pomarańczowy</string>
<string name="pesdk_common_title_goldColor">Gold</string> <string name="pesdk_common_title_goldColor">Złoty</string>
<string name="pesdk_common_title_yellowColor">Yellow</string> <string name="pesdk_common_title_yellowColor">Żółty</string>
<string name="pesdk_common_title_oliveColor">Olive</string> <string name="pesdk_common_title_oliveColor">Oliwkowy</string>
<string name="pesdk_common_title_greenColor">Green</string> <string name="pesdk_common_title_greenColor">Zielony</string>
<string name="pesdk_common_title_aquamarinColor">Aquamarin</string> <string name="pesdk_common_title_aquamarinColor">Akwamaryna</string>
<string name="pesdk_common_title_pipettableColor">Pipettable color</string> <string name="pesdk_common_title_pipettableColor">Kolor pipety</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">Jak mogę ustawić tą aplikację jako domyślną aplikację galerii?</string> <string name="faq_1_title">Jak mogę ustawić tą aplikację jako domyślną aplikację galerii?</string>
@ -291,7 +293,7 @@
<string name="faq_3_title">Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze?</string> <string name="faq_3_title">Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze?</string>
<string name="faq_3_text">Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji.</string> <string name="faq_3_text">Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji.</string>
<string name="faq_4_title">Jak mogę przwijać filmy?</string> <string name="faq_4_title">Jak mogę przwijać filmy?</string>
<string name="faq_4_text">Na dwa sposoby: albo przeciągając poziomo palcem po filmie, albo klikając obecny (przewinięcie do tyłu) lub całkowity czas trwania (do przodu).</string> <string name="faq_4_text">Możesz to osiągnąć dotykając dwa razu z boku ekranu, lub dotykając aktualnej lub makysmalnej długości tekstu przy pasku wyszukiwania. Jeśli włączysz w ustawieniach otwieranie video na nowym ekranie, możesz też używać gestów poziomych.</string>
<string name="faq_5_title">Jaka jest różnica między ukryciem, a wykluczeniem folderu?</string> <string name="faq_5_title">Jaka jest różnica między ukryciem, a wykluczeniem folderu?</string>
<string name="faq_5_text">Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików.</string> <string name="faq_5_text">Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików.</string>
<string name="faq_6_title">Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy?</string> <string name="faq_6_title">Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy?</string>
@ -310,8 +312,8 @@
<string name="faq_13_text">Obecne rozwiązanie służące wyświetlaniu obrazów działa jak powinno w większości w przypadków. Jeśli jednak tak nie jest, pomocna może okazać się opcja \'Pokazuj obrazy w najwyższej możliwej jakości\' w sekcji \'Duże powiększanie obrazów\'.</string> <string name="faq_13_text">Obecne rozwiązanie służące wyświetlaniu obrazów działa jak powinno w większości w przypadków. Jeśli jednak tak nie jest, pomocna może okazać się opcja \'Pokazuj obrazy w najwyższej możliwej jakości\' w sekcji \'Duże powiększanie obrazów\'.</string>
<string name="faq_14_title">Mam ukryte pliki i / lub foldery. Jak mogę zobaczyć?</string> <string name="faq_14_title">Mam ukryte pliki i / lub foldery. Jak mogę zobaczyć?</string>
<string name="faq_14_text">Możesz to zrobić albo wybierając opcję \'Tymczasowo pokaż ukryte multimedia\' w menu na ekranie głównym, lub \'Pokazuj ukryte elementy\' w ustawieniach. Foldery są ukrywane poprzez dodanie do nich pustego, ukrytego pliku \'.nomedia\'. Usunąć go możesz dowolnym menedżerem plików.</string> <string name="faq_14_text">Możesz to zrobić albo wybierając opcję \'Tymczasowo pokaż ukryte multimedia\' w menu na ekranie głównym, lub \'Pokazuj ukryte elementy\' w ustawieniach. Foldery są ukrywane poprzez dodanie do nich pustego, ukrytego pliku \'.nomedia\'. Usunąć go możesz dowolnym menedżerem plików.</string>
<string name="faq_15_title">Why does the app take up so much space?</string> <string name="faq_15_title">Dlaczego aplikacja zajmuje tak dużo miejsca?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string> <string name="faq_15_text">Pamięć podręczna aplikacji zajmuje do 250MB, zapewniając szybsze ładowanie obrazów. Aplikacja może zajmować więcej miejsca przez elementy w Koszu, które doliczane są do rozmiaru aplikacji. Wyczyść Kosz przez otwarcie go i usunięcie wszystkich elementów, lub z poziomu ustawień aplikacji. Każdy plik w Koszu jest też automatycznie usuwany po 30 dniach.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it --> <!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
@ -365,6 +367,9 @@
<b>Sprawdź cały zestaw naszych aplikacji:</b> <b>Sprawdź cały zestaw naszych aplikacji:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Odwiedź nasz profil na Facebooku...</b> <b>Odwiedź nasz profil na Facebooku...</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -5,15 +5,15 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Abrir câmera</string> <string name="open_camera">Abrir câmera</string>
<string name="hidden">(oculto)</string> <string name="hidden">(oculto)</string>
<string name="excluded">(excluído)</string> <string name="excluded">(ignorado)</string>
<string name="pin_folder">Fixar pasta</string> <string name="pin_folder">Fixar pasta</string>
<string name="unpin_folder">Desafixar pasta</string> <string name="unpin_folder">Desafixar pasta</string>
<string name="pin_to_the_top">Fixar no topo</string> <string name="pin_to_the_top">Fixar no topo</string>
<string name="show_all">Mostrar conteúdo de todas as pastas</string> <string name="show_all">Exibir conteúdo de todas as pastas</string>
<string name="all_folders">Todas as pastas</string> <string name="all_folders">Todas as pastas</string>
<string name="folder_view">Alternar para a visualização de pastas</string> <string name="folder_view">Alternar para a visualização de pastas</string>
<string name="other_folder">Outra pasta</string> <string name="other_folder">Outra pasta</string>
<string name="show_on_map">Mostrar no mapa</string> <string name="show_on_map">Exibir no mapa</string>
<string name="unknown_location">Localização desconhecida</string> <string name="unknown_location">Localização desconhecida</string>
<string name="increase_column_count">Aumentar número de colunas</string> <string name="increase_column_count">Aumentar número de colunas</string>
<string name="reduce_column_count">Reduzir número de colunas</string> <string name="reduce_column_count">Reduzir número de colunas</string>
@ -31,8 +31,9 @@
<string name="fix_date_taken">Corrigir data da foto</string> <string name="fix_date_taken">Corrigir data da foto</string>
<string name="fixing">Corrigindo…</string> <string name="fixing">Corrigindo…</string>
<string name="dates_fixed_successfully">Datas corrigidas com sucesso</string> <string name="dates_fixed_successfully">Datas corrigidas com sucesso</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Compartilhar uma versão redimensionada</string> <string name="share_resized">Compartilhar uma versão redimensionada</string>
<string name="upgraded_from_free">Olá,\n\nparece que você atualizou o antigo aplicativo gratuito. Agora você poderá desinstalar a velha versão que tem o botão de atualizar para a versão Pro no topo das Configurações.\n\nVocê terá os itens da Lixeira excluídos, itens favoritos desmarcados e também terá que redefinir as configurações do seu aplicativo.\n\nObrigado!</string> <string name="upgraded_from_free">Olá,\n\nparece que você está atualizando do antigo aplicativo gratuito. Agora você já pode desinstalar a versão antiga, que tem o botão de atualizar para a versão Pro no topo da pagina de Configurações.\n\nVocê terá os itens da Lixeira excluídos, itens favoritos desmarcados e também terá que redefinir as configurações do seu aplicativo.\n\nObrigado!</string>
<string name="switch_to_file_search">Alternar para a pesquisa de arquivos em todas as pastas visíveis</string> <string name="switch_to_file_search">Alternar para a pesquisa de arquivos em todas as pastas visíveis</string>
<!-- Filter --> <!-- Filter -->
@ -47,25 +48,25 @@
<string name="change_filters_underlined"><u>Alterar filtros</u></string> <string name="change_filters_underlined"><u>Alterar filtros</u></string>
<!-- Hide / Exclude --> <!-- Hide / Exclude -->
<string name="hide_folder_description">Esta opção oculta a pasta com a adição de um arquivo \".nomedia\" dentro dela, o que também ocultará todas as subpastas que estejam dentro da mesma. Você poderá voltar a exibir estas pastas com a opção \"Mostrar pastas ocultas\". Continuar?</string> <string name="hide_folder_description">Esta opção oculta a pasta ao adicionar um arquivo \".nomedia\" dentro dela, o que também ocultará todas as suas subpastas. Você poderá voltar a exibir estas pastas com a opção \"Exibir pastas ocultas\". Continuar?</string>
<string name="exclude">Ignorar</string> <string name="exclude">Ignorar</string>
<string name="excluded_folders">Pastas ignoradas</string> <string name="excluded_folders">Pastas ignoradas</string>
<string name="manage_excluded_folders">Gerenciar pastas ignoradas</string> <string name="manage_excluded_folders">Gerenciar pastas ignoradas</string>
<string name="exclude_folder_description">Esta ação deixará de exibir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas ignoradas nas Configurações do aplicativo.</string> <string name="exclude_folder_description">Esta ação deixará de exibir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas ignoradas nas configurações do aplicativo.</string>
<string name="exclude_folder_parent">Ignorar a pasta raiz ao invés desta?</string> <string name="exclude_folder_parent">Ignorar a pasta raiz ao invés desta?</string>
<string name="excluded_activity_placeholder">Ignorar uma pasta apenas deixa de exibi-la nesta galeria. Ela continuará visível para outros aplicativos.\n\nSe você quiser ocultar a pasta para todos os aplicativos, utilize a função ocultar.</string> <string name="excluded_activity_placeholder">Ignorar uma pasta apenas deixa de exibi-la nesta galeria. Ela continuará visível para outros aplicativos.\n\nSe você quiser ocultar a pasta para todos os aplicativos, utilize a função Ocultar.</string>
<string name="remove_all">Remover todas</string> <string name="remove_all">Remover todas</string>
<string name="remove_all_description">Remover todas as pastas da lista de pastas ignoradas? Esta ação não exclui as pastas.</string> <string name="remove_all_description">Remover todas as pastas da lista de pastas ignoradas? Esta ação não exclui as pastas.</string>
<string name="hidden_folders">Pastas ocultas</string> <string name="hidden_folders">Pastas ocultas</string>
<string name="manage_hidden_folders">Gerenciar pastas ocultas</string> <string name="manage_hidden_folders">Gerenciar pastas ocultas</string>
<string name="hidden_folders_placeholder">Parece que você não tem nenhuma pasta ocultada por um arquivo \".nomedia\".</string> <string name="hidden_folders_placeholder">Parece que você não tem nenhuma pasta oculta por um arquivo \".nomedia\".</string>
<!-- Include folders --> <!-- Include folders -->
<string name="include_folders">Pastas incluídas</string> <string name="include_folders">Pastas inclusas</string>
<string name="manage_included_folders">Gerenciar pastas incluídas</string> <string name="manage_included_folders">Gerenciar pastas inclusas</string>
<string name="add_folder">Adicionar pasta</string> <string name="add_folder">Adicionar pasta</string>
<string name="included_activity_placeholder">Se você possuir pastas com dados multimídia não reconhecidos pelo aplicativo, aqui você pode adicioná-las manualmente.</string> <string name="included_activity_placeholder">Se você possuir pastas contendo mídia, mas que não foram reconhecidas pelo aplicativo, aqui você pode adicioná-las manualmente.</string>
<string name="no_media_add_included">Nenhum arquivo de mídia foi encontrado. Como alternativa você pode tentar incluir manualmente as pastas com arquivos de mídia.</string> <string name="no_media_add_included">Nenhum arquivo de mídia foi encontrado. Você pode resolver isso incluindo manualmente as pastas com arquivos de mídia.</string>
<!-- Resizing --> <!-- Resizing -->
<string name="resize">Redimensionar</string> <string name="resize">Redimensionar</string>
@ -82,10 +83,11 @@
<string name="path">Caminho</string> <string name="path">Caminho</string>
<string name="invalid_image_path">Caminho inválido</string> <string name="invalid_image_path">Caminho inválido</string>
<string name="image_editing_failed">Falha na edição da imagem</string> <string name="image_editing_failed">Falha na edição da imagem</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Arquivo editado com sucesso</string> <string name="file_edited_successfully">Arquivo editado com sucesso</string>
<string name="edit_image_with">Editar imagem com:</string> <string name="edit_image_with">Editar imagem com:</string>
<string name="no_editor_found">Editor não encontrado</string> <string name="no_editor_found">Nenhum editor de imagem encontrado</string>
<string name="unknown_file_location">Localização desconhecida</string> <string name="unknown_file_location">Localização de arquivo desconhecida</string>
<string name="error_saving_file">Não foi possível substituir o arquivo original</string> <string name="error_saving_file">Não foi possível substituir o arquivo original</string>
<string name="rotate_left">Girar para a esquerda</string> <string name="rotate_left">Girar para a esquerda</string>
<string name="rotate_right">Girar para a direita</string> <string name="rotate_right">Girar para a direita</string>
@ -101,7 +103,7 @@
<string name="set_as_wallpaper">Definir como papel de parede</string> <string name="set_as_wallpaper">Definir como papel de parede</string>
<string name="set_as_wallpaper_failed">Falha ao definir como papel de parede</string> <string name="set_as_wallpaper_failed">Falha ao definir como papel de parede</string>
<string name="set_as_wallpaper_with">Definir papel de parede com:</string> <string name="set_as_wallpaper_with">Definir papel de parede com:</string>
<string name="setting_wallpaper">Definindo como papel de parede</string> <string name="setting_wallpaper">Definindo como papel de parede&#8230;</string>
<string name="wallpaper_set_successfully">Papel de parede definido com sucesso</string> <string name="wallpaper_set_successfully">Papel de parede definido com sucesso</string>
<string name="portrait_aspect_ratio">Retrato</string> <string name="portrait_aspect_ratio">Retrato</string>
<string name="landscape_aspect_ratio">Paisagem</string> <string name="landscape_aspect_ratio">Paisagem</string>
@ -116,7 +118,7 @@
<string name="include_videos">Incluir vídeos</string> <string name="include_videos">Incluir vídeos</string>
<string name="include_gifs">Incluir GIFs</string> <string name="include_gifs">Incluir GIFs</string>
<string name="random_order">Ordem aleatória</string> <string name="random_order">Ordem aleatória</string>
<string name="move_backwards">Retroceder</string> <string name="move_backwards">Ordem inversa</string>
<string name="loop_slideshow">Apresentação em ciclo</string> <string name="loop_slideshow">Apresentação em ciclo</string>
<string name="animation">Animação</string> <string name="animation">Animação</string>
<string name="no_animation">Nenhuma</string> <string name="no_animation">Nenhuma</string>
@ -151,8 +153,8 @@
<!-- Settings --> <!-- Settings -->
<string name="autoplay_videos">Reproduzir vídeos automaticamente</string> <string name="autoplay_videos">Reproduzir vídeos automaticamente</string>
<string name="remember_last_video_position">Lembrar da última posição de reprodução de vídeo</string> <string name="remember_last_video_position">Lembrar posição da última reprodução de vídeo</string>
<string name="toggle_filename">Mostrar/ocultar nome do arquivo</string> <string name="toggle_filename">Exibir/ocultar nome do arquivo</string>
<string name="loop_videos">Reproduzir vídeos em ciclo</string> <string name="loop_videos">Reproduzir vídeos em ciclo</string>
<string name="animate_gifs">Animar GIFs nas miniaturas</string> <string name="animate_gifs">Animar GIFs nas miniaturas</string>
<string name="max_brightness">Maximizar o brilho ao visualizar mídia em tela cheia</string> <string name="max_brightness">Maximizar o brilho ao visualizar mídia em tela cheia</string>
@ -162,48 +164,48 @@
<string name="screen_rotation_system_setting">Padrão do sistema</string> <string name="screen_rotation_system_setting">Padrão do sistema</string>
<string name="screen_rotation_device_rotation">Sensor do aparelho</string> <string name="screen_rotation_device_rotation">Sensor do aparelho</string>
<string name="screen_rotation_aspect_ratio">Proporção da mídia</string> <string name="screen_rotation_aspect_ratio">Proporção da mídia</string>
<string name="black_background_at_fullscreen">Fundo de tela e barra de status preta quando em visualização de tela cheia</string> <string name="black_background_at_fullscreen">Fundo preto quando mídia estiver em tela cheia</string>
<string name="scroll_thumbnails_horizontally">Rolar miniaturas horizontalmente</string> <string name="scroll_thumbnails_horizontally">Rolar miniaturas horizontalmente</string>
<string name="hide_system_ui_at_fullscreen">Esconder interface do sistema quando em tela cheia</string> <string name="hide_system_ui_at_fullscreen">Esconder interface do sistema quando em tela cheia</string>
<string name="delete_empty_folders">Apagar pastas vazias após excluir o seu conteúdo</string> <string name="delete_empty_folders">Apagar pastas vazias após excluir o seu conteúdo</string>
<string name="allow_photo_gestures">Permitir controle do brilho com gestos na vertical</string> <string name="allow_photo_gestures">Habilitar controle do brilho com gestos na vertical</string>
<string name="allow_video_gestures">Permitir controle do volume e brilho com gestos na vertical</string> <string name="allow_video_gestures">Habilitar controle de volume e brilho com gestos na vertical</string>
<string name="show_media_count">Mostrar quantidade de arquivos em cada pasta na tela inicial</string> <string name="show_media_count">Exibir quantidade de arquivos em cada pasta na tela inicial</string>
<string name="show_extended_details">Exibir detalhes adicionais quando em tela cheia</string> <string name="show_extended_details">Exibir detalhes adicionais quando em tela cheia</string>
<string name="manage_extended_details">Gerenciar detalhes adicionais</string> <string name="manage_extended_details">Gerenciar detalhes adicionais</string>
<string name="one_finger_zoom">Permitir zoom com um dedo quando em exibição de tela cheia</string> <string name="one_finger_zoom">Habilitar zoom com um dedo em exibição de tela cheia</string>
<string name="allow_instant_change">Tocar na lateral da tela navega para a próxima imagem ou vídeo</string> <string name="allow_instant_change">Habilitar a troca de mídia tocando nas laterais da tela</string>
<string name="allow_deep_zooming_images">Permitir zoom aprofundado para imagens</string> <string name="allow_deep_zooming_images">Habilitar zoom aprofundado para imagens</string>
<string name="hide_extended_details">Ocultar detalhes adicionais quando a barra de status estiver oculta</string> <string name="hide_extended_details">Ocultar detalhes adicionais quando a barra de status estiver escondida</string>
<string name="show_at_bottom">Mostrar alguns botões de ação na parte inferior da tela</string> <string name="show_at_bottom">Exibir alguns botões de ação na parte inferior da tela</string>
<string name="show_recycle_bin">Mostrar a Lixeira na tela inicial</string> <string name="show_recycle_bin">Exibir a Lixeira na tela inicial</string>
<string name="deep_zoomable_images">Zoom aprofundado para imagens</string> <string name="deep_zoomable_images">Zoom aprofundado para imagens</string>
<string name="show_highest_quality">Mostrar imagens na maior qualidade possível</string> <string name="show_highest_quality">Exibir imagens na maior qualidade possível</string>
<string name="show_recycle_bin_last">Mostrar a Lixeira como o último item na tela inicial</string> <string name="show_recycle_bin_last">Exibir a Lixeira como o último item na tela inicial</string>
<string name="allow_down_gesture">Gesto para baixo sai da exibição em tela cheia</string> <string name="allow_down_gesture">Habilitar fechar a exibição em tela cheia com um gesto para baixo</string>
<string name="allow_one_to_one_zoom">Dois toques duplos fazem zoom 1:1</string> <string name="allow_one_to_one_zoom">Habilitar zoom 1:1 com dois toques duplos</string>
<string name="open_videos_on_separate_screen">Sempre abrir vídeos em uma tela separada com novos gestos horizontais</string> <string name="open_videos_on_separate_screen">Sempre abrir vídeos em uma tela separada com novos gestos horizontais</string>
<string name="show_notch">Mostrar o notch, se existente</string> <string name="show_notch">Exibir o notch, se existente</string>
<string name="allow_rotating_gestures">Permitir rotação de imagens com gestos</string> <string name="allow_rotating_gestures">Habilitar rotação de imagens com gestos</string>
<string name="file_loading_priority">Prioridade de carregamento de arquivos</string> <string name="file_loading_priority">Prioridade de carregamento de arquivos</string>
<string name="speed">Velocidade</string> <string name="speed">Velocidade</string>
<string name="compromise">Meio termo</string> <string name="compromise">Meio termo</string>
<string name="avoid_showing_invalid_files">Evitar a exibição de arquivos inválidos</string> <string name="avoid_showing_invalid_files">Evitar a exibição de arquivos inválidos</string>
<string name="show_image_file_types">Mostrar tipos de arquivo de imagem</string> <string name="show_image_file_types">Exibir tipos de arquivo de imagem</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Miniaturas</string> <string name="thumbnails">Miniaturas</string>
<string name="fullscreen_media">Mídia em tela cheia</string> <string name="fullscreen_media">Mídia em tela cheia</string>
<string name="extended_details">Detalhes adicionais</string> <string name="extended_details">Detalhes adicionais</string>
<string name="bottom_actions">Botões de ação</string> <string name="bottom_actions">Barra inferior</string>
<!-- Bottom actions --> <!-- Bottom actions -->
<string name="manage_bottom_actions">Gerenciar botões de ação</string> <string name="manage_bottom_actions">Gerenciar botões visíveis</string>
<string name="toggle_favorite">Favoritar/Desfavoritar</string> <string name="toggle_favorite">Favoritar/desfavoritar</string>
<string name="toggle_file_visibility">Exibir/Ocultar arquivo</string> <string name="toggle_file_visibility">Exibir/ocultar arquivo</string>
<!-- New editor strings --> <!-- New editor strings -->
<string name="pesdk_transform_button_freeCrop">Personalizadar</string> <string name="pesdk_transform_button_freeCrop">Personalizar</string>
<string name="pesdk_transform_button_resetCrop">Redefinir</string> <string name="pesdk_transform_button_resetCrop">Redefinir</string>
<string name="pesdk_transform_button_squareCrop">Quadrado</string> <string name="pesdk_transform_button_squareCrop">Quadrado</string>
<string name="pesdk_transform_title_name">Modificar</string> <string name="pesdk_transform_title_name">Modificar</string>
@ -284,43 +286,45 @@
<string name="pesdk_common_title_pipettableColor">Cor pipetável</string> <string name="pesdk_common_title_pipettableColor">Cor pipetável</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">O que devo fazer para que a Simple Galeria seja o aplicativo de galeria padrão do meu aparelho?</string> <string name="faq_1_title">Como posso fazer do Simple Galeria a galeria padrão do dispositivo?</string>
<string name="faq_1_text">Primeiro, você deve encontrar o aplicativo padrão atual nas configurações do seu aparelho, e apertar o botão que diz "Limpar Padrões". <string name="faq_1_text">Primeiro, você deve encontrar o aplicativo padrão atual nas configurações do seu dispositivo, procurar um botão que diga algo como "Abrir por padrão", clicar nele e selecionar \"Limpar padrão\"
Na próxima vez que você abrir uma imagem ou vídeo, você deverá ver um seletor do aplicativo, no qual você terá a oportunidade de selecionar a Simple Galeria como o app padrão.</string> Na próxima vez que você abrir uma imagem ou vídeo, você deverá ver um seletor do aplicativo, no qual você terá a oportunidade de selecionar a Simple Galeria como o app padrão.</string>
<string name="faq_2_title">Eu protegi o app com senha, mas me esqueci da senha. O que posso fazer?</string> <string name="faq_2_title">Eu protegi o app com senha, mas a esqueci. O que posso fazer?</string>
<string name="faq_2_text">Você pode resolver isto de duas formas. A primeira é reinstalar o aplicativo. A segunda é ir nas configurações do seu dispositivo e selecionar a opção "Restaurar preferências do app".</string> <string name="faq_2_text">Você pode resolver isto de duas formas. Você pode reinstalar o aplicativo ou ir nas configurações do seu dispositivo e selecionar a opção "Limpar armazenamento". Isto irá redefinir todas as suas configurações, não removerá nenhum arquivo de mídia.</string>
<string name="faq_3_title">Como posso fazer para que uma pasta sempre apareça no topo da lista?</string> <string name="faq_3_title">O que posso fazer para que uma pasta sempre apareça no topo da lista?</string>
<string name="faq_3_text">Faça um toque longo na pasta em questão, e depois toque no ícone de alfinete na parte superior da tela para fixar a pasta ao topo. Se você fixar múltiplas pastas, elas serão ordenadas de acordo como seu critério de ordenação padrão.</string> <string name="faq_3_text">Faça um toque longo na pasta em questão, e depois toque no ícone de alfinete na parte superior da tela, isto irá fixá-la no topo. Você também pode fixar várias pastas; os itens fixados serão classificados pelo método de ordenação padrão.</string>
<string name="faq_4_title">Como faço para avançar rapidamente um vídeo (fast-forward)?</string> <string name="faq_4_title">Como faço para avançar rapidamente um vídeo (fast forward)?</string>
<string name="faq_4_text">Você pode fazer um gesto horizontal como dedo, ou tocar nos números de tempo atual ou tempo total do vídeo, que se encontram próximos à barra de posicionamento.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Qual é a diferença entre ocultar e ignorar uma pasta?</string> <string name="faq_5_title">Qual é a diferença entre ocultar e ignorar uma pasta?</string>
<string name="faq_5_text">O opção de ignorar deixa de exibir a pasta apenas na Simple Galeria, enquanto a opção de ocultar afeta todo o sistema, e também irá deixar de exibir a pasta em outros apps de galeria. A função de ocultar cria um arquivo vazio chamado \".nomedia\" na raiz da pasta em questão. Caso você queira fazer a pasta voltar a ser exibida, você pode excluir o arquivo \".nomedia\" usando o gerenciador de arquivos.</string> <string name="faq_5_text">Ignorar deixa de exibir a pasta apenas no Simple Galeria, enquanto Ocultar afeta todo o sistema e pode ocultar pastas de outras galerias também. A função ocultar funciona adicionando um arquivo vazio chamado \".nomedia\" na pasta em questão, arquivo este você também pode excluir com um gerenciador de arquivos, se quiser.</string>
<string name="faq_6_title">Porque pastas com capas de CD de música ou figurinhas aparecem na lista?</string> <string name="faq_6_title">Porque pastas com capas de CD de música ou figurinhas aparecem na lista?</string>
<string name="faq_6_text">Você pode pedir para a Simple Galeria ignorar estas pastas, adicionando a pasta raiz onde você guarda as suas músicas à lista de pastas ignoradas. Uma maneira de fazer isso é fazer um toque longo em uma destas pastas, e selecionar a opção Ignorar e, em seguida, seleciona a pasta pai.</string> <string name="faq_6_text">Pode acontecer de que algumas pastas incomuns apareçam. Você pode utlizar a opção Ignorar nestas pastas, adicionando-as a lista de pastas ignoradas. Uma maneira de fazer isso é realizar um toque longo em uma destas pastas, selecionar a opção Ignorar e, em seguida, selecionar a pasta pai.</string>
<string name="faq_7_title">Uma das minhas pastas não aparece, ou nem todos os seus itens são exibidos. O que posso fazer?</string> <string name="faq_7_title">Uma das minhas pastas não aparece, ou nem todos os seus itens são exibidos. O que posso fazer?</string>
<string name="faq_7_text">Isso pode ocorrer por diversos motivos, mas resolver o problema é fácil. Entre em Configurações --> Gerenciar pastas incluídas, toque no botão \"+\", e selecione a pasta em questão.</string> <string name="faq_7_text">Isso pode ocorrer por diversos motivos, mas resolver o problema é fácil. Entre em Configurações --> Gerenciar pastas incluídas, toque no botão \"+\", e selecione a pasta em questão.</string>
<string name="faq_8_title">Como posso fazer para exibir apenas certas pastas?</string> <string name="faq_8_title">Como posso fazer para exibir apenas certas pastas?</string>
<string name="faq_8_text">Adicionar uma pasta à lista de Pastas Incluídas não remove outras pastas da exibição. O que você pode fazer é ir em Configurações -> Gerenciar pastas ignoradas, excluir a pasta raiz \"/\", e finalmente incluir somente as pastas desejadas através de Configurações -> Gerenciar pastas incluídas.</string> <string name="faq_8_text">Adicionar uma pasta à lista de Pastas Incluídas não remove outras pastas da exibição. O que você pode fazer é ir em Configurações -> Gerenciar pastas ignoradas, excluir a pasta raiz \"/\", e finalmente incluir somente as pastas desejadas através de Configurações -> Gerenciar pastas incluídas.
Isso tornará apenas as pastas selecionadas visíveis, já que ignorar e incluir são funçoes recursivas e, se uma pasta for ignorada e incluída ao mesmo tempo, ela será exibida.</string>
<string name="faq_10_title">Posso recortar imagens usando este app?</string> <string name="faq_10_title">Posso recortar imagens usando este app?</string>
<string name="faq_10_text">Sim, você pode recortar imagens no editor, arrastando os cantos da imagem. Você pode entrar no editor fazendo um toque longo na imagem e selecionando Editar, ou selecionando Editar a partir da visualização de tela cheia.</string> <string name="faq_10_text">Sim, você pode recortar imagens no editor, arrastando os cantos da imagem. Você pode entrar no editor fazendo um toque longo na imagem e selecionando Editar, ou selecionando Editar a partir da visualização de tela cheia.</string>
<string name="faq_11_title">É possível exibir os meus arquivos de mídia em subgrupos ao invés de em uma única grande lista?</string> <string name="faq_11_title">É possível exibir os meus arquivos de mídia em subgrupos ao invés de em uma única grande lista?</string>
<string name="faq_11_text">Você pode usar a opção \"Agrupar por\" para agrupar os seus arquivos de mídia por data, formato ou outros critérios. Se a opção \"Mostrar conteúdo de todas as pastas\" estiver ativada, você também poderá agrupar por subpasta.</string> <string name="faq_11_text">Você pode usar a opção \"Agrupar por\" para agrupar os seus arquivos de mídia por data, formato ou outros critérios. Se a opção \"Exibir conteúdo de todas as pastas\" estiver ativada, você também poderá agrupar por subpasta.</string>
<string name="faq_12_title">A ordenação por Data da Foto não funciona corretamente. O que posso fazer?</string> <string name="faq_12_title">A ordenação por Data da Foto não funciona corretamente. O que posso fazer?</string>
<string name="faq_12_text">Isto pode ter ocorrer caso as suas fotos tenham sido copiadas de outro local. Para resolver o problema, você pode selecionar a função \"Corrigir data da foto\" no menu deste aplicativo.</string> <string name="faq_12_text">Isto pode ter ocorrer caso as suas fotos tenham sido copiadas de outro local. Para resolver o problema, você pode selecionar a função \"Corrigir data da foto\" no menu deste aplicativo.</string>
<string name="faq_13_title">Algumas imagens exibem artefatos de exibição, como bandas de cor. Como posso melhorar a qualidade da exibição?</string> <string name="faq_13_title">Algumas imagens exibem artefatos de exibição, como bandas de cor. Como posso melhorar a qualidade da exibição?</string>
<string name="faq_13_text">O nosso método atual para a exibição de imagens funciona bem na grande maioria dos casos, mas caso você queira uma qualidade ainda melhor, ative a opção \"Mostrar imagens na maior qualidade possível\" na seção \"Zoom aprofundado para imagens\" das configurações deste aplicativo.</string> <string name="faq_13_text">O nosso método atual para a exibição de imagens funciona bem na grande maioria dos casos, mas caso você queira uma qualidade ainda melhor, ative a opção \"Exibir imagens na maior qualidade possível\" na seção \"Zoom aprofundado para imagens\" das configurações deste aplicativo.</string>
<string name="faq_14_title">Eu ocultei um arquivo/pasta. Como posso desfazer isso?</string> <string name="faq_14_title">Eu ocultei um arquivo/pasta. Como posso desfazer isso?</string>
<string name="faq_14_text">Você pode pressionar no item do menu \"Mostrar temporariamente itens ocultos\", localizado na tela principal. Você também pode alterar para \"Mostrar itens ocultos\" nas configurações do aplicativo e ver os itens escondidos. Se você quiser reexibir, basta pressionar e selecionar \"Mostrar\". As pastas estão ocultas, adicionando um arquivo oculto \".nomedia\" dentro delas e você pode excluir o arquivo com qualquer gerenciador de arquivos também.</string> <string name="faq_14_text">Você pode pressionar o item de menu \"Exibir ocultos temporariamente\" na tela principal, ou ativar \"Exibir itens ocultos\" nas configurações do aplicativo para ver o item oculto. Se você quiser reexibir-lo, basta pressionar e selecionar \"Exibir\". As pastas são ocultas adicionando um arquivo oculto \".nomedia\" dentro delas, arquivo este que você também pode excluir com um gerenciador de arquivos, se quiser.</string>
<string name="faq_15_title">Porque este app gasta tanto espaço?</string> <string name="faq_15_title">Porque este app ocupa tanto espaço?</string>
<string name="faq_15_text">O cache deste app, que garante que as imagens sejam carregadas mais rapidamente, pode gastar até 250 MB. Se o app estiver gastando mais espaço que isso, pode ser por que você tem muitos arquivos na sua Lixeira. Arquivos na Lixeira são removidos permanentemente após 30 dias, mas se sua Lixeira estiver usando muito espaço apesar disso você pode esvaziá-la manualmente. Para fazer isso, você pode abrir a Lixeira e excluir os arquivos dentro dela, ou você pode fazer o mesmo na tela de configurações deste app.</string> <string name="faq_15_text">O cache deste app, que garante que as imagens sejam carregadas mais rapidamente, pode ocupar até 250MB. Se o app estiver ocupando mais espaço que isso, pode ser por que você tem muitos arquivos na sua Lixeira. Arquivos na Lixeira são removidos permanentemente após 30 dias, mas se mesmo assim sua Lixeira estiver ocupando muito espaço, você pode esvaziá-la manualmente. Para fazer isso, você pode abrir a Lixeira e excluir os arquivos dentro dela, ou você pode fazer o mesmo na tela de Configurações deste app.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it --> <!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Galeria Pro - Gerenciador de Imagens</string> <string name="app_title">Simple Galeria Pro - Gerenciador de Imagens</string>
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Browse your memories without any interruptions with this photo and video gallery</string> <string name="app_short_description">Navegue por suas memórias sem distrações com esta galeria de fotos e vídeos</string>
<string name="app_long_description"> <string name="app_long_description">
A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais. A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais.
Este app não inclui anúncios ou permissões desnecessárias e também não acessa a internet. Sua privacidade está protegida. Este app não inclui anúncios ou permissões desnecessárias e também não acessa a internet. Sua privacidade está protegida.
------------------------------------------------- -------------------------------------------------
@ -364,6 +368,9 @@
<b>Dê uma olhada nos nossos outros aplicativos Simple:</b> <b>Dê uma olhada nos nossos outros aplicativos Simple:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Site dedicado do Simple Galeria Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools
@ -372,7 +379,7 @@
</string> </string>
<!-- <!--
Não encontrou todas as cadeias a traduzir? Existem mais algumas em: Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
--> -->
</resources> </resources>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Corrigir data de obtenção</string> <string name="fix_date_taken">Corrigir data de obtenção</string>
<string name="fixing">A corrigir…</string> <string name="fixing">A corrigir…</string>
<string name="dates_fixed_successfully">Dados corrigidos com sucesso</string> <string name="dates_fixed_successfully">Dados corrigidos com sucesso</string>
<string name="no_date_takens_found">Não foram encontrados dados para a data de obtenção da fotografia</string>
<string name="share_resized">Partilhar foto redimensionada</string> <string name="share_resized">Partilhar foto redimensionada</string>
<string name="upgraded_from_free">Olá,\n\nparece que você utilizou a opção de atualização existente na versão antiga. Agora já pode desinstalar essa versão antiga.\n\nApenas perderá os itens existentes na reciclagem e os favoritos não assinalados mas também terá que repor as predefinições da aplicação.\n\nObrigado!</string> <string name="upgraded_from_free">Olá,\n\nparece que você utilizou a opção de atualização existente na versão antiga. Agora já pode desinstalar essa versão antiga.\n\nApenas perderá os itens existentes na reciclagem e os favoritos não assinalados mas também terá que repor as predefinições da aplicação.\n\nObrigado!</string>
<string name="switch_to_file_search">Trocar para pesquisa de ficheiros em todas as pastas visíveis</string> <string name="switch_to_file_search">Trocar para pesquisa de ficheiros em todas as pastas visíveis</string>
@ -82,7 +83,8 @@
<string name="path">Caminho</string> <string name="path">Caminho</string>
<string name="invalid_image_path">Caminho inválido</string> <string name="invalid_image_path">Caminho inválido</string>
<string name="image_editing_failed">Falha na edição da imagem</string> <string name="image_editing_failed">Falha na edição da imagem</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="image_editing_cancelled">Edição de imagem cancelada</string>
<string name="file_edited_successfully">Imagem editada com sucesso</string>
<string name="edit_image_with">Editar imagem com:</string> <string name="edit_image_with">Editar imagem com:</string>
<string name="no_editor_found">Editor não encontrado</string> <string name="no_editor_found">Editor não encontrado</string>
<string name="unknown_file_location">Localização desconhecida</string> <string name="unknown_file_location">Localização desconhecida</string>
@ -240,48 +242,48 @@
<string name="pesdk_text_button_color">Cor</string> <string name="pesdk_text_button_color">Cor</string>
<string name="pesdk_text_button_backgroundColor">Cor de fundo</string> <string name="pesdk_text_button_backgroundColor">Cor de fundo</string>
<string name="pesdk_text_button_alignment">Alinhamento</string> <string name="pesdk_text_button_alignment">Alinhamento</string>
<string name="pesdk_text_button_bringToFront">To Front</string> <string name="pesdk_text_button_bringToFront">Para a frente</string>
<string name="pesdk_text_button_delete">Apagar</string> <string name="pesdk_text_button_delete">Apagar</string>
<string name="pesdk_text_text_editTextPlaceholder">O seu texto</string> <string name="pesdk_text_text_editTextPlaceholder">O seu texto</string>
<string name="pesdk_brush_title_name">Pincel</string> <string name="pesdk_brush_title_name">Pincel</string>
<string name="pesdk_brush_button_color">Cor</string> <string name="pesdk_brush_button_color">Cor</string>
<string name="pesdk_brush_button_size">Tamanho</string> <string name="pesdk_brush_button_size">Tamanho</string>
<string name="pesdk_brush_button_hardness">Espessura</string> <string name="pesdk_brush_button_hardness">Espessura</string>
<string name="pesdk_brush_button_bringToFront">para a frente</string> <string name="pesdk_brush_button_bringToFront">Para a frente</string>
<string name="pesdk_brush_button_delete">Apagar</string> <string name="pesdk_brush_button_delete">Apagar</string>
<string name="pesdk_brush_title_brushColor">Cor do pincel</string> <string name="pesdk_brush_title_brushColor">Cor do pincel</string>
<string name="pesdk_editor_title_name">Editor</string> <string name="pesdk_editor_title_name">Editor</string>
<string name="pesdk_editor_title_closeEditorAlert">Close Editor?</string> <string name="pesdk_editor_title_closeEditorAlert">Fechar editor?</string>
<string name="pesdk_editor_text_closeEditorAlert">Do you really want to discard the image?</string> <string name="pesdk_editor_text_closeEditorAlert">Tem a certeza de que deseja descartar as alterações?</string>
<string name="pesdk_editor_button_closeEditorAlertConfirmation">Yes</string> <string name="pesdk_editor_button_closeEditorAlertConfirmation">Sim</string>
<string name="pesdk_editor_button_closeEditorAlertCancelation">No</string> <string name="pesdk_editor_button_closeEditorAlertCancelation">Não</string>
<string name="pesdk_editor_cancel">Cancel</string> <string name="pesdk_editor_cancel">Cancelar</string>
<string name="pesdk_editor_accept">Accept</string> <string name="pesdk_editor_accept">Aceitar</string>
<string name="pesdk_editor_save">Save</string> <string name="pesdk_editor_save">Guardar</string>
<string name="pesdk_editor_text_exportProgressUnknown">Exporting image</string> <string name="pesdk_editor_text_exportProgressUnknown">A exportar imagem</string>
<string name="pesdk_editor_text_exportProgress" formatted="false">Exporting image %s.</string> <string name="pesdk_editor_text_exportProgress" formatted="false">A exportar imagem %s.</string>
<string name="pesdk_common_button_flipH">Flip H</string> <string name="pesdk_common_button_flipH">Inversão horizontal</string>
<string name="pesdk_common_button_flipV">Flip V</string> <string name="pesdk_common_button_flipV">Inversão vertical</string>
<string name="pesdk_common_button_undo">Undo</string> <string name="pesdk_common_button_undo">Desfazer</string>
<string name="pesdk_common_button_redo">Redo</string> <string name="pesdk_common_button_redo">Refazer</string>
<string name="pesdk_common_title_colorPicker">Color Picker</string> <string name="pesdk_common_title_colorPicker">Seletor de cores</string>
<string name="pesdk_common_title_transparentColor">Transparent</string> <string name="pesdk_common_title_transparentColor">Transparente</string>
<string name="pesdk_common_title_whiteColor">White</string> <string name="pesdk_common_title_whiteColor">Branco</string>
<string name="pesdk_common_title_grayColor">Gray</string> <string name="pesdk_common_title_grayColor">Cinzento</string>
<string name="pesdk_common_title_blackColor">Black</string> <string name="pesdk_common_title_blackColor">Preto</string>
<string name="pesdk_common_title_lightBlueColor">Light blue</string> <string name="pesdk_common_title_lightBlueColor">Azul claro</string>
<string name="pesdk_common_title_blueColor">Blue</string> <string name="pesdk_common_title_blueColor">Azul</string>
<string name="pesdk_common_title_purpleColor">Purple</string> <string name="pesdk_common_title_purpleColor">Púrpura</string>
<string name="pesdk_common_title_orchidColor">Orchid</string> <string name="pesdk_common_title_orchidColor">Orquídea</string>
<string name="pesdk_common_title_pinkColor">Pink</string> <string name="pesdk_common_title_pinkColor">Cor de rosa</string>
<string name="pesdk_common_title_redColor">Red</string> <string name="pesdk_common_title_redColor">Vermelho</string>
<string name="pesdk_common_title_orangeColor">Orange</string> <string name="pesdk_common_title_orangeColor">Cor de laranja</string>
<string name="pesdk_common_title_goldColor">Gold</string> <string name="pesdk_common_title_goldColor">Dourado</string>
<string name="pesdk_common_title_yellowColor">Yellow</string> <string name="pesdk_common_title_yellowColor">Amarelo</string>
<string name="pesdk_common_title_oliveColor">Olive</string> <string name="pesdk_common_title_oliveColor">Oliva</string>
<string name="pesdk_common_title_greenColor">Green</string> <string name="pesdk_common_title_greenColor">Verde</string>
<string name="pesdk_common_title_aquamarinColor">Aquamarin</string> <string name="pesdk_common_title_aquamarinColor">Aquamarino</string>
<string name="pesdk_common_title_pipettableColor">Pipettable color</string> <string name="pesdk_common_title_pipettableColor">Pipeta de cores</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string> <string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -319,7 +321,7 @@
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it --> <!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro - Editor e gestor de fotos</string> <string name="app_title">Simple Gallery Pro - Editor e gestor de fotos</string>
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Browse your memories without any interruptions with this photo and video gallery</string> <string name="app_short_description">Explore as suas memórias sem interrupções com esta aplicação</string>
<string name="app_long_description"> <string name="app_long_description">
Simple Gallery Pro é uma aplicação local para gerir fotos e vídeos. Pode organizar e editar as suas fotos, recuperar ficheiros através da reciclagem, proteger e ocultar ficheiros e ver imagens e vídeos disponíveis em vários formatos tais como RAW, SVG e muito mais. Simple Gallery Pro é uma aplicação local para gerir fotos e vídeos. Pode organizar e editar as suas fotos, recuperar ficheiros através da reciclagem, proteger e ocultar ficheiros e ver imagens e vídeos disponíveis em vários formatos tais como RAW, SVG e muito mais.
@ -367,6 +369,9 @@
<b>Consulte todas as aplicações Simple Tools aqui:</b> <b>Consulte todas as aplicações Simple Tools aqui:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Исправить дату</string> <string name="fix_date_taken">Исправить дату</string>
<string name="fixing">Исправление…</string> <string name="fixing">Исправление…</string>
<string name="dates_fixed_successfully">Даты исправлены</string> <string name="dates_fixed_successfully">Даты исправлены</string>
<string name="no_date_takens_found">Дата съёмки не найдена</string>
<string name="share_resized">Поделиться изменённой версией</string> <string name="share_resized">Поделиться изменённой версией</string>
<string name="upgraded_from_free">Привет,\n\nпохоже, что вы обновились со старого бесплатного приложения. Теперь вы можете удалить старую версию, которая содержит кнопку \"Обновить до Pro\" в верхней части настроек приложения.\n\nБудет очищена корзина, сняты отметки избранного, а также вам придётся сбросить настройки приложения.\n\nСпасибо!</string> <string name="upgraded_from_free">Привет,\n\nпохоже, что вы обновились со старого бесплатного приложения. Теперь вы можете удалить старую версию, которая содержит кнопку \"Обновить до Pro\" в верхней части настроек приложения.\n\nБудет очищена корзина, сняты отметки избранного, а также вам придётся сбросить настройки приложения.\n\nСпасибо!</string>
<string name="switch_to_file_search">Переключиться на поиск файлов по всем видимым папкам</string> <string name="switch_to_file_search">Переключиться на поиск файлов по всем видимым папкам</string>
@ -82,6 +83,7 @@
<string name="path">Путь</string> <string name="path">Путь</string>
<string name="invalid_image_path">Недопустимый путь изображения</string> <string name="invalid_image_path">Недопустимый путь изображения</string>
<string name="image_editing_failed">Редактирование изображения не выполнено</string> <string name="image_editing_failed">Редактирование изображения не выполнено</string>
<string name="image_editing_cancelled">Редактирование изображения отменено</string>
<string name="file_edited_successfully">Файл успешно отредактирован</string> <string name="file_edited_successfully">Файл успешно отредактирован</string>
<string name="edit_image_with">Редактировать изображение в:</string> <string name="edit_image_with">Редактировать изображение в:</string>
<string name="no_editor_found">Не найдено ни одного редактора изображений</string> <string name="no_editor_found">Не найдено ни одного редактора изображений</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Как я могу сделать альбом всегда отображающимся сверху?</string> <string name="faq_3_title">Как я могу сделать альбом всегда отображающимся сверху?</string>
<string name="faq_3_text">Вы можете длительным нажатием на желаемый альбом открыть меню действий в нём выбрать пункт \"Закрепить\". Можно закрепить несколько альбомов (папок); прикреплённые элементы будут отсортированы по методу сортировки по умолчанию.</string> <string name="faq_3_text">Вы можете длительным нажатием на желаемый альбом открыть меню действий в нём выбрать пункт \"Закрепить\". Можно закрепить несколько альбомов (папок); прикреплённые элементы будут отсортированы по методу сортировки по умолчанию.</string>
<string name="faq_4_title">Как ускорить перемотку видео?</string> <string name="faq_4_title">Как ускорить перемотку видео?</string>
<string name="faq_4_text">Вы можете либо перемещать пальцем по горизонтали над видеопроигрывателем, либо нажать на цифры текущего положения или максимальной длительности видео рядом с панелью поиска, что приведёт к перемещению позиции воспроизведения назад или вперёд.</string> <string name="faq_4_text">Можно дважды нажать на кромку экрана или нажать на цифры текущего положения или максимальной длительности видео рядом с панелью поиска. Если в настройках приложения включено воспроизведение видео на отдельном экране, то также можно использовать горизонтальные жесты.</string>
<string name="faq_5_title">В чём разница между скрытием и исключением папки?</string> <string name="faq_5_title">В чём разница между скрытием и исключением папки?</string>
<string name="faq_5_text">Исключение запрещает отображение папки только в Simple Gallery, в то время как скрытие работает системно и скрывает папку из других галерей. Это достигается путём создания пустого файла \".nomedia\" в данной папке, который впоследствии можно удалить любым файловым менеджером.</string> <string name="faq_5_text">Исключение запрещает отображение папки только в Simple Gallery, в то время как скрытие работает системно и скрывает папку из других галерей. Это достигается путём создания пустого файла \".nomedia\" в данной папке, который впоследствии можно удалить любым файловым менеджером.</string>
<string name="faq_6_title">Почему отображаются папки с музыкальными обложками?</string> <string name="faq_6_title">Почему отображаются папки с музыкальными обложками?</string>
@ -367,6 +369,9 @@
<b>Ознакомьтесь с полным набором инструментов серии Simple здесь:</b> <b>Ознакомьтесь с полным набором инструментов серии Simple здесь:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Сайт приложения Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -30,7 +30,8 @@
<string name="use_default_orientation">Použiť predvolenú orientáciu</string> <string name="use_default_orientation">Použiť predvolenú orientáciu</string>
<string name="fix_date_taken">Opraviť dátum vytvorenia</string> <string name="fix_date_taken">Opraviť dátum vytvorenia</string>
<string name="fixing">Opravuje sa…</string> <string name="fixing">Opravuje sa…</string>
<string name="dates_fixed_successfully">Dátumy boli úspešne opravené</string> <string name="dates_fixed_successfully">Dátumy vytvorenia boli úspešne opravené</string>
<string name="no_date_takens_found">Nenašli sa žiadne dátumy vytvorenia</string>
<string name="share_resized">Zdieľať verziu so zmenenou veľkosťou</string> <string name="share_resized">Zdieľať verziu so zmenenou veľkosťou</string>
<string name="upgraded_from_free">Zdravím,\n\nvyzerá to tak, že ste zo starej bezplatnej apky prešlie na novú, platenú. Starú apku, ktorá má na vrchu nastavení tlačidlo \'Stiahnuť Pro verziu\', môžete už odinštalovať.\n\nStratíte tým iba súbory v odpadkovom koši, obľúbené položky budú odznačené a tiež si budete musieť opäť nastaviť položky v nastaveniach aplikácie.\n\nVďaka!</string> <string name="upgraded_from_free">Zdravím,\n\nvyzerá to tak, že ste zo starej bezplatnej apky prešlie na novú, platenú. Starú apku, ktorá má na vrchu nastavení tlačidlo \'Stiahnuť Pro verziu\', môžete už odinštalovať.\n\nStratíte tým iba súbory v odpadkovom koši, obľúbené položky budú odznačené a tiež si budete musieť opäť nastaviť položky v nastaveniach aplikácie.\n\nVďaka!</string>
<string name="switch_to_file_search">Prepnúť na vyhľadávanie súborov vo všetkých viditeľných priečinkoch</string> <string name="switch_to_file_search">Prepnúť na vyhľadávanie súborov vo všetkých viditeľných priečinkoch</string>
@ -82,6 +83,7 @@
<string name="path">Cesta</string> <string name="path">Cesta</string>
<string name="invalid_image_path">Neplatná cesta</string> <string name="invalid_image_path">Neplatná cesta</string>
<string name="image_editing_failed">Úprava súboru zlyhala</string> <string name="image_editing_failed">Úprava súboru zlyhala</string>
<string name="image_editing_cancelled">Úprava súboru bola zrušená</string>
<string name="file_edited_successfully">Súbor bol úspešne upravený</string> <string name="file_edited_successfully">Súbor bol úspešne upravený</string>
<string name="edit_image_with">Upraviť súbor s:</string> <string name="edit_image_with">Upraviť súbor s:</string>
<string name="no_editor_found">Nebol nájdený žiadny editor</string> <string name="no_editor_found">Nebol nájdený žiadny editor</string>
@ -182,7 +184,7 @@
<string name="show_recycle_bin_last">Zobraziť odpadkový kôš ako poslednú položku na hlavnej obrazovke</string> <string name="show_recycle_bin_last">Zobraziť odpadkový kôš ako poslednú položku na hlavnej obrazovke</string>
<string name="allow_down_gesture">Povoliť zatváranie celoobrazovkového režimu potiahnutím prsta dole</string> <string name="allow_down_gesture">Povoliť zatváranie celoobrazovkového režimu potiahnutím prsta dole</string>
<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 novej 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> <string name="allow_rotating_gestures">Povoliť otáčanie obrázkov gestami</string>
<string name="file_loading_priority">Priorita pri načítavaní súborov</string> <string name="file_loading_priority">Priorita pri načítavaní súborov</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">Viete to vyriešǐť 2 spôsobmi. Môžete apku buď preinštalovať, alebo ju nájsť v nastaveniach zariadenia a zvoliť \"Vymazať údaje\". Vymaže to iba nastavenia, nie súbory.</string> <string name="faq_2_text">Viete to vyriešǐť 2 spôsobmi. Môžete apku buď preinštalovať, alebo ju nájsť v nastaveniach zariadenia a zvoliť \"Vymazať údaje\". Vymaže to iba nastavenia, nie súbory.</string>
<string name="faq_3_title">Ako môžem dosiahnuť, aby bol daný album stále zobrazený prvý?</string> <string name="faq_3_title">Ako môžem dosiahnuť, aby bol daný album stále zobrazený prvý?</string>
<string name="faq_3_text">Môžete označiť daný priečinok dlhým podržaním a zvoliť tlačidlo s obrázkom pripinačky, to ho pripne na vrch. Môžete pripnúť aj viacero priečinkov, budú zoradené podľa zvoleného radenia.</string> <string name="faq_3_text">Môžete označiť daný priečinok dlhým podržaním a zvoliť tlačidlo s obrázkom pripinačky, to ho pripne na vrch. Môžete pripnúť aj viacero priečinkov, budú zoradené podľa zvoleného radenia.</string>
<string name="faq_4_title">Ako viem posunúť video vpred?</string> <string name="faq_4_title">Ako viem posunúť video rýchlo vpred?</string>
<string name="faq_4_text">Môžete to dosiahnuť vodorovným potiahnutím prsta cez video prehrávač, alebo kliknúť na texty súčasnej, alebo maximálnej dĺžky videa, ktoré sú vedľa indikátora súčasného progresu. To posunie video buď vpred, alebo vzad.</string> <string name="faq_4_text">Viete to dosiahnuť dvojitým kliknutím na boky obrazovky, alebo kliknutím na texty súčasnej, alebo maximálnej dĺžky videa, ktoré sú vedľa indikátora súčasného progresu. Ak v nastaveniach apky zapnete možnosť spúšťania videí na novej obrazovke, budete môcť použiť aj vodorovné gestá.</string>
<string name="faq_5_title">Aký je rozdiel medzi Skrytím a Vylúčením priečinka?</string> <string name="faq_5_title">Aký je rozdiel medzi Skrytím a Vylúčením priečinka?</string>
<string name="faq_5_text">Kým vylúčenie predíde zobrazeniu priečinka iba vrámci Jednoduchej Galérie, skrytie ho ukryje vrámci celého systému, teda to ovplyvní aj ostatné galérie. Skrytie funguje pomocou vytvorenia prázdneho \".nomedia\" súboru v danom priečinku, ktorý viete vymazať aj nejakým správcom súborov.</string> <string name="faq_5_text">Kým vylúčenie predíde zobrazeniu priečinka iba vrámci Jednoduchej Galérie, skrytie ho ukryje vrámci celého systému, teda to ovplyvní aj ostatné galérie. Skrytie funguje pomocou vytvorenia prázdneho \".nomedia\" súboru v danom priečinku, ktorý viete vymazať aj nejakým správcom súborov.</string>
<string name="faq_6_title">Prečo sa mi zobrazujú priečinky s obalmi hudobných albumov, alebo nálepkami?</string> <string name="faq_6_title">Prečo sa mi zobrazujú priečinky s obalmi hudobných albumov, alebo nálepkami?</string>
@ -367,6 +369,9 @@
<b>Pozrite si celú sadu aplikácií na:</b> <b>Pozrite si celú sadu aplikácií na:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Vlastná stránka Jednoduchej Galérie Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Popravi datum posnetka</string> <string name="fix_date_taken">Popravi datum posnetka</string>
<string name="fixing">Popravljam…</string> <string name="fixing">Popravljam…</string>
<string name="dates_fixed_successfully">Datumi uspešno popravljeni</string> <string name="dates_fixed_successfully">Datumi uspešno popravljeni</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Deli spremenjeno verzijo</string> <string name="share_resized">Deli spremenjeno verzijo</string>
<string name="upgraded_from_free">Živjo,\n\nkot kaže, ste nadgradili staro brezplačno aplikacijo. Sedaj lahko odstranite staro verzijo, ki ima gumb \'Nadgradi na Pro verzijo\' na vrhu nastavitev.\n\nIzbrisani bodo le elementi v košu, priljubljeni elementi bodo odznačeni, poleg tega pa bo potrebno še ponastaviti nastavitve aplikacije.\n\nHvala!</string> <string name="upgraded_from_free">Živjo,\n\nkot kaže, ste nadgradili staro brezplačno aplikacijo. Sedaj lahko odstranite staro verzijo, ki ima gumb \'Nadgradi na Pro verzijo\' na vrhu nastavitev.\n\nIzbrisani bodo le elementi v košu, priljubljeni elementi bodo odznačeni, poleg tega pa bo potrebno še ponastaviti nastavitve aplikacije.\n\nHvala!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Pot</string> <string name="path">Pot</string>
<string name="invalid_image_path">Napačna pot</string> <string name="invalid_image_path">Napačna pot</string>
<string name="image_editing_failed">Urejanje slike ni uspelo</string> <string name="image_editing_failed">Urejanje slike ni uspelo</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Uredi sliko z:</string> <string name="edit_image_with">Uredi sliko z:</string>
<string name="no_editor_found">Ne najdem urejevalnika slik</string> <string name="no_editor_found">Ne najdem urejevalnika slik</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Kako nastaviti, da se določen album vedno prikaže na vrhu?</string> <string name="faq_3_title">Kako nastaviti, da se določen album vedno prikaže na vrhu?</string>
<string name="faq_3_text">Z dolgim pritiskom na album se vam prikaže meni, v katerem je na voljo bucika, s katero pripnete album na željeno mesto. Na ta način lahko pripnete več albumov, ki bodo razvrščeni v skladu s privzetim načinom razvrščanja.</string> <string name="faq_3_text">Z dolgim pritiskom na album se vam prikaže meni, v katerem je na voljo bucika, s katero pripnete album na željeno mesto. Na ta način lahko pripnete več albumov, ki bodo razvrščeni v skladu s privzetim načinom razvrščanja.</string>
<string name="faq_4_title">Ali lahko hitro predvajam videoposnetke?</string> <string name="faq_4_title">Ali lahko hitro predvajam videoposnetke?</string>
<string name="faq_4_text">To lahko storite tako, da s prstom vodoravno potegnete čez predvajalnik ali kliknete na izpis trenutnega oz. skupnega trajanja, kar bo videoposnetek premaknilo naprej ali nazaj.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Kakšna je razlika med skrivanjem in izključevanjem mape?</string> <string name="faq_5_title">Kakšna je razlika med skrivanjem in izključevanjem mape?</string>
<string name="faq_5_text">Izključevanje mape jo skrije le v Simple galeriji, medtem ko jo skrivanje skrije tudi v ostalih aplikacijah oz. galerijah. Deluje tako, da kreira prazno \".nomedia\" datoteko v izbrani mapi, katero lahko odstranite tudi s katerimkoli urejevalnikom datotek.</string> <string name="faq_5_text">Izključevanje mape jo skrije le v Simple galeriji, medtem ko jo skrivanje skrije tudi v ostalih aplikacijah oz. galerijah. Deluje tako, da kreira prazno \".nomedia\" datoteko v izbrani mapi, katero lahko odstranite tudi s katerimkoli urejevalnikom datotek.</string>
<string name="faq_6_title">Zakaj se v galeriji prikažejo datoteke z naslovnicami glasbenih map ali nalepk?</string> <string name="faq_6_title">Zakaj se v galeriji prikažejo datoteke z naslovnicami glasbenih map ali nalepk?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Поправи вредност за датум креирања</string> <string name="fix_date_taken">Поправи вредност за датум креирања</string>
<string name="fixing">Исправљам…</string> <string name="fixing">Исправљам…</string>
<string name="dates_fixed_successfully">Датуми успешно исправљени</string> <string name="dates_fixed_successfully">Датуми успешно исправљени</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Подели верзију са промењеним димензијама</string> <string name="share_resized">Подели верзију са промењеним димензијама</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Стаза</string> <string name="path">Стаза</string>
<string name="invalid_image_path">Неисправна стаза слике</string> <string name="invalid_image_path">Неисправна стаза слике</string>
<string name="image_editing_failed">Измена слике неуспешна</string> <string name="image_editing_failed">Измена слике неуспешна</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Измени слику са:</string> <string name="edit_image_with">Измени слику са:</string>
<string name="no_editor_found">Није пронађен едитор слика</string> <string name="no_editor_found">Није пронађен едитор слика</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Како да подесим да се неки албум увек појављује на врху?</string> <string name="faq_3_title">Како да подесим да се неки албум увек појављује на врху?</string>
<string name="faq_3_text">Дуго притисните на жељени албум и изаберите Закачи икону у менију за акције, то ће га поставити на врх. Можете да закачите више фасцикли истовремено, с тим што ће бити сортирани према подразумевајућем методу за сортирање.</string> <string name="faq_3_text">Дуго притисните на жељени албум и изаберите Закачи икону у менију за акције, то ће га поставити на врх. Можете да закачите више фасцикли истовремено, с тим што ће бити сортирани према подразумевајућем методу за сортирање.</string>
<string name="faq_4_title">Како да премотавам видео снимке?</string> <string name="faq_4_title">Како да премотавам видео снимке?</string>
<string name="faq_4_text">Можете да вучете прст хоризонтално преко видео плејера, или да кликнете на тренутно или максимално поред траке за премотавање. То ће премотати видео назад или напред.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Која је разлика између скривања и изузимања фасцикле?</string> <string name="faq_5_title">Која је разлика између скривања и изузимања фасцикле?</string>
<string name="faq_5_text">Изузимање спречава приказивање фасцикле само у Једноставној галерији, док се скривање односи на цео систем и скрива фасциклу од свих других галерија. Он функционише тако што прави празан \".nomedia\" фајл у задатој фасцикли, који затим можете да уклоните са било којим фајл менаџером.</string> <string name="faq_5_text">Изузимање спречава приказивање фасцикле само у Једноставној галерији, док се скривање односи на цео систем и скрива фасциклу од свих других галерија. Он функционише тако што прави празан \".nomedia\" фајл у задатој фасцикли, који затим можете да уклоните са било којим фајл менаџером.</string>
<string name="faq_6_title">Зашто се фасцикле са сликама музичких извођача или налепницама приказују?</string> <string name="faq_6_title">Зашто се фасцикле са сликама музичких извођача или налепницама приказују?</string>
@ -367,6 +369,9 @@
<b>Погледајте цео пакет Simple Tools овде:</b> <b>Погледајте цео пакет Simple Tools овде:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Фејсбук:</b> <b>Фејсбук:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +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="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Dela en version med ändrad storlek</string> <string name="share_resized">Dela en version med ändrad storlek</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Växla till filsökning i alla synliga mappar</string> <string name="switch_to_file_search">Växla till filsökning i alla synliga mappar</string>
@ -82,6 +83,7 @@
<string name="path">Sökväg</string> <string name="path">Sökväg</string>
<string name="invalid_image_path">Ogiltig bildsökväg</string> <string name="invalid_image_path">Ogiltig bildsökväg</string>
<string name="image_editing_failed">Bilden kunde inte redigeras</string> <string name="image_editing_failed">Bilden kunde inte redigeras</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Redigera bilden med:</string> <string name="edit_image_with">Redigera bilden med:</string>
<string name="no_editor_found">Ingen bildredigerare hittades</string> <string name="no_editor_found">Ingen bildredigerare hittades</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>
@ -367,6 +369,9 @@
<b>Check out the full suite of Simple Tools here:</b> <b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -5,6 +5,5 @@
<dimen name="sd_card_icon_size">30dp</dimen> <dimen name="sd_card_icon_size">30dp</dimen>
<dimen name="selection_check_size">38dp</dimen> <dimen name="selection_check_size">38dp</dimen>
<dimen name="tmb_shadow_height">70dp</dimen> <dimen name="tmb_shadow_height">70dp</dimen>
<dimen name="instant_change_bar_width">100dp</dimen>
<dimen name="lock_padding">80dp</dimen> <dimen name="lock_padding">80dp</dimen>
</resources> </resources>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Çekilen tarih değerini düzelt</string> <string name="fix_date_taken">Çekilen tarih değerini düzelt</string>
<string name="fixing">Düzeltiliyor…</string> <string name="fixing">Düzeltiliyor…</string>
<string name="dates_fixed_successfully">Tarihler başarıyla düzeltildi</string> <string name="dates_fixed_successfully">Tarihler başarıyla düzeltildi</string>
<string name="no_date_takens_found">Çekilen Tarih bulunamadı</string>
<string name="share_resized">Yeniden boyutlandırılmış sürümü paylaş</string> <string name="share_resized">Yeniden boyutlandırılmış sürümü paylaş</string>
<string name="upgraded_from_free">Merhaba,\n\neski ücretsiz uygulamadan yükseltmiş gibisiniz. Artık uygulama ayarlarının en üst kısmında \'Pro\'ya Yükselt\' düğmesi olan eski sürümü kaldırabilirsiniz.\n\nYalnızca Geri Dönüşüm Kutusu öğelerinin silinmesi, sık kullanılanların işaretlerinin kaldırılması ve uygulama ayarlarınızı sıfırlamanız gerekir.\n\nTeşekkürler!</string> <string name="upgraded_from_free">Merhaba,\n\neski ücretsiz uygulamadan yükseltmiş gibisiniz. Artık uygulama ayarlarının en üst kısmında \'Pro\'ya Yükselt\' düğmesi olan eski sürümü kaldırabilirsiniz.\n\nYalnızca Geri Dönüşüm Kutusu öğelerinin silinmesi, sık kullanılanların işaretlerinin kaldırılması ve uygulama ayarlarınızı sıfırlamanız gerekir.\n\nTeşekkürler!</string>
<string name="switch_to_file_search">Tüm görünür klasörler arasında dosya aramaya geç</string> <string name="switch_to_file_search">Tüm görünür klasörler arasında dosya aramaya geç</string>
@ -82,6 +83,7 @@
<string name="path">Yol</string> <string name="path">Yol</string>
<string name="invalid_image_path">Geçersiz resim yolu</string> <string name="invalid_image_path">Geçersiz resim yolu</string>
<string name="image_editing_failed">Resim düzenleme başarısız</string> <string name="image_editing_failed">Resim düzenleme başarısız</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Dosya başarıyla düzenlendi</string> <string name="file_edited_successfully">Dosya başarıyla düzenlendi</string>
<string name="edit_image_with">Resmi şununla düzenle:</string> <string name="edit_image_with">Resmi şununla düzenle:</string>
<string name="no_editor_found">Resim düzenleyici bulunamadı</string> <string name="no_editor_found">Resim düzenleyici bulunamadı</string>
@ -120,8 +122,8 @@
<string name="loop_slideshow">Slayt gösterisini tekrarla</string> <string name="loop_slideshow">Slayt gösterisini tekrarla</string>
<string name="animation">Animasyon</string> <string name="animation">Animasyon</string>
<string name="no_animation">Hiçbiri</string> <string name="no_animation">Hiçbiri</string>
<string name="fade">Fade</string> <string name="fade">Karart</string>
<string name="slide">Slide</string> <string name="slide">Kaydır</string>
<string name="slideshow_ended">Slayt gösterisi sona erdi</string> <string name="slideshow_ended">Slayt gösterisi sona erdi</string>
<string name="no_media_for_slideshow">Slayt gösterisi için medya bulunamadı</string> <string name="no_media_for_slideshow">Slayt gösterisi için medya bulunamadı</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Bir albümün her zaman en üstte görünmesini nasıl sağlayabilirim?</string> <string name="faq_3_title">Bir albümün her zaman en üstte görünmesini nasıl sağlayabilirim?</string>
<string name="faq_3_text">İstediğiniz albüme uzunca basabilir ve eylem menüsündeki Sabitle simgesini seçebilirsiniz. Birden çok klasörü de sabitleyebilirsiniz, sabitlenmiş öğeler varsayılan sıralama yöntemine göre sıralanır.</string> <string name="faq_3_text">İstediğiniz albüme uzunca basabilir ve eylem menüsündeki Sabitle simgesini seçebilirsiniz. Birden çok klasörü de sabitleyebilirsiniz, sabitlenmiş öğeler varsayılan sıralama yöntemine göre sıralanır.</string>
<string name="faq_4_title">Videoları nasıl hızlıca ileri sarabilirim?</string> <string name="faq_4_title">Videoları nasıl hızlıca ileri sarabilirim?</string>
<string name="faq_4_text">Parmağınızı video oynatıcı üzerinde yatay olarak sürükleyebilir veya videoyu ileri veya geri hareket ettirecek arama çubuğunun yanındaki geçerli veya maksimum süre metinlerine tıklayabilirsiniz.</string> <string name="faq_4_text">Ekranın yan tarafına iki kez dokunarak veya arama çubuğunun yanındaki geçerli veya maksimum süre metinlerine dokunarak bunu yapabilirsiniz. Videoları uygulama ayarlarından ayrı bir ekranda açmayı etkinleştirirseniz yatay hareketleri de kullanabilirsiniz.</string>
<string name="faq_5_title">Klasörün gizlenmesi ve hariç tutulması arasındaki fark nedir?</string> <string name="faq_5_title">Klasörün gizlenmesi ve hariç tutulması arasındaki fark nedir?</string>
<string name="faq_5_text">Hariç tut, klasörü yalnızca Basit Galeri\'de görüntülemeyi engellerken, Gizle sistem genelinde çalışır ve klasörü diğer galerilerden de gizler. Verilen klasörde boş bir \".nomedia\" dosyası oluşturarak çalışır, daha sonra herhangi bir dosya yöneticisi ile kaldırabilirsiniz.</string> <string name="faq_5_text">Hariç tut, klasörü yalnızca Basit Galeri\'de görüntülemeyi engellerken, Gizle sistem genelinde çalışır ve klasörü diğer galerilerden de gizler. Verilen klasörde boş bir \".nomedia\" dosyası oluşturarak çalışır, daha sonra herhangi bir dosya yöneticisi ile kaldırabilirsiniz.</string>
<string name="faq_6_title">Neden albüm resimlerini içeren klasörler görünüyor?</string> <string name="faq_6_title">Neden albüm resimlerini içeren klasörler görünüyor?</string>
@ -367,6 +369,9 @@
<b>Tüm Basit Araçlar paketini buradan inceleyin:</b> <b>Tüm Basit Araçlar paketini buradan inceleyin:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Basit Galeri Pro\'nun bağımsız web sitesi:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Виправити дату зйомки</string> <string name="fix_date_taken">Виправити дату зйомки</string>
<string name="fixing">Виправлення…</string> <string name="fixing">Виправлення…</string>
<string name="dates_fixed_successfully">Дати успішно виправлені</string> <string name="dates_fixed_successfully">Дати успішно виправлені</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Поділитися зображенням іншого розміру</string> <string name="share_resized">Поділитися зображенням іншого розміру</string>
<string name="upgraded_from_free">Агов,\n\nздається, ви оновились зі старого безкоштовного додатка. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатка.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатка.\n\nДякую!</string> <string name="upgraded_from_free">Агов,\n\nздається, ви оновились зі старого безкоштовного додатка. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатка.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатка.\n\nДякую!</string>
<string name="switch_to_file_search">Перейти до пошуку файла в усіх видимих теках</string> <string name="switch_to_file_search">Перейти до пошуку файла в усіх видимих теках</string>
@ -82,6 +83,7 @@
<string name="path">Шлях</string> <string name="path">Шлях</string>
<string name="invalid_image_path">Неприпустимий шлях до зображення</string> <string name="invalid_image_path">Неприпустимий шлях до зображення</string>
<string name="image_editing_failed">Не вдалося редагувати зображення</string> <string name="image_editing_failed">Не вдалося редагувати зображення</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Редагувати зображення за допомогою:</string> <string name="edit_image_with">Редагувати зображення за допомогою:</string>
<string name="no_editor_found">Не знайдено редакторів зображень</string> <string name="no_editor_found">Не знайдено редакторів зображень</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Як зробити альбом завжди доступним у верхній частині?</string> <string name="faq_3_title">Як зробити альбом завжди доступним у верхній частині?</string>
<string name="faq_3_text">Ви можете виконати довге натискання на бажаному альбомі і вибрати піктограму \"Закріпити\" у меню дій, що закріпить його вгорі. Ви також можете закріпити декілька тек; закріплені елементи будуть відсортовані за методом сортування за-замовчуванням.</string> <string name="faq_3_text">Ви можете виконати довге натискання на бажаному альбомі і вибрати піктограму \"Закріпити\" у меню дій, що закріпить його вгорі. Ви також можете закріпити декілька тек; закріплені елементи будуть відсортовані за методом сортування за-замовчуванням.</string>
<string name="faq_4_title">Як я можу швидко прокручувати відео?</string> <string name="faq_4_title">Як я можу швидко прокручувати відео?</string>
<string name="faq_4_text">Ви можете або провести пальцем горизонтально під час відтворення відео, або натиснути на текст поточної або максимальної тривалості відео біля прогрес-бару, що прокрутить відео або назад, або вперед.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">В чому полягає різниця між приховуванням та виключенням теки?</string> <string name="faq_5_title">В чому полягає різниця між приховуванням та виключенням теки?</string>
<string name="faq_5_text">\"Виключити\" запобігає відображенню теки тільки в додатку Simple Gallery, в той час як \"Приховати\" працює на системному рівні і приховує теку і в інших галереях також. Це здійснюється шляхом створення порожнього файлу \".nomedia\" в заданій теці, який може бути видалений пізніше будь-яким файловим менеджером.</string> <string name="faq_5_text">\"Виключити\" запобігає відображенню теки тільки в додатку Simple Gallery, в той час як \"Приховати\" працює на системному рівні і приховує теку і в інших галереях також. Це здійснюється шляхом створення порожнього файлу \".nomedia\" в заданій теці, який може бути видалений пізніше будь-яким файловим менеджером.</string>
<string name="faq_6_title">Чому відображаються теки з музичними обкладинками або стікерами?</string> <string name="faq_6_title">Чому відображаються теки з музичними обкладинками або стікерами?</string>
@ -367,6 +369,9 @@
<b>Перегляньте повний набір додатків Simple Tools тут:</b> <b>Перегляньте повний набір додатків Simple Tools тут:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Sửa giá trị ngày chụp</string> <string name="fix_date_taken">Sửa giá trị ngày chụp</string>
<string name="fixing">Đang sửa…</string> <string name="fixing">Đang sửa…</string>
<string name="dates_fixed_successfully">Sửa ngày thành công</string> <string name="dates_fixed_successfully">Sửa ngày thành công</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Chia sẻ phiên bản đã thay đổi kích thước</string> <string name="share_resized">Chia sẻ phiên bản đã thay đổi kích thước</string>
<string name="upgraded_from_free">Xin chào, có vẻ như bạn đã nâng cấp từ ứng dụng miễn phí cũ. Giờ đây, bạn có thể gỡ cài đặt phiên bản cũ có nút \'Nâng cấp lên Pro\' ở đầu Cài đặt ứng dụng. \n\nBạn sẽ chỉ xóa các mục Thùng rác, các mục yêu thích không được đánh dấu và bạn cũng sẽ phải đặt lại cài đặt ứng dụng của bạn.\n\nCảm ơn!</string> <string name="upgraded_from_free">Xin chào, có vẻ như bạn đã nâng cấp từ ứng dụng miễn phí cũ. Giờ đây, bạn có thể gỡ cài đặt phiên bản cũ có nút \'Nâng cấp lên Pro\' ở đầu Cài đặt ứng dụng. \n\nBạn sẽ chỉ xóa các mục Thùng rác, các mục yêu thích không được đánh dấu và bạn cũng sẽ phải đặt lại cài đặt ứng dụng của bạn.\n\nCảm ơn!</string>
<string name="switch_to_file_search">Chuyển sang tìm kiếm tệp trên tất cả các thư mục hiển thị</string> <string name="switch_to_file_search">Chuyển sang tìm kiếm tệp trên tất cả các thư mục hiển thị</string>
@ -82,6 +83,7 @@
<string name="path">Đường dẫn</string> <string name="path">Đường dẫn</string>
<string name="invalid_image_path">Đường dẫn hình ảnh không hợp lệ</string> <string name="invalid_image_path">Đường dẫn hình ảnh không hợp lệ</string>
<string name="image_editing_failed">Thất bại</string> <string name="image_editing_failed">Thất bại</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">Tập tin được chỉnh sửa thành công</string> <string name="file_edited_successfully">Tập tin được chỉnh sửa thành công</string>
<string name="edit_image_with">Chỉnh sửa hình ảnh với:</string> <string name="edit_image_with">Chỉnh sửa hình ảnh với:</string>
<string name="no_editor_found">Không tìm thấy trình chỉnh sửa hình ảnh</string> <string name="no_editor_found">Không tìm thấy trình chỉnh sửa hình ảnh</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">Làm thế nào tôi có thể làm cho một album luôn xuất hiện ở đầu?</string> <string name="faq_3_title">Làm thế nào tôi có thể làm cho một album luôn xuất hiện ở đầu?</string>
<string name="faq_3_text">Bạn có thể nhấn và giữ album mong muốn và chọn biểu tượng Ghim ở menu hành động, nó sẽ ghim nó lên trên cùng. Bạn cũng có thể ghim nhiều thư mục, các mục được ghim sẽ được sắp xếp theo phương pháp sắp xếp mặc định.</string> <string name="faq_3_text">Bạn có thể nhấn và giữ album mong muốn và chọn biểu tượng Ghim ở menu hành động, nó sẽ ghim nó lên trên cùng. Bạn cũng có thể ghim nhiều thư mục, các mục được ghim sẽ được sắp xếp theo phương pháp sắp xếp mặc định.</string>
<string name="faq_4_title">Làm cách nào tôi có tua video nhanh?</string> <string name="faq_4_title">Làm cách nào tôi có tua video nhanh?</string>
<string name="faq_4_text">Bạn có thể kéo ngón tay của mình theo chiều ngang trên trình phát video hoặc nhấp vào văn bản thời lượng hiện tại hoặc tối đa gần thanh tìm kiếm. Điều đó sẽ di chuyển video hoặc lùi hoặc tiến.</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">Sự khác biệt giữa ẩn và loại trừ một thư mục là gì?</string> <string name="faq_5_title">Sự khác biệt giữa ẩn và loại trừ một thư mục là gì?</string>
<string name="faq_5_text">Loại trừ ngăn chỉ hiển thị thư mục trong Thư viện đơn giản, trong khi Ẩn hoạt động theo hệ thống và nó cũng ẩn thư mục khỏi các phòng trưng bày khác. Nó hoạt động bằng cách tạo một tệp \".nomedia\" trong thư mục đã cho, sau đó bạn cũng có thể xóa bằng bất kỳ trình quản lý tệp nào.</string> <string name="faq_5_text">Loại trừ ngăn chỉ hiển thị thư mục trong Thư viện đơn giản, trong khi Ẩn hoạt động theo hệ thống và nó cũng ẩn thư mục khỏi các phòng trưng bày khác. Nó hoạt động bằng cách tạo một tệp \".nomedia\" trong thư mục đã cho, sau đó bạn cũng có thể xóa bằng bất kỳ trình quản lý tệp nào.</string>
<string name="faq_6_title">Tại sao hiển thị các thư mục với ảnh bìa hoặc nhãn dán?</string> <string name="faq_6_title">Tại sao hiển thị các thư mục với ảnh bìa hoặc nhãn dán?</string>

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">修复拍摄日期</string> <string name="fix_date_taken">修复拍摄日期</string>
<string name="fixing">正在修复…</string> <string name="fixing">正在修复…</string>
<string name="dates_fixed_successfully">日期修复成功</string> <string name="dates_fixed_successfully">日期修复成功</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">调整尺寸并分享</string> <string name="share_resized">调整尺寸并分享</string>
<string name="upgraded_from_free">嘿,\n\n你似乎已经从旧的免费版应用升级。你现在可以卸载旧版本在该版本的应用设置顶部有一个“升级到专业版”按钮。\n\n此操作会删除回收站项目取消标记收藏项目并重置应用设置。\n\n谢谢</string> <string name="upgraded_from_free">嘿,\n\n你似乎已经从旧的免费版应用升级。你现在可以卸载旧版本在该版本的应用设置顶部有一个“升级到专业版”按钮。\n\n此操作会删除回收站项目取消标记收藏项目并重置应用设置。\n\n谢谢</string>
<string name="switch_to_file_search">切换文件搜索范围为所有可见的文件夹</string> <string name="switch_to_file_search">切换文件搜索范围为所有可见的文件夹</string>
@ -82,6 +83,7 @@
<string name="path">路径</string> <string name="path">路径</string>
<string name="invalid_image_path">无效的图片路径</string> <string name="invalid_image_path">无效的图片路径</string>
<string name="image_editing_failed">图片编辑失败</string> <string name="image_editing_failed">图片编辑失败</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">编辑方式:</string> <string name="edit_image_with">编辑方式:</string>
<string name="no_editor_found">没有找到图片编辑器</string> <string name="no_editor_found">没有找到图片编辑器</string>
@ -291,7 +293,7 @@
<string name="faq_3_title">如何让某个相册始终显示在最上面?</string> <string name="faq_3_title">如何让某个相册始终显示在最上面?</string>
<string name="faq_3_text">你可以长按该相册并在操作栏中点击图钉图标,这样 就可以将其固定在顶部了。你也可以固定多个文件夹,固定项目将按照默认排序方法排序。</string> <string name="faq_3_text">你可以长按该相册并在操作栏中点击图钉图标,这样 就可以将其固定在顶部了。你也可以固定多个文件夹,固定项目将按照默认排序方法排序。</string>
<string name="faq_4_title">如何快进/快退视频?</string> <string name="faq_4_title">如何快进/快退视频?</string>
<string name="faq_4_text">只需在视频播放器上左右滑动,或点击底栏进度条两侧的时间文本,即可前进或后退视频。</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">文件夹的隐藏和排除有什么区别?</string> <string name="faq_5_title">文件夹的隐藏和排除有什么区别?</string>
<string name="faq_5_text">排除功能只是防止其在简约图库中显示,而隐藏功能则使用的是系统的方法,这样做也会在其他图库中隐藏。它的工作原理是在给定的文件夹中创建一个空的.nomedia文件你可以使用任何文件管理器删除它。</string> <string name="faq_5_text">排除功能只是防止其在简约图库中显示,而隐藏功能则使用的是系统的方法,这样做也会在其他图库中隐藏。它的工作原理是在给定的文件夹中创建一个空的.nomedia文件你可以使用任何文件管理器删除它。</string>
<string name="faq_6_title">为什么会出现音乐艺术家封面或贴纸文件夹?</string> <string name="faq_6_title">为什么会出现音乐艺术家封面或贴纸文件夹?</string>
@ -365,6 +367,9 @@
<b>查看简约系列的所有应用:</b> <b>查看简约系列的所有应用:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">修復拍照日期數值</string> <string name="fix_date_taken">修復拍照日期數值</string>
<string name="fixing">修復中…</string> <string name="fixing">修復中…</string>
<string name="dates_fixed_successfully">日期修復成功</string> <string name="dates_fixed_successfully">日期修復成功</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">分享調整大小的版本</string> <string name="share_resized">分享調整大小的版本</string>
<string name="upgraded_from_free">嘿\n\n你似乎從舊版免費應用程式升級了。現在你能解除安裝舊版了在應用程式設定的頂端有個\'升級至專業版\'按鈕。\n\n將只有回收桶項目會被刪除我的最愛項目會被解除標記以及也會重置你的應用程式設定。\n\n感謝!</string> <string name="upgraded_from_free">嘿\n\n你似乎從舊版免費應用程式升級了。現在你能解除安裝舊版了在應用程式設定的頂端有個\'升級至專業版\'按鈕。\n\n將只有回收桶項目會被刪除我的最愛項目會被解除標記以及也會重置你的應用程式設定。\n\n感謝!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">路徑</string> <string name="path">路徑</string>
<string name="invalid_image_path">無效的圖片路徑</string> <string name="invalid_image_path">無效的圖片路徑</string>
<string name="image_editing_failed">圖片編輯失敗</string> <string name="image_editing_failed">圖片編輯失敗</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">編輯圖片:</string> <string name="edit_image_with">編輯圖片:</string>
<string name="no_editor_found">找不到圖片編輯器</string> <string name="no_editor_found">找不到圖片編輯器</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">我如何讓某個相冊總是出現在頂端?</string> <string name="faq_3_title">我如何讓某個相冊總是出現在頂端?</string>
<string name="faq_3_text">你可以長按想要的相冊,然後在操作選單中選擇[圖釘]圖示,就會釘選於頂端。你也能釘選多個資料夾,釘選的項目會依預設的排序方法來排序。</string> <string name="faq_3_text">你可以長按想要的相冊,然後在操作選單中選擇[圖釘]圖示,就會釘選於頂端。你也能釘選多個資料夾,釘選的項目會依預設的排序方法來排序。</string>
<string name="faq_4_title">我如何快轉影片?</string> <string name="faq_4_title">我如何快轉影片?</string>
<string name="faq_4_text">你可以在影片播放器上水平滑動你的手指,或者點擊進度條附近的當前或總時長文字。這會使影片快轉或倒轉。</string> <string name="faq_4_text">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">隱藏和排除資料夾,兩者有什麼不同?</string> <string name="faq_5_title">隱藏和排除資料夾,兩者有什麼不同?</string>
<string name="faq_5_text">[排除]只在簡易相簿中避免顯示出來;而[隱藏]則作用於整個系統,資料夾也會被其他相簿隱藏。這是藉由在指定資料夾內建立一個\".nomedia\"空白檔案來進行隱藏,你之後也能用任何檔案管理器移除。</string> <string name="faq_5_text">[排除]只在簡易相簿中避免顯示出來;而[隱藏]則作用於整個系統,資料夾也會被其他相簿隱藏。這是藉由在指定資料夾內建立一個\".nomedia\"空白檔案來進行隱藏,你之後也能用任何檔案管理器移除。</string>
<string name="faq_6_title">為什麼有些音樂專輯封面或貼圖的資料夾會出現?</string> <string name="faq_6_title">為什麼有些音樂專輯封面或貼圖的資料夾會出現?</string>
@ -367,6 +369,9 @@
<b>於此查看簡易工具系列全套:</b> <b>於此查看簡易工具系列全套:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">修復拍攝日期數值</string> <string name="fix_date_taken">修復拍攝日期數值</string>
<string name="fixing">修復中…</string> <string name="fixing">修復中…</string>
<string name="dates_fixed_successfully">日期修復成功</string> <string name="dates_fixed_successfully">日期修復成功</string>
<string name="no_date_takens_found">未發現拍攝日期數值</string>
<string name="share_resized">分享調整大小的版本</string> <string name="share_resized">分享調整大小的版本</string>
<string name="upgraded_from_free">嘿\n\n你似乎從舊版免費應用程式升級了。現在你能解除安裝舊版了在應用程式設定的頂端有個\'升級至專業版\'按鈕。\n\n將只有回收桶項目會被刪除我的最愛項目會被解除標記以及也會重置你的應用程式設定。\n\n感謝!</string> <string name="upgraded_from_free">嘿\n\n你似乎從舊版免費應用程式升級了。現在你能解除安裝舊版了在應用程式設定的頂端有個\'升級至專業版\'按鈕。\n\n將只有回收桶項目會被刪除我的最愛項目會被解除標記以及也會重置你的應用程式設定。\n\n感謝!</string>
<string name="switch_to_file_search">檔案搜尋目標切換成全部的可見資料夾</string> <string name="switch_to_file_search">檔案搜尋目標切換成全部的可見資料夾</string>
@ -82,6 +83,7 @@
<string name="path">路徑</string> <string name="path">路徑</string>
<string name="invalid_image_path">無效的圖片路徑</string> <string name="invalid_image_path">無效的圖片路徑</string>
<string name="image_editing_failed">圖片編輯失敗</string> <string name="image_editing_failed">圖片編輯失敗</string>
<string name="image_editing_cancelled">圖片編輯取消</string>
<string name="file_edited_successfully">檔案編輯成功</string> <string name="file_edited_successfully">檔案編輯成功</string>
<string name="edit_image_with">編輯圖片:</string> <string name="edit_image_with">編輯圖片:</string>
<string name="no_editor_found">找不到圖片編輯器</string> <string name="no_editor_found">找不到圖片編輯器</string>
@ -292,7 +294,7 @@
<string name="faq_3_title">我如何讓某個相冊總是出現在頂端?</string> <string name="faq_3_title">我如何讓某個相冊總是出現在頂端?</string>
<string name="faq_3_text">你可以長按想要的相冊,然後在操作選單中選擇[圖釘]圖示,就會釘選於頂端。你也能釘選多個資料夾,釘選的項目會依預設的排序方法來排序。</string> <string name="faq_3_text">你可以長按想要的相冊,然後在操作選單中選擇[圖釘]圖示,就會釘選於頂端。你也能釘選多個資料夾,釘選的項目會依預設的排序方法來排序。</string>
<string name="faq_4_title">我如何快轉影片?</string> <string name="faq_4_title">我如何快轉影片?</string>
<string name="faq_4_text">你可以在影片播放器上水平滑動你的手指,或者點擊進度條附近的當前或總時長文字。這會使影片快轉或倒轉</string> <string name="faq_4_text">你可以雙擊畫面邊緣,或點擊進度條附近的當前或總時長文字。 如果你在應用程式設定中啟用在獨立畫面打開影片,也能使用水平手勢</string>
<string name="faq_5_title">隱藏和排除資料夾,兩者有什麼不同?</string> <string name="faq_5_title">隱藏和排除資料夾,兩者有什麼不同?</string>
<string name="faq_5_text">[排除]只在簡易相簿中避免顯示出來;而[隱藏]則作用於整個系統,資料夾也會被其他相簿隱藏。這是藉由在指定資料夾內建立一個\".nomedia\"空白檔案來進行隱藏,你之後也能用任何檔案管理器移除。</string> <string name="faq_5_text">[排除]只在簡易相簿中避免顯示出來;而[隱藏]則作用於整個系統,資料夾也會被其他相簿隱藏。這是藉由在指定資料夾內建立一個\".nomedia\"空白檔案來進行隱藏,你之後也能用任何檔案管理器移除。</string>
<string name="faq_6_title">為什麼有些音樂專輯封面或貼圖的資料夾會出現?</string> <string name="faq_6_title">為什麼有些音樂專輯封面或貼圖的資料夾會出現?</string>
@ -367,6 +369,9 @@
<b>於此查看簡易工具系列全套:</b> <b>於此查看簡易工具系列全套:</b>
https://www.simplemobiletools.com https://www.simplemobiletools.com
<b>Standalone website of Simple Gallery Pro:</b>
https://www.simplemobiletools.com/gallery
<b>Facebook:</b> <b>Facebook:</b>
https://www.facebook.com/simplemobiletools https://www.facebook.com/simplemobiletools

View file

@ -9,12 +9,14 @@
<dimen name="tmb_shadow_height">70dp</dimen> <dimen name="tmb_shadow_height">70dp</dimen>
<dimen name="media_side_slider_width">60dp</dimen> <dimen name="media_side_slider_width">60dp</dimen>
<dimen name="video_player_play_pause_size">60dp</dimen> <dimen name="video_player_play_pause_size">60dp</dimen>
<dimen name="instant_change_bar_width">50dp</dimen>
<dimen name="list_view_folder_thumbnail_size">72dp</dimen> <dimen name="list_view_folder_thumbnail_size">72dp</dimen>
<dimen name="bottom_actions_height">64dp</dimen> <dimen name="bottom_actions_height">64dp</dimen>
<dimen name="bottom_actions_height_double">128dp</dimen> <dimen name="bottom_actions_height_double">128dp</dimen>
<dimen name="bottom_actions_height_bigger">164dp</dimen> <dimen name="bottom_actions_height_bigger">164dp</dimen>
<dimen name="bottom_editor_color_picker_size">48dp</dimen> <dimen name="bottom_editor_color_picker_size">48dp</dimen>
<dimen name="bottom_filters_thumbnail_size">76dp</dimen>
<dimen name="bottom_filters_height">90dp</dimen>
<dimen name="bottom_filters_height_with_margin">98dp</dimen>
<dimen name="bottom_editor_actions_shadow_height">180dp</dimen> <dimen name="bottom_editor_actions_shadow_height">180dp</dimen>
<dimen name="portrait_photos_stripe_height">48dp</dimen> <dimen name="portrait_photos_stripe_height">48dp</dimen>
<dimen name="default_status_action_height">86dp</dimen> <dimen name="default_status_action_height">86dp</dimen>

View file

@ -6,6 +6,7 @@
<string name="package_name">com.simplemobiletools.gallery.pro</string> <string name="package_name">com.simplemobiletools.gallery.pro</string>
<!-- Release notes --> <!-- Release notes -->
<string name="release_295">Allow fast forwarding videos by double clicking on screen sides</string>
<string name="release_277">Fully replaced the photo editor with a powerful third party library (for resizing images use Menu -> Resize from the fullscreen view, until it gets added in the editor)</string> <string name="release_277">Fully replaced the photo editor with a powerful third party library (for resizing images use Menu -> Resize from the fullscreen view, until it gets added in the editor)</string>
<string name="release_258"> <string name="release_258">
Allow customizing the bottom navigation bar color\n Allow customizing the bottom navigation bar color\n

View file

@ -31,6 +31,7 @@
<string name="fix_date_taken">Fix Date Taken value</string> <string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string> <string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string> <string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="no_date_takens_found">No Date Taken values have been found</string>
<string name="share_resized">Share a resized version</string> <string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string> <string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="switch_to_file_search">Switch to file search across all visible folders</string> <string name="switch_to_file_search">Switch to file search across all visible folders</string>
@ -82,6 +83,7 @@
<string name="path">Path</string> <string name="path">Path</string>
<string name="invalid_image_path">Invalid image path</string> <string name="invalid_image_path">Invalid image path</string>
<string name="image_editing_failed">Image editing failed</string> <string name="image_editing_failed">Image editing failed</string>
<string name="image_editing_cancelled">Image editing cancelled</string>
<string name="file_edited_successfully">File edited successfully</string> <string name="file_edited_successfully">File edited successfully</string>
<string name="edit_image_with">Edit image with:</string> <string name="edit_image_with">Edit image with:</string>
<string name="no_editor_found">No image editor found</string> <string name="no_editor_found">No image editor found</string>
@ -291,8 +293,8 @@
<string name="faq_2_text">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.</string> <string name="faq_2_text">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.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string> <string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">How can I fast forward videos?</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">You can do it by double tapping the side of the screen, or tapping the current or max duration texts near the seekbar. If you enable opening videos on a separate screen in the app settings, you can use horizontal gestures too.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">What is the difference between hiding and excluding a folder?</string>
<string name="faq_5_text">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.</string> <string name="faq_5_text">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.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Why do folders with music cover art or stickers show up?</string>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.simplemobiletools.gallery.pro"
android:installLocation="auto">
<application
android:name=".App">
<activity
android:name=".activities.EditActivity">
<intent-filter
android:name="foss-editor"
tools:node="remove">
<action android:name="android.intent.action.EDIT"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*"/>
</intent-filter>
</activity>
<activity
android:name=".activities.NewEditActivity"
android:label="@string/editor">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*"/>
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -1,8 +1,11 @@
package com.simplemobiletools.gallery.pro.activities package com.simplemobiletools.gallery.pro.activities
import android.annotation.TargetApi
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.media.ExifInterface
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import android.provider.MediaStore
import androidx.core.util.Pair import androidx.core.util.Pair
@ -11,18 +14,21 @@ import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.CONFLICT_OVERWRITE import com.simplemobiletools.commons.helpers.CONFLICT_OVERWRITE
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
import com.simplemobiletools.commons.helpers.isNougatPlus
import com.simplemobiletools.commons.interfaces.CopyMoveListener import com.simplemobiletools.commons.interfaces.CopyMoveListener
import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.extensions.fixDateTaken import com.simplemobiletools.gallery.pro.extensions.fixDateTaken
import ly.img.android.pesdk.PhotoEditorSettingsList
import ly.img.android.pesdk.assets.filter.basic.FilterPackBasic import ly.img.android.pesdk.assets.filter.basic.FilterPackBasic
import ly.img.android.pesdk.assets.font.basic.FontPackBasic import ly.img.android.pesdk.assets.font.basic.FontPackBasic
import ly.img.android.pesdk.backend.model.config.CropAspectAsset import ly.img.android.pesdk.backend.model.config.CropAspectAsset
import ly.img.android.pesdk.backend.model.state.BrushSettings import ly.img.android.pesdk.backend.model.state.BrushSettings
import ly.img.android.pesdk.backend.model.state.EditorLoadSettings import ly.img.android.pesdk.backend.model.state.LoadSettings
import ly.img.android.pesdk.backend.model.state.EditorSaveSettings import ly.img.android.pesdk.backend.model.state.PhotoEditorSaveSettings
import ly.img.android.pesdk.backend.model.state.SaveSettings
import ly.img.android.pesdk.backend.model.state.manager.SettingsList import ly.img.android.pesdk.backend.model.state.manager.SettingsList
import ly.img.android.pesdk.ui.activity.PhotoEditorBuilder import ly.img.android.pesdk.ui.activity.PhotoEditorBuilder
import ly.img.android.pesdk.ui.model.state.* import ly.img.android.pesdk.ui.model.state.*
@ -30,8 +36,7 @@ import ly.img.android.pesdk.ui.panels.item.CropAspectItem
import ly.img.android.pesdk.ui.panels.item.ToggleAspectItem import ly.img.android.pesdk.ui.panels.item.ToggleAspectItem
import ly.img.android.pesdk.ui.panels.item.ToolItem import ly.img.android.pesdk.ui.panels.item.ToolItem
import java.io.File import java.io.File
import java.util.* import java.io.InputStream
import kotlin.collections.LinkedHashMap
import kotlin.collections.set import kotlin.collections.set
class NewEditActivity : SimpleActivity() { class NewEditActivity : SimpleActivity() {
@ -40,8 +45,9 @@ class NewEditActivity : SimpleActivity() {
private val RESULT_IMAGE_PATH = "RESULT_IMAGE_PATH" private val RESULT_IMAGE_PATH = "RESULT_IMAGE_PATH"
private var sourceFileLastModified = 0L private var sourceFileLastModified = 0L
private var destinationFilePath = "" private var destinationFilePath = ""
private var imagePathFromEditor = "" // delete the file stored at the internal app storage (the editor saves it there) in case moving to the selected location fails private var cacheImagePathFromEditor = "" // delete the file stored at the internal app cache storage (the editor saves it there) in case moving to the selected location fails
private var sourceImageUri: Uri? = null private var sourceImageUri: Uri? = null
private var oldExif: ExifInterface? = null
private lateinit var uri: Uri private lateinit var uri: Uri
private lateinit var saveUri: Uri private lateinit var saveUri: Uri
@ -102,7 +108,7 @@ class NewEditActivity : SimpleActivity() {
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
if (requestCode == PESDK_EDIT_IMAGE) { if (requestCode == PESDK_EDIT_IMAGE) {
val extras = resultData?.extras val extras = resultData?.extras
imagePathFromEditor = extras?.getString(RESULT_IMAGE_PATH, "") ?: "" cacheImagePathFromEditor = extras?.getString(RESULT_IMAGE_PATH, "") ?: ""
val settings = extras?.getParcelable<SettingsList>(SETTINGS_LIST) val settings = extras?.getParcelable<SettingsList>(SETTINGS_LIST)
if (settings != null) { if (settings != null) {
@ -112,11 +118,11 @@ class NewEditActivity : SimpleActivity() {
config.editorBrushSize = brush.brushSize config.editorBrushSize = brush.brushSize
} }
if (resultCode != Activity.RESULT_OK || sourceImageUri == null || sourceImageUri.toString().isEmpty() || imagePathFromEditor.isEmpty() || sourceImageUri.toString() == imagePathFromEditor) { if (resultCode != Activity.RESULT_OK || sourceImageUri == null || sourceImageUri.toString().isEmpty() || cacheImagePathFromEditor.isEmpty() || sourceImageUri.toString() == cacheImagePathFromEditor) {
toast(R.string.image_editing_failed) toast(R.string.image_editing_cancelled)
finish() finish()
} else { } else {
// the image is stored at the internal app storage first, for example /data/user/0/com.simplemobiletools.gallery.pro/files/editor/IMG_20191207_183023.jpg // the image is stored at the internal app storage first, for example /data/user/0/com.simplemobiletools.gallery.pro/cache/editor/IMG_20191207_183023.jpg
// first we rename it to the desired name, then move // first we rename it to the desired name, then move
val sourceString = Uri.decode(sourceImageUri.toString())?.toString() ?: "" val sourceString = Uri.decode(sourceImageUri.toString())?.toString() ?: ""
val source = if (sourceString.isEmpty() || sourceString.startsWith("content")) { val source = if (sourceString.isEmpty() || sourceString.startsWith("content")) {
@ -125,6 +131,11 @@ class NewEditActivity : SimpleActivity() {
sourceString.substringAfter("file://") sourceString.substringAfter("file://")
} }
if (source == cacheImagePathFromEditor) {
finish()
return
}
SaveAsDialog(this, source, true, cancelCallback = { SaveAsDialog(this, source, true, cancelCallback = {
toast(R.string.image_editing_failed) toast(R.string.image_editing_failed)
finish() finish()
@ -132,9 +143,10 @@ class NewEditActivity : SimpleActivity() {
destinationFilePath = it destinationFilePath = it
handleSAFDialog(destinationFilePath) { handleSAFDialog(destinationFilePath) {
if (it) { if (it) {
storeOldExif(source)
sourceFileLastModified = File(source).lastModified() sourceFileLastModified = File(source).lastModified()
val newFile = File("${imagePathFromEditor.getParentPath()}/${destinationFilePath.getFilenameFromPath()}") val newFile = File("${cacheImagePathFromEditor.getParentPath()}/${destinationFilePath.getFilenameFromPath()}")
File(imagePathFromEditor).renameTo(newFile) File(cacheImagePathFromEditor).renameTo(newFile)
val sourceFile = FileDirItem(newFile.absolutePath, newFile.name) val sourceFile = FileDirItem(newFile.absolutePath, newFile.name)
val conflictResolutions = LinkedHashMap<String, Int>() val conflictResolutions = LinkedHashMap<String, Int>()
@ -144,7 +156,7 @@ class NewEditActivity : SimpleActivity() {
CopyMoveTask(this, false, true, conflictResolutions, editCopyMoveListener, true).execute(pair) CopyMoveTask(this, false, true, conflictResolutions, editCopyMoveListener, true).execute(pair)
} else { } else {
toast(R.string.image_editing_failed) toast(R.string.image_editing_failed)
File(imagePathFromEditor).delete() File(cacheImagePathFromEditor).delete()
finish() finish()
} }
} }
@ -154,8 +166,30 @@ class NewEditActivity : SimpleActivity() {
super.onActivityResult(requestCode, resultCode, resultData) super.onActivityResult(requestCode, resultCode, resultData)
} }
@TargetApi(Build.VERSION_CODES.N)
private fun storeOldExif(sourcePath: String) {
var inputStream: InputStream? = null
try {
if (isNougatPlus()) {
inputStream = contentResolver.openInputStream(Uri.fromFile(File(sourcePath)))
oldExif = ExifInterface(inputStream!!)
}
} catch (ignored: Exception) {
} finally {
inputStream?.close()
}
}
private val editCopyMoveListener = object : CopyMoveListener { private val editCopyMoveListener = object : CopyMoveListener {
override fun copySucceeded(copyOnly: Boolean, copiedAll: Boolean, destinationPath: String) { override fun copySucceeded(copyOnly: Boolean, copiedAll: Boolean, destinationPath: String) {
try {
if (isNougatPlus()) {
val newExif = ExifInterface(destinationFilePath)
oldExif?.copyTo(newExif, false)
}
} catch (ignored: Exception) {
}
if (config.keepLastModified) { if (config.keepLastModified) {
// add 1 s to the last modified time to properly update the thumbnail // add 1 s to the last modified time to properly update the thumbnail
updateLastModified(destinationFilePath, sourceFileLastModified + 1000) updateLastModified(destinationFilePath, sourceFileLastModified + 1000)
@ -173,7 +207,7 @@ class NewEditActivity : SimpleActivity() {
override fun copyFailed() { override fun copyFailed() {
toast(R.string.unknown_error_occurred) toast(R.string.unknown_error_occurred)
File(imagePathFromEditor).delete() File(cacheImagePathFromEditor).delete()
finish() finish()
} }
} }
@ -181,18 +215,31 @@ class NewEditActivity : SimpleActivity() {
private fun openEditor(inputImage: Uri) { private fun openEditor(inputImage: Uri) {
sourceImageUri = inputImage sourceImageUri = inputImage
val filename = inputImage.toString().getFilenameFromPath() val filename = inputImage.toString().getFilenameFromPath()
val settingsList = createPesdkSettingsList(filename) val settingsList = createPesdkSettingsList(filename)
settingsList.getSettingsModel(EditorLoadSettings::class.java).imageSource = sourceImageUri settingsList.configure<LoadSettings> {
it.source = inputImage
}
settingsList[LoadSettings::class].source = inputImage
PhotoEditorBuilder(this) PhotoEditorBuilder(this)
.setSettingsList(settingsList) .setSettingsList(settingsList)
.startActivityForResult(this, PESDK_EDIT_IMAGE) .startActivityForResult(this, PESDK_EDIT_IMAGE)
} }
private fun createPesdkSettingsList(filename: String): SettingsList { private fun createPesdkSettingsList(filename: String): PhotoEditorSettingsList {
val settingsList = SettingsList() val settingsList = PhotoEditorSettingsList().apply {
settingsList.config.getAssetMap(CropAspectAsset::class.java).apply { configure<UiConfigFilter> {
it.setFilterList(FilterPackBasic.getFilterPack())
}
configure<UiConfigText> {
it.setFontList(FontPackBasic.getFontPack())
}
config.getAssetMap(CropAspectAsset::class.java).apply {
add(CropAspectAsset("my_crop_1_2", 1, 2, false)) add(CropAspectAsset("my_crop_1_2", 1, 2, false))
add(CropAspectAsset("my_crop_2_1", 2, 1, false)) add(CropAspectAsset("my_crop_2_1", 2, 1, false))
add(CropAspectAsset("my_crop_19_9", 19, 9, false)) add(CropAspectAsset("my_crop_19_9", 19, 9, false))
@ -205,7 +252,7 @@ class NewEditActivity : SimpleActivity() {
add(CropAspectAsset("my_crop_10_16", 10, 16, false)) add(CropAspectAsset("my_crop_10_16", 10, 16, false))
} }
settingsList.getSettingsModel(UiConfigAspect::class.java).aspectList.apply { getSettingsModel(UiConfigAspect::class.java).aspectList.apply {
add(ToggleAspectItem(CropAspectItem("my_crop_2_1"), CropAspectItem("my_crop_1_2"))) add(ToggleAspectItem(CropAspectItem("my_crop_2_1"), CropAspectItem("my_crop_1_2")))
add(ToggleAspectItem(CropAspectItem("my_crop_19_9"), CropAspectItem("my_crop_9_19"))) add(ToggleAspectItem(CropAspectItem("my_crop_19_9"), CropAspectItem("my_crop_9_19")))
add(ToggleAspectItem(CropAspectItem("my_crop_5_4"), CropAspectItem("my_crop_4_5"))) add(ToggleAspectItem(CropAspectItem("my_crop_5_4"), CropAspectItem("my_crop_4_5")))
@ -213,42 +260,36 @@ class NewEditActivity : SimpleActivity() {
add(ToggleAspectItem(CropAspectItem("my_crop_16_10"), CropAspectItem("my_crop_10_16"))) add(ToggleAspectItem(CropAspectItem("my_crop_16_10"), CropAspectItem("my_crop_10_16")))
} }
settingsList.getSettingsModel(UiConfigFilter::class.java).setFilterList( getSettingsModel(BrushSettings::class.java).apply {
FilterPackBasic.getFilterPack() brushColor = applicationContext.config.editorBrushColor
) brushHardness = applicationContext.config.editorBrushHardness
brushSize = applicationContext.config.editorBrushSize
settingsList.getSettingsModel(UiConfigText::class.java).setFontList(
FontPackBasic.getFontPack()
)
settingsList.getSettingsModel(BrushSettings::class.java).apply {
brushColor = config.editorBrushColor
brushHardness = config.editorBrushHardness
brushSize = config.editorBrushSize
} }
// do not use Text Design, it takes up too much space // do not use Text Design, it takes up too much space
val tools = settingsList.getSettingsModel(UiConfigMainMenu::class.java).toolList val tools = getSettingsModel(UiConfigMainMenu::class.java).toolList
val newTools = tools.filterNot { val newTools = tools.filterNot {
it.name!!.isEmpty() it.name!!.isEmpty()
}.toMutableList() as ArrayList<ToolItem> }.toMutableList() as ArrayList<ToolItem>
// move Focus to the end, as it is the least used // move Focus at the end, as it is the least used
// on some devices it is not obvious that the toolbar can be scrolled horizontally, so move the best ones to the start to make them visible // on some devices it is not obvious that the toolbar can be scrolled horizontally, so move the best ones at the beginning to make them visible
val focus = newTools.firstOrNull { it.name == getString(R.string.pesdk_focus_title_name) } val focus = newTools.firstOrNull { it.name == getString(R.string.pesdk_focus_title_name) }
if (focus != null) { if (focus != null) {
newTools.remove(focus) newTools.remove(focus)
newTools.add(focus) newTools.add(focus)
} }
settingsList.getSettingsModel(UiConfigMainMenu::class.java).setToolList(newTools) getSettingsModel(UiConfigMainMenu::class.java).setToolList(newTools)
settingsList.getSettingsModel(UiConfigTheme::class.java).theme = R.style.Imgly_Theme_NoFullscreen getSettingsModel(UiConfigTheme::class.java).theme = R.style.Imgly_Theme_NoFullscreen
settingsList.getSettingsModel(EditorSaveSettings::class.java) configure<PhotoEditorSaveSettings> {
.setExportFormat(EditorSaveSettings.FORMAT.AUTO) it.exportFormat = SaveSettings.FORMAT.AUTO
.setOutputFilePath("$filesDir/editor/$filename") it.setOutputFilePath("$cacheDir/editor/$filename")
.savePolicy = EditorSaveSettings.SavePolicy.RETURN_SOURCE_OR_CREATE_OUTPUT_IF_NECESSARY it.savePolicy = SaveSettings.SavePolicy.RETURN_SOURCE_OR_CREATE_OUTPUT_IF_NECESSARY
}
}
return settingsList return settingsList
} }

View file

@ -2,17 +2,22 @@
buildscript { buildscript {
ext.kotlin_version = '1.3.61' ext.kotlin_version = '1.3.61'
ext.is_proprietary = gradle.startParameter.taskNames.any { task -> task.contains("Proprietary") }
repositories { repositories {
google() google()
jcenter() jcenter()
if (is_proprietary) {
maven { url 'https://artifactory.img.ly/artifactory/imgly' } maven { url 'https://artifactory.img.ly/artifactory/imgly' }
} }
}
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.5.3' classpath 'com.android.tools.build:gradle:3.5.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'ly.img.android.pesdk:plugin:6.6.4' if (is_proprietary) {
classpath 'ly.img.android.pesdk:plugin:7.1.10'
}
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

View file

@ -0,0 +1,2 @@
* Improved the performance of the initial screen loading
* Fixed some editor related glitches

View file

@ -0,0 +1 @@
* Fixed some sorting and thumbnail related issues

View file

@ -0,0 +1,2 @@
* Fixed image disappearing at using the Editor
* Properly copy over EXIF values after editing an image

View file

@ -0,0 +1 @@
* Fixed some folder sorting related glitches

View file

@ -0,0 +1,2 @@
* Fixed some sorting related glitches
* Keep the old last modified value at file editing

View file

@ -0,0 +1,4 @@
* Allow fast forwarding videos by double clicking on screen sides
* Fixed an issue with the editor producing low quality outputs in some cases
* Improve some error messages, make them clearer
* Many translation and stability improvements

View file

@ -0,0 +1,4 @@
* Allow fast forwarding videos by double clicking on screen sides
* Fixed an issue with the editor producing low quality outputs in some cases
* Improve some error messages, make them clearer
* Many translation and stability improvements

View file

@ -0,0 +1,3 @@
* Properly handle videos at slideshows
* Fixed some gestures during video playback
* Fixed a glitch with videos randomly restarting in some cases

View file

@ -0,0 +1,4 @@
* Properly handle videos at slideshows
* Fixed some gestures during video playback
* Fixed a glitch with videos randomly restarting in some cases
* Avoid showing the "No Date Takens found" error in some cases

View file

@ -0,0 +1,4 @@
* Fixed some hiding, excluding and including related glitches
* Flipped Pin and Properties icons at the top menu for better user experience
* Avoid showing Portrait image folders at the main folders screen
* Reverted back to the old image editor in the FOSS app version

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Some files were not shown because too many files have changed in this diff Show more