diff --git a/CHANGELOG.md b/CHANGELOG.md
index 769e4fa8a..717c71b10 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,28 @@
Changelog
==========
+Version 6.14.1 *(2020-04-14)*
+----------------------------
+
+ * Fixed some SD card file related glitches
+ * Improved some third party intent handling
+ * Added some translation and stability improvements
+
+Version 6.14.0 *(2020-03-19)*
+----------------------------
+
+ * Properly delete playing videos
+ * Removed the Manage Hidden Folders settings button on Android 10+, it no longer works
+ * Added many changes under the hood in preparation for handling Scoped Storage soon
+ * Do not require the Storage permission at some third party intents
+
+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)*
----------------------------
diff --git a/README.md b/README.md
index 485b4d2da..501baa4b0 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Simple Gallery
-
+
Simple Gallery Pro is a highly customizable lightweight gallery loved by millions of people for its great user experience. Organize and edit your photos, recover deleted files with the recycle bin, protect & hide files and easily view a huge variety of different photo and video formats including RAW, SVG, GIF, panoramic and much more.
diff --git a/app/build.gradle b/app/build.gradle
index 5c967a50a..8c700eb77 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,15 +10,15 @@ if (keystorePropertiesFile.exists()) {
}
android {
- compileSdkVersion 28
- buildToolsVersion "28.0.3"
+ compileSdkVersion 29
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.simplemobiletools.gallery.pro"
minSdkVersion 21
- targetSdkVersion 28
- versionCode 298
- versionName "6.13.3"
+ targetSdkVersion 29
+ versionCode 301
+ versionName "6.14.1"
multiDexEnabled true
setProperty("archivesBaseName", "gallery-$versionCode")
vectorDrawables.useSupportLibrary = true
@@ -78,12 +78,12 @@ android {
}
dependencies {
- implementation 'com.simplemobiletools:commons:5.22.18'
+ implementation 'com.simplemobiletools:commons:5.25.16'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'it.sephiroth.android.exif:library:1.0.1'
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-beta4'
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6'
implementation 'com.google.vr:sdk-panowidget:1.180.0'
implementation 'com.google.vr:sdk-videowidget:1.180.0'
@@ -92,13 +92,13 @@ dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.caverock:androidsvg-aar:1.3'
implementation 'com.github.tibbi:gestureviews:512f929d82'
- implementation 'com.github.tibbi:subsampling-scale-image-view:d404e74e39'
+ implementation 'com.github.tibbi:subsampling-scale-image-view:381878c078'
kapt 'com.github.bumptech.glide:compiler:4.10.0'
- kapt 'androidx.room:room-compiler:2.2.2'
- implementation 'androidx.room:room-runtime:2.2.2'
- annotationProcessor 'androidx.room:room-compiler:2.2.2'
+ kapt 'androidx.room:room-compiler:2.2.5'
+ implementation 'androidx.room:room-runtime:2.2.5'
+ annotationProcessor 'androidx.room:room-compiler:2.2.5'
}
// Apply the PESDKPlugin
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 307682ab0..b871b2d77 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -27,6 +27,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_launcher_name"
android:roundIcon="@mipmap/ic_launcher"
+ android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:label">
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt
index 8d3532271..c9426fd29 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt
@@ -11,6 +11,7 @@ import android.media.ExifInterface
import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.os.Handler
import android.provider.MediaStore
import android.view.Menu
import android.view.MenuItem
@@ -27,7 +28,6 @@ import com.bumptech.glide.request.target.Target
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.*
-import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.helpers.isNougatPlus
@@ -75,8 +75,8 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
private val CROP_ROTATE_NONE = 0
private val CROP_ROTATE_ASPECT_RATIO = 1
- private lateinit var uri: Uri
private lateinit var saveUri: Uri
+ private var uri: Uri? = null
private var resizeWidth = 0
private var resizeHeight = 0
private var drawColor = 0
@@ -90,6 +90,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
private var wasDrawCanvasPositioned = false
private var oldExif: ExifInterface? = null
private var filterInitialBitmap: Bitmap? = null
+ private var originalUri: Uri? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -99,14 +100,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
return
}
- handlePermission(PERMISSION_WRITE_STORAGE) {
- if (it) {
- initEditActivity()
- } else {
- toast(R.string.no_storage_permissions)
- finish()
- }
- }
+ initEditActivity()
}
override fun onResume() {
@@ -146,7 +140,8 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
}
uri = intent.data!!
- if (uri.scheme != "file" && uri.scheme != "content") {
+ originalUri = uri
+ if (uri!!.scheme != "file" && uri!!.scheme != "content") {
toast(R.string.unknown_file_location)
finish()
return
@@ -160,14 +155,14 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
else -> Uri.fromFile(File(realPath))
}
} else {
- (getRealPathFromURI(uri))?.apply {
+ (getRealPathFromURI(uri!!))?.apply {
uri = Uri.fromFile(File(this))
}
}
saveUri = when {
intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> intent.extras!!.get(MediaStore.EXTRA_OUTPUT) as Uri
- else -> uri
+ else -> uri!!
}
isCropIntent = intent.extras?.get(CROP) == "true"
@@ -209,7 +204,15 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
.load(uri)
.apply(options)
.listener(object : RequestListener {
- override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean) = false
+ override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean {
+ if (uri != originalUri) {
+ uri = originalUri
+ Handler().post {
+ loadDefaultImageView()
+ }
+ }
+ return false
+ }
override fun onResourceReady(bitmap: Bitmap?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
val currentFilter = getFiltersAdapter()?.getCurrentFilter()
@@ -304,7 +307,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
var inputStream: InputStream? = null
try {
if (isNougatPlus()) {
- inputStream = contentResolver.openInputStream(uri)
+ inputStream = contentResolver.openInputStream(uri!!)
oldExif = ExifInterface(inputStream!!)
}
} catch (e: Exception) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt
index c5d929a84..82c781150 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt
@@ -9,6 +9,8 @@ import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.provider.MediaStore
+import android.provider.MediaStore.Images
+import android.provider.MediaStore.Video
import android.view.Menu
import android.view.MenuItem
import android.view.ViewGroup
@@ -736,24 +738,24 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private fun isGetContentIntent(intent: Intent) = intent.action == Intent.ACTION_GET_CONTENT && intent.type != null
private fun isGetImageContentIntent(intent: Intent) = isGetContentIntent(intent) &&
- (intent.type!!.startsWith("image/") || intent.type == MediaStore.Images.Media.CONTENT_TYPE)
+ (intent.type!!.startsWith("image/") || intent.type == Images.Media.CONTENT_TYPE)
private fun isGetVideoContentIntent(intent: Intent) = isGetContentIntent(intent) &&
- (intent.type!!.startsWith("video/") || intent.type == MediaStore.Video.Media.CONTENT_TYPE)
+ (intent.type!!.startsWith("video/") || intent.type == Video.Media.CONTENT_TYPE)
private fun isGetAnyContentIntent(intent: Intent) = isGetContentIntent(intent) && intent.type == "*/*"
private fun isSetWallpaperIntent(intent: Intent?) = intent?.action == Intent.ACTION_SET_WALLPAPER
- private fun hasImageContentData(intent: Intent) = (intent.data == MediaStore.Images.Media.EXTERNAL_CONTENT_URI ||
- intent.data == MediaStore.Images.Media.INTERNAL_CONTENT_URI)
+ private fun hasImageContentData(intent: Intent) = (intent.data == Images.Media.EXTERNAL_CONTENT_URI ||
+ intent.data == Images.Media.INTERNAL_CONTENT_URI)
- private fun hasVideoContentData(intent: Intent) = (intent.data == MediaStore.Video.Media.EXTERNAL_CONTENT_URI ||
- intent.data == MediaStore.Video.Media.INTERNAL_CONTENT_URI)
+ private fun hasVideoContentData(intent: Intent) = (intent.data == Video.Media.EXTERNAL_CONTENT_URI ||
+ intent.data == Video.Media.INTERNAL_CONTENT_URI)
- private fun isImageType(intent: Intent) = (intent.type?.startsWith("image/") == true || intent.type == MediaStore.Images.Media.CONTENT_TYPE)
+ private fun isImageType(intent: Intent) = (intent.type?.startsWith("image/") == true || intent.type == Images.Media.CONTENT_TYPE)
- private fun isVideoType(intent: Intent) = (intent.type?.startsWith("video/") == true || intent.type == MediaStore.Video.Media.CONTENT_TYPE)
+ private fun isVideoType(intent: Intent) = (intent.type?.startsWith("video/") == true || intent.type == Video.Media.CONTENT_TYPE)
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
if (resultCode == Activity.RESULT_OK) {
@@ -901,7 +903,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
return
}
- val sorting = config.getFileSorting(directory.path)
+ val sorting = config.getFolderSorting(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 ||
@@ -987,7 +989,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
return
}
- val sorting = config.getFileSorting(folder)
+ val sorting = config.getFolderSorting(folder)
val grouping = config.getFolderGrouping(folder)
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 ||
sorting and SORT_BY_DATE_TAKEN != 0 ||
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt
index 06ad3005c..2eaf9f668 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt
@@ -159,7 +159,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
media_empty_text_label.setTextColor(config.textColor)
media_empty_text.setTextColor(getAdjustedPrimaryColor())
- if (mMedia.isEmpty() || config.getFileSorting(mPath) and SORT_BY_RANDOM == 0) {
+ if (mMedia.isEmpty() || config.getFolderSorting(mPath) and SORT_BY_RANDOM == 0) {
tryLoadGallery()
}
}
@@ -413,7 +413,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
media_horizontal_fastscroller.isHorizontal = true
media_horizontal_fastscroller.beVisibleIf(allowHorizontalScroll)
- val sorting = config.getFileSorting(if (mShowAll) SHOW_ALL else mPath)
+ val sorting = config.getFolderSorting(if (mShowAll) SHOW_ALL else mPath)
if (allowHorizontalScroll) {
media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble
media_horizontal_fastscroller.setViews(media_grid, media_refresh_layout) {
@@ -437,7 +437,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
}
private fun checkLastMediaChanged() {
- if (isDestroyed || config.getFileSorting(mPath) and SORT_BY_RANDOM != 0) {
+ if (isDestroyed || config.getFolderSorting(mPath) and SORT_BY_RANDOM != 0) {
return
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt
index cbf066e42..362bd6f8b 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt
@@ -4,17 +4,14 @@ import android.content.res.Configuration
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Color
+import android.net.Uri
import android.os.Bundle
import android.view.View
import android.view.Window
import android.widget.RelativeLayout
import com.google.vr.sdk.widgets.pano.VrPanoramaEventListener
import com.google.vr.sdk.widgets.pano.VrPanoramaView
-import com.simplemobiletools.commons.extensions.beVisible
-import com.simplemobiletools.commons.extensions.onGlobalLayout
-import com.simplemobiletools.commons.extensions.showErrorToast
-import com.simplemobiletools.commons.extensions.toast
-import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
+import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.*
@@ -48,14 +45,7 @@ open class PanoramaPhotoActivity : SimpleActivity() {
explore.setImageResource(if (isExploreEnabled) R.drawable.ic_explore_vector else R.drawable.ic_explore_off_vector)
}
- handlePermission(PERMISSION_WRITE_STORAGE) {
- if (it) {
- checkIntent()
- } else {
- toast(R.string.no_storage_permissions)
- finish()
- }
- }
+ checkIntent()
}
override fun onResume() {
@@ -144,7 +134,12 @@ open class PanoramaPhotoActivity : SimpleActivity() {
for (i in 0..10) {
try {
- bitmap = BitmapFactory.decodeFile(path, options)
+ bitmap = if (path.startsWith("content://")) {
+ val inputStream = contentResolver.openInputStream(Uri.parse(path))
+ BitmapFactory.decodeStream(inputStream)
+ } else {
+ BitmapFactory.decodeFile(path, options)
+ }
break
} catch (e: OutOfMemoryError) {
options.inSampleSize *= 2
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt
index 510f71792..b9a7976c3 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt
@@ -13,7 +13,6 @@ import android.widget.SeekBar
import com.google.vr.sdk.widgets.video.VrVideoEventListener
import com.google.vr.sdk.widgets.video.VrVideoView
import com.simplemobiletools.commons.extensions.*
-import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.*
import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH
@@ -44,14 +43,7 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
supportActionBar?.hide()
checkNotchSupport()
- handlePermission(PERMISSION_WRITE_STORAGE) {
- if (it) {
- checkIntent()
- } else {
- toast(R.string.no_storage_permissions)
- finish()
- }
- }
+ checkIntent()
}
override fun onResume() {
@@ -99,9 +91,14 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
try {
val options = VrVideoView.Options()
options.inputType = VrVideoView.Options.TYPE_MONO
+ val uri = if (path.startsWith("content://")) {
+ Uri.parse(path)
+ } else {
+ Uri.fromFile(File(path))
+ }
vr_video_view.apply {
- loadVideo(Uri.fromFile(File(path)), options)
+ loadVideo(uri, options)
pauseVideo()
setFlingingEnabled(true)
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt
index 96dbc0fde..50600c6b0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt
@@ -150,9 +150,10 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
showSystemUI(true)
val bundle = Bundle()
val file = File(mUri.toString())
+ val intentType = intent.type ?: ""
val type = when {
- filename.isVideoFast() -> TYPE_VIDEOS
- filename.isGif() -> TYPE_GIFS
+ filename.isVideoFast() || intentType.startsWith("video/") -> TYPE_VIDEOS
+ filename.isGif() || intentType.equals("image/gif", true) -> TYPE_GIFS
filename.isRawFast() -> TYPE_RAWS
filename.isSvg() -> TYPE_SVGS
file.isPortrait() -> TYPE_PORTRAITS
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt
index 69bfa3200..85dc0331a 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt
@@ -212,7 +212,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
media_horizontal_fastscroller.isHorizontal = true
media_horizontal_fastscroller.beVisibleIf(allowHorizontalScroll)
- val sorting = config.getFileSorting(SHOW_ALL)
+ val sorting = config.getFolderSorting(SHOW_ALL)
if (allowHorizontalScroll) {
media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble
media_horizontal_fastscroller.setViews(media_grid) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt
index 50133ccf5..8d43b89a8 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt
@@ -1,5 +1,6 @@
package com.simplemobiletools.gallery.pro.activities
+import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
@@ -18,9 +19,11 @@ import com.simplemobiletools.gallery.pro.helpers.*
import com.simplemobiletools.gallery.pro.models.AlbumCover
import kotlinx.android.synthetic.main.activity_settings.*
import java.io.File
+import java.io.InputStream
import java.util.*
class SettingsActivity : SimpleActivity() {
+ private val PICK_IMPORT_SOURCE_INTENT = 1
private var mRecycleBinContentSize = 0L
override fun onCreate(savedInstanceState: Bundle?) {
@@ -94,6 +97,14 @@ class SettingsActivity : SimpleActivity() {
return super.onCreateOptionsMenu(menu)
}
+ override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
+ super.onActivityResult(requestCode, resultCode, resultData)
+ if (requestCode == PICK_IMPORT_SOURCE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null) {
+ val inputStream = contentResolver.openInputStream(resultData.data!!)
+ parseFile(inputStream)
+ }
+ }
+
private fun setupSectionColors() {
val adjustedPrimaryColor = getAdjustedPrimaryColor()
arrayListOf(visibility_label, videos_label, thumbnails_label, scrolling_label, fullscreen_media_label, security_label,
@@ -159,6 +170,7 @@ class SettingsActivity : SimpleActivity() {
}
private fun setupManageHiddenFolders() {
+ settings_manage_hidden_folders_holder.beVisibleIf(!isQPlus())
settings_manage_hidden_folders_holder.setOnClickListener {
handleHiddenFolderPasswordProtection {
startActivity(Intent(this, HiddenFoldersActivity::class.java))
@@ -700,20 +712,32 @@ class SettingsActivity : SimpleActivity() {
private fun setupImportSettings() {
settings_import_holder.setOnClickListener {
- FilePickerDialog(this) {
- ensureBackgroundThread {
- try {
- parseFile(it)
- } catch (e: Exception) {
- showErrorToast(e)
+ if (isQPlus()) {
+ Intent(Intent.ACTION_GET_CONTENT).apply {
+ addCategory(Intent.CATEGORY_OPENABLE)
+ type = "text/plain"
+ startActivityForResult(this, PICK_IMPORT_SOURCE_INTENT)
+ }
+ } else {
+ handlePermission(PERMISSION_READ_STORAGE) {
+ if (it) {
+ FilePickerDialog(this) {
+ ensureBackgroundThread {
+ parseFile(File(it).inputStream())
+ }
+ }
}
}
}
}
}
- private fun parseFile(path: String) {
- val inputStream = File(path).inputStream()
+ private fun parseFile(inputStream: InputStream?) {
+ if (inputStream == null) {
+ toast(R.string.unknown_error_occurred)
+ return
+ }
+
var importedItems = 0
val configValues = LinkedHashMap()
inputStream.bufferedReader().use {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt
index da2a95982..6824b7038 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt
@@ -3,7 +3,8 @@ package com.simplemobiletools.gallery.pro.activities
import android.annotation.SuppressLint
import android.database.ContentObserver
import android.net.Uri
-import android.provider.MediaStore
+import android.provider.MediaStore.Images
+import android.provider.MediaStore.Video
import android.view.WindowManager
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.FilePickerDialog
@@ -70,8 +71,8 @@ open class SimpleActivity : BaseSimpleActivity() {
protected fun registerFileUpdateListener() {
try {
- contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, observer)
- contentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, observer)
+ contentResolver.registerContentObserver(Images.Media.EXTERNAL_CONTENT_URI, true, observer)
+ contentResolver.registerContentObserver(Video.Media.EXTERNAL_CONTENT_URI, true, observer)
} catch (ignored: Exception) {
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt
index ef1a6d537..6f994024d 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt
@@ -24,7 +24,6 @@ import com.google.android.exoplayer2.upstream.DataSource
import com.google.android.exoplayer2.upstream.DataSpec
import com.google.android.exoplayer2.video.VideoListener
import com.simplemobiletools.commons.extensions.*
-import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.*
@@ -63,15 +62,7 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
setContentView(R.layout.activity_video_player)
setupOrientation()
checkNotchSupport()
-
- handlePermission(PERMISSION_WRITE_STORAGE) {
- if (it) {
- initPlayer()
- } else {
- toast(R.string.no_storage_permissions)
- finish()
- }
- }
+ initPlayer()
}
override fun onResume() {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt
index 77dffb031..55fc8f6b1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt
@@ -20,7 +20,7 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
-import android.provider.MediaStore
+import android.provider.MediaStore.Images
import android.text.Html
import android.view.Menu
import android.view.MenuItem
@@ -261,10 +261,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (uri != null) {
var cursor: Cursor? = null
try {
- val proj = arrayOf(MediaStore.Images.Media.DATA)
+ val proj = arrayOf(Images.Media.DATA)
cursor = contentResolver.query(uri, proj, null, null, null)
if (cursor?.moveToFirst() == true) {
- mPath = cursor.getStringValue(MediaStore.Images.Media.DATA)
+ mPath = cursor.getStringValue(Images.Media.DATA)
}
} finally {
cursor?.close()
@@ -1033,7 +1033,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
mIgnoredPaths.add(fileDirItem.path)
val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList
runOnUiThread {
- gotMedia(media)
+ gotMedia(media, true)
}
movePathsInRecycleBin(arrayListOf(path)) {
@@ -1055,7 +1055,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
mIgnoredPaths.add(fileDirItem.path)
val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList
runOnUiThread {
- gotMedia(media)
+ gotMedia(media, true)
}
tryDeleteFileDirItem(fileDirItem, false, true) {
@@ -1095,16 +1095,20 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
}
private fun refreshViewPager() {
- if (config.getFileSorting(mDirectory) and SORT_BY_RANDOM == 0) {
+ if (config.getFolderSorting(mDirectory) and SORT_BY_RANDOM == 0) {
GetMediaAsynctask(applicationContext, mDirectory, false, false, mShowAll) {
gotMedia(it)
}.execute()
}
}
- private fun gotMedia(thumbnailItems: ArrayList) {
+ private fun gotMedia(thumbnailItems: ArrayList, ignorePlayingVideos: Boolean = false) {
val media = thumbnailItems.asSequence().filter { it is Medium && !mIgnoredPaths.contains(it.path) }.map { it as Medium }.toMutableList() as ArrayList
- if (isDirEmpty(media) || media.hashCode() == mPrevHashcode || (getCurrentFragment() as? VideoFragment)?.mIsPlaying == true) {
+ if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) {
+ return
+ }
+
+ if (!ignorePlayingVideos && (getCurrentFragment() as? VideoFragment)?.mIsPlaying == true) {
return
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt
index c459a0b30..5cbd156d6 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt
@@ -20,7 +20,7 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickImage
override fun doInBackground(vararg params: Void): ArrayList {
val pathToUse = if (showAll) SHOW_ALL else mPath
val folderGrouping = context.config.getFolderGrouping(pathToUse)
- val fileSorting = context.config.getFileSorting(pathToUse)
+ val fileSorting = context.config.getFolderSorting(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
@@ -40,7 +40,7 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickImage
media.addAll(newMedia)
}
- mediaFetcher.sortMedia(media, context.config.getFileSorting(SHOW_ALL))
+ mediaFetcher.sortMedia(media, context.config.getFolderSorting(SHOW_ALL))
media
} else {
mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, getProperDateTaken, getProperLastModified, getProperFileSize, favoritePaths, getVideoDurations)
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt
index 9db8e7b13..cffa62738 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt
@@ -22,7 +22,7 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
private var view: View
init {
- currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse)
+ currSorting = if (isDirectorySorting) config.directorySorting else config.getFolderSorting(pathToUse)
view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply {
use_for_this_folder_divider.beVisibleIf(showFolderCheckbox || (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0))
@@ -97,9 +97,9 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
config.directorySorting = sorting
} else {
if (view.sorting_dialog_use_for_this_folder.isChecked) {
- config.saveFileSorting(pathToUse, sorting)
+ config.saveCustomSorting(pathToUse, sorting)
} else {
- config.removeFileSorting(pathToUse)
+ config.removeCustomSorting(pathToUse)
config.sorting = sorting
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt
index 036b1eadf..2d9df0eb5 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt
@@ -73,7 +73,7 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c
}
val scrollHorizontally = activity.config.scrollHorizontally && isGridViewType
- val sorting = activity.config.getFileSorting(if (path.isEmpty()) SHOW_ALL else path)
+ val sorting = activity.config.getFolderSorting(if (path.isEmpty()) SHOW_ALL else path)
view.apply {
media_grid.adapter = adapter
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt
index c7703735e..fd7f24862 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt
@@ -13,6 +13,7 @@ import android.media.ExifInterface
import android.net.Uri
import android.os.Build
import android.provider.MediaStore
+import android.provider.MediaStore.Images
import android.util.DisplayMetrics
import android.view.View
import androidx.appcompat.app.AppCompatActivity
@@ -428,10 +429,10 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc
val uri = getFileUri(path)
ContentProviderOperation.newUpdate(uri).apply {
- val selection = "${MediaStore.Images.Media.DATA} = ?"
+ val selection = "${Images.Media.DATA} = ?"
val selectionArgs = arrayOf(path)
withSelection(selection, selectionArgs)
- withValue(MediaStore.Images.Media.DATE_TAKEN, timestamp)
+ withValue(Images.Media.DATE_TAKEN, timestamp)
operations.add(build())
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt
index 5834cf4fd..b205d09c9 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt
@@ -4,13 +4,11 @@ import android.appwidget.AppWidgetManager
import android.content.ComponentName
import android.content.Context
import android.content.Intent
-import android.content.res.Configuration
import android.database.Cursor
-import android.graphics.Point
import android.graphics.drawable.PictureDrawable
import android.media.AudioManager
-import android.provider.MediaStore
-import android.view.WindowManager
+import android.provider.MediaStore.Files
+import android.provider.MediaStore.Images
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.Priority
@@ -39,63 +37,7 @@ import java.util.LinkedHashSet
import kotlin.Comparator
import kotlin.collections.ArrayList
-val Context.portrait get() = resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
val Context.audioManager get() = getSystemService(Context.AUDIO_SERVICE) as AudioManager
-val Context.windowManager: WindowManager get() = getSystemService(Context.WINDOW_SERVICE) as WindowManager
-val Context.navigationBarRight: Boolean get() = usableScreenSize.x < realScreenSize.x
-val Context.navigationBarBottom: Boolean get() = usableScreenSize.y < realScreenSize.y
-val Context.navigationBarHeight: Int get() = if (navigationBarBottom) navigationBarSize.y else 0
-val Context.navigationBarWidth: Int get() = if (navigationBarRight) navigationBarSize.x else 0
-
-internal val Context.navigationBarSize: Point
- get() = when {
- navigationBarRight -> Point(newNavigationBarHeight, usableScreenSize.y)
- navigationBarBottom -> Point(usableScreenSize.x, newNavigationBarHeight)
- else -> Point()
- }
-
-internal val Context.newNavigationBarHeight: Int
- get() {
- var navigationBarHeight = 0
- val resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android")
- if (resourceId > 0) {
- navigationBarHeight = resources.getDimensionPixelSize(resourceId)
- }
- return navigationBarHeight
- }
-
-internal val Context.statusBarHeight: Int
- get() {
- var statusBarHeight = 0
- val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
- if (resourceId > 0) {
- statusBarHeight = resources.getDimensionPixelSize(resourceId)
- }
- return statusBarHeight
- }
-
-internal val Context.actionBarHeight: Int
- get() {
- val styledAttributes = theme.obtainStyledAttributes(intArrayOf(android.R.attr.actionBarSize))
- val actionBarHeight = styledAttributes.getDimension(0, 0f)
- styledAttributes.recycle()
- return actionBarHeight.toInt()
- }
-
-
-val Context.usableScreenSize: Point
- get() {
- val size = Point()
- windowManager.defaultDisplay.getSize(size)
- return size
- }
-
-val Context.realScreenSize: Point
- get() {
- val size = Point()
- windowManager.defaultDisplay.getRealSize(size)
- return size
- }
fun Context.getHumanizedFilename(path: String): String {
val humanized = humanizePath(path)
@@ -362,11 +304,11 @@ fun Context.getNoMediaFolders(callback: (folders: ArrayList) -> Unit) {
ensureBackgroundThread {
val folders = ArrayList()
- val uri = MediaStore.Files.getContentUri("external")
- val projection = arrayOf(MediaStore.Files.FileColumns.DATA)
- val selection = "${MediaStore.Files.FileColumns.MEDIA_TYPE} = ? AND ${MediaStore.Files.FileColumns.TITLE} LIKE ?"
- val selectionArgs = arrayOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
- val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC"
+ val uri = Files.getContentUri("external")
+ val projection = arrayOf(Files.FileColumns.DATA)
+ val selection = "${Files.FileColumns.MEDIA_TYPE} = ? AND ${Files.FileColumns.TITLE} LIKE ?"
+ val selectionArgs = arrayOf(Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
+ val sortOrder = "${Files.FileColumns.DATE_MODIFIED} DESC"
val OTGPath = config.OTGPath
var cursor: Cursor? = null
@@ -374,7 +316,7 @@ fun Context.getNoMediaFolders(callback: (folders: ArrayList) -> Unit) {
cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
if (cursor?.moveToFirst() == true) {
do {
- val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA) ?: continue
+ val path = cursor.getStringValue(Files.FileColumns.DATA) ?: continue
val noMediaFile = File(path)
if (getDoesFilePathExist(noMediaFile.absolutePath, OTGPath) && noMediaFile.name == NOMEDIA) {
folders.add("${noMediaFile.parent}/")
@@ -658,7 +600,7 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag
}) as ArrayList
val pathToUse = if (path.isEmpty()) SHOW_ALL else path
- mediaFetcher.sortMedia(media, config.getFileSorting(pathToUse))
+ mediaFetcher.sortMedia(media, config.getFolderSorting(pathToUse))
val grouped = mediaFetcher.groupMedia(media, pathToUse)
callback(grouped.clone() as ArrayList)
val OTGPath = config.OTGPath
@@ -924,7 +866,7 @@ fun Context.updateDirectoryPath(path: String) {
val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders
- val sorting = config.getFileSorting(path)
+ val sorting = config.getFolderSorting(path)
val grouping = config.getFolderGrouping(path)
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 ||
sorting and SORT_BY_DATE_TAKEN != 0 ||
@@ -945,11 +887,11 @@ fun Context.updateDirectoryPath(path: String) {
fun Context.getFileDateTaken(path: String): Long {
val projection = arrayOf(
- MediaStore.Images.Media.DATE_TAKEN
+ Images.Media.DATE_TAKEN
)
- val uri = MediaStore.Files.getContentUri("external")
- val selection = "${MediaStore.Images.Media.DATA} = ?"
+ val uri = Files.getContentUri("external")
+ val selection = "${Images.Media.DATA} = ?"
val selectionArgs = arrayOf(path)
val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null)
@@ -957,7 +899,7 @@ fun Context.getFileDateTaken(path: String): Long {
if (cursor.moveToFirst()) {
do {
try {
- return cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
+ return cursor.getLongValue(Images.Media.DATE_TAKEN)
} catch (ignored: Exception) {
}
} while (cursor.moveToNext())
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt
index ccfaa425b..2c0420b9a 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt
@@ -7,9 +7,9 @@ import com.simplemobiletools.commons.helpers.NOMEDIA
import java.io.File
import java.io.IOException
-fun String.isThisOrParentIncluded(includedPaths: MutableSet) = includedPaths.any { startsWith(it, true) }
+fun String.isThisOrParentIncluded(includedPaths: MutableSet) = includedPaths.any { equals(it, true) } || includedPaths.any { "$this/".startsWith("$it/", true) }
-fun String.isThisOrParentExcluded(excludedPaths: MutableSet) = excludedPaths.any { startsWith(it, true) }
+fun String.isThisOrParentExcluded(excludedPaths: MutableSet) = excludedPaths.any { equals(it, true) } || excludedPaths.any { "$this/".startsWith("$it/", true) }
fun String.shouldFolderBeVisible(excludedPaths: MutableSet, includedPaths: MutableSet, showHidden: Boolean): Boolean {
if (isEmpty()) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt
index 6f7064d55..3495e80a9 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt
@@ -77,6 +77,7 @@ class PhotoFragment : ViewPagerFragment() {
private var mIsPanorama = false
private var mIsSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it
private var mCurrentPortraitPhotoPath = ""
+ private var mOriginalPath = ""
private var mImageOrientation = -1
private var mLoadZoomableViewHandler = Handler()
private var mScreenWidth = 0
@@ -99,6 +100,7 @@ class PhotoFragment : ViewPagerFragment() {
}
mMedium = arguments!!.getSerializable(MEDIUM) as Medium
+ mOriginalPath = mMedium.path
mView.apply {
subsampling_view.setOnClickListener { photoClicked() }
@@ -158,24 +160,23 @@ class PhotoFragment : ViewPagerFragment() {
}
if (mMedium.path.startsWith("content://") && !mMedium.path.startsWith("content://mms/")) {
- val originalPath = mMedium.path
- mMedium.path = context!!.getRealPathFromURI(Uri.parse(originalPath)) ?: mMedium.path
+ mMedium.path = context!!.getRealPathFromURI(Uri.parse(mOriginalPath)) ?: mMedium.path
if (mMedium.path.isEmpty()) {
var out: FileOutputStream? = null
try {
- var inputStream = context!!.contentResolver.openInputStream(Uri.parse(originalPath))
+ var inputStream = context!!.contentResolver.openInputStream(Uri.parse(mOriginalPath))
val exif = ExifInterface()
exif.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
val tag = exif.getTag(ExifInterface.TAG_ORIENTATION)
val orientation = tag?.getValueAsInt(-1) ?: -1
- inputStream = context!!.contentResolver.openInputStream(Uri.parse(originalPath))
+ inputStream = context!!.contentResolver.openInputStream(Uri.parse(mOriginalPath))
val original = BitmapFactory.decodeStream(inputStream)
val rotated = rotateViaMatrix(original, orientation)
exif.setTagValue(ExifInterface.TAG_ORIENTATION, 1)
exif.removeCompressedThumbnail()
- val file = File(context!!.externalCacheDir, Uri.parse(originalPath).lastPathSegment)
+ val file = File(context!!.externalCacheDir, Uri.parse(mOriginalPath).lastPathSegment)
out = FileOutputStream(file)
rotated.compress(Bitmap.CompressFormat.JPEG, 100, out)
mMedium.path = file.absolutePath
@@ -398,6 +399,10 @@ class PhotoFragment : ViewPagerFragment() {
options.diskCacheStrategy(DiskCacheStrategy.NONE)
}
+ if (context == null) {
+ return
+ }
+
Glide.with(context!!)
.load(getFilePathToShow())
.apply(options)
@@ -444,7 +449,13 @@ class PhotoFragment : ViewPagerFragment() {
}
}
- override fun onError(e: Exception?) {}
+ override fun onError(e: Exception?) {
+ if (mMedium.path != mOriginalPath) {
+ mMedium.path = mOriginalPath
+ loadImage()
+ checkIfPanorama()
+ }
+ }
})
} catch (ignored: Exception) {
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt
index 41a31afe3..535aad447 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt
@@ -2,6 +2,8 @@ package com.simplemobiletools.gallery.pro.fragments
import android.media.ExifInterface
import android.provider.MediaStore
+import android.provider.MediaStore.Files
+import android.provider.MediaStore.Images
import android.view.MotionEvent
import androidx.fragment.app.Fragment
import com.simplemobiletools.commons.extensions.*
@@ -91,14 +93,14 @@ abstract class ViewPagerFragment : Fragment() {
fun getPathToLoad(medium: Medium) = if (context?.isPathOnOTG(medium.path) == true) medium.path.getOTGPublicPath(context!!) else medium.path
private fun getFileLastModified(file: File): String {
- val projection = arrayOf(MediaStore.Images.Media.DATE_MODIFIED)
- val uri = MediaStore.Files.getContentUri("external")
+ val projection = arrayOf(Images.Media.DATE_MODIFIED)
+ val uri = Files.getContentUri("external")
val selection = "${MediaStore.MediaColumns.DATA} = ?"
val selectionArgs = arrayOf(file.absolutePath)
val cursor = context!!.contentResolver.query(uri, projection, selection, selectionArgs, null)
cursor?.use {
return if (cursor.moveToFirst()) {
- val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L
+ val dateModified = cursor.getLongValue(Images.Media.DATE_MODIFIED) * 1000L
dateModified.formatDate(context!!)
} else {
file.lastModified().formatDate(context!!)
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt
index 68ff6268b..06663d8f1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt
@@ -21,22 +21,6 @@ class Config(context: Context) : BaseConfig(context) {
get(): Int = prefs.getInt(DIRECTORY_SORT_ORDER, SORT_BY_DATE_MODIFIED or SORT_DESCENDING)
set(order) = prefs.edit().putInt(DIRECTORY_SORT_ORDER, order).apply()
- fun saveFileSorting(path: String, value: Int) {
- if (path.isEmpty()) {
- sorting = value
- } else {
- prefs.edit().putInt(SORT_FOLDER_PREFIX + path.toLowerCase(), value).apply()
- }
- }
-
- fun getFileSorting(path: String) = prefs.getInt(SORT_FOLDER_PREFIX + path.toLowerCase(), sorting)
-
- fun removeFileSorting(path: String) {
- prefs.edit().remove(SORT_FOLDER_PREFIX + path.toLowerCase()).apply()
- }
-
- fun hasCustomSorting(path: String) = prefs.contains(SORT_FOLDER_PREFIX + path.toLowerCase())
-
fun saveFolderGrouping(path: String, value: Int) {
if (path.isEmpty()) {
groupBy = value
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt
index 248cf6393..d6d6abef0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt
@@ -4,7 +4,6 @@ import com.simplemobiletools.commons.helpers.MONTH_SECONDS
// shared preferences
const val DIRECTORY_SORT_ORDER = "directory_sort_order"
-const val SORT_FOLDER_PREFIX = "sort_folder_"
const val GROUP_FOLDER_PREFIX = "group_folder_"
const val VIEW_TYPE_PREFIX = "view_type_folder_"
const val SHOW_HIDDEN_MEDIA = "show_hidden_media"
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt
index f23e50b88..27c61a640 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt
@@ -5,7 +5,8 @@ import android.database.Cursor
import android.net.Uri
import android.os.Environment
import android.provider.BaseColumns
-import android.provider.MediaStore
+import android.provider.MediaStore.Files
+import android.provider.MediaStore.Images
import android.text.format.DateFormat
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
@@ -38,7 +39,7 @@ class MediaFetcher(val context: Context) {
curMedia.addAll(newMedia)
}
- sortMedia(curMedia, context.config.getFileSorting(curPath))
+ sortMedia(curMedia, context.config.getFolderSorting(curPath))
return curMedia
}
@@ -54,9 +55,9 @@ class MediaFetcher(val context: Context) {
).filter { context.getDoesFilePathExist(it, OTGPath) })
val filterMedia = context.config.filterMedia
- val uri = MediaStore.Files.getContentUri("external")
- val projection = arrayOf(MediaStore.Images.Media.DATA)
- val selection = "${getSelectionQuery(filterMedia)} ${MediaStore.Images.ImageColumns.BUCKET_ID} IS NOT NULL) GROUP BY (${MediaStore.Images.ImageColumns.BUCKET_ID}"
+ val uri = Files.getContentUri("external")
+ val projection = arrayOf(Images.Media.DATA)
+ val selection = getSelectionQuery(filterMedia)
val selectionArgs = getSelectionArgsQuery(filterMedia).toTypedArray()
val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
folders.addAll(parseCursor(cursor!!))
@@ -72,8 +73,8 @@ class MediaFetcher(val context: Context) {
}
private fun getLatestFileFolders(): LinkedHashSet {
- val uri = MediaStore.Files.getContentUri("external")
- val projection = arrayOf(MediaStore.Images.ImageColumns.DATA)
+ val uri = Files.getContentUri("external")
+ val projection = arrayOf(Images.ImageColumns.DATA)
val parents = LinkedHashSet()
val sorting = "${BaseColumns._ID} DESC LIMIT 50"
var cursor: Cursor? = null
@@ -81,7 +82,7 @@ class MediaFetcher(val context: Context) {
cursor = context.contentResolver.query(uri, projection, null, null, sorting)
if (cursor?.moveToFirst() == true) {
do {
- val path = cursor.getStringValue(MediaStore.Images.ImageColumns.DATA) ?: continue
+ val path = cursor.getStringValue(Images.ImageColumns.DATA) ?: continue
parents.add(path.getParentPath())
} while (cursor.moveToNext())
}
@@ -96,41 +97,38 @@ class MediaFetcher(val context: Context) {
private fun getSelectionQuery(filterMedia: Int): String {
val query = StringBuilder()
- query.append("(")
if (filterMedia and TYPE_IMAGES != 0) {
photoExtensions.forEach {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
}
if (filterMedia and TYPE_PORTRAITS != 0) {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
if (filterMedia and TYPE_VIDEOS != 0) {
videoExtensions.forEach {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
}
if (filterMedia and TYPE_GIFS != 0) {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
if (filterMedia and TYPE_RAWS != 0) {
rawExtensions.forEach {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
}
if (filterMedia and TYPE_SVGS != 0) {
- query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
+ query.append("${Images.Media.DATA} LIKE ? OR ")
}
- var selectionQuery = query.toString().trim().removeSuffix("OR")
- selectionQuery += ") AND "
- return selectionQuery
+ return query.toString().trim().removeSuffix("OR")
}
private fun getSelectionArgsQuery(filterMedia: Int): ArrayList {
@@ -174,12 +172,12 @@ class MediaFetcher(val context: Context) {
val config = context.config
val includedFolders = config.includedFolders
val OTGPath = config.OTGPath
- var foldersToScan = config.everShownFolders.filter { it == FAVORITES || it == RECYCLE_BIN || context.getDoesFilePathExist(it, OTGPath) }.toMutableList() as ArrayList
+ var foldersToScan = config.everShownFolders.filter { it == FAVORITES || it == RECYCLE_BIN || context.getDoesFilePathExist(it, OTGPath) }.toHashSet()
cursor.use {
if (cursor.moveToFirst()) {
do {
- val path = cursor.getStringValue(MediaStore.Images.Media.DATA)
+ val path = cursor.getStringValue(Images.Media.DATA)
val parentPath = File(path).parent ?: continue
if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) {
foldersToScan.add(parentPath)
@@ -194,11 +192,11 @@ class MediaFetcher(val context: Context) {
val showHidden = config.shouldShowHidden
val excludedFolders = config.excludedFolders
- foldersToScan = foldersToScan.filter { it.shouldFolderBeVisible(excludedFolders, includedFolders, showHidden) } as ArrayList
+ foldersToScan = foldersToScan.filter { it.shouldFolderBeVisible(excludedFolders, includedFolders, showHidden) }.toHashSet()
return foldersToScan.distinctBy { it.getDistinctPath() }.toMutableSet() as LinkedHashSet
}
- private fun addFolder(curFolders: ArrayList, folder: String) {
+ private fun addFolder(curFolders: HashSet, folder: String) {
curFolders.add(folder)
val files = File(folder).listFiles() ?: return
for (file in files) {
@@ -398,12 +396,12 @@ class MediaFetcher(val context: Context) {
val dateTakens = HashMap()
if (folder != FAVORITES) {
val projection = arrayOf(
- MediaStore.Images.Media.DISPLAY_NAME,
- MediaStore.Images.Media.DATE_TAKEN
+ Images.Media.DISPLAY_NAME,
+ Images.Media.DATE_TAKEN
)
- val uri = MediaStore.Files.getContentUri("external")
- val selection = "${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?"
+ val uri = Files.getContentUri("external")
+ val selection = "${Images.Media.DATA} LIKE ? AND ${Images.Media.DATA} NOT LIKE ?"
val selectionArgs = arrayOf("$folder/%", "$folder/%/%")
val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
@@ -411,9 +409,9 @@ class MediaFetcher(val context: Context) {
if (cursor.moveToFirst()) {
do {
try {
- val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
+ val dateTaken = cursor.getLongValue(Images.Media.DATE_TAKEN)
if (dateTaken != 0L) {
- val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME)
+ val name = cursor.getStringValue(Images.Media.DISPLAY_NAME)
dateTakens["$folder/$name"] = dateTaken
}
} catch (e: Exception) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/jobs/NewPhotoFetcher.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/jobs/NewPhotoFetcher.kt
index e2c755ae0..ad5ada9f7 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/jobs/NewPhotoFetcher.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/jobs/NewPhotoFetcher.kt
@@ -2,6 +2,7 @@ package com.simplemobiletools.gallery.pro.jobs
import android.annotation.TargetApi
import android.app.job.JobInfo
+import android.app.job.JobInfo.TriggerContentUri
import android.app.job.JobParameters
import android.app.job.JobScheduler
import android.app.job.JobService
@@ -12,6 +13,8 @@ import android.net.Uri
import android.os.Build
import android.os.Handler
import android.provider.MediaStore
+import android.provider.MediaStore.Images
+import android.provider.MediaStore.Video
import com.simplemobiletools.commons.extensions.getParentPath
import com.simplemobiletools.commons.extensions.getStringValue
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
@@ -24,8 +27,8 @@ class NewPhotoFetcher : JobService() {
companion object {
const val PHOTO_VIDEO_CONTENT_JOB = 1
private val MEDIA_URI = Uri.parse("content://${MediaStore.AUTHORITY}/")
- private val PHOTO_PATH_SEGMENTS = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.pathSegments
- private val VIDEO_PATH_SEGMENTS = MediaStore.Video.Media.EXTERNAL_CONTENT_URI.pathSegments
+ private val PHOTO_PATH_SEGMENTS = Images.Media.EXTERNAL_CONTENT_URI.pathSegments
+ private val VIDEO_PATH_SEGMENTS = Video.Media.EXTERNAL_CONTENT_URI.pathSegments
}
private val mHandler = Handler()
@@ -38,15 +41,15 @@ class NewPhotoFetcher : JobService() {
fun scheduleJob(context: Context) {
val componentName = ComponentName(context, NewPhotoFetcher::class.java)
- val photoUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
- val videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
+ val photoUri = Images.Media.EXTERNAL_CONTENT_URI
+ val videoUri = Video.Media.EXTERNAL_CONTENT_URI
JobInfo.Builder(PHOTO_VIDEO_CONTENT_JOB, componentName).apply {
- addTriggerContentUri(JobInfo.TriggerContentUri(photoUri, JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
- addTriggerContentUri(JobInfo.TriggerContentUri(videoUri, JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
- addTriggerContentUri(JobInfo.TriggerContentUri(MEDIA_URI, 0))
+ addTriggerContentUri(TriggerContentUri(photoUri, TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
+ addTriggerContentUri(TriggerContentUri(videoUri, TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
+ addTriggerContentUri(TriggerContentUri(MEDIA_URI, 0))
try {
- context.getSystemService(JobScheduler::class.java).schedule(build())
+ context.getSystemService(JobScheduler::class.java)?.schedule(build())
} catch (ignored: Exception) {
}
}
@@ -54,7 +57,7 @@ class NewPhotoFetcher : JobService() {
fun isScheduled(context: Context): Boolean {
val jobScheduler = context.getSystemService(JobScheduler::class.java)
- val jobs = jobScheduler.allPendingJobs ?: return false
+ val jobs = jobScheduler.allPendingJobs
return jobs.any { it.id == PHOTO_VIDEO_CONTENT_JOB }
}
@@ -77,17 +80,17 @@ class NewPhotoFetcher : JobService() {
if (selection.isNotEmpty()) {
selection.append(" OR ")
}
- selection.append("${MediaStore.Images.ImageColumns._ID} = '$id'")
+ selection.append("${Images.ImageColumns._ID} = '$id'")
}
var cursor: Cursor? = null
try {
- val projection = arrayOf(MediaStore.Images.ImageColumns.DATA)
- val uris = arrayListOf(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
+ val projection = arrayOf(Images.ImageColumns.DATA)
+ val uris = arrayListOf(Images.Media.EXTERNAL_CONTENT_URI, Video.Media.EXTERNAL_CONTENT_URI)
uris.forEach {
cursor = contentResolver.query(it, projection, selection.toString(), null, null)
while (cursor!!.moveToNext()) {
- val path = cursor!!.getStringValue(MediaStore.Images.ImageColumns.DATA)
+ val path = cursor!!.getStringValue(Images.ImageColumns.DATA)
affectedFolderPaths.add(path.getParentPath())
addPathToDB(path)
}
diff --git a/app/src/main/res/drawable-hdpi/ic_play_outline.png b/app/src/main/res/drawable-hdpi/ic_play_outline.png
deleted file mode 100644
index 12be0724f..000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_play_outline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_play_outline.png b/app/src/main/res/drawable-xhdpi/ic_play_outline.png
deleted file mode 100644
index f99911f6c..000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_play_outline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_play_outline.png b/app/src/main/res/drawable-xxhdpi/ic_play_outline.png
deleted file mode 100644
index 156d6ca62..000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_play_outline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_play_outline.png b/app/src/main/res/drawable-xxxhdpi/ic_play_outline.png
deleted file mode 100644
index 77370d426..000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_play_outline.png and /dev/null differ
diff --git a/app/src/main/res/menu/cab_directories.xml b/app/src/main/res/menu/cab_directories.xml
index 8c27750fc..3e9c55cbd 100644
--- a/app/src/main/res/menu/cab_directories.xml
+++ b/app/src/main/res/menu/cab_directories.xml
@@ -6,6 +6,11 @@
android:icon="@drawable/ic_delete_vector"
android:title="@string/delete"
app:showAsAction="ifRoom"/>
+
-
- تقليل عدد الأعمدة
تغيير صورة الغلاف
تحديد صورة
- إستخدام كإفتراضي
الصوت
السبوع
قفل الاتجاه
@@ -78,9 +77,7 @@
تعديل
- حفظ
تدوير
- المسار
مسار الصورة غير صحيح
فشل تعديل الصورة
Image editing cancelled
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 09a2a7bdb..fdd551616 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -19,7 +19,6 @@
Reduce column count
Change cover image
Select photo
- Use default
Volume
Brightness
Lock orientation
@@ -78,9 +77,7 @@
Editor
- Save
Rotate
- Path
Invalid image path
Image editing failed
Image editing cancelled
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 76bc342c6..aa267cf3f 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -19,7 +19,6 @@
Reduir el número de columnes
Canviar imatge de portada
Sel·leccionar imatge
- Us per defecte
Volum
Brillantor
Bloquejar orientació
@@ -78,9 +77,7 @@
Editor
- Guardar
Rotar
- Ruta
Ruta de imatge no vàlida
Ha fallat la edició de la imatge
S\'ha cancel·lat l\'edició de la imatge
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 647f27e33..9cc297e7e 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -19,7 +19,6 @@
Snížit počet sloupců
Změnit obal alba
Vybrat fotografii
- Použít výchozí
Hlasitost
Jas
Uzamknout orientaci
@@ -78,9 +77,7 @@
Editor
- Uložit
Otočit
- Cesta
Neplatná cesta
Úprava souboru selhala
Image editing cancelled
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index c969594f1..2dda54918 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -19,7 +19,6 @@
Færre kolonner
Skift cover-billede
Vælg billede
- Brug standard
Lydstyrke
Lysstyrke
Lås orientering
@@ -31,7 +30,7 @@
Fiks eksponeringsdato
Fikser…
Datoer fikset med succes
- No Date Taken values have been found
+ Ingen eksponeringsdatoer er fundet
Del en skaleret version
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!
Skift til filsøgning på tværs af synlige mapper
@@ -78,13 +77,11 @@
Editor
- Gem
Roter
- Sti
Ugyldig sti til billede
Redigering af billede mislykkedes
- Image editing cancelled
- File edited successfully
+ Billede redigering annulleret
+ Fil redigeret med succes
Rediger billede med:
Der blev ikke fundet en editor til billedbehandling
Ukendt filplacering
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 2bf6dfda0..24ba36e45 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -19,7 +19,6 @@
Kacheln vergrößern
Coverbild ändern
Auswählen
- Standard
Lautstärke
Helligkeit
Bildausrichtung sperren
@@ -78,9 +77,7 @@
Editor
- Speichern
Drehen
- Pfad
Ungültiger Dateipfad
Bildbearbeitung fehlgeschlagen
Image editing cancelled
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index b90b37cfd..b66ab9182 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -19,7 +19,6 @@
Μείωση αριθμού στηλών
Αλλαγή εξώφυλλου φακέλου
Επιλογή φωτογραφίας
- Χρήση προεπιλεγμένης
Ένταση
Φωτεινότητα
Κλείδωμα προσανατολισμού
@@ -78,9 +77,7 @@
Επεξεργαστής
- Αποθήκευση
Περιστροφή
- Διαδρομή
Μη έγκυρη διαδρομή εικόνας
Η επεξεργασία εικόνας απέτυχε
Η επεξεργασία εικόνας ακυρώθηκε
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index e71a156ae..7bbde13bb 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -19,7 +19,6 @@
Reducir el número de columnas
Cambiar imagen de portada
Seleccionar imagen
- Uso por defecto
Volumen
Brillo
Bloquear orientación
@@ -78,9 +77,7 @@
Editor
- Guardar
Rotar
- Ruta
Ruta de imagen no válida
Falló la edición de imagen
Edición de imagen cancelada
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index ee4727560..1385860e7 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -19,7 +19,6 @@
Vähennä sarakkeita
Vaihda kansikuva
Valitse kuva
- Käytä oletuksia
Äänenvoimakkuus
Kirkkaus
Lukitse näytönkierto
@@ -78,9 +77,7 @@
Editori
- Tallenna
Käännä
- Polku
Kuvan polkua ei ole
Kuvan muokkaus epäonnistui
Image editing cancelled
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index d17748eff..3739156b6 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -19,7 +19,6 @@
Supprimer une colonne
Changer l\'image du dossier
Choisir une image
- Image par défaut
Volume
Luminosité
Verrouiller la rotation
@@ -78,9 +77,7 @@
Éditeur
- Sauvegarder
Pivoter
- Emplacement
Emplacement invalide
L\'édition de l\'image a échoué
L\'édition de l\'image a été annulé
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index fa5ae19d5..aeeb8e9b7 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -19,7 +19,6 @@
Reduza o número de columnas
Cambiar a imaxe de portada
Escolla foto
- Usar valor por omisión
Volume
Brillo
Fixar orientación
@@ -78,9 +77,7 @@
Editor
- Gardar
Rotar
- Ruta
Ruta a imaxe non válida
Fallo na edición da imaxe
Image editing cancelled
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index f27f92a1b..9927b9a55 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -19,7 +19,6 @@
Smanji broj stupaca
Promjeni naslovnu sliku
Odaberi sliku
- Koristi zadano
Glasnoća
Svjetlina
Zaključaj orijentaciju slike
@@ -78,9 +77,7 @@
Uređivač
- Spremi
Rotiraj
- Putanja
Neispravna putanja slike
Uređivanje slika nije uspjelo
Image editing cancelled
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 524da5e32..dea3c1879 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -1,331 +1,328 @@
- Simple Gallery
- Galéria
- Szerkesztés
- Kamera megnyitása
- (rejtett)
- (kizárva)
- Mappa kitűzés
- Mappa kitűzés megszüntetése
- Kitűzés felülre
- Mutassa az összes mappa tartalmát
- Összes mappa
- Váltás mappa nézetre
- Egyéb mappa
- Mutassa a térképen
- Ismeretlen helyszín
- Növelje az oszlopok számát
- Csökkentse az oszlopok számát
- Borítókép változtatása
- Válasszon fotót
- Alapértelmezett használata
- Hangerő
- Fényerő
- Tájolás zárolása
- Tájolás feloldása
- Tájolás változtatása
- Álló mód kényszerítése
- Fekvő mód kényszerítése
- Alapértelmezett tájolás használata
- Dátum javítása
- Javítás...
- Sikeres dátum javítás
+ Simple Gallery
+ Galéria
+ Szerkesztés
+ Kamera megnyitása
+ (rejtett)
+ (kizárva)
+ Mappa kitűzés
+ Mappa kitűzés megszüntetése
+ Kitűzés felülre
+ Mutassa az összes mappa tartalmát
+ Összes mappa
+ Váltás mappa nézetre
+ Egyéb mappa
+ Mutassa a térképen
+ Ismeretlen helyszín
+ Növelje az oszlopok számát
+ Csökkentse az oszlopok számát
+ Borítókép változtatása
+ Válasszon fotót
+ Hangerő
+ Fényerő
+ Tájolás zárolása
+ Tájolás feloldása
+ Tájolás változtatása
+ Álló mód kényszerítése
+ Fekvő mód kényszerítése
+ Alapértelmezett tájolás használata
+ Dátum javítása
+ Javítás...
+ Sikeres dátum javítás
No Date Taken values have been found
- Átméretezett verzió megosztása
- 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!
- Váltás a fájlkeresésre az összes látható mappában
-
-
- Média szűrő
- Kép
- Videó
- GIF
- RAW kép
- SVG
- Portraits
- A kiválasztott szűrők nem találtak médiafájlokat.
- Szűrők változtatása
-
-
- Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja?
- Kizárás
- Kizárt mappák
- Kizárt mappák kezelése
- Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti.
- Kizárja a szülő mappát?
- A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót.
- Összes eltávolítása
- Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat.
- Rejtett mappák
- Rejtett mappák kezelése
- Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal.
-
-
- Befoglalt mappák
- Befoglalt mappák kezelése
- Mappa hozzáadása
- Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat.
- Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával.
-
-
- Átméretezés
- Kiválasztás átméretezése és mentés
- Szélesség
- Magasság
- Képarány megtartása
- Írjon be érvényes felbontást
-
-
- Szerkesztő
- Mentés
- Forgatás
- Elérési útvonal
- Érvénytelen kép elérési útvonal
- Sikertelen kép szerkesztés
+ Átméretezett verzió megosztása
+ 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!
+ Váltás a fájlkeresésre az összes látható mappában
+
+
+ Média szűrő
+ Kép
+ Videó
+ GIF
+ RAW kép
+ SVG
+ Portraits
+ A kiválasztott szűrők nem találtak médiafájlokat.
+ Szűrők változtatása
+
+
+ Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja?
+ Kizárás
+ Kizárt mappák
+ Kizárt mappák kezelése
+ Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti.
+ Kizárja a szülő mappát?
+ A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót.
+ Összes eltávolítása
+ Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat.
+ Rejtett mappák
+ Rejtett mappák kezelése
+ Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal.
+
+
+ Befoglalt mappák
+ Befoglalt mappák kezelése
+ Mappa hozzáadása
+ Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat.
+ Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával.
+
+
+ Átméretezés
+ Kiválasztás átméretezése és mentés
+ Szélesség
+ Magasság
+ Képarány megtartása
+ Írjon be érvényes felbontást
+
+
+ Szerkesztő
+ Forgatás
+ Érvénytelen kép elérési útvonal
+ Sikertelen kép szerkesztés
Image editing cancelled
- A fájl szerkesztése sikerült
- Kép szerkesztés ezzel:
- Nem található kép szerkesztő
- Ismeretlen fájl hely
- Nem lehet felülírni a forrás fájlt
- Forgatás balra
- Forgatás jobbra
- 180º-os forgatás
- Tükrözés
- Tükrözés vízszintesen
- Tükrözés függőlegesen
- Szabad
-
-
- Egyéb
-
-
-
- Simple Wallpaper
- Beállítás háttérképként
- Nem sikerült a beállítás háttérképként
- Beállítás háttérképként ezzel:
- Beállítás háttérképként...
- Sikeresen beállítva háttérképnek
- Álló képarány
- Fekvő képarány
- Kezdő képernyő
- Zárolás képernyő
- Kezdő és zárolás képernyő
-
-
- Diavetítés
- Időköz (másodperc):
- Fotók befoglalása
- Videók befoglalása
- GIF befoglalása
- Véletlen sorrend
- Áthelyezés hátra
- Diavetítés ismétlése
- Animáció
- Nincs
- Áttűnés
- Csúsztatás
- A diavetítés vége
- A diavetítéshez nem található média
-
-
- Nézet típus változtatása
- Rács
- Lista
- Közvetlen almappa csoport
-
-
- Csoportosítás
- Nincs csoportosítás
- Mappa
- Utolsó módosítás
- Utoljára módosítva (naponta)
- Utoljára módosítva (havonta)
- Dátum
- Felvétel dátuma (naponta)
- Felvétel dátuma (havonta)
- Fájl típus
- Kiterjesztés
- Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező
-
-
- Mappa mutatása a widgeten:
- Mutassa a mappa nevét
-
-
- Automatikus videó lejátszás
- Emlékezzen a videó utolsó lejátszási pozícióra
- Fájlnév láthatóság módosítása
- Videók ismétlése
- Animált GIF miniatűr
- Maximális fényerő a teljes képernyős médiánál
- Miniatűrök négyzet alakúra vágva
- Mutassa a videó időtartamát
- Teljes képernyős média forgatása
- Rendszer beállítások
- Eszköz elforgatás
- Képarány
- Fekete háttérszín teljes képernyős médiánál
- Miniatűrök görgetése vízszintesen
- Automatikusan elrejti a rendszer UI-t teljes képernyőn
- Az üres mappák törlése a tartalom törlése után
- Engedélyezi a kép fényerő módosítást függőleges gesztusokkal
- Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal
- Mutassa a fájlok számát a mappákban
- Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül
- Bővített részletek kezelése
- Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában
- Engedélyezi a azonnali média váltást a képernyő oldalára kattintva
- Engedélyezi a képek mély nagyítását
- Bővített részletek elrejtése az állapotsor rejtett állapotában
- Mutassa a művelet gombokat a képernyő alján
- Mutassa a Lomtárat a mappák képernyőjén
- Mély nagyítású képek
- Mutassa a képeket a lehető legjobb minőségben
- Mutassa a Lomtárat a fő képernyő utolsó elemeként
- Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal
- Engedélyezi az 1:1 nagyítást két dupla érintéssel
- Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal
- Notch mutatása, ha elérhető
- Engedélyezi a kép forgatását gesztusokkal
- Fájl betöltés prioritása
- Gyors
- Kiegyensúlyozott
- Kerülje az érvénytelen fájlok mutatását
- Mutassa a kép fájl típusokat
-
-
- Miniatűrök
- Teljes képernyős média
- Bővített részletek
- Gomb műveletek
-
-
- Látható gomb műveletek kezelése
- Kedvencek módosítása
- Fájl láthatóság módosítása
-
-
- Egyéni
- Alaphelyzetbe
- Square
- Transform
- Szűrő
- Nincs
- Beállít
- Árnyékok
- Exposure
- Highlights
- Fényesség
- Kontraszt
- Színtelítettség
- Világosság
- Gamma
- Blacks
- Whites
- Színhőmérséklet
- Élesség
- Alaphelyzetbe
- Fókusz
- Nincs
- Radial
- Linear
- Tükrözött
- Gaussian
- Szöveg
- Szöveg beállítások
- Szöveg színe
- Betűtípus
- Hozzáadás
- Szerkesztés
- Straighten
- Betűtípus
- Szín
- Háttérszín
- Igazítás
- Előre
- Törlés
- Saját szöveg
- Ecset
- Szín
- Méret
- Keménység
- Előre
- Törlés
- Ecset színe
- Szerkesztő
- Bezárja a szerkesztőt?
- Valóban el akarja dobni a képet?
- Igen
- Nem
- Mégsem
- Elfogad
- Mentés
- Kép exportálása...
- %s kép exportálása
- Tükrözés vízszintesen
- Tükrözés függőlegesen
- Visszavonás
- Visszavom
- Színválasztó
- Áttetsző
- Fehér
- Szürke
- Fekete
- Világoskék
- Kék
- Bíbor
- Orchidea
- Rózsaszín
- Piros
- Narancssárga
- Arany
- Sárga
- Oliva
- Zöld
- Aquamarin
- Pipetta szín
-
-
- Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának?
- Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot.
+ A fájl szerkesztése sikerült
+ Kép szerkesztés ezzel:
+ Nem található kép szerkesztő
+ Ismeretlen fájl hely
+ Nem lehet felülírni a forrás fájlt
+ Forgatás balra
+ Forgatás jobbra
+ 180º-os forgatás
+ Tükrözés
+ Tükrözés vízszintesen
+ Tükrözés függőlegesen
+ Szabad
+
+
+ Egyéb
+
+
+
+ Simple Wallpaper
+ Beállítás háttérképként
+ Nem sikerült a beállítás háttérképként
+ Beállítás háttérképként ezzel:
+ Beállítás háttérképként...
+ Sikeresen beállítva háttérképnek
+ Álló képarány
+ Fekvő képarány
+ Kezdő képernyő
+ Zárolás képernyő
+ Kezdő és zárolás képernyő
+
+
+ Diavetítés
+ Időköz (másodperc):
+ Fotók befoglalása
+ Videók befoglalása
+ GIF befoglalása
+ Véletlen sorrend
+ Áthelyezés hátra
+ Diavetítés ismétlése
+ Animáció
+ Nincs
+ Áttűnés
+ Csúsztatás
+ A diavetítés vége
+ A diavetítéshez nem található média
+
+
+ Nézet típus változtatása
+ Rács
+ Lista
+ Közvetlen almappa csoport
+
+
+ Csoportosítás
+ Nincs csoportosítás
+ Mappa
+ Utolsó módosítás
+ Utoljára módosítva (naponta)
+ Utoljára módosítva (havonta)
+ Dátum
+ Felvétel dátuma (naponta)
+ Felvétel dátuma (havonta)
+ Fájl típus
+ Kiterjesztés
+ Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező
+
+
+ Mappa mutatása a widgeten:
+ Mutassa a mappa nevét
+
+
+ Automatikus videó lejátszás
+ Emlékezzen a videó utolsó lejátszási pozícióra
+ Fájlnév láthatóság módosítása
+ Videók ismétlése
+ Animált GIF miniatűr
+ Maximális fényerő a teljes képernyős médiánál
+ Miniatűrök négyzet alakúra vágva
+ Mutassa a videó időtartamát
+ Teljes képernyős média forgatása
+ Rendszer beállítások
+ Eszköz elforgatás
+ Képarány
+ Fekete háttérszín teljes képernyős médiánál
+ Miniatűrök görgetése vízszintesen
+ Automatikusan elrejti a rendszer UI-t teljes képernyőn
+ Az üres mappák törlése a tartalom törlése után
+ Engedélyezi a kép fényerő módosítást függőleges gesztusokkal
+ Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal
+ Mutassa a fájlok számát a mappákban
+ Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül
+ Bővített részletek kezelése
+ Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában
+ Engedélyezi a azonnali média váltást a képernyő oldalára kattintva
+ Engedélyezi a képek mély nagyítását
+ Bővített részletek elrejtése az állapotsor rejtett állapotában
+ Mutassa a művelet gombokat a képernyő alján
+ Mutassa a Lomtárat a mappák képernyőjén
+ Mély nagyítású képek
+ Mutassa a képeket a lehető legjobb minőségben
+ Mutassa a Lomtárat a fő képernyő utolsó elemeként
+ Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal
+ Engedélyezi az 1:1 nagyítást két dupla érintéssel
+ Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal
+ Notch mutatása, ha elérhető
+ Engedélyezi a kép forgatását gesztusokkal
+ Fájl betöltés prioritása
+ Gyors
+ Kiegyensúlyozott
+ Kerülje az érvénytelen fájlok mutatását
+ Mutassa a kép fájl típusokat
+
+
+ Miniatűrök
+ Teljes képernyős média
+ Bővített részletek
+ Gomb műveletek
+
+
+ Látható gomb műveletek kezelése
+ Kedvencek módosítása
+ Fájl láthatóság módosítása
+
+
+ Egyéni
+ Alaphelyzetbe
+ Square
+ Transform
+ Szűrő
+ Nincs
+ Beállít
+ Árnyékok
+ Exposure
+ Highlights
+ Fényesség
+ Kontraszt
+ Színtelítettség
+ Világosság
+ Gamma
+ Blacks
+ Whites
+ Színhőmérséklet
+ Élesség
+ Alaphelyzetbe
+ Fókusz
+ Nincs
+ Radial
+ Linear
+ Tükrözött
+ Gaussian
+ Szöveg
+ Szöveg beállítások
+ Szöveg színe
+ Betűtípus
+ Hozzáadás
+ Szerkesztés
+ Straighten
+ Betűtípus
+ Szín
+ Háttérszín
+ Igazítás
+ Előre
+ Törlés
+ Saját szöveg
+ Ecset
+ Szín
+ Méret
+ Keménység
+ Előre
+ Törlés
+ Ecset színe
+ Szerkesztő
+ Bezárja a szerkesztőt?
+ Valóban el akarja dobni a képet?
+ Igen
+ Nem
+ Mégsem
+ Elfogad
+ Mentés
+ Kép exportálása...
+ %s kép exportálása
+ Tükrözés vízszintesen
+ Tükrözés függőlegesen
+ Visszavonás
+ Visszavom
+ Színválasztó
+ Áttetsző
+ Fehér
+ Szürke
+ Fekete
+ Világoskék
+ Kék
+ Bíbor
+ Orchidea
+ Rózsaszín
+ Piros
+ Narancssárga
+ Arany
+ Sárga
+ Oliva
+ Zöld
+ Aquamarin
+ Pipetta szín
+
+
+ Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának?
+ Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot.
A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót, megjelenik egy alkalmazásválasztó, ahol kiválaszthatja a Simple Gallery lehetőséget, és beállíthatja alapértelmezett alkalmazásnak.
- Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek?
- 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat.
- Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen?
- Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi.
- Hogyan tudom előre tekerni a videókat?
- 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.
- Mi a különbség a mappa elrejtése és kizárása között?
- A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is.
- Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák?
- Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen.
- A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek?
- Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát.
- Mi van, ha csak néhány különleges mappát szeretnék látni?
- A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban.
+ Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek?
+ 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat.
+ Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen?
+ Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi.
+ Hogyan tudom előre tekerni a videókat?
+ 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.
+ Mi a különbség a mappa elrejtése és kizárása között?
+ A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is.
+ Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák?
+ Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen.
+ A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek?
+ Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát.
+ Mi van, ha csak néhány különleges mappát szeretnék látni?
+ A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban.
Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglalás rekurzív. Ha egy mappát hozzáadunk mindkettőhöz, akkor megjelenik.
- Tudom vágni a képeket ezzel az alkalmazással?
- Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben.
- Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit?
- Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket.
- A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani?
- Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg.
- Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget?
- Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban.
- Elrejtettem egy fájlt/mappát. Hogyan tudom látni?
- A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti.
- Miért használ az alkalmazás ennyi helyet?
- Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik.
-
-
-
- Simple Gallery Pro - Photo Manager & Editor
-
- Browse your memories without any interruptions with this photo and video gallery
-
+ Tudom vágni a képeket ezzel az alkalmazással?
+ Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben.
+ Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit?
+ Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket.
+ A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani?
+ Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg.
+ Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget?
+ Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban.
+ Elrejtettem egy fájlt/mappát. Hogyan tudom látni?
+ A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti.
+ Miért használ az alkalmazás ennyi helyet?
+ Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik.
+
+
+
+ Simple Gallery Pro - Photo Manager & Editor
+
+ Browse your memories without any interruptions with this photo and video gallery
+
Simple Gallery Pro is a highly customizable offline gallery. Organize & edit your photos, recover deleted files with the recycle bin, protect & hide files and view a huge variety of different photo & video formats including RAW, SVG and much more.
The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected.
@@ -381,7 +378,7 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal
Reddit:
https://www.reddit.com/r/SimpleMobileTools
-
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 314d1c2aa..578450ecd 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -19,7 +19,6 @@
Kurangi jumlah kolom
Ubah gambar kover
Pilih foto
- Gunakan default
Volume
Kecerahan
Kunci orientasi
@@ -78,9 +77,7 @@
Penyunting
- Simpan
Rotasi
- Jalur
Jalur gambar tidak valid
Gagal menyunting gambar
Image editing cancelled
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index a7d39d9ad..70c4eb0e8 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -19,7 +19,6 @@
Kurangi jumlah kolom
Ubah gambar kover
Pilih foto
- Gunakan default
Volume
Kecerahan
Kunci orientasi
@@ -78,9 +77,7 @@
Penyunting
- Simpan
Rotasi
- Jalur
Jalur gambar tidak valid
Gagal menyunting gambar
Image editing cancelled
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index bf92f199c..434755d3f 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -19,7 +19,6 @@
Riduci numero colonne
Cambia immagine copertina
Seleziona foto
- Usa predefinita
Volume
Luminosità
Blocca orientamento
@@ -31,7 +30,7 @@
Correggi valore Data acquisizione
Correzione in corso…
Date aggiornate correttamente
- No Date Taken values have been found
+ Nessun valore trovato per data creazione
Condividi una versione ridimensionata
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!
Passa alla ricerca file su tutte le cartelle visibili
@@ -78,13 +77,11 @@
Editor
- Salva
Ruota
- Percorso
Percorso dell\'immagine non valido
Modifica dell\'immagine fallita
- Image editing cancelled
- File edited successfully
+ Modifica immagine annullata
+ File modificato correttamente
Modifica immagine con:
Editor delle immagini non trovato
Posizione del file sconosciuta
@@ -294,7 +291,7 @@
Come posso fare apparire un album sempre in cima?
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.
Come avanzo velocemente nei video?
- 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.
+ Puoi farlo con un doppio tocco del lato dello schermo o toccando i testi di durata attuale o massima vicino alla barra. Se attivi l\'apertura di video su uno schermo separato nelle impostazioni, puoi anche usare i gesti orizzontali.
Che differenza c\'è tra nascondere ed escludere una cartella?
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.
Perchè vengono mostrate cartelle con copertine o adesivi di musica?
@@ -321,7 +318,7 @@
Semplice Galleria Pro - gestore di foto & editor
- Browse your memories without any interruptions with this photo and video gallery
+ Sfoglia le tue memorie senza interruzioni con questa galleria di foto e video
Semplice Galleria Pro è una galleria offline altamente personalizzabile. Organizza, modifica le tue foto, recupera file con il cestino, progetti e nascondi file e visualizza una grande varietà di formati foto e video, inclusi RAW, SVG e molti altri.
@@ -369,7 +366,7 @@
Controlla le altre applicazioni qui:
https://www.simplemobiletools.com
- Standalone website of Simple Gallery Pro:
+ Sito internet di Semplice Galleria Pro:
https://www.simplemobiletools.com/gallery
Facebook:
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index d4f8effec..8d746ba15 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -19,7 +19,6 @@
列数を減らす
カバー画像を変更
写真を選択
- デフォルトに戻す
音量
明るさ
画面の向きを固定する
@@ -78,9 +77,7 @@
画像編集
- 保存
回転
- パス
無効な画像パス
画像の編集に失敗しました
Image editing cancelled
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 866bded0e..166637daa 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -19,7 +19,6 @@
섬네일크기 확대
커버 사진 변경
사진 선택
- 기본값 사용
볼륨
밝기
화면 회전 잠금
@@ -78,9 +77,7 @@
편집
- 저장
회전
- 경로
유효하지 않은 사진 경로
사진 편집 실패
Image editing cancelled
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index 2384a7e76..636a4faba 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -19,7 +19,6 @@
Sumažinti stulpelių skaičių
Pakeisti viršelio atvaizdą
Pasirinkti nuotrauką
- Naudoti numatytąjį
Garsas
Ryškumas
Užrakinti orientaciją
@@ -78,9 +77,7 @@
Redaktorius
- Saugoti
Sukti
- Kelias
Netinkamas atvaizdo kelias
Atvaizdo redagavimas nepavyko
Image editing cancelled
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 305493c05..0c3e94123 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -19,7 +19,6 @@
Reduser antall kolonner
Endre omslagsbilde
Velg foto
- Bruk standard
Volum
Lysstyrke
Lås skjermorientering
@@ -78,9 +77,7 @@
Redigering
- Lagre
Roter
- Bane
Ugyldig bildebane
Bilderedigering feilet
Image editing cancelled
diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml
index ed0704c7b..0bcb13087 100644
--- a/app/src/main/res/values-ne/strings.xml
+++ b/app/src/main/res/values-ne/strings.xml
@@ -19,7 +19,6 @@
कोलम सङ्खा घटाउनुहोस
कभर तस्बिर परिवर्तन गर्नुहोस
फोटो चयन गर्नुहोस
- डिफल्ट प्रयोग गर्नुहोस
भोलुम
उज्यालोपन
Lock orientation
@@ -78,9 +77,7 @@
सम्पादक
- बचत
घुमाउने
- Path
Invalid image path
Image editing failed
Image editing cancelled
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index cb41c176c..fec603e35 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -19,7 +19,6 @@
Minder kolommen
Afbeelding omslag wijzigen
Foto selecteren
- Standaard gebruiken
Volume
Helderheid
Schermoriëntatie vergrendelen
@@ -78,9 +77,7 @@
Bewerken
- Opslaan
Draaien
- Pad
Ongeldig pad naar afbeelding
Fout bij bewerken van afbeelding
Afbeelding bewerken is geannuleerd
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 7bab7b237..ece1bddf5 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -19,7 +19,6 @@
Zmniejsz liczbę kolumn
Zmień okładkę
Wybierz obraz
- Użyj domyślnej
Głośność
Jasność
Zablokuj orientację ekranu
@@ -78,9 +77,7 @@
Edycja
- Zapisz
Obróć
- Ścieżka
Nieprawidłowa ścieżka
Edycja obrazu nie powiodła się
Anulowano edycję obrazu
@@ -191,7 +188,7 @@
Szybkość
Kompromis
Unikaj pokazywania niewłaściwych plików
- Show image file types
+ Pokazuj rozszerzenia zdjęć
Miniatury
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 0be9a127e..67d38e5a1 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -19,7 +19,6 @@
Reduzir número de colunas
Trocar imagem de capa
Selecionar foto
- Usar padrão
Volume
Brilho
Travar orientação
@@ -31,7 +30,7 @@
Corrigir data da foto
Corrigindo…
Datas corrigidas com sucesso
- No Date Taken values have been found
+ Nenhum valor de data foi encontrado
Compartilhar uma versão redimensionada
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!
Alternar para a pesquisa de arquivos em todas as pastas visíveis
@@ -78,12 +77,10 @@
Editor
- Salvar
Girar
- Caminho
Caminho inválido
Falha na edição da imagem
- Image editing cancelled
+ Edição de imagem cancelada
Arquivo editado com sucesso
Editar imagem com:
Nenhum editor de imagem encontrado
@@ -294,7 +291,7 @@
O que posso fazer para que uma pasta sempre apareça no topo da lista?
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.
Como faço para avançar rapidamente um vídeo (fast forward)?
- 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.
+ Você pode fazer isso tocando duas vezes na lateral da tela ou tocando nos textos atuais ou de duração máxima próximos à barra de busca. Se você ativar a abertura de vídeos em uma tela separada nas configurações do aplicativo, também poderá usar gestos horizontais.
Qual é a diferença entre ocultar e ignorar uma pasta?
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.
Porque pastas com capas de CD de música ou figurinhas aparecem na lista?
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 674a4617d..8f8a6eb54 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -19,7 +19,6 @@
Diminuir número de colunas
Alterar imagem de capa
Selecionar foto
- Predefinição
Volume
Brilho
Bloquear orientação
@@ -78,9 +77,7 @@
Editor
- Guardar
Rodar
- Caminho
Caminho inválido
Falha na edição da imagem
Edição de imagem cancelada
@@ -369,7 +366,7 @@
Consulte todas as aplicações Simple Tools aqui:
https://www.simplemobiletools.com
- Standalone website of Simple Gallery Pro:
+ Sítio web de Simple Gallery Pro:
https://www.simplemobiletools.com/gallery
Facebook:
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index e870e1d94..2d9568cba 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -19,7 +19,6 @@
Убрать столбец
Изменить обложку
Выбрать изображение
- Использовать по умолчанию
Громкость
Яркость
Заблокировать ориентацию
@@ -78,9 +77,7 @@
Редактор
- Сохранить
Поворот
- Путь
Недопустимый путь изображения
Редактирование изображения не выполнено
Редактирование изображения отменено
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 48acd5540..0f1135756 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -19,7 +19,6 @@
Znížiť počet stĺpcov
Zmeniť obal albumu
Zvoliť foto
- Použiť predvolený
Hlasitosť
Jas
Uzamknúť otočenie obrazovky
@@ -78,9 +77,7 @@
Editor
- Uložiť
Otočiť
- Cesta
Neplatná cesta
Úprava súboru zlyhala
Úprava súboru bola zrušená
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 05d0d4ef8..b1c9df095 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -19,7 +19,6 @@
Zmanjšaj število stolpcev
Spremeni naslovno fotografijo
Izberi fotografijo
- Uporabi privzeto
Glasnost
Svetlost
Zakleni usmerjenost
@@ -78,9 +77,7 @@
Urejevalnik
- Shrani
Zavrti
- Pot
Napačna pot
Urejanje slike ni uspelo
Image editing cancelled
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index a300177ac..052c9045f 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -19,7 +19,6 @@
Смањи број колона
Промени насловну слику
Изабери фотографију
- Користи подразумевано
Јачина звука
Осветљење
Закључај оријентацију
@@ -78,9 +77,7 @@
Едитор
- Сачувај
Ротирај
- Стаза
Неисправна стаза слике
Измена слике неуспешна
Image editing cancelled
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 11ba26fbb..2557a5934 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -19,7 +19,6 @@
Minska antalet kolumner
Byt omslagsbild
Välj foto
- Använd standard
Volym
Ljusstyrka
Aktivera rotationslås
@@ -78,9 +77,7 @@
Redigerare
- Spara
Rotera
- Sökväg
Ogiltig bildsökväg
Bilden kunde inte redigeras
Image editing cancelled
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 2aff9f791..2fd5cea83 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -19,7 +19,6 @@
Sütun sayısını azalt
Kapak resmini değiştir
Fotoğraf seç
- Varsayılanı kullan
Ses
Parlaklık
Yönü kilitle
@@ -78,9 +77,7 @@
Düzenleyici
- Kaydet
Döndür
- Yol
Geçersiz resim yolu
Resim düzenleme başarısız
Image editing cancelled
@@ -369,7 +366,7 @@
Tüm Basit Araçlar paketini buradan inceleyin:
https://www.simplemobiletools.com
- Basit Galeri Pro'nun bağımsız web sitesi:
+ Basit Galeri Pro\'nun bağımsız web sitesi:
https://www.simplemobiletools.com/gallery
Facebook:
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 857801d58..a9ecbb25d 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -19,7 +19,6 @@
Зменшити кількість колонок
Змінити обкладинку
Вибрати фото
- Використовувати за-замовчуванням
Об\'єм
Яскравість
Закріпити орієнтацію
@@ -78,9 +77,7 @@
Редактор
- Зберегти
Обернути
- Шлях
Неприпустимий шлях до зображення
Не вдалося редагувати зображення
Image editing cancelled
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 9fc56dcaa..f4f322e0a 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -19,7 +19,6 @@
Giảm số lượng cột
Thay đổi ảnh bìa
Chọn ảnh
- Sử dụng mặc định
Âm lượng
Độ sáng
Khóa xoay màn hình
@@ -78,9 +77,7 @@
Trình biên tập
- Lưu
Xoay
- Đường dẫn
Đường dẫn hình ảnh không hợp lệ
Thất bại
Image editing cancelled
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index edc71fd10..cccb42685 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -19,7 +19,6 @@
显示更少项目
更换封面图片
选择图片
- 使用默认
音量
亮度
锁定屏幕方向
@@ -31,7 +30,7 @@
修复拍摄日期
正在修复…
日期修复成功
- No Date Taken values have been found
+ 没有找到拍摄日期
调整尺寸并分享
嘿,\n\n你似乎已经从旧的免费版应用升级。你现在可以卸载旧版本,在该版本的应用设置顶部有一个“升级到专业版”按钮。\n\n此操作会删除回收站项目,取消标记收藏项目,并重置应用设置。\n\n谢谢!
切换文件搜索范围为所有可见的文件夹
@@ -42,8 +41,8 @@
视频
GIF
RAW 图片
- SVG
- Portraits
+ SVG 矢量图
+ 人像
没有媒体文件匹配选定的筛选条件。
更改筛选条件
@@ -78,13 +77,11 @@
编辑器
- 保存
旋转
- 路径
无效的图片路径
图片编辑失败
- Image editing cancelled
- File edited successfully
+ 取消图片编辑
+ 文件编辑成功
编辑方式:
没有找到图片编辑器
未知文件位置
@@ -205,85 +202,85 @@
隐藏文件
- Custom
- Reset
- Square
- Transform
- Filter
- None
- Adjust
- Shadows
- Exposure
- Highlights
- Brightness
- Contrast
- Saturation
- Clarity
- Gamma
- Blacks
- Whites
- Temperature
- Sharpness
- Reset
- Focus
- None
- Radial
- Linear
- Mirrored
- Gaussian
- Text
- Text Options
- Text Color
- Font
- Add
- Edit
- Straighten
- Font
- Color
- BG Color
- Alignment
- To Front
- Delete
- Your text
- Brush
- Color
- Size
- Hardness
- To Front
- Delete
- Brush Color
- Editor
- Close Editor?
- Do you really want to discard the image?
- Yes
- No
- Cancel
- Accept
- Save
- Exporting image…
- Exporting image %s.
- Flip H
- Flip V
- Undo
- Redo
- Color Picker
- Transparent
- White
- Gray
- Black
- Light blue
- Blue
- Purple
- Orchid
- Pink
- Red
- Orange
- Gold
- Yellow
- Olive
- Green
- Aquamarin
- Pipettable color
+ 自定义
+ 重置
+ 正方形
+ 裁剪旋转
+ 滤镜
+ 无
+ 调整
+ 阴影
+ 曝光
+ 高光
+ 亮度
+ 对比度
+ 饱和度
+ 清晰度
+ 伽马
+ 黑色
+ 白色
+ 色温
+ 锐化
+ 重置
+ 对焦
+ 无
+ 放射
+ 线性
+ 镜像
+ 高斯
+ 文字
+ 文字选项
+ 文字颜色
+ 字体
+ 添加
+ 编辑
+ 拉伸
+ 字体
+ 颜色
+ 背景颜色
+ 对齐
+ 移到最上层
+ 删除
+ 你的文字
+ 笔刷
+ 颜色
+ 尺寸
+ 硬度
+ 移到最上层
+ 删除
+ 笔刷颜色
+ 编辑器
+ 关闭编辑器?
+ 您确定要放弃编辑吗?
+ 是
+ 否
+ 取消
+ 接受
+ 保存
+ 图片导出中…
+ 图片%s导出中。
+ 水平翻转
+ 垂直翻转
+ 复原
+ 取消复原
+ 选色器
+ 透明
+ 白色
+ 灰色
+ 黑色
+ 浅蓝
+ 蓝色
+ 紫色
+ 淡紫
+ 粉红
+ 红色
+ 橘色
+ 金色
+ 黄色
+ 橄榄绿
+ 绿色
+ 碧绿
+ 取色器
如何把简约图库设置为设备的默认图库?
@@ -293,7 +290,7 @@
如何让某个相册始终显示在最上面?
你可以长按该相册并在操作栏中点击图钉图标,这样 就可以将其固定在顶部了。你也可以固定多个文件夹,固定项目将按照默认排序方法排序。
如何快进/快退视频?
- 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.
+ 您可以双击屏幕边缘或点击搜索栏附近的当前或总时长的文字。 如果您在应用设置中启用了在独立页面播放视频,则也可以使用水平手势。
文件夹的隐藏和排除有什么区别?
排除功能只是防止其在简约图库中显示,而隐藏功能则使用的是系统的方法,这样做也会在其他图库中隐藏。它的工作原理是在给定的文件夹中创建一个空的.nomedia文件,你可以使用任何文件管理器删除它。
为什么会出现音乐艺术家封面或贴纸文件夹?
@@ -319,7 +316,7 @@
简约图库 Pro - 图片管理 & 编辑
- Browse your memories without any interruptions with this photo and video gallery
+ 使用此照片和视频库来毫无阻碍地浏览您的回忆
简约图库 Pro 是一个高度可定制的图库。管理并编辑你的照片,从回收站中恢复已删除的照片,保护并隐藏文件,查看RAW,SVG等等多种照片和视频格式。
@@ -367,7 +364,7 @@
查看简约系列的所有应用:
https://www.simplemobiletools.com
- Standalone website of Simple Gallery Pro:
+ 简约图库 Pro的独立网站:
https://www.simplemobiletools.com/gallery
Facebook:
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 665112cfb..d9eea967b 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -19,7 +19,6 @@
減少欄數
更換封面圖片
選擇相片
- 使用預設
音量
亮度
鎖定方向
@@ -78,9 +77,7 @@
編輯器
- 儲存
旋轉
- 路徑
無效的圖片路徑
圖片編輯失敗
Image editing cancelled
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index a4d7239bd..40615de37 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -19,7 +19,6 @@
減少欄數
更換封面圖片
選擇相片
- 使用預設
音量
亮度
鎖定方向
@@ -78,9 +77,7 @@
編輯器
- 儲存
旋轉
- 路徑
無效的圖片路徑
圖片編輯失敗
圖片編輯取消
@@ -189,7 +186,7 @@
允許用手勢來旋轉圖片
檔案讀取優先權
速度
- 折衷
+ 妥協
避免顯示無效的檔案
顯示圖片檔案類型
@@ -369,7 +366,7 @@
於此查看簡易工具系列全套:
https://www.simplemobiletools.com
- Standalone website of Simple Gallery Pro:
+ 簡易相簿 Pro的獨立網站:
https://www.simplemobiletools.com/gallery
Facebook:
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 920cea2e4..d50f8f240 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -19,7 +19,6 @@
Reduce column count
Change cover image
Select photo
- Use default
Volume
Brightness
Lock orientation
@@ -78,9 +77,7 @@
Editor
- Save
Rotate
- Path
Invalid image path
Image editing failed
Image editing cancelled
diff --git a/build.gradle b/build.gradle
index 84a9b3b9f..35d026a68 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.3.61'
+ ext.kotlin_version = '1.3.71'
ext.is_proprietary = gradle.startParameter.taskNames.any { task -> task.contains("Proprietary") }
repositories {
@@ -13,10 +13,10 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.3'
+ classpath 'com.android.tools.build:gradle:3.6.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
if (is_proprietary) {
- classpath 'ly.img.android.pesdk:plugin:7.1.9'
+ classpath 'ly.img.android.pesdk:plugin:7.1.12'
}
// NOTE: Do not place your application dependencies here; they belong
diff --git a/fastlane/metadata/android/en-US/changelogs/299.txt b/fastlane/metadata/android/en-US/changelogs/299.txt
new file mode 100644
index 000000000..aaacdfa46
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/299.txt
@@ -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
diff --git a/fastlane/metadata/android/en-US/changelogs/300.txt b/fastlane/metadata/android/en-US/changelogs/300.txt
new file mode 100644
index 000000000..351f5c268
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/300.txt
@@ -0,0 +1,4 @@
+ * Properly delete playing videos
+ * Removed the Manage Hidden Folders settings button on Android 10+, it no longer works
+ * Added many changes under the hood in preparation for handling Scoped Storage soon
+ * Do not require the Storage permission at some third party intents
diff --git a/fastlane/metadata/android/en-US/changelogs/301.txt b/fastlane/metadata/android/en-US/changelogs/301.txt
new file mode 100644
index 000000000..9c594c40d
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/301.txt
@@ -0,0 +1,3 @@
+ * Fixed some SD card file related glitches
+ * Improved some third party intent handling
+ * Added some translation and stability improvements
diff --git a/fastlane/metadata/android/en-US/images/app_icon.png b/fastlane/metadata/android/en-US/images/app_icon.png
new file mode 100644
index 000000000..84db52906
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/app_icon.png differ
diff --git a/fastlane/metadata/android/en-US/images/circle.png b/fastlane/metadata/android/en-US/images/circle.png
deleted file mode 100644
index 13a06c9c9..000000000
Binary files a/fastlane/metadata/android/en-US/images/circle.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png
index 27b47a155..313517f4f 100644
Binary files a/fastlane/metadata/android/en-US/images/featureGraphic.png and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ
diff --git a/fastlane/metadata/android/en-US/images/featureGraphic_classic.png b/fastlane/metadata/android/en-US/images/featureGraphic_classic.png
new file mode 100644
index 000000000..fa6f71d35
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/featureGraphic_classic.png differ
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
index 2056c1e20..b2ea97d57 100644
Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ
diff --git a/fastlane/metadata/android/en-US/images/promo_graphic.png b/fastlane/metadata/android/en-US/images/promo_graphic.png
new file mode 100644
index 000000000..52aedd675
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/promo_graphic.png differ
diff --git a/fastlane/metadata/android/en-US/images/square.png b/fastlane/metadata/android/en-US/images/square.png
index 777308907..353caac87 100644
Binary files a/fastlane/metadata/android/en-US/images/square.png and b/fastlane/metadata/android/en-US/images/square.png differ
diff --git a/fastlane/metadata/android/en-US/images/square.xcf b/fastlane/metadata/android/en-US/images/square.xcf
index 526ac388f..39e96feb0 100644
Binary files a/fastlane/metadata/android/en-US/images/square.xcf and b/fastlane/metadata/android/en-US/images/square.xcf differ
diff --git a/fastlane/metadata/android/en-US/images/tv_banner.png b/fastlane/metadata/android/en-US/images/tv_banner.png
new file mode 100644
index 000000000..a9d0ecabc
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/tv_banner.png differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e9392819f..aa6500f74 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Aug 27 10:46:16 CEST 2019
+#Thu Mar 19 12:33:01 CET 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip