From 199cf8b9bfd43e42109d530b22270421e39779bd Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 6 Apr 2019 12:37:04 +0300 Subject: [PATCH 001/165] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 39de7f12a..b6a2fe6b3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -225,7 +225,7 @@ - Simple Gallery Pro: Photo Manager & Editor + Simple Gallery Pro: управление и редактирование изображений Галерея без рекламы. Управление, изменение, восстановление и защита фото и видео From 7dc00d3c7023f333e3ca9de9a77124c41f7827cd Mon Sep 17 00:00:00 2001 From: solokot Date: Mon, 8 Apr 2019 22:48:05 +0300 Subject: [PATCH 002/165] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index b6a2fe6b3..669075f5e 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -225,7 +225,7 @@ - Simple Gallery Pro: управление и редактирование изображений + Галерея: управление и редактирование изображений Галерея без рекламы. Управление, изменение, восстановление и защита фото и видео From afa29ec5b16ef0ecd11f457b9817ab0ccca2182d Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 18:49:51 +0200 Subject: [PATCH 003/165] tweak direct subfolder grouping, show also folders that contain no files directly --- .../gallery/pro/extensions/Context.kt | 94 ++++++++++++++----- .../gallery/pro/models/Directory.kt | 3 +- 2 files changed, 72 insertions(+), 25 deletions(-) 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 6560e9912..972443d7b 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 @@ -209,31 +209,74 @@ fun Context.getDirsToShow(dirs: ArrayList, allDirs: ArrayList, currentPathPrefix: String): ArrayList { val folders = dirs.map { it.path }.sorted().toMutableSet() as HashSet - val internalPath = internalStoragePath - val sdPath = sdCardPath val currentPaths = LinkedHashSet() + val foldersWithoutMediaFiles = ArrayList() + var newDirId = 1000L - folders.forEach { - val path = it - if (path != RECYCLE_BIN && path != FAVORITES && !path.equals(internalPath, true) && !path.equals(sdPath, true)) { - if (currentPathPrefix.isNotEmpty()) { - if (path == currentPathPrefix || File(path).parent.equals(currentPathPrefix, true)) { - currentPaths.add(path) - } - } else if (folders.any { !it.equals(path, true) && (File(path).parent.equals(it, true) || File(it).parent.equals(File(path).parent, true)) }) { - // if we have folders like - // /storage/emulated/0/Pictures/Images and - // /storage/emulated/0/Pictures/Screenshots, - // but /storage/emulated/0/Pictures is empty, show Images and Screenshots as separate folders, do not group them at /Pictures - val parent = File(path).parent - if (folders.contains(parent)) { - currentPaths.add(parent) - } else { - currentPaths.add(path) - } - } else { - currentPaths.add(path) + for (path in folders) { + if (path == RECYCLE_BIN || path == FAVORITES) { + continue + } + + if (currentPathPrefix.isNotEmpty()) { + if (!path.startsWith(currentPathPrefix, true)) { + continue } + + if (!File(path).parent.equals(currentPathPrefix, true)) { + continue + } + } + + if (currentPathPrefix.isNotEmpty() && path == currentPathPrefix || File(path).parent.equals(currentPathPrefix, true)) { + currentPaths.add(path) + } else if (folders.any { !it.equals(path, true) && (File(path).parent.equals(it, true) || File(it).parent.equals(File(path).parent, true)) }) { + // if we have folders like + // /storage/emulated/0/Pictures/Images and + // /storage/emulated/0/Pictures/Screenshots, + // but /storage/emulated/0/Pictures is empty, still Pictures with the first folders thumbnails and proper other info + val parent = File(path).parent + if (!folders.contains(parent) && dirs.none { it.path == parent }) { + currentPaths.add(parent) + val isSortingAscending = config.sorting and SORT_DESCENDING == 0 + val subDirs = dirs.filter { File(it.path).parent.equals(File(path).parent, true) } as ArrayList + if (subDirs.isNotEmpty()) { + val lastModified = if (isSortingAscending) { + subDirs.minBy { it.modified }?.modified + } else { + subDirs.maxBy { it.modified }?.modified + } ?: 0 + + val dateTaken = if (isSortingAscending) { + subDirs.minBy { it.taken }?.taken + } else { + subDirs.maxBy { it.taken }?.taken + } ?: 0 + + var mediaTypes = 0 + subDirs.forEach { + mediaTypes = mediaTypes or it.types + } + + val directory = Directory(newDirId++, + parent, + subDirs.first().tmb, + parent.getFilenameFromPath(), + subDirs.sumBy { it.mediaCnt }, + lastModified, + dateTaken, + subDirs.sumByLong { it.size }, + getPathLocation(parent), + mediaTypes) + + directory.containsMediaFilesDirectly = false + dirs.add(directory) + currentPaths.add(parent) + foldersWithoutMediaFiles.add(parent) + } + } + } else { + currentPaths.add(path) } } @@ -241,7 +284,7 @@ fun Context.getDirectParentSubfolders(dirs: ArrayList, currentPathPre currentPaths.forEach { val path = it currentPaths.forEach { - if (!it.equals(path) && File(it).parent?.equals(path) == true) { + if (!foldersWithoutMediaFiles.contains(it) && !it.equals(path, true) && File(it).parent?.equals(path, true) == true) { areDirectSubfoldersAvailable = true } } @@ -287,7 +330,10 @@ fun Context.updateSubfolderCounts(children: ArrayList, parentDirs: Ar // make sure we count only the proper direct subfolders, grouped the same way as on the main screen parentDirs.firstOrNull { it.path == longestSharedPath }?.apply { if (path.equals(child.path, true) || path.equals(File(child.path).parent, true) || children.any { it.path.equals(File(child.path).parent, true) }) { - subfoldersCount++ + if (child.containsMediaFilesDirectly) { + subfoldersCount++ + } + if (path != child.path) { subfoldersMediaCount += child.mediaCnt } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt index f74af2abc..3b2ebedc5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt @@ -26,7 +26,8 @@ data class Directory( // used with "Group direct subfolders" enabled @Ignore var subfoldersCount: Int = 0, - @Ignore var subfoldersMediaCount: Int = 0) { + @Ignore var subfoldersMediaCount: Int = 0, + @Ignore var containsMediaFilesDirectly: Boolean = true) { constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, 0, 0) From f4bcae8086bf1a79cb1bcc0f93417400904e7506 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 18:51:51 +0200 Subject: [PATCH 004/165] show the Recycle Bin literally when deleting that 1 folder --- .../gallery/pro/adapters/DirectoryAdapter.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index c0c39db89..c0428f37c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -349,7 +349,11 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList { val itemsCnt = selectedKeys.size val items = if (itemsCnt == 1) { - "\"${getSelectedPaths().first().getFilenameFromPath()}\"" + var folder = getSelectedPaths().first().getFilenameFromPath() + if (folder == RECYCLE_BIN) { + folder = activity.getString(R.string.recycle_bin) + } + "\"$folder\"" } else { resources.getQuantityString(R.plurals.delete_items, itemsCnt, itemsCnt) } From e1834343fa98343b20d0ac36c3b90039c9d6213f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 19:42:43 +0200 Subject: [PATCH 005/165] fix #363, allow creating folder desktop shortcuts --- .../gallery/pro/adapters/DirectoryAdapter.kt | 65 +++++++++++++++++++ app/src/main/res/drawable/shortcut_image.xml | 7 ++ app/src/main/res/menu/cab_directories.xml | 4 ++ 3 files changed, 76 insertions(+) create mode 100644 app/src/main/res/drawable/shortcut_image.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index c0428f37c..81fb5f796 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -1,9 +1,19 @@ package com.simplemobiletools.gallery.pro.adapters +import android.annotation.SuppressLint +import android.content.Intent +import android.content.pm.ShortcutInfo +import android.content.pm.ShortcutManager +import android.graphics.drawable.Drawable +import android.graphics.drawable.Icon +import android.graphics.drawable.LayerDrawable import android.view.Menu import android.view.View import android.view.ViewGroup import com.bumptech.glide.Glide +import com.bumptech.glide.load.DecodeFormat +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.request.RequestOptions import com.google.gson.Gson import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter @@ -12,10 +22,12 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.dialogs.RenameItemsDialog import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.isNougatMR1Plus import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.MediaActivity import com.simplemobiletools.gallery.pro.dialogs.ExcludeFolderDialog import com.simplemobiletools.gallery.pro.dialogs.PickMediumDialog import com.simplemobiletools.gallery.pro.extensions.* @@ -75,6 +87,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList copyMoveTo(true) R.id.cab_move_to -> moveFilesTo() R.id.cab_select_all -> selectAll() + R.id.cab_create_shortcut -> createShortcut() R.id.cab_delete -> askConfirmDelete() R.id.cab_select_photo -> changeAlbumCover(false) R.id.cab_use_default -> changeAlbumCover(true) @@ -340,6 +355,56 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Unit) { + Thread { + val options = RequestOptions() + .format(DecodeFormat.PREFER_ARGB_8888) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .fitCenter() + + val size = activity.resources.getDimension(R.dimen.shortcut_size).toInt() + val builder = Glide.with(activity) + .asDrawable() + .load(tmb) + .apply(options) + .centerCrop() + .into(size, size) + + try { + (drawable as LayerDrawable).setDrawableByLayerId(R.id.shortcut_image, builder.get()) + } catch (e: Exception) { + } + + activity.runOnUiThread { + callback() + } + }.start() + } + private fun askConfirmDelete() { when { config.isDeletePasswordProtectionOn -> activity.handleDeletePasswordProtection { diff --git a/app/src/main/res/drawable/shortcut_image.xml b/app/src/main/res/drawable/shortcut_image.xml new file mode 100644 index 000000000..20dde1a45 --- /dev/null +++ b/app/src/main/res/drawable/shortcut_image.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/app/src/main/res/menu/cab_directories.xml b/app/src/main/res/menu/cab_directories.xml index e2e19a58b..64e9cdc4d 100644 --- a/app/src/main/res/menu/cab_directories.xml +++ b/app/src/main/res/menu/cab_directories.xml @@ -61,6 +61,10 @@ android:icon="@drawable/ic_select_all" android:title="@string/select_all" app:showAsAction="ifRoom"/> + Date: Sun, 5 May 2019 19:55:04 +0200 Subject: [PATCH 006/165] moving the shortcut image getter to an activity extension --- .../gallery/pro/adapters/DirectoryAdapter.kt | 34 +----------------- .../gallery/pro/extensions/Activity.kt | 36 +++++++++++++++++-- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index 81fb5f796..1392ec413 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -4,16 +4,11 @@ import android.annotation.SuppressLint import android.content.Intent import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager -import android.graphics.drawable.Drawable import android.graphics.drawable.Icon -import android.graphics.drawable.LayerDrawable import android.view.Menu import android.view.View import android.view.ViewGroup import com.bumptech.glide.Glide -import com.bumptech.glide.load.DecodeFormat -import com.bumptech.glide.load.engine.DiskCacheStrategy -import com.bumptech.glide.request.RequestOptions import com.google.gson.Gson import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter @@ -362,7 +357,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Unit) { - Thread { - val options = RequestOptions() - .format(DecodeFormat.PREFER_ARGB_8888) - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .fitCenter() - - val size = activity.resources.getDimension(R.dimen.shortcut_size).toInt() - val builder = Glide.with(activity) - .asDrawable() - .load(tmb) - .apply(options) - .centerCrop() - .into(size, size) - - try { - (drawable as LayerDrawable).setDrawableByLayerId(R.id.shortcut_image, builder.get()) - } catch (e: Exception) { - } - - activity.runOnUiThread { - callback() - } - }.start() - } - private fun askConfirmDelete() { when { config.isDeletePasswordProtectionOn -> activity.handleDeletePasswordProtection { 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 3a5803d45..d8a0191f5 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 @@ -7,6 +7,8 @@ import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Matrix +import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable import android.media.ExifInterface import android.os.Build import android.provider.MediaStore @@ -14,6 +16,9 @@ import android.util.DisplayMetrics import android.view.View import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.Glide +import com.bumptech.glide.load.DecodeFormat +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.request.RequestOptions import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* @@ -255,7 +260,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa var out: OutputStream? = null try { out = getFileOutputStreamSync(destination, source.getMimeType()) - inputStream = getFileInputStreamSync(source)!! + inputStream = getFileInputStreamSync(source) inputStream.copyTo(out!!) if (File(source).length() == File(destination).length()) { mediumDao.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN$destination") @@ -478,7 +483,7 @@ fun BaseSimpleActivity.copyFile(source: String, destination: String) { try { out = getFileOutputStreamSync(destination, source.getMimeType()) inputStream = getFileInputStreamSync(source) - inputStream?.copyTo(out!!) + inputStream.copyTo(out!!) } finally { inputStream?.close() out?.close() @@ -491,3 +496,30 @@ fun saveFile(path: String, bitmap: Bitmap, out: FileOutputStream, degrees: Int) val bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) bmp.compress(path.getCompressionFormat(), 90, out) } + +fun Activity.getShortcutImage(tmb: String, drawable: Drawable, callback: () -> Unit) { + Thread { + val options = RequestOptions() + .format(DecodeFormat.PREFER_ARGB_8888) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .fitCenter() + + val size = resources.getDimension(R.dimen.shortcut_size).toInt() + val builder = Glide.with(this) + .asDrawable() + .load(tmb) + .apply(options) + .centerCrop() + .into(size, size) + + try { + (drawable as LayerDrawable).setDrawableByLayerId(R.id.shortcut_image, builder.get()) + } catch (e: Exception) { + } + + runOnUiThread { + callback() + } + }.start() +} From af50584b3945d4a1f64416a434ca2ca51f6ae7d7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 20:18:22 +0200 Subject: [PATCH 007/165] allow creating file shortcuts too --- .../pro/activities/ViewPagerActivity.kt | 33 +++++++++++++++++-- app/src/main/res/menu/menu_viewpager.xml | 4 +++ 2 files changed, 35 insertions(+), 2 deletions(-) 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 6ba9995da..9f5be1654 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 @@ -2,13 +2,17 @@ package com.simplemobiletools.gallery.pro.activities import android.animation.Animator import android.animation.ValueAnimator +import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.content.pm.ActivityInfo +import android.content.pm.ShortcutInfo +import android.content.pm.ShortcutManager import android.content.res.Configuration import android.database.Cursor import android.graphics.Color import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Icon import android.media.ExifInterface import android.net.Uri import android.os.Bundle @@ -160,6 +164,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) + findItem(R.id.menu_create_shortcut).isVisible = isNougatMR1Plus() findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) findItem(R.id.menu_rotate).setShowAsAction( @@ -204,6 +209,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) R.id.menu_save_as -> saveImageAs() + R.id.menu_create_shortcut -> createShortcut() R.id.menu_settings -> launchSettings() else -> return super.onOptionsItemSelected(item) } @@ -600,6 +606,29 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + @SuppressLint("NewApi") + private fun createShortcut() { + val manager = getSystemService(ShortcutManager::class.java) + if (manager.isRequestPinShortcutSupported) { + val medium = getCurrentMedium() ?: return + val path = medium.path + val drawable = resources.getDrawable(R.drawable.shortcut_image).mutate() + getShortcutImage(path, drawable) { + val intent = Intent(this, PhotoVideoActivity::class.java) + intent.action = Intent.ACTION_VIEW + intent.data = Uri.fromFile(File(path)) + + val shortcut = ShortcutInfo.Builder(this, path) + .setShortLabel(medium.name) + .setIcon(Icon.createWithBitmap(drawable.convertToBitmap())) + .setIntent(intent) + .build() + + manager.requestPinShortcut(shortcut, null) + } + } + } + private fun getCurrentPhotoFragment() = getCurrentFragment() as? PhotoFragment private fun isShowHiddenFlagNeeded(): Boolean { @@ -976,8 +1005,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View var flipSides = false try { val pathToLoad = getCurrentPath() - val exif = android.media.ExifInterface(pathToLoad) - val orientation = exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, -1) + val exif = ExifInterface(pathToLoad) + val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1) flipSides = orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270 } catch (e: Exception) { } diff --git a/app/src/main/res/menu/menu_viewpager.xml b/app/src/main/res/menu/menu_viewpager.xml index 282910e8a..f995fe0f1 100644 --- a/app/src/main/res/menu/menu_viewpager.xml +++ b/app/src/main/res/menu/menu_viewpager.xml @@ -110,6 +110,10 @@ android:icon="@drawable/ic_rename_new" android:title="@string/rename" app:showAsAction="ifRoom"/> + Date: Sun, 5 May 2019 21:32:27 +0200 Subject: [PATCH 008/165] use sorting numbers by numeric values by default --- app/build.gradle | 2 +- .../simplemobiletools/gallery/pro/activities/MainActivity.kt | 5 +++++ .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 2 +- app/src/main/res/values/integers.xml | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d97d7bd30..950e7c673 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.12.12' + implementation 'com.simplemobiletools:commons:5.12.15' 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' 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 ed1ddee6b..cdf8b2186 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 @@ -149,6 +149,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } + if (!config.wasSortingByNumericValueAdded) { + config.wasSortingByNumericValueAdded = true + config.sorting = config.sorting or SORT_USE_NUMERIC_VALUE + } + updateWidgets() registerFileUpdateListener() } 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 e93d46050..433a47d1c 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 @@ -540,7 +540,7 @@ class PhotoFragment : ViewPagerFragment() { tag?.getValueAsInt(defaultOrientation) ?: defaultOrientation } else { val exif = android.media.ExifInterface(path) - exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, defaultOrientation) + exif.getAttributeInt(TAG_ORIENTATION, defaultOrientation) } if (orient == defaultOrientation || context!!.isPathOnOTG(mMedium.path)) { diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index 1ba77d374..cc7e8155c 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -4,5 +4,5 @@ 3 4 - 1026 + 33794 From 4812dff07738a99de6237f4b61dcffc1b317306e Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 21:39:10 +0200 Subject: [PATCH 009/165] fix #1400, allow toggling numeric sorting at numbers --- .../gallery/pro/dialogs/ChangeSortingDialog.kt | 12 ++++++++++-- .../gallery/pro/helpers/MediaFetcher.kt | 16 ++++++++++++++-- .../main/res/layout/dialog_change_sorting.xml | 8 ++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) 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 79c0961a6..680fbe254 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 @@ -21,11 +21,16 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti private var view: View init { + currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse) view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply { use_for_this_folder_divider.beVisibleIf(showFolderCheckbox) + + sorting_dialog_numeric_sorting.beVisibleIf(showFolderCheckbox) + sorting_dialog_numeric_sorting.isChecked = currSorting and SORT_USE_NUMERIC_VALUE != 0 + sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox) - sorting_dialog_bottom_note.beVisibleIf(!isDirectorySorting) sorting_dialog_use_for_this_folder.isChecked = config.hasCustomSorting(pathToUse) + sorting_dialog_bottom_note.beVisibleIf(!isDirectorySorting) } AlertDialog.Builder(activity) @@ -35,7 +40,6 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti activity.setupDialogStuff(view, this, R.string.sort_by) } - currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse) setupSortRadio() setupOrderRadio() } @@ -79,6 +83,10 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti sorting = sorting or SORT_DESCENDING } + if (view.sorting_dialog_numeric_sorting.isChecked) { + sorting = sorting or SORT_USE_NUMERIC_VALUE + } + if (isDirectorySorting) { config.directorySorting = sorting } else { 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 785627944..be845ac48 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 @@ -287,8 +287,20 @@ class MediaFetcher(val context: Context) { o1 as Medium o2 as Medium var result = when { - sorting and SORT_BY_NAME != 0 -> AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase()) - sorting and SORT_BY_PATH != 0 -> AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) + sorting and SORT_BY_NAME != 0 -> { + if (sorting and SORT_USE_NUMERIC_VALUE != 0) { + AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase()) + } else { + o1.name.toLowerCase().compareTo(o2.name.toLowerCase()) + } + } + sorting and SORT_BY_PATH != 0 -> { + if (sorting and SORT_USE_NUMERIC_VALUE != 0) { + AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) + } else { + o1.path.toLowerCase().compareTo(o2.path.toLowerCase()) + } + } sorting and SORT_BY_SIZE != 0 -> o1.size.compareTo(o2.size) sorting and SORT_BY_DATE_MODIFIED != 0 -> o1.modified.compareTo(o2.modified) else -> o1.taken.compareTo(o2.taken) diff --git a/app/src/main/res/layout/dialog_change_sorting.xml b/app/src/main/res/layout/dialog_change_sorting.xml index 8d3dc7570..96fb61ad5 100644 --- a/app/src/main/res/layout/dialog_change_sorting.xml +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -101,6 +101,14 @@ android:id="@+id/use_for_this_folder_divider" layout="@layout/divider"/> + + Date: Sun, 5 May 2019 22:46:06 +0200 Subject: [PATCH 010/165] show the numeric sorting checkbox only at sorting by name or path --- .../gallery/pro/dialogs/ChangeSortingDialog.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 680fbe254..c1286a7e4 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 @@ -25,7 +25,7 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply { use_for_this_folder_divider.beVisibleIf(showFolderCheckbox) - sorting_dialog_numeric_sorting.beVisibleIf(showFolderCheckbox) + sorting_dialog_numeric_sorting.beVisibleIf(showFolderCheckbox && (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0)) sorting_dialog_numeric_sorting.isChecked = currSorting and SORT_USE_NUMERIC_VALUE != 0 sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox) @@ -46,6 +46,9 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti private fun setupSortRadio() { val sortingRadio = view.sorting_dialog_radio_sorting + sortingRadio.setOnCheckedChangeListener { group, checkedId -> + view.sorting_dialog_numeric_sorting.beVisibleIf(checkedId == sortingRadio.sorting_dialog_radio_name.id || checkedId == sortingRadio.sorting_dialog_radio_path.id) + } val sortBtn = when { currSorting and SORT_BY_PATH != 0 -> sortingRadio.sorting_dialog_radio_path From 376c3d0d1ea9d659aabe74a7b3e5827eaf093564 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 5 May 2019 23:27:12 +0200 Subject: [PATCH 011/165] do not show the Date Taken value fixing related toast messages at bin --- .../gallery/pro/adapters/MediaAdapter.kt | 2 +- .../gallery/pro/extensions/Activity.kt | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index c1f7475b9..dfdca930f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -331,7 +331,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, mediumDa callback() } - fixDateTaken(newPaths) + fixDateTaken(newPaths, false) }.start() } @@ -328,9 +328,12 @@ fun Activity.hasNavBar(): Boolean { return (realDisplayMetrics.widthPixels - displayMetrics.widthPixels > 0) || (realDisplayMetrics.heightPixels - displayMetrics.heightPixels > 0) } -fun Activity.fixDateTaken(paths: ArrayList, callback: (() -> Unit)? = null) { +fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, callback: (() -> Unit)? = null) { val BATCH_SIZE = 50 - toast(R.string.fixing) + if (showToasts) { + toast(R.string.fixing) + } + try { var didUpdateFile = false val operations = ArrayList() @@ -371,13 +374,18 @@ fun Activity.fixDateTaken(paths: ArrayList, callback: (() -> Unit)? = nu didUpdateFile = false } - toast(if (didUpdateFile) R.string.dates_fixed_successfully else R.string.unknown_error_occurred) runOnUiThread { + if (showToasts) { + toast(if (didUpdateFile) R.string.dates_fixed_successfully else R.string.unknown_error_occurred) + } + callback?.invoke() } } } catch (e: Exception) { - showErrorToast(e) + if (showToasts) { + showErrorToast(e) + } } } From 0d43b54607f02ae4477aa90037b1558784e2fe3c Mon Sep 17 00:00:00 2001 From: Manuel Kloppenburg Date: Tue, 7 May 2019 20:55:01 +0200 Subject: [PATCH 012/165] Update german translation --- app/src/main/res/values-de/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 79ec823fa..b5007c42f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -32,7 +32,7 @@ Korrigiere… Datum erfolgreich korrigiert. Teile eine verkleinerte Version - 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! + Hey,\n\nes sieht so aus, als hättest du von der alten kostenlosen App geupgraded. Du kannst nun die alte Version deinstallieren, die oben in den App-Einstellungen einen \'Upgrade auf Pro\' Button hat.\n\nEs wird nur der Papierkorb gelöscht, die Markierungen von Favoriten entfernt und die App-Einstellungen zurückgesetzt.\n\nDanke! Filter @@ -219,12 +219,12 @@ Die jetzige Methode für die Anzeige von Bildern funktioniert gut, aber für eine noch bessere Bildqualität kann die Einstellung \"Zeige Bilder in der höchstmöglichen Qualität\" im Menü unter \"Stark vergrösserbare Bilder\" gesetzt werden. Ich habe eine versteckte Datei bzw. einen versteckten Ordner. Wie kann ich diese/n sichtbar stellen? Du kannst entweder auf \"Verstecktes temporär anzeigen\" im Hauptmenü drücken oder die Einstellung \"Versteckte Elemente anzeigen\" setzen. Wenn du es sichtbar einstellen willst, drücke lange darauf und wähle \"Nicht verstecken\" aus. Ordner werden durch eine versteckte, in ihnen gespeicherte \".nomedia\"-Datei versteckt und das Löschen der Datei ist mit jedem Dateimanger möglich. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Warum beansprucht die App so viel Speicherplatz? + Der Cache der App kann bis zu 250 MB groß werden und sorgt dafür, dass die Bilder schneller geladen werden. Wenn die App noch mehr Speicherplatz beansprucht, liegt das wahrscheinlich daran, dass der Papierkorb zu voll ist. Diese Dateien zählen zum Speicherplatz der App dazu. Du kannst den Papierkorb leeren, indem du ihn öffnest und alle Dateien darin löschst, oder den entsprechenden Button in den Einstellungen betätigst. All 30 Tage wird der Papierkorb automatisch geleert. - Simple Gallery Pro: Photo Manager & Editor + Schlichte Galerie Pro: Foto Manager & Editor Galerie ohne Werbung. Ordnen, Bearbeiten und Wiederherstellen von Fotos & Videos @@ -256,10 +256,10 @@ • Schlichte Galerie Pro ist Open Source … und viele, viele mehr! - FOTO EDITOR + FOTOEDITOR Schlichte Galerie Pro macht es schnell und einfach deine Bilder zu bearbeiten. Schneide Bilder zu, drehe sie und ändere die Größe. Wenn du dich etwas kreativer fühlst, kannst du Filter hinzufügen und auf deinen Bildern malen! - UNTERSTÜTZUNG FÜR VIELE DATEITYPEEN + UNTERSTÜTZUNG FÜR VIELE DATEITYPEN Im Gegensatz zu einigen anderen Galerien unterstütz Schlichte Galerie Pro eine Vielzahl verschiedener Dateitypen. Unter anderem JPEG, PNG, MP4, MKV, RAW, SVG, Panoramabilder, Panoramavideos und viele mehr. STARK INDIVIDUALISIERBARE GALERIE @@ -268,7 +268,7 @@ WIEDERHERSTELLUNG GELÖSCHTER FOTOS & VIDEOS Versehentlich ein wertvolles Foto oder Video gelöscht? Keine Sorge! Schlichte Galerie Pro verfügt über einen praktischen Papierkorb, aus dem du gelöschte Bilder & Videos leicht wiederherstellen kannst. - SCHÜTZE & VERSTECKE FOTOS, VIDEOS & DATEIEN + SCHÜTZE UND VERSTECKE FOTOS, VIDEOS & DATEIEN Mit einem PIN, Muster oder dem Fingerabdrucksensor deines Gerätes kannst du Fotos, Videos und komplette Alben verstecken und schützen. Du kannst auch die App selber schützen oder bestimmte Funktionen der App sperren. Beispielsweise kannst du eine Datei nicht ohne Scan des Fingerabdrucks löschen, um deine Dateien vor versehentlichem Löschen zu schützen. Schau dir die vollständige Serie der Schlichten Apps hier an: From e05e12bccedd42de3bb818808ea71ab6110050e7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 8 May 2019 20:25:58 +0200 Subject: [PATCH 013/165] allow creating new folders from the file thumbnails screen too --- .../gallery/pro/activities/MediaActivity.kt | 9 +++++++++ app/src/main/res/menu/menu_media.xml | 4 ++++ 2 files changed, 13 insertions(+) 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 dff45ff8f..e2043f87d 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 @@ -22,6 +22,7 @@ import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition import com.simplemobiletools.commons.dialogs.ConfirmationDialog +import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.REQUEST_EDIT_IMAGE @@ -220,6 +221,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { findItem(R.id.folder_view).isVisible = mShowAll findItem(R.id.open_camera).isVisible = mShowAll findItem(R.id.about).isVisible = mShowAll + findItem(R.id.create_new_folder).isVisible = !mShowAll && mPath != RECYCLE_BIN && mPath != FAVORITES findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden @@ -249,6 +251,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { R.id.hide_folder -> tryHideFolder() R.id.unhide_folder -> unhideFolder() R.id.exclude_folder -> tryExcludeFolder() + R.id.create_new_folder -> createNewFolder() R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden() R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden() R.id.increase_column_count -> increaseColumnCount() @@ -625,6 +628,12 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { }.start() } + private fun createNewFolder() { + CreateNewFolderDialog(this, mPath) { + config.tempFolderPath = it + } + } + private fun tryToggleTemporarilyShowHidden() { if (config.temporarilyShowHidden) { toggleTemporarilyShowHidden(false) diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index 4693f03f1..1db3d9709 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -63,6 +63,10 @@ android:id="@+id/exclude_folder" android:title="@string/exclude" app:showAsAction="never"/> + Date: Wed, 8 May 2019 20:46:26 +0200 Subject: [PATCH 014/165] allow toggling numeric sorting at folders too --- app/build.gradle | 2 +- .../gallery/pro/dialogs/ChangeSortingDialog.kt | 9 ++++++--- .../gallery/pro/extensions/Context.kt | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 950e7c673..720cd73a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.12.15' + implementation 'com.simplemobiletools:commons:5.12.17' 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' 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 c1286a7e4..9db8e7b13 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 @@ -5,6 +5,7 @@ import android.view.View import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.extensions.isVisible import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.gallery.pro.R @@ -12,7 +13,7 @@ import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL import kotlinx.android.synthetic.main.dialog_change_sorting.view.* -class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorting: Boolean, showFolderCheckbox: Boolean, +class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorting: Boolean, val showFolderCheckbox: Boolean, val path: String = "", val callback: () -> Unit) : DialogInterface.OnClickListener { private var currSorting = 0 @@ -23,7 +24,7 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti init { currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse) view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply { - use_for_this_folder_divider.beVisibleIf(showFolderCheckbox) + use_for_this_folder_divider.beVisibleIf(showFolderCheckbox || (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0)) sorting_dialog_numeric_sorting.beVisibleIf(showFolderCheckbox && (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0)) sorting_dialog_numeric_sorting.isChecked = currSorting and SORT_USE_NUMERIC_VALUE != 0 @@ -47,7 +48,9 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti private fun setupSortRadio() { val sortingRadio = view.sorting_dialog_radio_sorting sortingRadio.setOnCheckedChangeListener { group, checkedId -> - view.sorting_dialog_numeric_sorting.beVisibleIf(checkedId == sortingRadio.sorting_dialog_radio_name.id || checkedId == sortingRadio.sorting_dialog_radio_path.id) + val isSortingByNameOrPath = checkedId == sortingRadio.sorting_dialog_radio_name.id || checkedId == sortingRadio.sorting_dialog_radio_path.id + view.sorting_dialog_numeric_sorting.beVisibleIf(isSortingByNameOrPath) + view.use_for_this_folder_divider.beVisibleIf(view.sorting_dialog_numeric_sorting.isVisible() || view.sorting_dialog_use_for_this_folder.isVisible()) } val sortBtn = when { 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 972443d7b..59cb44f5e 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 @@ -165,7 +165,20 @@ fun Context.getSortedDirectories(source: ArrayList): ArrayList AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase()) + sorting and SORT_BY_NAME != 0 -> { + if (sorting and SORT_USE_NUMERIC_VALUE != 0) { + AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase()) + } else { + o1.name.toLowerCase().compareTo(o2.name.toLowerCase()) + } + } + sorting and SORT_BY_PATH != 0 -> { + if (sorting and SORT_USE_NUMERIC_VALUE != 0) { + AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) + } else { + o1.path.toLowerCase().compareTo(o2.path.toLowerCase()) + } + } sorting and SORT_BY_PATH != 0 -> AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase()) sorting and SORT_BY_SIZE != 0 -> o1.size.compareTo(o2.size) sorting and SORT_BY_DATE_MODIFIED != 0 -> o1.modified.compareTo(o2.modified) From 8065a66b73a0151c9ad802dd1a6e3065ada972dc Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 8 May 2019 20:58:44 +0200 Subject: [PATCH 015/165] update version to 6.7.1 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 720cd73a8..97b277dd1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 244 - versionName "6.7.0" + versionCode 245 + versionName "6.7.1" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From e09c83c8d6d001a55579d5851f6a0006db5cb732 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 8 May 2019 20:58:50 +0200 Subject: [PATCH 016/165] updating changelog --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c277055d4..7492e44bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ Changelog ========== +Version 6.7.1 *(2019-05-08)* +---------------------------- + + * Allow creating file or folder shortcuts on home screen on Android 7+ + * Allow creating new folders on the file thumbnails screen too + * Added a checkbox at sorting by name/path to sort numbers by their actual numeric value + * Improve grouping direct subfolders, do not ignore parent folders without media files + * Show the Open Camera button at the menu on the main screen, instead of the Sort by button + * Other translation and stability improvements + Version 6.7.0 *(2019-05-02)* ---------------------------- From 81f61af5a799ae69f0c89e097bb6b1ea0de2e84b Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 May 2019 09:39:02 +0200 Subject: [PATCH 017/165] allow creating desktop shortcuts only from Android 8 --- .../gallery/pro/activities/ViewPagerActivity.kt | 2 +- .../gallery/pro/adapters/DirectoryAdapter.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 9f5be1654..0900b0808 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 @@ -164,7 +164,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) - findItem(R.id.menu_create_shortcut).isVisible = isNougatMR1Plus() + findItem(R.id.menu_create_shortcut).isVisible = isOreoPlus() findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) findItem(R.id.menu_rotate).setShowAsAction( diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index 1392ec413..705ee2664 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -17,7 +17,7 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.dialogs.RenameItemsDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.helpers.isNougatMR1Plus +import com.simplemobiletools.commons.helpers.isOreoPlus import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView @@ -82,7 +82,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Date: Thu, 9 May 2019 09:46:08 +0200 Subject: [PATCH 018/165] update version to 6.7.2 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 97b277dd1..9b667c43e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 245 - versionName "6.7.1" + versionCode 246 + versionName "6.7.2" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 12cb855c3a7d7233e6d132537d30a038327662ff Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 May 2019 09:46:13 +0200 Subject: [PATCH 019/165] updating changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7492e44bd..10ac7d6a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 6.7.2 *(2019-05-09)* +---------------------------- + + * Allow creating file or folder shortcuts only from Android 8+ + Version 6.7.1 *(2019-05-08)* ---------------------------- From 640ff05e204baa1d78593ff4ed839f7d5737cf72 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 May 2019 12:08:14 +0200 Subject: [PATCH 020/165] optimize temporary folder adding a bit --- .../gallery/pro/extensions/Context.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 59cb44f5e..ff62abdd2 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 @@ -471,14 +471,16 @@ fun Context.loadImage(type: Int, path: String, target: MySquareImageView, horizo } fun Context.addTempFolderIfNeeded(dirs: ArrayList): ArrayList { - val directories = ArrayList() val tempFolderPath = config.tempFolderPath - if (tempFolderPath.isNotEmpty()) { + return if (tempFolderPath.isNotEmpty()) { + val directories = ArrayList() val newFolder = Directory(null, tempFolderPath, "", tempFolderPath.getFilenameFromPath(), 0, 0, 0, 0L, getPathLocation(tempFolderPath), 0) directories.add(newFolder) + directories.addAll(dirs) + directories + } else { + dirs } - directories.addAll(dirs) - return directories } fun Context.getPathLocation(path: String): Int { From 547e6bd48a73ed9a8deddbb320f1ab0425023c0e Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 May 2019 12:27:46 +0200 Subject: [PATCH 021/165] remove a slash trimming function at folder getter --- .../com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 be845ac48..c64a0d88a 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 @@ -126,7 +126,7 @@ class MediaFetcher(val context: Context) { if (cursor.moveToFirst()) { do { val path = cursor.getStringValue(MediaStore.Images.Media.DATA) - val parentPath = File(path).parent?.trimEnd('/') ?: continue + val parentPath = File(path).parent ?: continue if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) { foldersToScan.add(parentPath) } From 35bd124b0b4f2cf0086c3e36a42dda435be1118d Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 10:09:22 +0200 Subject: [PATCH 022/165] fix #1415, properly sort grouped directories --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ff62abdd2..b4945d510 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 @@ -213,7 +213,7 @@ fun Context.getDirsToShow(dirs: ArrayList, allDirs: ArrayList Date: Mon, 13 May 2019 10:15:54 +0200 Subject: [PATCH 023/165] fix #1419, use the proper cover image at creating shortcuts --- .../simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index 705ee2664..f4d1e1da5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -357,7 +357,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Date: Mon, 13 May 2019 10:30:22 +0200 Subject: [PATCH 024/165] fix #1414, show proper root storage folder name at grouping --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b4945d510..61929cd39 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 @@ -274,7 +274,7 @@ fun Context.getDirectParentSubfolders(dirs: ArrayList, currentPathPre val directory = Directory(newDirId++, parent, subDirs.first().tmb, - parent.getFilenameFromPath(), + getFolderNameFromPath(parent), subDirs.sumBy { it.mediaCnt }, lastModified, dateTaken, From 71cba38402c2ae9cbe54eff240a09bd15aa1f400 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 11:09:58 +0200 Subject: [PATCH 025/165] fix #1417, make the instant photo switch tap area wider on tablets --- app/src/main/res/values-sw600dp/dimens.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index 9703f1cb6..7ef1ff093 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -5,4 +5,5 @@ 30dp 38dp 70dp + 100dp From 594c198cf241d1307285eda2f6a8e259acc96042 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 11:20:59 +0200 Subject: [PATCH 026/165] fix #1395, removing some unwanted menu items from the recycle bin --- .../simplemobiletools/gallery/pro/adapters/MediaAdapter.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index dfdca930f..788dc335c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -109,8 +109,12 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList + val isInRecycleBin = selectedItems.firstOrNull()?.getIsInRecycleBin() == true menu.apply { - findItem(R.id.cab_rename).isVisible = selectedItems.firstOrNull()?.getIsInRecycleBin() == false + findItem(R.id.cab_rename).isVisible = !isInRecycleBin + findItem(R.id.cab_add_to_favorites).isVisible = !isInRecycleBin + findItem(R.id.cab_fix_date_taken).isVisible = !isInRecycleBin + findItem(R.id.cab_move_to).isVisible = !isInRecycleBin findItem(R.id.cab_open_with).isVisible = isOneItemSelected findItem(R.id.cab_confirm_selection).isVisible = isAGetIntent && allowMultiplePicks && selectedKeys.isNotEmpty() findItem(R.id.cab_restore_recycle_bin_files).isVisible = selectedPaths.all { it.startsWith(activity.recycleBinPath) } From 1e697e75d640ace4a81a97b63123a6c0b6e3a8a1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 21:11:47 +0200 Subject: [PATCH 027/165] visually speed up file deletion from fullscreen view by storing ignored paths --- .../pro/activities/ViewPagerActivity.kt | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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 0900b0808..abfcb9af6 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 @@ -70,6 +70,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private var mMediaFiles = ArrayList() private var mFavoritePaths = ArrayList() + private var mIgnoredPaths = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -908,17 +909,22 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (config.useRecycleBin && !getCurrentMedium()!!.getIsInRecycleBin()) { movePathsInRecycleBin(arrayListOf(path)) { if (it) { - tryDeleteFileDirItem(fileDirItem, false, false) { - refreshViewPager() - } + handleDeletion(fileDirItem, false) } else { toast(R.string.unknown_error_occurred) } } } else { - tryDeleteFileDirItem(fileDirItem, false, true) { - refreshViewPager() - } + handleDeletion(fileDirItem, true) + } + } + + private fun handleDeletion(fileDirItem: FileDirItem, deleteFromDatabase: Boolean) { + mIgnoredPaths.add(fileDirItem.path) + val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList + gotMedia(media) + tryDeleteFileDirItem(fileDirItem, false, deleteFromDatabase) { + mIgnoredPaths.remove(fileDirItem.path) } } @@ -961,7 +967,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun gotMedia(thumbnailItems: ArrayList) { - val media = thumbnailItems.asSequence().filter { it is Medium }.map { it as Medium }.toMutableList() as ArrayList + 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) { return } From 4c8b7a3c849c5a1af6ea0667b5e1f334973a973c Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 22:17:37 +0200 Subject: [PATCH 028/165] load the initially visible fullscreen image with the highest priority --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 2 ++ 1 file changed, 2 insertions(+) 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 433a47d1c..4a25ea30c 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 @@ -359,9 +359,11 @@ class PhotoFragment : ViewPagerFragment() { } private fun loadBitmap(addZoomableView: Boolean = true) { + val priority = if (mIsFragmentVisible) Priority.IMMEDIATE else Priority.NORMAL val options = RequestOptions() .signature(mMedium.path.getFileSignature()) .format(DecodeFormat.PREFER_ARGB_8888) + .priority(priority) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) .fitCenter() From 8e798feaaaccf111ac1169f9b407bceb028c9d3c Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 22:59:49 +0200 Subject: [PATCH 029/165] set low priority at thumbnail loading so that fullscreen view is more important --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 ++ 1 file changed, 2 insertions(+) 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 61929cd39..766eae4dc 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 @@ -13,6 +13,7 @@ import android.provider.MediaStore import android.view.WindowManager import android.widget.ImageView import com.bumptech.glide.Glide +import com.bumptech.glide.Priority import com.bumptech.glide.load.DecodeFormat import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions @@ -510,6 +511,7 @@ fun Context.loadJpg(path: String, target: MySquareImageView, cropThumbnails: Boo val options = RequestOptions() .signature(path.getFileSignature()) .skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true) + .priority(Priority.LOW) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) val builder = Glide.with(applicationContext) From 36dec5e004eeb8e80e0d2e9d3f622a24644e3bcf Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 May 2019 23:58:47 +0200 Subject: [PATCH 030/165] stop loading fullscreen glide view on destroy --- .../gallery/pro/fragments/PhotoFragment.kt | 8 ++++++++ 1 file changed, 8 insertions(+) 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 4a25ea30c..25dd5a899 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 @@ -21,6 +21,7 @@ import android.view.ViewGroup import com.alexvasilkov.gestures.GestureController import com.alexvasilkov.gestures.State import com.bumptech.glide.Glide +import com.bumptech.glide.Priority import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.DecodeFormat import com.bumptech.glide.load.engine.DiskCacheStrategy @@ -228,6 +229,13 @@ class PhotoFragment : ViewPagerFragment() { mView.subsampling_view.recycle() } + try { + if (context != null) { + Glide.with(context!!).clear(mView.gestures_view) + } + } catch (ignored: Exception) { + } + mLoadZoomableViewHandler.removeCallbacksAndMessages(null) if (mCurrentRotationDegrees != 0) { Thread { From fa0ce89d814f699671892048d06386723f9977eb Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 00:03:30 +0200 Subject: [PATCH 031/165] tweak the glide view clearing a bit --- .../gallery/pro/fragments/PhotoFragment.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 25dd5a899..1160f5761 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 @@ -227,13 +227,13 @@ class PhotoFragment : ViewPagerFragment() { super.onDestroyView() if (activity?.isDestroyed == false) { mView.subsampling_view.recycle() - } - try { - if (context != null) { - Glide.with(context!!).clear(mView.gestures_view) + try { + if (context != null) { + Glide.with(context!!).clear(mView.gestures_view) + } + } catch (ignored: Exception) { } - } catch (ignored: Exception) { } mLoadZoomableViewHandler.removeCallbacksAndMessages(null) From 7d9e9c6df0d249ad5f53e6dd5ed9ea9a8f294577 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 15:30:02 +0200 Subject: [PATCH 032/165] avoid initializing the first 3 fragments unnecessarily --- app/build.gradle | 2 +- .../gallery/pro/activities/ViewPagerActivity.kt | 2 ++ .../gallery/pro/adapters/MyPagerAdapter.kt | 4 ++++ .../gallery/pro/fragments/PhotoFragment.kt | 12 +++++++----- .../gallery/pro/fragments/VideoFragment.kt | 9 +++++---- .../gallery/pro/helpers/Constants.kt | 1 + 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9b667c43e..ae02232cc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.12.17' + implementation 'com.simplemobiletools:commons:5.12.22' 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' 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 abfcb9af6..e469e6571 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 @@ -366,8 +366,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun updatePagerItems(media: MutableList) { val pagerAdapter = MyPagerAdapter(this, supportFragmentManager, media) if (!isDestroyed) { + pagerAdapter.shouldInitFragment = mPos < 5 view_pager.apply { adapter = pagerAdapter + pagerAdapter.shouldInitFragment = true currentItem = mPos removeOnPageChangeListener(this@ViewPagerActivity) addOnPageChangeListener(this@ViewPagerActivity) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MyPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MyPagerAdapter.kt index dad510f72..02be99de0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MyPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MyPagerAdapter.kt @@ -12,16 +12,20 @@ import com.simplemobiletools.gallery.pro.fragments.PhotoFragment import com.simplemobiletools.gallery.pro.fragments.VideoFragment import com.simplemobiletools.gallery.pro.fragments.ViewPagerFragment import com.simplemobiletools.gallery.pro.helpers.MEDIUM +import com.simplemobiletools.gallery.pro.helpers.SHOULD_INIT_FRAGMENT import com.simplemobiletools.gallery.pro.models.Medium class MyPagerAdapter(val activity: ViewPagerActivity, fm: FragmentManager, val media: MutableList) : FragmentStatePagerAdapter(fm) { private val fragments = HashMap() + var shouldInitFragment = true + override fun getCount() = media.size override fun getItem(position: Int): Fragment { val medium = media[position] val bundle = Bundle() bundle.putSerializable(MEDIUM, medium) + bundle.putBoolean(SHOULD_INIT_FRAGMENT, shouldInitFragment) val fragment = if (medium.isVideo()) { VideoFragment() } else { 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 1160f5761..ae2c3b998 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 @@ -40,10 +40,7 @@ import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity import com.simplemobiletools.gallery.pro.activities.PhotoActivity import com.simplemobiletools.gallery.pro.extensions.* -import com.simplemobiletools.gallery.pro.helpers.MEDIUM -import com.simplemobiletools.gallery.pro.helpers.PATH -import com.simplemobiletools.gallery.pro.helpers.PicassoDecoder -import com.simplemobiletools.gallery.pro.helpers.PicassoRegionDecoder +import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter import com.squareup.picasso.Callback @@ -90,7 +87,12 @@ class PhotoFragment : ViewPagerFragment() { private lateinit var mMedium: Medium override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - mView = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup).apply { + mView = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup) + if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT)) { + return mView + } + + mView.apply { subsampling_view.setOnClickListener { photoClicked() } gestures_view.setOnClickListener { photoClicked() } gif_view.setOnClickListener { photoClicked() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index 8bf276b80..3b619feab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -28,10 +28,7 @@ import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.PanoramaVideoActivity import com.simplemobiletools.gallery.pro.activities.VideoActivity import com.simplemobiletools.gallery.pro.extensions.* -import com.simplemobiletools.gallery.pro.helpers.Config -import com.simplemobiletools.gallery.pro.helpers.MEDIUM -import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH -import com.simplemobiletools.gallery.pro.helpers.PATH +import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.views.MediaSideScroll import kotlinx.android.synthetic.main.bottom_video_time_holder.view.* @@ -125,6 +122,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } + if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT)) { + return mView + } + storeStateVariables() mMedium = arguments!!.getSerializable(MEDIUM) as Medium Glide.with(context!!).load(mMedium.path).into(mView.video_preview) 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 e3af08f5c..b9ba9581d 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 @@ -119,6 +119,7 @@ const val GET_ANY_INTENT = "get_any_intent" const val SET_WALLPAPER_INTENT = "set_wallpaper_intent" const val IS_VIEW_INTENT = "is_view_intent" const val PICKED_PATHS = "picked_paths" +const val SHOULD_INIT_FRAGMENT = "should_init_fragment" // rotations const val ROTATE_BY_SYSTEM_SETTING = 0 From 11607c5f950a5cce2b446f8d23613560827df118 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 23:37:02 +0200 Subject: [PATCH 033/165] updating gif-drawable to 1.2.17 --- app/build.gradle | 4 ++-- build.gradle | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae02232cc..540d2689d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,11 +61,11 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.12.22' + implementation 'com.simplemobiletools:commons:5.12.23' 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.16' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17-SNAPSHOT' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha5' implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' implementation 'com.google.vr:sdk-panowidget:1.180.0' diff --git a/build.gradle b/build.gradle index fbf166032..d760187ae 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,7 @@ allprojects { google() jcenter() maven { url "https://jitpack.io" } + maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } } From 9755cc8c567262e95b96f1066a601df9bc74bbb5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 23:40:43 +0200 Subject: [PATCH 034/165] move copy/move folder operations at the bottom --- app/src/main/res/menu/cab_directories.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/menu/cab_directories.xml b/app/src/main/res/menu/cab_directories.xml index 64e9cdc4d..a7f29794a 100644 --- a/app/src/main/res/menu/cab_directories.xml +++ b/app/src/main/res/menu/cab_directories.xml @@ -48,14 +48,6 @@ android:id="@+id/cab_exclude" android:title="@string/exclude" app:showAsAction="never"/> - - + + From a4c699a328157abaa4c4b2070bd01fbee9c7f8be Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 23:57:19 +0200 Subject: [PATCH 035/165] update version to 6.7.3 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 540d2689d..3b7d3170e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 246 - versionName "6.7.2" + versionCode 247 + versionName "6.7.3" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 37610e89804a58647a7e9185c9909473b1582f75 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 May 2019 23:57:27 +0200 Subject: [PATCH 036/165] updating changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10ac7d6a1..856bf88b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ Changelog ========== +Version 6.7.3 *(2019-05-14)* +---------------------------- + + * Fixed folder sorting if used together with subfolder grouping + * Fixed some copy/move related progressbar issues + * Added many performance and stability improvements + Version 6.7.2 *(2019-05-09)* ---------------------------- From b21305cb4b6324bdeec4f93e99a24c6af785beb1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 09:01:39 +0200 Subject: [PATCH 037/165] make sure we are updating media from the ui htread --- .../gallery/pro/activities/ViewPagerActivity.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 e469e6571..6cd8e97a4 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 @@ -924,7 +924,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun handleDeletion(fileDirItem: FileDirItem, deleteFromDatabase: Boolean) { mIgnoredPaths.add(fileDirItem.path) val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList - gotMedia(media) + runOnUiThread { + gotMedia(media) + } tryDeleteFileDirItem(fileDirItem, false, deleteFromDatabase) { mIgnoredPaths.remove(fileDirItem.path) } From e7e1c561d8f93059e74de059de80dfee32038df5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 09:05:13 +0200 Subject: [PATCH 038/165] moving mMedium definition at the VideoFragment up --- .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index 3b619feab..e836dc549 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -122,12 +122,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } + mMedium = arguments!!.getSerializable(MEDIUM) as Medium if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT)) { return mView } storeStateVariables() - mMedium = arguments!!.getSerializable(MEDIUM) as Medium Glide.with(context!!).load(mMedium.path).into(mView.video_preview) // setMenuVisibility is not called at VideoActivity (third party intent) From 7e73d979a1894dcf8142a1195cef1c245ebe4898 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 09:12:47 +0200 Subject: [PATCH 039/165] speed up video moving in the recycle bin from fullscreen view --- .../gallery/pro/activities/ViewPagerActivity.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 6cd8e97a4..f698a21c9 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 @@ -909,25 +909,34 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val fileDirItem = FileDirItem(path, path.getFilenameFromPath()) if (config.useRecycleBin && !getCurrentMedium()!!.getIsInRecycleBin()) { + mIgnoredPaths.add(fileDirItem.path) + val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList + runOnUiThread { + gotMedia(media) + } + movePathsInRecycleBin(arrayListOf(path)) { if (it) { - handleDeletion(fileDirItem, false) + tryDeleteFileDirItem(fileDirItem, false, false) { + mIgnoredPaths.remove(fileDirItem.path) + } } else { toast(R.string.unknown_error_occurred) } } } else { - handleDeletion(fileDirItem, true) + handleDeletion(fileDirItem) } } - private fun handleDeletion(fileDirItem: FileDirItem, deleteFromDatabase: Boolean) { + private fun handleDeletion(fileDirItem: FileDirItem) { mIgnoredPaths.add(fileDirItem.path) val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList runOnUiThread { gotMedia(media) } - tryDeleteFileDirItem(fileDirItem, false, deleteFromDatabase) { + + tryDeleteFileDirItem(fileDirItem, false, true) { mIgnoredPaths.remove(fileDirItem.path) } } From 91fe8fb8f834290d1d47858598ba8def73fdd1bd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 09:19:42 +0200 Subject: [PATCH 040/165] update version to 6.7.4 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3b7d3170e..2c730d86b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 247 - versionName "6.7.3" + versionCode 248 + versionName "6.7.4" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 6436934d831980e7d1f1d739a476ddceef180f32 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 09:19:47 +0200 Subject: [PATCH 041/165] updating changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 856bf88b9..735def384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========== +Version 6.7.4 *(2019-05-15)* +---------------------------- + + * Speeded up video deleting from fullscreen view + * Hotfixed some crashes + Version 6.7.3 *(2019-05-14)* ---------------------------- From 6088da84213e575a31dfa0416ee531cc4a0b5ea7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 15:01:17 +0200 Subject: [PATCH 042/165] fix opening third party intents --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 2 +- .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 ae2c3b998..e63e41893 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 @@ -88,7 +88,7 @@ class PhotoFragment : ViewPagerFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { mView = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup) - if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT)) { + if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) { return mView } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index e836dc549..11f78f20a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -123,7 +123,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } mMedium = arguments!!.getSerializable(MEDIUM) as Medium - if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT)) { + if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) { return mView } From 0781fc05e42b29c89dd704687e41d687d7673f24 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 15:13:25 +0200 Subject: [PATCH 043/165] update version to 6.7.5 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2c730d86b..25b8882f0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 248 - versionName "6.7.4" + versionCode 249 + versionName "6.7.5" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From e81ea4a89a7fafd604b5e68e25bd5229ec5357b2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 May 2019 15:13:30 +0200 Subject: [PATCH 044/165] updating changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 735def384..8d49a92e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 6.7.5 *(2019-05-15)* +---------------------------- + + * Hotfixing a glitch with opening third party intents + Version 6.7.4 *(2019-05-15)* ---------------------------- From bd97796d4e2845084ada38b307d84f5ac0eb3793 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 May 2019 08:33:47 +0200 Subject: [PATCH 045/165] use low priority for loading png thumbnails too --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 1 + 1 file changed, 1 insertion(+) 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 766eae4dc..02d2e2aca 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 @@ -497,6 +497,7 @@ fun Context.loadPng(path: String, target: MySquareImageView, cropThumbnails: Boo .signature(path.getFileSignature()) .skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .priority(Priority.LOW) .format(DecodeFormat.PREFER_ARGB_8888) val builder = Glide.with(applicationContext) From 76f48eb6ec13d74daf3cbfe55ce83bf9b34d16c9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 May 2019 08:37:01 +0200 Subject: [PATCH 046/165] allow inserting 5 digit long slideshow durations --- app/src/main/res/layout/dialog_slideshow.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/dialog_slideshow.xml b/app/src/main/res/layout/dialog_slideshow.xml index 0bad63672..06b7e813d 100644 --- a/app/src/main/res/layout/dialog_slideshow.xml +++ b/app/src/main/res/layout/dialog_slideshow.xml @@ -32,7 +32,7 @@ android:gravity="right" android:imeOptions="actionDone" android:inputType="number" - android:maxLength="2" + android:maxLength="5" android:textCursorDrawable="@null" android:textSize="@dimen/normal_text_size"/> From e6c5f7f9332f8ec7ba8e863b2dab434f721bc973 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 May 2019 23:04:51 +0200 Subject: [PATCH 047/165] fixing some RTL related warnings --- app/src/main/res/layout/activity_main.xml | 3 - app/src/main/res/layout/activity_media.xml | 3 - .../res/layout/activity_panorama_photo.xml | 4 +- .../res/layout/activity_panorama_video.xml | 4 +- app/src/main/res/layout/activity_settings.xml | 67 ------------------- .../main/res/layout/activity_video_player.xml | 3 +- .../res/layout/activity_widget_config.xml | 10 ++- .../res/layout/bottom_editor_draw_actions.xml | 6 +- .../res/layout/bottom_video_time_holder.xml | 4 -- .../res/layout/dialog_custom_aspect_ratio.xml | 8 +-- .../res/layout/dialog_directory_picker.xml | 7 +- .../main/res/layout/dialog_medium_picker.xml | 5 +- .../res/layout/dialog_other_aspect_ratio.xml | 27 ++++---- .../main/res/layout/dialog_resize_image.xml | 4 +- app/src/main/res/layout/dialog_save_as.xml | 4 +- app/src/main/res/layout/dialog_slideshow.xml | 10 +-- .../main/res/layout/directory_item_grid.xml | 17 ++--- .../main/res/layout/directory_item_list.xml | 18 +++-- app/src/main/res/layout/pager_photo_item.xml | 8 +-- app/src/main/res/layout/pager_video_item.xml | 8 +-- .../main/res/layout/photo_video_item_list.xml | 17 +++-- 21 files changed, 63 insertions(+), 174 deletions(-) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 84912ef58..bbf53b09e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -48,9 +48,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:paddingStart="@dimen/normal_margin" - android:paddingLeft="@dimen/normal_margin" android:visibility="gone"> @@ -62,7 +60,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:paddingTop="@dimen/normal_margin" android:visibility="gone"> diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index 222ca5826..852cec099 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -48,9 +48,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:paddingStart="@dimen/normal_margin" - android:paddingLeft="@dimen/normal_margin" android:visibility="gone"> @@ -62,7 +60,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:paddingTop="@dimen/normal_margin" android:visibility="gone"> diff --git a/app/src/main/res/layout/activity_panorama_photo.xml b/app/src/main/res/layout/activity_panorama_photo.xml index 199fb8d8f..0a4cd3f99 100644 --- a/app/src/main/res/layout/activity_panorama_photo.xml +++ b/app/src/main/res/layout/activity_panorama_photo.xml @@ -23,7 +23,7 @@ android:id="@+id/cardboard" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:padding="@dimen/activity_margin" android:src="@drawable/ic_cardboard"/> @@ -32,7 +32,7 @@ android:id="@+id/explore" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentBottom="true" android:padding="@dimen/activity_margin" android:src="@drawable/ic_explore"/> diff --git a/app/src/main/res/layout/activity_panorama_video.xml b/app/src/main/res/layout/activity_panorama_video.xml index 343496d24..45e5fb637 100644 --- a/app/src/main/res/layout/activity_panorama_video.xml +++ b/app/src/main/res/layout/activity_panorama_video.xml @@ -17,7 +17,7 @@ android:id="@+id/explore" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentBottom="true" android:padding="@dimen/activity_margin" android:src="@drawable/ic_explore"/> @@ -26,7 +26,7 @@ android:id="@+id/cardboard" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:padding="@dimen/activity_margin" android:src="@drawable/ic_cardboard"/> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index c0f1c51a9..9331be83c 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -29,7 +29,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/customize_colors"/> @@ -52,7 +51,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/use_english_language" app:switchPadding="@dimen/medium_margin"/> @@ -75,7 +73,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/change_date_and_time_format"/> @@ -97,7 +94,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toStartOf="@+id/settings_file_loading_priority" - android:layout_toLeftOf="@+id/settings_file_loading_priority" android:paddingLeft="@dimen/medium_margin" android:paddingRight="@dimen/medium_margin" android:text="@string/file_loading_priority"/> @@ -107,9 +103,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginEnd="@dimen/small_margin" - android:layout_marginRight="@dimen/small_margin" android:background="@null" android:clickable="false"/> @@ -127,7 +121,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/visibility" android:textAllCaps="true" @@ -150,7 +143,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/manage_included_folders"/> @@ -172,7 +164,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/manage_excluded_folders"/> @@ -194,7 +185,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/manage_hidden_folders"/> @@ -217,7 +207,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_hidden_items" app:switchPadding="@dimen/medium_margin"/> @@ -235,7 +224,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/videos" android:textAllCaps="true" @@ -259,7 +247,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/autoplay_videos" app:switchPadding="@dimen/medium_margin"/> @@ -283,7 +270,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/remember_last_video_position" app:switchPadding="@dimen/medium_margin"/> @@ -307,7 +293,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/loop_videos" app:switchPadding="@dimen/medium_margin"/> @@ -331,7 +316,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/open_videos_on_separate_screen" app:switchPadding="@dimen/medium_margin"/> @@ -355,7 +339,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_video_gestures" app:switchPadding="@dimen/medium_margin"/> @@ -373,7 +356,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/thumbnails" android:textAllCaps="true" @@ -397,7 +379,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/animate_gifs" app:switchPadding="@dimen/medium_margin"/> @@ -421,7 +402,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/crop_thumbnails" app:switchPadding="@dimen/medium_margin"/> @@ -445,7 +425,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_thumbnail_video_duration" app:switchPadding="@dimen/medium_margin"/> @@ -469,7 +448,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_media_count" app:switchPadding="@dimen/medium_margin"/> @@ -487,7 +465,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/scrolling" android:textAllCaps="true" @@ -511,7 +488,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_info_bubble" app:switchPadding="@dimen/medium_margin"/> @@ -535,7 +511,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/scroll_thumbnails_horizontally" app:switchPadding="@dimen/medium_margin"/> @@ -559,7 +534,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/enable_pull_to_refresh" app:switchPadding="@dimen/medium_margin"/> @@ -577,7 +551,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/fullscreen_media" android:textAllCaps="true" @@ -601,7 +574,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/max_brightness" app:switchPadding="@dimen/medium_margin"/> @@ -625,7 +597,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/black_background_at_fullscreen" app:switchPadding="@dimen/medium_margin"/> @@ -649,7 +620,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/hide_system_ui_at_fullscreen" app:switchPadding="@dimen/medium_margin"/> @@ -673,7 +643,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_instant_change" app:switchPadding="@dimen/medium_margin"/> @@ -697,7 +666,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_photo_gestures" app:switchPadding="@dimen/medium_margin"/> @@ -721,7 +689,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_down_gesture" app:switchPadding="@dimen/medium_margin"/> @@ -745,7 +712,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_notch" app:switchPadding="@dimen/medium_margin"/> @@ -768,7 +734,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toStartOf="@+id/settings_screen_rotation" - android:layout_toLeftOf="@+id/settings_screen_rotation" android:paddingLeft="@dimen/medium_margin" android:paddingRight="@dimen/medium_margin" android:text="@string/screen_rotation_by"/> @@ -778,9 +743,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginEnd="@dimen/small_margin" - android:layout_marginRight="@dimen/small_margin" android:background="@null" android:clickable="false"/> @@ -798,7 +761,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/deep_zoomable_images" android:textAllCaps="true" @@ -822,7 +784,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_deep_zooming_images" app:switchPadding="@dimen/medium_margin"/> @@ -846,7 +807,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_rotating_gestures" app:switchPadding="@dimen/medium_margin"/> @@ -870,7 +830,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_highest_quality" app:switchPadding="@dimen/medium_margin"/> @@ -894,7 +853,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/allow_one_to_one_zoom" app:switchPadding="@dimen/medium_margin"/> @@ -912,7 +870,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/extended_details" android:textAllCaps="true" @@ -936,7 +893,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_extended_details" app:switchPadding="@dimen/medium_margin"/> @@ -959,7 +915,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/hide_extended_details" app:switchPadding="@dimen/medium_margin"/> @@ -981,7 +936,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/manage_extended_details"/> @@ -998,7 +952,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/security" android:textAllCaps="true" @@ -1022,7 +975,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/password_protect_hidden_items" app:switchPadding="@dimen/medium_margin"/> @@ -1046,7 +998,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/password_protect_whole_app" app:switchPadding="@dimen/medium_margin"/> @@ -1070,7 +1021,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/password_protect_file_deletion" app:switchPadding="@dimen/medium_margin"/> @@ -1088,7 +1038,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/file_operations" android:textAllCaps="true" @@ -1112,7 +1061,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/delete_empty_folders" app:switchPadding="@dimen/medium_margin"/> @@ -1136,7 +1084,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/keep_last_modified" app:switchPadding="@dimen/medium_margin"/> @@ -1160,7 +1107,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/skip_delete_confirmation" app:switchPadding="@dimen/medium_margin"/> @@ -1178,7 +1124,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/bottom_actions" android:textAllCaps="true" @@ -1202,7 +1147,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_at_bottom" app:switchPadding="@dimen/medium_margin"/> @@ -1225,7 +1169,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/manage_bottom_actions"/> @@ -1242,7 +1185,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/recycle_bin" android:textAllCaps="true" @@ -1266,7 +1208,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/move_items_into_recycle_bin" app:switchPadding="@dimen/medium_margin"/> @@ -1290,7 +1231,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_recycle_bin" app:switchPadding="@dimen/medium_margin"/> @@ -1314,7 +1254,6 @@ android:background="@null" android:clickable="false" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/show_recycle_bin_last" app:switchPadding="@dimen/medium_margin"/> @@ -1337,7 +1276,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toStartOf="@+id/settings_empty_recycle_bin_size" - android:layout_toLeftOf="@+id/settings_empty_recycle_bin_size" android:paddingLeft="@dimen/medium_margin" android:paddingRight="@dimen/medium_margin" android:text="@string/empty_recycle_bin"/> @@ -1347,9 +1285,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_marginEnd="@dimen/small_margin" - android:layout_marginRight="@dimen/small_margin" android:background="@null" android:clickable="false"/> @@ -1367,7 +1303,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bigger_margin" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/migrating" android:textAllCaps="true" @@ -1390,7 +1325,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/export_settings"/> @@ -1412,7 +1346,6 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:text="@string/import_settings"/> diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml index d7962a628..224c6425a 100644 --- a/app/src/main/res/layout/activity_video_player.xml +++ b/app/src/main/res/layout/activity_video_player.xml @@ -23,8 +23,7 @@ android:id="@+id/video_volume_controller" android:layout_width="@dimen/media_side_slider_width" android:layout_height="match_parent" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true"/> + android:layout_alignParentEnd="true"/> @@ -100,7 +100,6 @@ android:layout_alignTop="@+id/config_bg_color" android:layout_alignBottom="@+id/config_bg_color" android:layout_toEndOf="@+id/config_bg_color" - android:layout_toRightOf="@+id/config_bg_color" android:background="@android:color/white"> @@ -78,7 +75,6 @@ android:layout_alignTop="@+id/video_seekbar" android:layout_alignBottom="@+id/video_seekbar" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:background="?attr/selectableItemBackgroundBorderless" android:gravity="center_vertical" android:paddingLeft="@dimen/activity_margin" diff --git a/app/src/main/res/layout/dialog_custom_aspect_ratio.xml b/app/src/main/res/layout/dialog_custom_aspect_ratio.xml index 3f9180ae0..7650ee275 100644 --- a/app/src/main/res/layout/dialog_custom_aspect_ratio.xml +++ b/app/src/main/res/layout/dialog_custom_aspect_ratio.xml @@ -33,8 +33,8 @@ android:layout_height="wrap_content" android:layout_alignTop="@+id/aspect_ratio_width" android:layout_alignBottom="@+id/aspect_ratio_width" - android:layout_toLeftOf="@+id/aspect_ratio_height" - android:layout_toRightOf="@+id/aspect_ratio_width" + android:layout_toStartOf="@+id/aspect_ratio_height" + android:layout_toEndOf="@+id/aspect_ratio_width" android:gravity="center" android:text=":" android:textStyle="bold"/> @@ -44,8 +44,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="50dp" - android:layout_marginLeft="50dp" - android:layout_toRightOf="@+id/aspect_ratio_width_label" + android:layout_toEndOf="@+id/aspect_ratio_width_label" android:text="@string/height"/> + android:paddingStart="@dimen/normal_margin"> @@ -40,7 +36,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:paddingTop="@dimen/normal_margin"> diff --git a/app/src/main/res/layout/dialog_medium_picker.xml b/app/src/main/res/layout/dialog_medium_picker.xml index c9b59d2d8..cc06575dc 100644 --- a/app/src/main/res/layout/dialog_medium_picker.xml +++ b/app/src/main/res/layout/dialog_medium_picker.xml @@ -19,9 +19,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:paddingStart="@dimen/normal_margin" - android:paddingLeft="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin"> @@ -32,7 +30,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:paddingTop="@dimen/normal_margin"> diff --git a/app/src/main/res/layout/dialog_other_aspect_ratio.xml b/app/src/main/res/layout/dialog_other_aspect_ratio.xml index 61487c688..661245a51 100644 --- a/app/src/main/res/layout/dialog_other_aspect_ratio.xml +++ b/app/src/main/res/layout/dialog_other_aspect_ratio.xml @@ -27,7 +27,7 @@ android:id="@+id/other_aspect_ratio_2_1" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" android:paddingTop="@dimen/normal_margin" android:paddingBottom="@dimen/normal_margin" android:text="2:1" @@ -37,18 +37,17 @@ android:id="@+id/other_aspect_ratio_3_2" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" android:paddingTop="@dimen/normal_margin" android:paddingBottom="@dimen/normal_margin" android:text="3:2" android:textSize="@dimen/bigger_text_size"/> - + android:paddingEnd="@dimen/small_margin"/> @@ -27,9 +26,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:ems="5" - android:gravity="right" + android:gravity="end" android:imeOptions="actionDone" android:inputType="number" android:maxLength="5" @@ -43,7 +41,6 @@ android:layout_below="@+id/interval_label" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin"> @@ -64,7 +61,6 @@ android:layout_below="@+id/include_videos_holder" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin"> @@ -85,7 +81,6 @@ android:layout_below="@+id/include_gifs_holder" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin"> @@ -106,7 +101,6 @@ android:layout_below="@+id/random_order_holder" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin" android:visibility="gone"> @@ -128,7 +122,6 @@ android:layout_below="@+id/use_fade_holder" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin"> @@ -149,7 +142,6 @@ android:layout_below="@+id/move_backwards_holder" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/medium_margin" - android:paddingLeft="@dimen/medium_margin" android:paddingTop="@dimen/activity_margin" android:paddingBottom="@dimen/activity_margin"> diff --git a/app/src/main/res/layout/directory_item_grid.xml b/app/src/main/res/layout/directory_item_grid.xml index 550001a4a..9f72281c9 100644 --- a/app/src/main/res/layout/directory_item_grid.xml +++ b/app/src/main/res/layout/directory_item_grid.xml @@ -17,10 +17,9 @@ android:id="@+id/dir_check" android:layout_width="@dimen/selection_check_size" android:layout_height="@dimen/selection_check_size" - android:layout_alignRight="@+id/dir_shadow_holder" + android:layout_alignEnd="@+id/dir_shadow_holder" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_margin="@dimen/small_margin" android:background="@drawable/circle_background" android:padding="@dimen/tiny_margin" @@ -32,7 +31,6 @@ android:layout_width="@dimen/selection_check_size" android:layout_height="@dimen/selection_check_size" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_margin="@dimen/small_margin" android:background="@drawable/circle_black_background" @@ -44,8 +42,8 @@ android:id="@+id/dir_shadow_holder" android:layout_width="match_parent" android:layout_height="@dimen/tmb_shadow_height" - android:layout_alignLeft="@+id/dir_bottom_holder" - android:layout_alignRight="@+id/dir_bottom_holder" + android:layout_alignStart="@+id/dir_bottom_holder" + android:layout_alignEnd="@+id/dir_bottom_holder" android:layout_alignParentBottom="true" android:background="@drawable/gradient_background"/> @@ -53,8 +51,8 @@ android:id="@+id/dir_bottom_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_alignLeft="@+id/dir_thumbnail" - android:layout_alignRight="@+id/dir_thumbnail" + android:layout_alignStart="@+id/dir_thumbnail" + android:layout_alignEnd="@+id/dir_thumbnail" android:layout_alignParentBottom="true" android:gravity="bottom" android:orientation="vertical" @@ -69,9 +67,9 @@ android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="2" + android:paddingBottom="@dimen/small_margin" android:shadowColor="@color/default_background_color" android:shadowRadius="4" - android:paddingBottom="@dimen/small_margin" android:textColor="@android:color/white" android:textSize="@dimen/normal_text_size"/> @@ -88,11 +86,10 @@ android:id="@+id/dir_location" android:layout_width="@dimen/sd_card_icon_size" android:layout_height="@dimen/sd_card_icon_size" - android:layout_alignRight="@+id/dir_bottom_holder" + android:layout_alignEnd="@+id/dir_bottom_holder" android:layout_alignParentBottom="true" android:alpha="0.8" android:paddingEnd="@dimen/small_margin" - android:paddingRight="@dimen/small_margin" android:paddingBottom="@dimen/small_margin" android:src="@drawable/ic_sd_card" android:visibility="gone"/> diff --git a/app/src/main/res/layout/directory_item_list.xml b/app/src/main/res/layout/directory_item_list.xml index 4a0036d7f..8534c4552 100644 --- a/app/src/main/res/layout/directory_item_list.xml +++ b/app/src/main/res/layout/directory_item_list.xml @@ -6,7 +6,7 @@ android:layout_height="wrap_content" android:clickable="true" android:focusable="true" - android:paddingLeft="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" android:paddingTop="@dimen/small_margin"> @@ -58,7 +57,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/dir_name" - android:layout_toRightOf="@+id/dir_name" + android:layout_toEndOf="@+id/dir_name" android:alpha="0.4" android:textColor="@android:color/white" android:textSize="@dimen/smaller_text_size"/> @@ -68,9 +67,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_alignParentBottom="true" - android:layout_marginRight="@dimen/small_margin" + android:layout_marginEnd="@dimen/small_margin" android:gravity="end" android:orientation="horizontal" android:paddingBottom="@dimen/tiny_margin"> @@ -98,7 +96,7 @@ android:layout_height="1dp" android:layout_alignBottom="@+id/dir_thumbnail" android:layout_marginTop="2dp" - android:layout_toRightOf="@+id/dir_thumbnail" + android:layout_toEndOf="@+id/dir_thumbnail" android:background="@drawable/divider"/> diff --git a/app/src/main/res/layout/pager_photo_item.xml b/app/src/main/res/layout/pager_photo_item.xml index 7484532eb..2336176cb 100644 --- a/app/src/main/res/layout/pager_photo_item.xml +++ b/app/src/main/res/layout/pager_photo_item.xml @@ -45,7 +45,7 @@ android:id="@+id/photo_details" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_marginLeft="@dimen/small_margin" android:layout_marginRight="@dimen/small_margin" android:background="@color/gradient_grey_start" @@ -59,8 +59,7 @@ android:id="@+id/photo_brightness_controller" android:layout_width="@dimen/media_side_slider_width" android:layout_height="match_parent" - android:layout_alignParentStart="true" - android:layout_alignParentLeft="true"/> + android:layout_alignParentStart="true"/> + android:layout_alignParentEnd="true"/> diff --git a/app/src/main/res/layout/pager_video_item.xml b/app/src/main/res/layout/pager_video_item.xml index 9db21e6a4..4a18f5add 100644 --- a/app/src/main/res/layout/pager_video_item.xml +++ b/app/src/main/res/layout/pager_video_item.xml @@ -28,8 +28,7 @@ android:id="@+id/video_volume_controller" android:layout_width="@dimen/media_side_slider_width" android:layout_height="match_parent" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true"/> + android:layout_alignParentEnd="true"/> + android:layout_alignParentEnd="true"/> @@ -48,9 +47,9 @@ android:id="@+id/play_outline" android:layout_width="@dimen/play_outline_icon_size" android:layout_height="@dimen/play_outline_icon_size" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" - android:layout_marginRight="@dimen/small_margin" + android:layout_marginEnd="@dimen/small_margin" android:paddingBottom="6dp" android:src="@drawable/img_play_outline_empty" android:visibility="gone"/> @@ -61,7 +60,7 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="6dp" - android:layout_toLeftOf="@+id/play_outline" + android:layout_toStartOf="@+id/play_outline" android:paddingLeft="@dimen/small_margin" android:paddingRight="@dimen/small_margin" android:paddingBottom="@dimen/small_margin" @@ -75,7 +74,7 @@ android:layout_height="1dp" android:layout_alignBottom="@+id/medium_thumbnail" android:layout_marginTop="2dp" - android:layout_toRightOf="@+id/medium_thumbnail" + android:layout_toEndOf="@+id/medium_thumbnail" android:background="@drawable/divider"/> From 0cfaea440f4a4a9d7c20edfaff2c1ae2aeedbc47 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 17 May 2019 10:46:33 +0200 Subject: [PATCH 048/165] adding some vertical rules to some ConstraintLayout views --- app/src/main/res/layout/bottom_actions.xml | 70 +++++++++++++++---- .../layout/bottom_actions_aspect_ratio.xml | 25 +++++-- 2 files changed, 76 insertions(+), 19 deletions(-) diff --git a/app/src/main/res/layout/bottom_actions.xml b/app/src/main/res/layout/bottom_actions.xml index 9e8cf713a..c96734881 100644 --- a/app/src/main/res/layout/bottom_actions.xml +++ b/app/src/main/res/layout/bottom_actions.xml @@ -16,9 +16,12 @@ android:background="?attr/selectableItemBackgroundBorderless" android:padding="@dimen/medium_margin" android:src="@drawable/ic_star_off" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/bottom_edit" app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toStartOf="parent"/> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_favorite" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_edit" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_share" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_delete" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_rotate" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_properties" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_change_orientation" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_slideshow" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_show_on_map" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_toggle_file_visibility" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_rename" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_set_as" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_copy" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> diff --git a/app/src/main/res/layout/bottom_actions_aspect_ratio.xml b/app/src/main/res/layout/bottom_actions_aspect_ratio.xml index 8663bf358..e5ffd02df 100644 --- a/app/src/main/res/layout/bottom_actions_aspect_ratio.xml +++ b/app/src/main/res/layout/bottom_actions_aspect_ratio.xml @@ -17,9 +17,12 @@ android:textAllCaps="true" android:textColor="@android:color/white" android:textSize="@dimen/big_text_size" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio_one_one" app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toStartOf="parent"/> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_free" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_one_one" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_four_three" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_sixteen_nine" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"/> From 561279f3e9ac8fea86f7914783a405d5a1b352cd Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 20 May 2019 23:47:16 +0200 Subject: [PATCH 049/165] updating gradle to 3.4.1 --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 25b8882f0..8d24b7b94 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ dependencies { 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.17-SNAPSHOT' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha5' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1' 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' diff --git a/build.gradle b/build.gradle index d760187ae..a237dba1e 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 25b7a0a0abd14797e77c08ba208223f1ceb4045f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 21:10:49 +0200 Subject: [PATCH 050/165] improve batch renaming, allow using date time patterns --- app/build.gradle | 2 +- .../simplemobiletools/gallery/pro/adapters/MediaAdapter.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8d24b7b94..d403c672f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.12.23' + implementation 'com.simplemobiletools:commons:5.13.0' 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' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index 788dc335c..71172f323 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -11,7 +11,7 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog -import com.simplemobiletools.commons.dialogs.RenameItemsDialog +import com.simplemobiletools.commons.dialogs.RenameItemsPatternDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller @@ -215,7 +215,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList Date: Sat, 25 May 2019 21:24:32 +0200 Subject: [PATCH 051/165] adding a new string as a placeholder for no media found --- app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-ca/strings.xml | 1 + app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-da/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-hr/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 1 + app/src/main/res/values-id/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko-rKR/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nb/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sl/strings.xml | 1 + app/src/main/res/values-sr/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 34 files changed, 34 insertions(+) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 40e406413..623bb3c8a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -65,6 +65,7 @@ إدارة المجلدات المضمنة اضافة مجلد إذا كان لديك بعض المجلدات التي تحتوي على الملتيميديا ، ولكن لم يتم التعرف عليها من قبل التطبيق، يمكنك إضافتها يدويا هنا.\n + No media files have been found. You can solve it by adding the folders containing media files manually. \n لن تؤدي إضافة بعض العناصر هنا إلى استبعاد أي مجلد آخر. diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 046a14dba..3d299a0c0 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -63,6 +63,7 @@ Manage included folders Add folder If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. + No media files have been found. You can solve it by adding the folders containing media files manually. Resize diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 3d9c658ed..2826c8ec4 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -63,6 +63,7 @@ Gestionar carpetes incloses Agregar carpeta Si tens alguna carpeta que contingui multimèdia però no ha estat reconeguda per la aplicació, pots agregar-les manualment aquí. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionar diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index c8d15c1e5..6d2c18104 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -63,6 +63,7 @@ Spravovat přidané složky Přidat složku Pokud máte nějaké složky obsahující média, ale nebyly aplikací nalezeny, můžete je zde přidat ručně. + No media files have been found. You can solve it by adding the folders containing media files manually. Změnit velikost diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 56124fb01..ff128c4fa 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -63,6 +63,7 @@ Administrer inkluderede mapper Tilføj mappe Hvis du har mapper med mediefiler som appen ikke har fundet, kan du manuelt tilføje dem her.\n\nDet vil ikke ekskludere andre mapper. + No media files have been found. You can solve it by adding the folders containing media files manually. Skaler diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b5007c42f..28d8069c7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -63,6 +63,7 @@ Einbezogene Ordner verwalten Ordner hinzufügen Solltest du weitere Mediendateien haben, die von der App nicht gefunden wurden, kannst du deren Ordner hier manuell hinzufügen. + No media files have been found. You can solve it by adding the folders containing media files manually. Größe ändern diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index eb6a51e51..323b0b2e9 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -63,6 +63,7 @@ Διαχείριση φακέλων που συμπεριλαμβάνονται Προσθήκη φακέλου Αν υπάρχουν κάποιοι φάκελοι που περιέχουν πολυμέσα, αλλά δεν αναγνωρίζονται από την εφαρμογή, μπορείτε να τους προσθέσετε χειροκίνητα εδώ.\n\nΗ προσθήκη στοιχείων εδώ, δεν θα εξαιρέσει κάποιον άλλο φάκελο. + No media files have been found. You can solve it by adding the folders containing media files manually. Αλλαγή μεγέθους diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 194364f59..4b129b459 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -63,6 +63,7 @@ Gestionar carpetas incluidas Agregar carpeta Si tiene algunas carpetas que contengan multimedia, pero que no fueron reconocidas por la aplicación, puede agregarlas manualmente aquí. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionar diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index c2775cecd..6cad3b39d 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -63,6 +63,7 @@ Hallitse sisällettyjä kansioita Lisää kansio Jos sinulla on kansioita, jotka sisältää mediaa, mutta sovellus ei tunnistanut, voit lisätä ne manuaalisesti tähän.\n\Lisääminen ei poissulje muita kansioita. + No media files have been found. You can solve it by adding the folders containing media files manually. Rajaa diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index de4a03228..7d1726867 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -63,6 +63,7 @@ Gérer les dossiers ajoutés Ajouter un dossier Si vous avez des dossiers contenant des médias qui ne sont pas affichés dans l\'application, vous pouvez les ajouter manuellement ici.\n\nCet ajout n\'exclura aucun autre dossier. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionner diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 2055bd6ef..3bfd5b4f8 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -63,6 +63,7 @@ Xestionar cartafoles incluídos Engadir cartafol Si ten algún cartafol con medios, mais non foi recoñecido polo aplicativo, pódeo engadir manualmente.\n\nEngadindo aquí elementos non eliminará outros. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionar diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 081714f73..999514a54 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -63,6 +63,7 @@ Upravljajte uključenim mapama Dodaj mapu Ako imate neke mape koje sadrže medije, ali ih aplikacija nije prepoznala, ručno ih možete dodati ovdje.\n\nDodavanjem nekih stavki ovdje nećete izuzeti bilo koju drugu mapu. + No media files have been found. You can solve it by adding the folders containing media files manually. Promjeni veličinu diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index a6a7e03b0..c446a3179 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -63,6 +63,7 @@ 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. + No media files have been found. You can solve it by adding the folders containing media files manually. Átméretezés diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 2343f3803..761dd357f 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -63,6 +63,7 @@ Atur folder yang disertakan Tambah folder Jika ada folder yang berisi file media, namun tidak dikenali oleh aplikasi ini, Anda bisa menambahkannya disini secara manual.\n\nMenambah beberapa item disini tidak akan mengecualikan folder yang lain. + No media files have been found. You can solve it by adding the folders containing media files manually. Ubah ukuran diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5728aed02..44e5ad685 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -63,6 +63,7 @@ Gestisci le cartelle incluse Aggiungi cartella Se si hanno alcune cartelle che contengono media, ma non sono state riconosciute dall\'app, si possono aggiungerle manualmente qui. + No media files have been found. You can solve it by adding the folders containing media files manually. Ridimensiona diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 90ab09151..a121af0f0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -63,6 +63,7 @@ 追加フォルダの管理 フォルダを追加 メディア入りのフォルダがアプリで認識されない場合は手動で追加します。 + No media files have been found. You can solve it by adding the folders containing media files manually. リサイズ diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 6e3e2f342..72e47130f 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -63,6 +63,7 @@ 포함된 폴더 관리 폴더 추가 미디어가 포함되어 있지만 앱에서 인식하지 못하는 폴더가있는 경우 여기에서 수동으로 추가 할 수 있습니다. \n\n여기에 항목을 추가해도 원본 폴더에서 제외되지 않습니다. + No media files have been found. You can solve it by adding the folders containing media files manually. 크기 변경 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 22444b047..4f4f52afc 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -63,6 +63,7 @@ Tvarkyti įtrauktus aplankus Įtraukti aplanką Jei turite tam tikrų aplankų, kuriuose yra medijos , bet kurių neneatpažįsta programėlė, galite juos pridėti rankiniu būdu. \ N \ nPridedant kai kuriuos elementus, neišskirsite jokio kito aplanko. + No media files have been found. You can solve it by adding the folders containing media files manually. Keisti dydį diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index ef7d0707a..77e72a092 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -63,6 +63,7 @@ Håndter inkluderte mapper Legg til mappe Hvis du har noen mapper som inneholder media, men ikke ble gjenkjent av appen, kan du legge dem til manuelt her.\n\nÅ legge til noen elementer her, ekskluderer ikke noen annen mappe. + No media files have been found. You can solve it by adding the folders containing media files manually. Endre størrelse diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 29ff119f5..f4103f8e6 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -63,6 +63,7 @@ Toegevoegde mappen beheren Map toevoegen Als er mappen zijn die wel media bevatten, maar niet door de galerij worden herkend, voeg deze mappen dan hier handmatig toe.\n\nHet hier toevoegen van mappen zal andere mappen niet uitsluiten. + No media files have been found. You can solve it by adding the folders containing media files manually. Grootte aanpassen diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b7edb9672..0a3b68361 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -63,6 +63,7 @@ Zarządzaj dołączonymi folderami Dodaj folder Jeśli masz jakieś foldery z multimediami, ale aplikacja ich nie wykryła, możesz je dodać ręcznie tutaj. + No media files have been found. You can solve it by adding the folders containing media files manually. Zmień rozmiar diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fc60450b6..609e6d77c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -63,6 +63,7 @@ Gerenciar pastas incluídas Adicionar pasta Se possuir pastas com dados multimídia não reconhecidos pelo aplicativo, aqui você pode adicioná-las manualmente. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionar diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e878df4c2..63ae35e77 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -63,6 +63,7 @@ Gerir pastas incluídas Adicionar pasta Se possuir pastas com dados multimédia não reconhecidos pela aplicação, aqui pode adicioná-las manualmente. + No media files have been found. You can solve it by adding the folders containing media files manually. Redimensionar diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 39de7f12a..5abb042f1 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -63,6 +63,7 @@ Управление включёнными папками Добавить папку Если у вас есть папки, содержащие медиафайлы, но не распознанные приложением, вы можете добавить их вручную.\n\nДобавление папки не приводит к исключению каких-либо других. + No media files have been found. You can solve it by adding the folders containing media files manually. Изменить размер diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 7c6cc27c5..7439c6e43 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -63,6 +63,7 @@ Spravovať pridané priečinky Pridať priečinok Ak máte nejaké priečinky obsahujúce médiá, ale neboli rozpoznané aplikáciou, môžete ich tu manuálne pridať.\n\nPridanie nových položiek sem nevylúči žiadny iný priečinok. + Nenašli sa žiadne súbory s médiami. Viete to napraviť manuálnym pridaním priečinkov, ktoré obsahujú médiá. Zmeniť veľkosť diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 33db588cc..ff68e020b 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -63,6 +63,7 @@ Urejaj vključene mape Dodaj mapo Če imate mape, ki vsebujejo medijske datoteke, ki jih aplikacija ni prepoznala, jih lahko ročno dodate tukaj.\n\nDodajanje novih elementov ne bo izključilo drugih. + No media files have been found. You can solve it by adding the folders containing media files manually. Spremeni velikost diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 254e28851..ef85933bf 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -63,6 +63,7 @@ Управљај укљученим фасциклама Додај фасциклу Ако имате неке фасцикле које садрже медију, али нису препознате од стране апликације, можете их додати ручно овде. \n\nДодавањем неких ставки овде нећете изузети неку другу фасциклу. + No media files have been found. You can solve it by adding the folders containing media files manually. Промена величине diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 23ab204f7..ba827da08 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -63,6 +63,7 @@ Hantera inkluderade mappar Lägg till mapp Om du har vissa mappar som innehåller media men som inte känns igen av appen, kan du lägga till dem manuellt här. + No media files have been found. You can solve it by adding the folders containing media files manually. Ändra storlek diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f5cf36ae0..06764a5e5 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -63,6 +63,7 @@ Dahil edilen klasörleri yönet Klasör ekle Medya içeren, ancak uygulama tarafından tanınmayan bazı klasörleriniz varsa, bunları elle ekleyebilirsiniz.\n\nBuraya bazı öğeler eklemek başka bir klasörü hariç tutmaz. + No media files have been found. You can solve it by adding the folders containing media files manually. Yeniden boyutlandır diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a20a87400..b4b5e12a2 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -63,6 +63,7 @@ Керування включеними теками Додати теку Якщо у вас є теки з медіафайлами, але вони не були розпізнані додатком, ви можете додати їх тут вручну.\n\nДодавання елементів сюди не виключить будь-яку іншу теку. + No media files have been found. You can solve it by adding the folders containing media files manually. Змінити розмір diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 73947644d..cb14f652c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -63,6 +63,7 @@ 管理包含目录 添加目录 如果您还有应用未扫描到的媒体文件,请添加所在目录路径。 + No media files have been found. You can solve it by adding the folders containing media files manually. 缩放 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index dce671369..ff936c7c9 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -63,6 +63,7 @@ 管理包含資料夾 增加資料夾 如果有些資料夾含有媒體檔案,卻沒被辨識到,您可以在此手動加入。 + No media files have been found. You can solve it by adding the folders containing media files manually. 縮放 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index dce671369..ff936c7c9 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -63,6 +63,7 @@ 管理包含資料夾 增加資料夾 如果有些資料夾含有媒體檔案,卻沒被辨識到,您可以在此手動加入。 + No media files have been found. You can solve it by adding the folders containing media files manually. 縮放 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a91c739e5..17c09aba8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -63,6 +63,7 @@ Manage included folders Add folder If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. + No media files have been found. You can solve it by adding the folders containing media files manually. Resize From b77e7fbca6e6a138c13c5a9c851f5f22b4921b1f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 21:44:30 +0200 Subject: [PATCH 052/165] moving the function for creating directories from files to Context extension --- .../gallery/pro/activities/MainActivity.kt | 20 ------------------- .../gallery/pro/extensions/Context.kt | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 20 deletions(-) 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 cdf8b2186..2c7b24435 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 @@ -39,7 +39,6 @@ import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.DirectoryOperationsListener import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.jobs.NewPhotoFetcher -import com.simplemobiletools.gallery.pro.models.AlbumCover import com.simplemobiletools.gallery.pro.models.Directory import com.simplemobiletools.gallery.pro.models.Medium import kotlinx.android.synthetic.main.activity_main.* @@ -1007,25 +1006,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { directories_grid.beVisibleIf(directories_empty_text_label.isGone()) } - private fun createDirectoryFromMedia(path: String, curMedia: ArrayList, albumCovers: ArrayList, hiddenString: String, - includedFolders: MutableSet, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory { - var thumbnail = curMedia.firstOrNull { File(it.path).exists() }?.path ?: "" - albumCovers.forEach { - if (it.path == path && File(it.tmb).exists()) { - thumbnail = it.tmb - } - } - - val firstItem = curMedia.first() - val lastItem = curMedia.last() - val dirName = checkAppendingHidden(path, hiddenString, includedFolders) - val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified) - val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken) - val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L - val mediaTypes = curMedia.getDirMediaTypes() - return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes) - } - private fun setupAdapter(dirs: ArrayList, textToSearch: String = "") { val currAdapter = directories_grid.adapter val distinctDirs = dirs.distinctBy { it.path.getDistinctPath() }.toMutableList() as ArrayList 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 02d2e2aca..78aa74824 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 @@ -28,6 +28,7 @@ import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao +import com.simplemobiletools.gallery.pro.models.AlbumCover import com.simplemobiletools.gallery.pro.models.Directory import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.ThumbnailItem @@ -786,3 +787,22 @@ fun Context.addPathToDB(path: String) { } }.start() } + +fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList, albumCovers: ArrayList, hiddenString: String, + includedFolders: MutableSet, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory { + var thumbnail = curMedia.firstOrNull { File(it.path).exists() }?.path ?: "" + albumCovers.forEach { + if (it.path == path && File(it.tmb).exists()) { + thumbnail = it.tmb + } + } + + val firstItem = curMedia.first() + val lastItem = curMedia.last() + val dirName = checkAppendingHidden(path, hiddenString, includedFolders) + val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified) + val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken) + val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L + val mediaTypes = curMedia.getDirMediaTypes() + return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes) +} From d9a3dda0959f4dd8d67f99d16df1a723335bfa91 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 21:53:12 +0200 Subject: [PATCH 053/165] update the stored directories at background media adding too --- .../gallery/pro/jobs/NewPhotoFetcher.kt | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) 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 8039ae280..9e0e4ad5f 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 @@ -12,8 +12,14 @@ import android.net.Uri import android.os.Build import android.os.Handler import android.provider.MediaStore +import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getStringValue -import com.simplemobiletools.gallery.pro.extensions.addPathToDB +import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN +import com.simplemobiletools.commons.helpers.SORT_BY_SIZE +import com.simplemobiletools.commons.helpers.SORT_DESCENDING +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.MediaFetcher // based on https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#addTriggerContentUri(android.app.job.JobInfo.TriggerContentUri) @TargetApi(Build.VERSION_CODES.N) @@ -54,6 +60,7 @@ class NewPhotoFetcher : JobService() { override fun onStartJob(params: JobParameters): Boolean { mRunningParams = params + val affectedFolderPaths = HashSet() if (params.triggeredContentAuthorities != null && params.triggeredContentUris != null) { val ids = arrayListOf() for (uri in params.triggeredContentUris!!) { @@ -80,6 +87,7 @@ class NewPhotoFetcher : JobService() { cursor = contentResolver.query(it, projection, selection.toString(), null, null) while (cursor!!.moveToNext()) { val path = cursor!!.getStringValue(MediaStore.Images.ImageColumns.DATA) + affectedFolderPaths.add(path.getParentPath()) addPathToDB(path) } } @@ -90,6 +98,24 @@ class NewPhotoFetcher : JobService() { } } + Thread { + affectedFolderPaths.forEach { + val mediaFetcher = MediaFetcher(applicationContext) + val getImagesOnly = false + val getVideosOnly = false + val hiddenString = getString(R.string.hidden) + val albumCovers = config.parseAlbumCovers() + val includedFolders = config.includedFolders + val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0 + val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 + val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0 + val favoritePaths = getFavoritePaths() + val curMedia = mediaFetcher.getFilesFrom(it, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) + val directory = createDirectoryFromMedia(it, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) + updateDBDirectory(directory, galleryDB.DirectoryDao()) + } + }.start() + mHandler.post(mWorker) return true } From 7124290e5ba9457e5ce97c40784f0cba74a584cf Mon Sep 17 00:00:00 2001 From: chreddy Date: Sat, 25 May 2019 22:09:28 +0200 Subject: [PATCH 054/165] Update Danish translation --- app/src/main/res/values-da/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ff128c4fa..e7a520503 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -63,7 +63,7 @@ Administrer inkluderede mapper Tilføj mappe Hvis du har mapper med mediefiler som appen ikke har fundet, kan du manuelt tilføje dem her.\n\nDet vil ikke ekskludere andre mapper. - No media files have been found. You can solve it by adding the folders containing media files manually. + Ingen mediefiler er fundet. Dette kan løses ved manuelt at tilføje mapper som indeholder mediefiler. Skaler From e0eb76c68ed91b9758cb872c9ab766a8a8347ed4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 22:18:25 +0200 Subject: [PATCH 055/165] fix #1425, do not show the Add To Favorites menu item at the recycle bin --- .../simplemobiletools/gallery/pro/adapters/MediaAdapter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index 71172f323..e0eafbb6a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -182,8 +182,8 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList) { - menu.findItem(R.id.cab_add_to_favorites).isVisible = selectedItems.any { !it.isFavorite } - menu.findItem(R.id.cab_remove_from_favorites).isVisible = selectedItems.any { it.isFavorite } + menu.findItem(R.id.cab_add_to_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { !it.isFavorite } + menu.findItem(R.id.cab_remove_from_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { it.isFavorite } } private fun confirmSelection() { From 54e91dac7a3865ef7f21b412480a6e0c99ccec5f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 22:23:15 +0200 Subject: [PATCH 056/165] do not show the Add to favorites menu item at the bin --- .../gallery/pro/activities/ViewPagerActivity.kt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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 f698a21c9..775ef6ab1 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 @@ -162,8 +162,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 + findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) findItem(R.id.menu_create_shortcut).isVisible = isOreoPlus() findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 @@ -736,13 +736,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun initBottomActionButtons() { + val currentMedium = getCurrentMedium() val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 - bottom_favorite.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE != 0) + bottom_favorite.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE != 0 && currentMedium?.getIsInRecycleBin() == false) bottom_favorite.setOnClickListener { toggleFavorite() } - bottom_edit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && getCurrentMedium()?.isSVG() == false) + bottom_edit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && currentMedium?.isSVG() == false) bottom_edit.setOnClickListener { openEditor(getCurrentPath()) } @@ -774,7 +775,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View else -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } mIsOrientationLocked = requestedOrientation != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED - updateBottomActionIcons(getCurrentMedium()) + updateBottomActionIcons(currentMedium) } bottom_slideshow.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_SLIDESHOW != 0) @@ -789,14 +790,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View bottom_toggle_file_visibility.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY != 0) bottom_toggle_file_visibility.setOnClickListener { - getCurrentMedium()?.apply { + currentMedium?.apply { toggleFileVisibility(!isHidden()) { - updateBottomActionIcons(getCurrentMedium()) + updateBottomActionIcons(currentMedium) } } } - bottom_rename.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RENAME != 0 && getCurrentMedium()?.getIsInRecycleBin() == false) + bottom_rename.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RENAME != 0 && currentMedium?.getIsInRecycleBin() == false) bottom_rename.setOnClickListener { renameFile() } From e9cee05b9d12faba0ce73ddc9b8e693092dcc4fd Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 May 2019 22:36:28 +0200 Subject: [PATCH 057/165] fix #1424, delete empty folders when appropriate --- .../gallery/pro/activities/ViewPagerActivity.kt | 2 ++ 1 file changed, 2 insertions(+) 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 775ef6ab1..8d944e919 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 @@ -920,6 +920,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (it) { tryDeleteFileDirItem(fileDirItem, false, false) { mIgnoredPaths.remove(fileDirItem.path) + deleteDirectoryIfEmpty() } } else { toast(R.string.unknown_error_occurred) @@ -939,6 +940,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View tryDeleteFileDirItem(fileDirItem, false, true) { mIgnoredPaths.remove(fileDirItem.path) + deleteDirectoryIfEmpty() } } From 14454349302d4a7206ddbf9a0caa121d4a50053f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 10:25:23 +0200 Subject: [PATCH 058/165] moving the directory refreshing function in a context extension --- .../gallery/pro/extensions/Context.kt | 16 ++++++++++++++ .../gallery/pro/jobs/NewPhotoFetcher.kt | 22 +++---------------- 2 files changed, 19 insertions(+), 19 deletions(-) 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 78aa74824..8b7fdd242 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 @@ -806,3 +806,19 @@ fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList, val mediaTypes = curMedia.getDirMediaTypes() return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes) } + +fun Context.updateDirectoryPath(path: String) { + val mediaFetcher = MediaFetcher(applicationContext) + val getImagesOnly = false + val getVideosOnly = false + val hiddenString = getString(R.string.hidden) + val albumCovers = config.parseAlbumCovers() + val includedFolders = config.includedFolders + val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0 + val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 + val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0 + val favoritePaths = getFavoritePaths() + val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) + val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) + updateDBDirectory(directory, galleryDB.DirectoryDao()) +} 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 9e0e4ad5f..07d24df9d 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 @@ -14,12 +14,8 @@ import android.os.Handler import android.provider.MediaStore import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getStringValue -import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN -import com.simplemobiletools.commons.helpers.SORT_BY_SIZE -import com.simplemobiletools.commons.helpers.SORT_DESCENDING -import com.simplemobiletools.gallery.pro.R -import com.simplemobiletools.gallery.pro.extensions.* -import com.simplemobiletools.gallery.pro.helpers.MediaFetcher +import com.simplemobiletools.gallery.pro.extensions.addPathToDB +import com.simplemobiletools.gallery.pro.extensions.updateDirectoryPath // based on https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#addTriggerContentUri(android.app.job.JobInfo.TriggerContentUri) @TargetApi(Build.VERSION_CODES.N) @@ -100,19 +96,7 @@ class NewPhotoFetcher : JobService() { Thread { affectedFolderPaths.forEach { - val mediaFetcher = MediaFetcher(applicationContext) - val getImagesOnly = false - val getVideosOnly = false - val hiddenString = getString(R.string.hidden) - val albumCovers = config.parseAlbumCovers() - val includedFolders = config.includedFolders - val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0 - val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 - val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0 - val favoritePaths = getFavoritePaths() - val curMedia = mediaFetcher.getFilesFrom(it, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) - val directory = createDirectoryFromMedia(it, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) - updateDBDirectory(directory, galleryDB.DirectoryDao()) + updateDirectoryPath(it) } }.start() From f20ef872cad8c50c8bd7389b844d919c09980260 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 10:29:57 +0200 Subject: [PATCH 059/165] refresh cached directly at contentobserver triggering too --- .../simplemobiletools/gallery/pro/activities/SimpleActivity.kt | 3 +++ 1 file changed, 3 insertions(+) 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 2be7d90fe..684fcd4dc 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 @@ -6,11 +6,13 @@ import android.net.Uri import android.provider.MediaStore import android.view.WindowManager import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getRealPathFromURI import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.addPathToDB import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.updateDirectoryPath open class SimpleActivity : BaseSimpleActivity() { val observer = object : ContentObserver(null) { @@ -18,6 +20,7 @@ open class SimpleActivity : BaseSimpleActivity() { super.onChange(selfChange, uri) val path = getRealPathFromURI(uri) if (path != null) { + updateDirectoryPath(path.getParentPath()) addPathToDB(path) } } From bd36ce4ce99ab68dd0342e02fe46c4ad6fb95571 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 10:38:23 +0200 Subject: [PATCH 060/165] keep last modified field at recycle bin operations, when expected --- .../gallery/pro/extensions/Activity.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 cbc3af7e6..921013ccc 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 @@ -231,10 +231,15 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao paths.forEach { val file = File(it) val internalFile = File(recycleBinPath, it) + val lastModified = file.lastModified() try { if (file.copyRecursively(internalFile, true)) { mediumDao.updateDeleted("$RECYCLE_BIN$it", System.currentTimeMillis(), it) pathsCnt-- + + if (config.keepLastModified) { + internalFile.setLastModified(lastModified) + } } } catch (e: Exception) { showErrorToast(e) @@ -255,6 +260,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa paths.forEach { val source = it val destination = it.removePrefix(recycleBinPath) + val lastModified = File(source).lastModified() var inputStream: InputStream? = null var out: OutputStream? = null @@ -266,6 +272,10 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa mediumDao.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN$destination") } newPaths.add(destination) + + if (config.keepLastModified) { + File(destination).setLastModified(lastModified) + } } catch (e: Exception) { showErrorToast(e) } finally { From 0a10332d10d22a1a6cf13b91f3edf9a0643ec1ca Mon Sep 17 00:00:00 2001 From: spkprs Date: Sun, 26 May 2019 15:23:37 +0300 Subject: [PATCH 061/165] Update strings.xml --- app/src/main/res/values-el/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 323b0b2e9..78a1557f2 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -63,7 +63,7 @@ Διαχείριση φακέλων που συμπεριλαμβάνονται Προσθήκη φακέλου Αν υπάρχουν κάποιοι φάκελοι που περιέχουν πολυμέσα, αλλά δεν αναγνωρίζονται από την εφαρμογή, μπορείτε να τους προσθέσετε χειροκίνητα εδώ.\n\nΗ προσθήκη στοιχείων εδώ, δεν θα εξαιρέσει κάποιον άλλο φάκελο. - No media files have been found. You can solve it by adding the folders containing media files manually. + Δεν βρέθηκαν αρχεία πολυμέσων. Μπορεί να λυθεί αυτό, προσθέτοντας τους φακέλους που περιέχουν αρχεία πολυμέσων με μη αυτόματο τρόπο. Αλλαγή μεγέθους From a9cf7f9d8cc56de631df51e00190501113cb94ff Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 20:37:35 +0200 Subject: [PATCH 062/165] show the warning at deleting a folder in red --- .../gallery/pro/adapters/DirectoryAdapter.kt | 6 ++-- .../pro/dialogs/ConfirmDeleteFolderDialog.kt | 31 +++++++++++++++++++ .../layout/dialog_confirm_delete_folder.xml | 29 +++++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ConfirmDeleteFolderDialog.kt create mode 100644 app/src/main/res/layout/dialog_confirm_delete_folder.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index f4d1e1da5..965250340 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -23,6 +23,7 @@ import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.MediaActivity +import com.simplemobiletools.gallery.pro.dialogs.ConfirmDeleteFolderDialog import com.simplemobiletools.gallery.pro.dialogs.ExcludeFolderDialog import com.simplemobiletools.gallery.pro.dialogs.PickMediumDialog import com.simplemobiletools.gallery.pro.extensions.* @@ -399,10 +400,9 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Unit) { + var dialog: AlertDialog + + init { + val view = activity.layoutInflater.inflate(R.layout.dialog_confirm_delete_folder, null) + view.message.text = message + view.message_warning.text = warningMessage + + val builder = AlertDialog.Builder(activity) + .setPositiveButton(R.string.yes) { dialog, which -> dialogConfirmed() } + + builder.setNegativeButton(R.string.no, null) + + dialog = builder.create().apply { + activity.setupDialogStuff(view, this) + } + } + + private fun dialogConfirmed() { + dialog.dismiss() + callback() + } +} diff --git a/app/src/main/res/layout/dialog_confirm_delete_folder.xml b/app/src/main/res/layout/dialog_confirm_delete_folder.xml new file mode 100644 index 000000000..220c36f09 --- /dev/null +++ b/app/src/main/res/layout/dialog_confirm_delete_folder.xml @@ -0,0 +1,29 @@ + + + + + + + + From 37a04d300be36ecb0411632a88c45a0dac0dc770 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 21:51:31 +0200 Subject: [PATCH 063/165] update the placeholder text appropriately if no media files are found --- app/build.gradle | 2 +- .../pro/activities/IncludedFoldersActivity.kt | 9 +------- .../gallery/pro/activities/MainActivity.kt | 23 +++++++++++++++---- .../gallery/pro/activities/SimpleActivity.kt | 13 +++++++++++ .../gallery/pro/helpers/Config.kt | 2 +- .../gallery/pro/helpers/Constants.kt | 1 + 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d403c672f..d48cf2074 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.0' + implementation 'com.simplemobiletools:commons:5.13.1' 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' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt index b6be4add2..f4e0258c3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt @@ -3,9 +3,7 @@ package com.simplemobiletools.gallery.pro.activities import android.os.Bundle import android.view.Menu import android.view.MenuItem -import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.beVisibleIf -import com.simplemobiletools.commons.extensions.scanPathRecursively import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.adapters.ManageFoldersAdapter @@ -50,13 +48,8 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { } private fun addFolder() { - FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) { - config.lastFilepickerPath = it - config.addIncludedFolder(it) + showAddIncludedFolderDialog { updateFolders() - Thread { - scanPathRecursively(it) - }.start() } } } 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 2c7b24435..255ce9f8d 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 @@ -117,10 +117,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { storeStateVariables() checkWhatsNewDialog() - directories_empty_text.setOnClickListener { - showFilterMediaDialog() - } - mIsPasswordProtectionPending = config.isAppPasswordProtectionOn setupLatestMediaId() @@ -1003,6 +999,25 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun checkPlaceholderVisibility(dirs: ArrayList) { directories_empty_text_label.beVisibleIf(dirs.isEmpty() && mLoadedInitialPhotos) directories_empty_text.beVisibleIf(dirs.isEmpty() && mLoadedInitialPhotos) + + if (dirs.isEmpty() && config.filterMedia == TYPE_DEFAULT_FILTER) { + directories_empty_text_label.text = getString(R.string.no_media_add_included) + directories_empty_text.text = getString(R.string.add_folder) + directories_empty_text.underlineText() + + directories_empty_text.setOnClickListener { + showAddIncludedFolderDialog { + refreshItems() + } + } + } else { + directories_empty_text_label.text = getString(R.string.no_media_with_filters) + directories_empty_text.text = getString(R.string.change_filters_underlined) + directories_empty_text.setOnClickListener { + showFilterMediaDialog() + } + } + directories_grid.beVisibleIf(directories_empty_text_label.isGone()) } 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 684fcd4dc..8b3505972 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 @@ -6,8 +6,10 @@ import android.net.Uri import android.provider.MediaStore import android.view.WindowManager import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getRealPathFromURI +import com.simplemobiletools.commons.extensions.scanPathRecursively import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.addPathToDB @@ -79,4 +81,15 @@ open class SimpleActivity : BaseSimpleActivity() { } catch (ignored: Exception) { } } + + protected fun showAddIncludedFolderDialog(callback: () -> Unit) { + FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) { + config.lastFilepickerPath = it + config.addIncludedFolder(it) + callback() + Thread { + scanPathRecursively(it) + }.start() + } + } } 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 3f0c9839e..bd335ad6c 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 @@ -203,7 +203,7 @@ class Config(context: Context) : BaseConfig(context) { set(blackBackground) = prefs.edit().putBoolean(BLACK_BACKGROUND, blackBackground).apply() var filterMedia: Int - get() = prefs.getInt(FILTER_MEDIA, TYPE_IMAGES or TYPE_VIDEOS or TYPE_GIFS or TYPE_RAWS or TYPE_SVGS) + get() = prefs.getInt(FILTER_MEDIA, TYPE_DEFAULT_FILTER) set(filterMedia) = prefs.edit().putInt(FILTER_MEDIA, filterMedia).apply() var dirColumnCnt: Int 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 b9ba9581d..481d49080 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 @@ -154,6 +154,7 @@ const val TYPE_VIDEOS = 2 const val TYPE_GIFS = 4 const val TYPE_RAWS = 8 const val TYPE_SVGS = 16 +const val TYPE_DEFAULT_FILTER = TYPE_IMAGES or TYPE_VIDEOS or TYPE_GIFS or TYPE_RAWS or TYPE_SVGS const val LOCATION_INTERNAL = 1 const val LOCATION_SD = 2 From d8e0e87cb1e71a2183ef69ccb428d80f651d24db Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 21:57:18 +0200 Subject: [PATCH 064/165] adding some default medium at creating directories from files --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 8b7fdd242..a3dfdda6f 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 @@ -797,8 +797,9 @@ fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList, } } - val firstItem = curMedia.first() - val lastItem = curMedia.last() + val defaultMedium = Medium(0, "", "", "", 0L, 0L, 0L, 0, 0, false, 0L) + val firstItem = curMedia.firstOrNull() ?: defaultMedium + val lastItem = curMedia.lastOrNull() ?: defaultMedium val dirName = checkAppendingHidden(path, hiddenString, includedFolders) val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified) val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken) From e9c23d3d7b4b012751025a39c785bec55c4cb9ef Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 22:01:15 +0200 Subject: [PATCH 065/165] initialize mMedium asap at fragments --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 3 ++- .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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 e63e41893..571f361f7 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 @@ -92,6 +92,8 @@ class PhotoFragment : ViewPagerFragment() { return mView } + mMedium = arguments!!.getSerializable(MEDIUM) as Medium + mView.apply { subsampling_view.setOnClickListener { photoClicked() } gestures_view.setOnClickListener { photoClicked() } @@ -149,7 +151,6 @@ class PhotoFragment : ViewPagerFragment() { mIsFragmentVisible = true } - mMedium = arguments!!.getSerializable(MEDIUM) as Medium if (mMedium.path.startsWith("content://") && !mMedium.path.startsWith("content://mms/")) { val originalPath = mMedium.path mMedium.path = context!!.getRealPathFromURI(Uri.parse(originalPath)) ?: mMedium.path diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index 11f78f20a..fb6f9cde7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -74,6 +74,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private lateinit var mSeekBar: SeekBar override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + mMedium = arguments!!.getSerializable(MEDIUM) as Medium mConfig = context!!.config mView = inflater.inflate(R.layout.pager_video_item, container, false).apply { instant_prev_item.setOnClickListener { listener?.goToPrevItem() } @@ -122,7 +123,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } - mMedium = arguments!!.getSerializable(MEDIUM) as Medium if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) { return mView } From dbbb9c17f60a75223c728733c222603421f7dc9d Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 23:17:25 +0200 Subject: [PATCH 066/165] update version to 6.7.6 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d48cf2074..24c7f7f37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 249 - versionName "6.7.5" + versionCode 250 + versionName "6.7.6" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From ce3733571d128c2fd0a149b758ce34b03418fea5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 May 2019 23:17:30 +0200 Subject: [PATCH 067/165] updating changelog --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d49a92e3..6e1d67295 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ Changelog ========== +Version 6.7.6 *(2019-05-26)* +---------------------------- + + * Improved batch renaming, allow using date time patterns in it + * Fixed empty folder deleting after deleting its content + * Improved new file cache updating in the background + * Improved the placeholder text in case no files are found + * Keep last_modified field at deleting and restoring files from the bin + * Increase the max image duration at slideshows + * Highlight the warning at deleting a folder + * Other stability, translation and performance improvements + Version 6.7.5 *(2019-05-15)* ---------------------------- From 8712b497e37e2d9e61b2f035c73d5e41ffab4c7e Mon Sep 17 00:00:00 2001 From: solokot Date: Mon, 27 May 2019 11:52:58 +0300 Subject: [PATCH 068/165] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 65c606242..cedb23e07 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -63,7 +63,7 @@ Управление включёнными папками Добавить папку Если у вас есть папки, содержащие медиафайлы, но не распознанные приложением, вы можете добавить их вручную.\n\nДобавление папки не приводит к исключению каких-либо других. - No media files have been found. You can solve it by adding the folders containing media files manually. + Медиафайлы не найдены. Вы можете исправить данную проблему, добавив папки с медиафайлами вручную. Изменить размер From 08b76412af783a253211c35afd0b9c88d6aeed33 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Mon, 27 May 2019 12:29:49 +0200 Subject: [PATCH 069/165] Dutch --- app/src/main/res/values-nl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f4103f8e6..18ef4b860 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -63,7 +63,7 @@ Toegevoegde mappen beheren Map toevoegen Als er mappen zijn die wel media bevatten, maar niet door de galerij worden herkend, voeg deze mappen dan hier handmatig toe.\n\nHet hier toevoegen van mappen zal andere mappen niet uitsluiten. - No media files have been found. You can solve it by adding the folders containing media files manually. + Er zijn geen mediabestanden gevonden. Dit kan worden opgelost door de mappen met mediabestanden handmatig toe te voegen. Grootte aanpassen From 367e152f1176c8c451e3e4c55a8e19de67844301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hevesi=20J=C3=A1nos?= <44799533+hevesij@users.noreply.github.com> Date: Mon, 27 May 2019 20:46:12 +0200 Subject: [PATCH 070/165] Update strings.xml --- app/src/main/res/values-hu/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index c446a3179..f0b8c58d0 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -63,7 +63,7 @@ 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. - No media files have been found. You can solve it by adding the folders containing media files manually. + Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. Átméretezés @@ -135,7 +135,7 @@ Dátum Fájl típus Kiterjesztés - Please note that grouping and sorting are 2 independent fields + 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: From a770117400f19400b03775667487a295288898b7 Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Tue, 28 May 2019 17:28:09 +0800 Subject: [PATCH 071/165] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ff936c7c9..2d9266e04 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -63,7 +63,7 @@ 管理包含資料夾 增加資料夾 如果有些資料夾含有媒體檔案,卻沒被辨識到,您可以在此手動加入。 - No media files have been found. You can solve it by adding the folders containing media files manually. + 未發現媒體檔案。您可以手動添加包含媒體檔案的資料夾來解決。 縮放 From 3e9ba5c599d4f6e8431d31382375b400dc9337de Mon Sep 17 00:00:00 2001 From: sawka6630 Date: Tue, 28 May 2019 21:41:41 +0300 Subject: [PATCH 072/165] Updated Ukrainian translation --- app/src/main/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index b4b5e12a2..c24f3fe54 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -63,7 +63,7 @@ Керування включеними теками Додати теку Якщо у вас є теки з медіафайлами, але вони не були розпізнані додатком, ви можете додати їх тут вручну.\n\nДодавання елементів сюди не виключить будь-яку іншу теку. - No media files have been found. You can solve it by adding the folders containing media files manually. + Жоден медіафайл не знайдено. Ви можете додати теки з медіафайлами вручну, щоб вирішити цю проблему. Змінити розмір From 8256580ec2c8eb4b6b5b15004da638f9af110f5c Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 May 2019 21:44:27 +0200 Subject: [PATCH 073/165] replacing some recursive path scans with direct path scans --- .../simplemobiletools/gallery/pro/activities/EditActivity.kt | 2 +- .../gallery/pro/activities/PhotoVideoActivity.kt | 4 ++-- .../gallery/pro/activities/ViewPagerActivity.kt | 3 +-- .../com/simplemobiletools/gallery/pro/extensions/Activity.kt | 3 +-- 4 files changed, 5 insertions(+), 7 deletions(-) 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 aa4d554a6..425f382c7 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 @@ -852,7 +852,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } private fun scanFinalPath(path: String) { - scanPathRecursively(path) { + rescanPaths(arrayListOf(path)) { setResult(Activity.RESULT_OK, intent) toast(R.string.file_saved) finish() 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 b8632b877..a596d86cb 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 @@ -108,7 +108,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList if (mUri!!.scheme == "file") { if (filename.contains('.')) { - scanPathRecursively(mUri!!.path) + rescanPaths(arrayListOf(mUri!!.path)) sendViewPagerIntent(mUri!!.path) finish() return @@ -116,7 +116,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } else { val path = applicationContext.getRealPathFromURI(mUri!!) ?: "" if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && filename.contains('.') && File(path).exists()) { - scanPathRecursively(mUri!!.path) + rescanPaths(arrayListOf(mUri!!.path)) sendViewPagerIntent(path) finish() return 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 8d944e919..56db83d36 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 @@ -1017,9 +1017,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val fileDirItem = FileDirItem(mDirectory, mDirectory.getFilenameFromPath(), File(mDirectory).isDirectory) if (config.deleteEmptyFolders && !fileDirItem.isDownloadsFolder() && fileDirItem.isDirectory && fileDirItem.getProperFileCount(true) == 0) { tryDeleteFileDirItem(fileDirItem, true, true) + scanPathRecursively(mDirectory) } - - scanPathRecursively(mDirectory) } private fun checkOrientation() { 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 921013ccc..8f2f23e97 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 @@ -169,7 +169,6 @@ fun BaseSimpleActivity.removeNoMedia(path: String, callback: (() -> Unit)? = nul } tryDeleteFileDirItem(file.toFileDirItem(applicationContext), false, false) { - scanPathRecursively(file.parent) callback?.invoke() } } @@ -437,7 +436,7 @@ fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, } copyFile(tmpPath, newPath) - scanPathRecursively(newPath) + rescanPaths(arrayListOf(newPath)) fileRotatedSuccessfully(newPath, oldLastModified) it.flush() From 37b00157515b2fa20778592755f5da433e1f9eec Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 May 2019 22:42:45 +0200 Subject: [PATCH 074/165] update commons to 5.13.7 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 24c7f7f37..52839cd6c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.1' + implementation 'com.simplemobiletools:commons:5.13.7' 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' From faca39a072b0d8d58a43fabcb719b6c2a44f30de Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 May 2019 22:50:54 +0200 Subject: [PATCH 075/165] update version to 6.7.7 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 52839cd6c..dd2090381 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 250 - versionName "6.7.6" + versionCode 251 + versionName "6.7.7" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From ee13d75dfbabaec62768e976b83255229a25a575 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 May 2019 22:51:00 +0200 Subject: [PATCH 076/165] updating changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e1d67295..6b4cbe6a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========== +Version 6.7.7 *(2019-05-28)* +---------------------------- + + * Fixed some file deleting related glitches + * Improved batch renaming, use the old file extension in case a new one is missing + Version 6.7.6 *(2019-05-26)* ---------------------------- From 41b502b995c87b729437493bd1aa1a9259a7543f Mon Sep 17 00:00:00 2001 From: AlbatorV Date: Thu, 30 May 2019 09:18:35 +0200 Subject: [PATCH 077/165] Update strings.xml --- app/src/main/res/values-fr/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7d1726867..b088f365b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -63,7 +63,7 @@ Gérer les dossiers ajoutés Ajouter un dossier Si vous avez des dossiers contenant des médias qui ne sont pas affichés dans l\'application, vous pouvez les ajouter manuellement ici.\n\nCet ajout n\'exclura aucun autre dossier. - No media files have been found. You can solve it by adding the folders containing media files manually. + Aucun fichier multimédia n'a été trouvé. Vous pouvez ajouter manuellement des dossiers contenant des fichiers multimédia. Redimensionner @@ -168,7 +168,7 @@ Cacher les informations supplémentaires si la barre d\'état est masquée Afficher les boutons d\'action Afficher la corbeille en vue \"Dossier\" - Niveau de zoom maximal des images + Niveau de zoom Afficher les images avec la meilleur qualité possible Afficher la corbeille en fin de liste sur l\'écran principal Fermer la vue plein écran par un geste vers le bas @@ -219,8 +219,8 @@ La solution actuelle d\'affichage des images fonctionne bien dans la grande majorité des cas, mais si vous voulez une qualité d\'image encore meilleure, vous pouvez activer l\'option \"Afficher les images avec la plus haute qualité possible\" dans la section \"Niveau de zoom maximal des images\" des paramètres de l\'application. J\'ai caché un fichier ou un dossier. Comment puis-je en rétablir l\'affichage ? Vous pouvez soit appuyer sur l\'option \"Afficher les fichiers cachés\" du menu de l\'écran principal, ou appuyer sur le bouton \"Afficher les éléments cachés\" dans les paramètres de l\'application. Si vous voulez rétablir leur affichage, effectuez un appui prolongé dessus et appuyez sur le symbole \"Œil\" permettant l\'affichage. Les dossiers sont cachés en ajoutant un fichier \".nomedia\" à leur racine, vous pouvez également supprimer ce fichier avec n\’importe quel explorateur de fichiers. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Pourquoi l\'application prend-elle tant de place ? + Le cache d\'application peut prendre jusqu'à 250 Mo pour accélérer le chargement des images. Si l\'application occupe encore plus d'espace, c\'est probablement parce que vous avez des éléments dans la corbeille. Ces fichiers comptent pour la taille de l\'application. Vous pouvez vider la corbeille en l\'ouvrant et en supprimant tous les fichiers ou à partir des paramètres de l\'application. Chaque fichier de la corbeille est automatiquement supprimé après 30 jours. From af8a0a4ac8f7634cb1dd534ebf4f338615053bc3 Mon Sep 17 00:00:00 2001 From: Pzqqt <821026875@qq.com> Date: Tue, 4 Jun 2019 12:05:44 +0800 Subject: [PATCH 078/165] Update strings.xml --- app/src/main/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cb14f652c..5cb402b8c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -63,7 +63,7 @@ 管理包含目录 添加目录 如果您还有应用未扫描到的媒体文件,请添加所在目录路径。 - No media files have been found. You can solve it by adding the folders containing media files manually. + 没有找到媒体文件。请手动添加包含媒体文件的文件夹。 缩放 From 1a66ff5d1c31776f75e851ee2f1fe41d4b9a8b8c Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 5 Jun 2019 12:36:21 +0200 Subject: [PATCH 079/165] escaping some apostrophes --- app/src/main/res/values-fr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index b088f365b..14e2446ca 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -63,7 +63,7 @@ Gérer les dossiers ajoutés Ajouter un dossier Si vous avez des dossiers contenant des médias qui ne sont pas affichés dans l\'application, vous pouvez les ajouter manuellement ici.\n\nCet ajout n\'exclura aucun autre dossier. - Aucun fichier multimédia n'a été trouvé. Vous pouvez ajouter manuellement des dossiers contenant des fichiers multimédia. + Aucun fichier multimédia n\'a été trouvé. Vous pouvez ajouter manuellement des dossiers contenant des fichiers multimédia. Redimensionner @@ -220,7 +220,7 @@ J\'ai caché un fichier ou un dossier. Comment puis-je en rétablir l\'affichage ? Vous pouvez soit appuyer sur l\'option \"Afficher les fichiers cachés\" du menu de l\'écran principal, ou appuyer sur le bouton \"Afficher les éléments cachés\" dans les paramètres de l\'application. Si vous voulez rétablir leur affichage, effectuez un appui prolongé dessus et appuyez sur le symbole \"Œil\" permettant l\'affichage. Les dossiers sont cachés en ajoutant un fichier \".nomedia\" à leur racine, vous pouvez également supprimer ce fichier avec n\’importe quel explorateur de fichiers. Pourquoi l\'application prend-elle tant de place ? - Le cache d\'application peut prendre jusqu'à 250 Mo pour accélérer le chargement des images. Si l\'application occupe encore plus d'espace, c\'est probablement parce que vous avez des éléments dans la corbeille. Ces fichiers comptent pour la taille de l\'application. Vous pouvez vider la corbeille en l\'ouvrant et en supprimant tous les fichiers ou à partir des paramètres de l\'application. Chaque fichier de la corbeille est automatiquement supprimé après 30 jours. + Le cache d\'application peut prendre jusqu\'à 250 Mo pour accélérer le chargement des images. Si l\'application occupe encore plus d\'espace, c\'est probablement parce que vous avez des éléments dans la corbeille. Ces fichiers comptent pour la taille de l\'application. Vous pouvez vider la corbeille en l\'ouvrant et en supprimant tous les fichiers ou à partir des paramètres de l\'application. Chaque fichier de la corbeille est automatiquement supprimé après 30 jours. From 7f6755061065f2467c0c8e2629362ee19fc53a19 Mon Sep 17 00:00:00 2001 From: motomoto7 <49688951+motomoto7@users.noreply.github.com> Date: Thu, 6 Jun 2019 19:02:40 +0300 Subject: [PATCH 080/165] Ukrainian some minor changes --- app/src/main/res/values-uk/strings.xml | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c24f3fe54..53c6cf730 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -14,7 +14,7 @@ Перемкнути у перегляд за теками Інша тека Показати на мапі - Невідоме місцерозташування + Невідоме розташування Збільшити кількість колонок Зменшити кількість колонок Змінити обкладинку @@ -32,7 +32,7 @@ Виправлення… Дати успішно виправлені Поділитися зображенням іншого розміру - Йой,\n\nздається, ви перейшли зі старого безкоштовного додатку на цей. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатку.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатку.\n\nДякую! + Йой,\n\nздається, ви оновились із застарілого безкоштовного додатка. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатка.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатка.\n\nДякую! Фільтр мультимедійних файлів @@ -100,8 +100,8 @@ Встановити шпалери за допомогою: Встановлення шпалер… Шпалери успішно встановлено - Співвідношення сторін в портретній орієнтації - Співвідношення сторін в ландшафтній орієнтації + Співвідношення сторін у портретній орієнтації + Співвідношення сторін у ландшафтній орієнтації Домашній екран Екран блокування Домашній екран і екран блокування @@ -146,7 +146,7 @@ Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів - Максимальна яскравість екрану при повноекранному перегляді медіафайлу + Максимальна яскравість екрана при повноекранному перегляді медіафайлу Обрізати ескізи у квадрат Показувати тривалість відео При повноекранному перегляді обертати за… @@ -163,10 +163,10 @@ Показувати розширені подробиці при повноекранному перегляді Керування розширеними подробицями Дозволити масштабування одним пальцем при повноекранному перегляді - Дозволити миттєво змінювати медіафайл натисканням на сторони екрану + Дозволити миттєво змінювати медіафайл натисканням на сторони екрана Дозволити глибоке масштабування зображень Приховати розширені подробиці, коли рядок стану прихований - Показати деякі кнопки дій внизу екрану + Показати деякі кнопки дій внизу екрана Показувати \"Кошик\" на головному екрані Глибокомасштабовані зображення Показувати зображення в найвищій можливій якості @@ -185,10 +185,10 @@ Ескізи Повноекранний перегляд Розширені подробиці - Кнопки дій внизу екрану + Кнопки дій внизу екрана - Керування видимими кнопками дій внизу екрану + Керування видимими кнопками дій внизу екрана Перемкнути улюблене Перемкнути видимість файлу @@ -196,7 +196,7 @@ Як зробити Simple Gallery галереєю за-замовчуванням? Спочатку необхідно знайти поточну галерею за-замовчуванням в розділі \"Додатки\" налаштувань вашого пристрою. Знайдіть і натисніть на кнопку \"Використовувати за-замовчуванням\" абощо, потім оберіть \"Очистити замовчування\". Наступного разу коли ви намагатиметеся відкрити зображення або відео, ви побачите вікно з вибором додатків для цього. Оберіть Simple Gallery та зробіть його додатком за-замовчуванням. - Я заблокував додаток за допомогою паролю і забув його. Що я можу зробити? + Я заблокував додаток за допомогою пароля і забув його. Що я можу зробити? Ви можете вирішити цю проблему двома способами: перевстановити додаток або знайти його в розділі \"Додатки\" налаштувань вашого пристрою та обрати \"Очистити дані\". Це скине усі ваші налаштування додатка, але не видалить жодного медіафайлу. Як зробити альбом завжди доступним у верхній частині? Ви можете виконати довге натискання на бажаному альбомі і вибрати піктограму \"Закріпити\" у меню дій, що закріпить його вгорі. Ви також можете закріпити декілька тек; закріплені елементи будуть відсортовані за методом сортування за-замовчуванням. @@ -218,11 +218,11 @@ Сортування за датою зйомки, здається, працює некоректно. Як я можу це виправити? Найбільш вірогідна причина цього - копіювання фалів з іншого місця. Це можна виправити, обравши ескізи файлів і потім - \"Виправити дату зйомки\". Я бачу деякі кольорові нашарування на зображенні. Як я можу покращити якість? - Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатку. + Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатка. Я приховав файл / теку. Як я можу відмінити цю дію? - Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатку. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. + Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатка. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. Чому додаток займає так багато місця? - Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатку. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатку. Кожен файл у Кошику автоматично видаляється через 30 днів. + Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатка. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатка. Кожен файл у Кошику автоматично видаляється через 30 днів. @@ -255,7 +255,7 @@ • Змінюйте видимість файлів, щоб приховати фото і відео • Створюйте налаштовуване слайд-шоу з ваших файлів • Переглядайте детальну інформацію про ваші файли (роздільна здатність, записи EXIF тощо) - • Simple Gallery Pro є додатком з відкритим джерельним кодом + • Simple Gallery Pro є додатком з відкритим програмним кодом … та багато-багато іншого! ФОТОРЕДАКТОР @@ -265,13 +265,13 @@ На відміну від деяких інших переглядачів та організаторів галереї, Simple Gallery Pro підтримує величезний перелік різноманітних типів файлів, включаючи JPEG, PNG, MP4, MKV, RAW, SVG, панорамні фото, панорамні відео та багато іншого. МЕНЕДЖЕР ГАЛЕРЕЇ З БЕЗЛІЧЧЮ НАЛАШТУВАНЬ - Від зовнішнього вигляду до функціональних кнопок у нижній панелі інструментів: Simple Gallery Pro має безліч налаштувань та працює у потрібний вам спосіб. Жодний інший менеджер галереї не має такої гнучкості! Завдяки відкритому джерельному коду цей додаток доступний 32 мовами! + Від зовнішнього вигляду до функціональних кнопок у нижній панелі інструментів: Simple Gallery Pro має безліч налаштувань та працює у потрібний вам спосіб. Жодний інший менеджер галереї не має такої гнучкості! Завдяки відкритому програмному коду цей додаток доступний 32 мовами! ВІДНОВЛЮЙТЕ ВИДАЛЕНІ ФОТО І ВІДЕО Випадково видалили дорогоцінне фото чи відео? Не хвилюйтеся! Simple Gallery Pro пропонує зручний кошик, звідки можна легко відновити видалені фото і відео. ЗАХИЩАЙТЕ І ПРИХОВУЙТЕ ФОТО, ВІДЕО І ФАЙЛИ - Використовуючи PIN-код, графічний ключ чи сканер відбитку пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитку пальця допоможе захистити ваші файли від випадкового видалення. + Використовуючи PIN-код, графічний ключ чи сканер відбитка пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитка пальця допоможе захистити ваші файли від випадкового видалення. Перегляньте повний набір додатків Simple Tools тут: https://www.simplemobiletools.com From be01fcce21fb08fff281beb1c96f780de0fdf933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Fri, 7 Jun 2019 12:37:00 +0200 Subject: [PATCH 081/165] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 2826c8ec4..72c4c5315 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -32,7 +32,7 @@ Fixant… Data fixada correctament Comparteix una versió redimensionada - 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! + Hola,\n\nsembla que heu actualitzat des de l\'antiga aplicació gratuïta. Ara podeu desinstal·lar la versió antiga, que té un botó "Actualitza a Pro" a la part superior de la configuració de l’aplicació.\nNomés s’eliminaran els elements de la paperera, els elements preferits sense marcar i també caldrà restablirla configuració de la vostra aplicació.\n\nGràcies! Filtre d’arxius @@ -63,7 +63,7 @@ Gestionar carpetes incloses Agregar carpeta Si tens alguna carpeta que contingui multimèdia però no ha estat reconeguda per la aplicació, pots agregar-les manualment aquí. - No media files have been found. You can solve it by adding the folders containing media files manually. + No s’ha trobat cap fitxer multimèdia. Podeu resoldre-ho afegint manualment les carpetes que contenen fitxers multimèdia. Redimensionar @@ -221,8 +221,8 @@ The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. I have hidden a file/folder. How can I unhide it? You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Per què l’aplicació ocupa molt d’espai? + La memòria cau d’aplicacions pot ocupar fins a 250 MB, garanteix una càrrega de les imatges més ràpida. Si l’aplicació ocupa més espai, probablement sigui per tenir elements a la Paperera de reciclatge. Aquests fitxers compten a la mida de l’aplicació. Podeu esborrar la paperera de reciclatge obrint-la i suprimint tots els fitxers o des de la configuració de l’aplicació. Els fitxers de la paperera s’eliminen automàticament després de 30 dies. From c9b1cd5f7fef99cab957381296c40a91b8394b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Fri, 7 Jun 2019 13:05:47 +0200 Subject: [PATCH 082/165] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 72c4c5315..3b1ae2bc8 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -218,9 +218,9 @@ L’ordenació per data que de presa no sembla funcionar correctament, com puc solucionar-ho? Probablement, els fitxers es copiïn en un lloc incorrecte. Podeu arreglar-ho si seleccioneu les miniatures del fitxer i seleccioneu \"Fixar data de presa\". I see some color banding on the images. How can I improve the quality? - The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. - I have hidden a file/folder. How can I unhide it? - You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. + La solució actual per mostrar imatges funciona bé en la gran majoria dels casos, però si voleu obtenir una millor qualitat d'imatge, podeu activar \"Mostra les imatges amb la màxima qualitat possible\" a la configuració de l’aplicació, a la secció \"Imatges ampliades a mida\". + He amagat un fitxer / carpeta. Com puc mostrar-la? + Podeu prémer l’element de menú \"Mostra temporalment elements ocults\" a la pantalla principal o canviar \"Mostra els elements ocults\" a la configuració de l’aplicació per veure l’element amagat. Si voleu mostrar-la sempre, premeu-la i seleccioneu \"Mostra\". Les carpetes s'amaguen afegint un fitxer \".nomedia\" ocult en elles, també podeu eliminar el fitxer amb qualsevol gestor de fitxers. Per què l’aplicació ocupa molt d’espai? La memòria cau d’aplicacions pot ocupar fins a 250 MB, garanteix una càrrega de les imatges més ràpida. Si l’aplicació ocupa més espai, probablement sigui per tenir elements a la Paperera de reciclatge. Aquests fitxers compten a la mida de l’aplicació. Podeu esborrar la paperera de reciclatge obrint-la i suprimint tots els fitxers o des de la configuració de l’aplicació. Els fitxers de la paperera s’eliminen automàticament després de 30 dies. From f19890373706da8359edd364fedc3d143e3880cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Fri, 7 Jun 2019 16:52:48 +0200 Subject: [PATCH 083/165] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 3b1ae2bc8..97f9b1828 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -217,7 +217,7 @@ Si, només heu d’utilitzar l’ítem del menú \"Agrupar per\" mentre es troba a la vista en miniatura. Podeu agrupar fitxers amb diversos criteris, inclòs data de presa. Si utilitzeu la funció \"Mostra el contingut de totes les carpetes\", també podeu agrupar-les per carpetes. L’ordenació per data que de presa no sembla funcionar correctament, com puc solucionar-ho? Probablement, els fitxers es copiïn en un lloc incorrecte. Podeu arreglar-ho si seleccioneu les miniatures del fitxer i seleccioneu \"Fixar data de presa\". - I see some color banding on the images. How can I improve the quality? + Veig algunes bandes de colors a les imatges. Com puc millorar la qualitat? La solució actual per mostrar imatges funciona bé en la gran majoria dels casos, però si voleu obtenir una millor qualitat d'imatge, podeu activar \"Mostra les imatges amb la màxima qualitat possible\" a la configuració de l’aplicació, a la secció \"Imatges ampliades a mida\". He amagat un fitxer / carpeta. Com puc mostrar-la? Podeu prémer l’element de menú \"Mostra temporalment elements ocults\" a la pantalla principal o canviar \"Mostra els elements ocults\" a la configuració de l’aplicació per veure l’element amagat. Si voleu mostrar-la sempre, premeu-la i seleccioneu \"Mostra\". Les carpetes s'amaguen afegint un fitxer \".nomedia\" ocult en elles, també podeu eliminar el fitxer amb qualsevol gestor de fitxers. From 6a0172415efd6228a601e05ddd54be1184df5c4a Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 8 Jun 2019 20:47:10 +0200 Subject: [PATCH 084/165] fix #1455, escaping some apostrophes --- app/src/main/res/values-ca/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 97f9b1828..507f46ecf 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -218,9 +218,9 @@ L’ordenació per data que de presa no sembla funcionar correctament, com puc solucionar-ho? Probablement, els fitxers es copiïn en un lloc incorrecte. Podeu arreglar-ho si seleccioneu les miniatures del fitxer i seleccioneu \"Fixar data de presa\". Veig algunes bandes de colors a les imatges. Com puc millorar la qualitat? - La solució actual per mostrar imatges funciona bé en la gran majoria dels casos, però si voleu obtenir una millor qualitat d'imatge, podeu activar \"Mostra les imatges amb la màxima qualitat possible\" a la configuració de l’aplicació, a la secció \"Imatges ampliades a mida\". + La solució actual per mostrar imatges funciona bé en la gran majoria dels casos, però si voleu obtenir una millor qualitat d\'imatge, podeu activar \"Mostra les imatges amb la màxima qualitat possible\" a la configuració de l’aplicació, a la secció \"Imatges ampliades a mida\". He amagat un fitxer / carpeta. Com puc mostrar-la? - Podeu prémer l’element de menú \"Mostra temporalment elements ocults\" a la pantalla principal o canviar \"Mostra els elements ocults\" a la configuració de l’aplicació per veure l’element amagat. Si voleu mostrar-la sempre, premeu-la i seleccioneu \"Mostra\". Les carpetes s'amaguen afegint un fitxer \".nomedia\" ocult en elles, també podeu eliminar el fitxer amb qualsevol gestor de fitxers. + Podeu prémer l’element de menú \"Mostra temporalment elements ocults\" a la pantalla principal o canviar \"Mostra els elements ocults\" a la configuració de l’aplicació per veure l’element amagat. Si voleu mostrar-la sempre, premeu-la i seleccioneu \"Mostra\". Les carpetes s\'amaguen afegint un fitxer \".nomedia\" ocult en elles, també podeu eliminar el fitxer amb qualsevol gestor de fitxers. Per què l’aplicació ocupa molt d’espai? La memòria cau d’aplicacions pot ocupar fins a 250 MB, garanteix una càrrega de les imatges més ràpida. Si l’aplicació ocupa més espai, probablement sigui per tenir elements a la Paperera de reciclatge. Aquests fitxers compten a la mida de l’aplicació. Podeu esborrar la paperera de reciclatge obrint-la i suprimint tots els fitxers o des de la configuració de l’aplicació. Els fitxers de la paperera s’eliminen automàticament després de 30 dies. From 51b44bb457664fcd646aae37a90a95d12b782e72 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 10:38:33 +0200 Subject: [PATCH 085/165] use the stable android-gif-drawable library version, not snapshot --- app/build.gradle | 2 +- build.gradle | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index dd2090381..d94c60cd4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,7 +65,7 @@ dependencies { 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.17-SNAPSHOT' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1' implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' implementation 'com.google.vr:sdk-panowidget:1.180.0' diff --git a/build.gradle b/build.gradle index a237dba1e..a88757196 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,6 @@ allprojects { google() jcenter() maven { url "https://jitpack.io" } - maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } } From 190a3035db987cdfee264e6849a77d83927fc0b9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 23:16:58 +0200 Subject: [PATCH 086/165] updating subsampling scale image view --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index d94c60cd4..0918f4360 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.caverock:androidsvg-aar:1.3' implementation 'com.github.tibbi:gestureviews:1506ec6156' - implementation 'com.github.tibbi:subsampling-scale-image-view:1df78cdfff' + implementation 'com.github.tibbi:subsampling-scale-image-view:43e37232ce' kapt 'com.github.bumptech.glide:compiler:4.9.0' // keep it here too, not just in Commons, else loading SVGs wont work kapt 'androidx.room:room-compiler:2.0.0' From d05f3b7d8d73f2ea9e2b3af866bc179b8b89ec97 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 23:34:43 +0200 Subject: [PATCH 087/165] fetch video resolutions at videofragment on a background thread --- .../gallery/pro/fragments/VideoFragment.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index fb6f9cde7..a7829beea 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -139,10 +139,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S initTimeHolder() checkIfPanorama() - activity?.getVideoResolution(mMedium.path)?.apply { - mVideoSize.x = x - mVideoSize.y = y - } + Thread { + activity?.getVideoResolution(mMedium.path)?.apply { + mVideoSize.x = x + mVideoSize.y = y + } + }.start() if (mIsPanorama) { mView.apply { From 789152a98dcef82eb3826867af0c8e69d8a32cb5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 23:36:50 +0200 Subject: [PATCH 088/165] do not allow clicking on the Panorama button at fullscreen mode --- .../com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 1 + 1 file changed, 1 insertion(+) 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 571f361f7..370edeab5 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 @@ -654,6 +654,7 @@ class PhotoFragment : ViewPagerFragment() { if (mIsPanorama) { panorama_outline.animate().alpha(if (isFullscreen) 0f else 1f).start() + panorama_outline.isClickable = !isFullscreen } } } From 402eb61f7986df7cdb31b8df92f05afd1d02a487 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 23:53:37 +0200 Subject: [PATCH 089/165] catch exceptions thrown at updating db directories --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 a3dfdda6f..243298224 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 @@ -664,7 +664,10 @@ fun Context.updateDBMediaPath(oldPath: String, newPath: String) { } fun Context.updateDBDirectory(directory: Directory, directoryDao: DirectoryDao) { - directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types) + try { + directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types) + } catch (ignored: Exception) { + } } fun Context.getFavoritePaths(): ArrayList { From 323d9f999df5ea96cf7f5870cf07e78155a28254 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 10 Jun 2019 23:57:45 +0200 Subject: [PATCH 090/165] fixing a crash at uninitialized variable at PhotoFragment --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 4 ++++ 1 file changed, 4 insertions(+) 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 370edeab5..71c78ff0c 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 @@ -251,6 +251,10 @@ class PhotoFragment : ViewPagerFragment() { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) + if (!mWasInit) { + return + } + // avoid GIFs being skewed, played in wrong aspect ratio if (mMedium.isGIF()) { mView.onGlobalLayout { From a37b9d81e1612c597d82aac75b05731ee6dd474f Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 12:48:19 +0200 Subject: [PATCH 091/165] show the available aspect ratios by default in the editor --- .../gallery/pro/activities/EditActivity.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 425f382c7..617e5207a 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 @@ -80,7 +80,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener private var drawColor = 0 private var lastOtherAspectRatio: Pair? = null private var currPrimaryAction = PRIMARY_ACTION_NONE - private var currCropRotateAction = CROP_ROTATE_NONE + private var currCropRotateAction = CROP_ROTATE_ASPECT_RATIO private var currAspectRatio = ASPECT_RATIO_FREE private var isCropIntent = false private var isEditingWithThirdParty = false @@ -189,6 +189,8 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener lastOtherAspectRatio = Pair(config.lastEditorCropOtherAspectRatioX, config.lastEditorCropOtherAspectRatioY) } updateAspectRatio(config.lastEditorCropAspectRatio) + crop_image_view.guidelines = CropImageView.Guidelines.ON + bottom_aspect_ratios.beVisible() } private fun loadDefaultImageView() { @@ -627,8 +629,8 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener if (currPrimaryAction != PRIMARY_ACTION_CROP_ROTATE) { bottom_aspect_ratios.beGone() currCropRotateAction = CROP_ROTATE_NONE - updateCropRotateActionButtons() } + updateCropRotateActionButtons() } private fun applyFilter(filterItem: FilterItem) { From 02fa8af758863e885215b10561840150ef4fd54a Mon Sep 17 00:00:00 2001 From: zmni Date: Tue, 11 Jun 2019 20:54:44 +0700 Subject: [PATCH 092/165] Update strings.xml --- app/src/main/res/values-id/strings.xml | 116 ++++++++++++------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 761dd357f..b9050bd78 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -2,7 +2,7 @@ Simple Gallery Galeri - Edit + Sunting Buka kamera (tersembunyi) (dikecualikan) @@ -26,13 +26,13 @@ Aktifkan rotasi Ubah orientasi Paksa potret - Paksa landscape + Paksa lanskap Gunakan orientasi default Perbaiki Tanggal Diambil Memperbaiki… Tanggal berhasil diperbaiki - Share a resized version - 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! + Bagikan versi yang diubah ukurannya + Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nThanks! Filter media @@ -41,29 +41,29 @@ GIF Gambar RAW SVG - Tidak ada file media ditemukan dari filter ini. + Tidak ada berkas media ditemukan dari filter ini. Ubah filter - Fungsi ini menyembunyikan folder dengan menambahkan file \'.nomedia\' ke dalamnya, juga akan menyembunyikan semua subfolder. Anda bisa melihatnya dari opsi \'Tampilkan file tersembunyi\' di Setelan. Lanjutkan? + Fungsi ini menyembunyikan folder dengan menambahkan berkas \'.nomedia\' ke dalamnya, juga akan menyembunyikan semua subfolder. Anda bisa melihatnya dari opsi \'Tampilkan berkas tersembunyi\' di Pengaturan. Lanjutkan? Kecualikan Folder yang dikecualikan Atur folder yang dikecualikan - Ini hanya akan mengecualikan pilihan bersama dengan subfoldernya di Simple Gallery. Anda bisa mengatur pengecualian di Setelan. + Ini hanya akan mengecualikan pilihan bersama dengan subfoldernya di Simple Gallery. Anda bisa mengatur pengecualian di Pengaturan. Kecualikan folder induk? - Mengecualikan folder akan membuatnya bersama subfoldernya tersembunyi hanya di Simple Gallery, namun masih bisa dilihat di aplikasi lain.\n\nJika Anda ingin menyembunyikannya dari aplikasi lain juga, gunakan fitur Sembunyikan. + Mengecualikan folder akan membuatnya bersama subfoldernya tersembunyi hanya di Simple Gallery, namun masih bisa dilihat di aplikasi lain.\n\nJika anda ingin menyembunyikannya dari aplikasi lain juga, gunakan fitur Sembunyikan. Bersihkan daftar Hapus semua folder dari daftar pengecualian? Ini tidak akan menghapus folder tersebut. Folder tersembunyi Atur folder tersembunyi - Sepertinya tidak ada folder tersembunyi dengan file \".nomedia\" didalamnya. + Sepertinya tidak ada folder tersembunyi dengan berkas \".nomedia\" didalamnya. Folder yang disertakan Atur folder yang disertakan Tambah folder - Jika ada folder yang berisi file media, namun tidak dikenali oleh aplikasi ini, Anda bisa menambahkannya disini secara manual.\n\nMenambah beberapa item disini tidak akan mengecualikan folder yang lain. - No media files have been found. You can solve it by adding the folders containing media files manually. + Jika ada folder yang berisi berkas media, namun tidak dikenali oleh aplikasi ini, anda bisa menambahkannya disini secara manual.\n\nMenambah beberapa item disini tidak akan mengecualikan folder yang lain. + Tidak ada berkas media yang ditemukan. Anda bisa memperbaikinya dengan menambahkan folder yang berisi berkas media secara manual. Ubah ukuran @@ -74,16 +74,16 @@ Harap masukkan resolusi dengan benar - Editor + Penyunting Simpan Rotasi Jalur Jalur gambar tidak valid - Gagal mengedit gambar - Edit dengan: - Tidak ada aplikasi editor gambar - Lokasi file tidak diketahui - Tidak dapat mengganti file sumber + Gagal menyunting gambar + Sunting dengan: + Tidak ada aplikasi penyunting gambar + Lokasi berkas tidak diketahui + Tidak bisa mengganti berkas sumber Putar ke kiri Putar ke kanan Putar 180º @@ -101,7 +101,7 @@ Menyetel wallpaper… Wallpaper berhasil disetel Aspek rasio potret - Aspek rasio landscape + Aspek rasio lanskap Layar beranda Layar kunci Beranda dan layar kunci @@ -118,32 +118,32 @@ Slideshow tanpa henti Slideshow berakhir Tidak ditemukan media untuk slideshow - Use crossfade animations + Gunakan animasi crossfade Ubah jenis tampilan Kotak Daftar - Kelompokkan langsung subfolder + Kelompokkan subfolder langsung Kelompokkan menurut - Jangan kelompokkan file + Jangan kelompokkan berkas Folder Terakhir diubah Tanggal diambil - Jenis file + Jenis berkas Ekstensi - Please note that grouping and sorting are 2 independent fields + Harap dicatat bahwa mengelompokkan dan mengurutkan adalah 2 ruas yang berbeda - Folder shown on the widget: - Show folder name + Folder yang ditampilkan pada widget: + Tampilkan nama folder Putar video otomatis Ingat posisi pemutaran terakhir - Tampil/sembunyikan nama file + Tampil/sembunyikan nama berkas Ulangi video Animasi GIF di thumbnail Kecerahan maksimal saat melihat di layar penuh @@ -172,67 +172,67 @@ Tampilkan gambar dalam kualitas tertinggi Tampilkan Sampah sebagai item terakhir di layar utama Izinkan keluar dari layar penuh dengan menggeser kebawah - Allow 1:1 zooming in with two double taps - Always open videos on a separate screen with new horizontal gestures - Show a notch if available - Allow rotating images with gestures - File loading priority - Speed - Compromise - Avoid showing invalid files + Izinkan pembesaran 1:1 dengan dua kali ketuk + Selalu buka video pada layar terpisah dengan gestur horizontal baru + Tampilkan notch jika tersedia + Izinkan memutar gambar dengan gestur + Prioritas pemuatan berkas + Kecepatan + Kompromi + Hindari menampilkan berkas yang tidak valid Thumbnail Media layar penuh Detail tambahan - Tindakan di bawah + Tindakan bawah Sesuaikan tombol tindakan bawah Favorit - Tampil/sembunyikan file + Tampil/sembunyikan berkas Bagaimana cara menjadikan Simple Gallery sebagai aplikasi galeri default? - Pertama Anda harus menemukan galeri default saat ini di bagian Aplikasi di Setelan perangkat, lihatlah tombol yang seperti \"Buka secara default\", klik itu, lalu pilih \"Hapus default\". - Lain kali Anda mencoba membuka gambar atau video, Anda akan disuruh memilih aplikasi, dimana Anda bisa memilih Simple Gallery dan menjadikannya default. - Saya mengunci aplikasi dengan password, tapi saya lupa. Apa yang harus dilakukan? - Anda bisa menyelesaikannya dengan 2 cara. Anda bisa instal ulang aplikasi, atau cari aplikasi ini di Setelan perangkat dan pilih \"Hapus data\". Ini akan menyetel ulang semua setelan Anda, dan tidak akan menghapus file media apapun. + Pertama anda harus menemukan galeri default saat ini di bagian Aplikasi di Pengaturan perangkat, lihatlah tombol yang seperti \"Buka secara default\", klik itu, lalu pilih \"Hapus default\". + Lain kali anda mencoba membuka gambar atau video, anda akan disuruh memilih aplikasi, dan anda bisa memilih Simple Gallery dan menjadikannya default. + Saya mengunci aplikasi dengan sandi, tapi saya lupa. Apa yang harus dilakukan? + Anda bisa menyelesaikannya dengan 2 cara. Anda bisa pasang ulang aplikasi, atau cari aplikasi ini di Pengaturan perangkat dan pilih \"Hapus data\". Ini akan menyetel ulang semua pengaturan anda, dan tidak akan menghapus berkas media apapun. Bagaimana agar sebuah album selalu muncul paling atas di daftar? Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, itu akan menaruhnya di atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default. Bagaimana cara mempercepat laju video? You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward. Apa perbedaan antara menyembunyikan dan mengecualikan folder? - Mengecualikan tidak akan menampilkan folder di Simple Gallery, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder juga dari aplikasi galeri yang lain. Cara kerjanya dengan membuat file \".nomedia\" kosong pada folder yang diinginkan, yang bisa Anda hapus juga dengan aplikasi file manager. + Mengecualikan tidak akan menampilkan folder di Simple Gallery, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder juga dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas. Mengapa folder dengan gambar album musik atau stiker muncul? - Kadang Anda melihat beberapa album yang tidak biasa muncul. Anda bisa dengan mudah menyembunyikannya dengan menekan lama dan pilih Kecualikan. Pada dialog berikutnya, Anda lalu bisa memilih folder induk, yang akan mencegah album terkait muncul kembali. + Kadang anda melihat beberapa album yang tidak biasa muncul. Anda bisa dengan mudah menyembunyikannya dengan menekan lama dan pilih Kecualikan. Pada dialog berikutnya, anda lalu bisa memilih folder induk, yang akan mencegah album terkait muncul kembali. Ada folder berisi gambar namun tidak muncul, apa yang harus dilakukan? - Itu bisa disebabkan berbagai alasan, namun solusinya mudah. Pergi ke Setelan -> Atur folder yang disertakan, pilih Tambah dan cari folder yang diinginkan. + Itu bisa disebabkan berbagai alasan, namun solusinya mudah. Pergi ke Pengaturan -> Atur folder yang disertakan, pilih Tambah dan cari folder yang diinginkan. Bagaimana jika saya hanya ingin beberapa folder saja yang terlihat? - Menambahkan folder di Folder yang Disertakan tidak otomatis mengecualikan folder yang lain. Yang bisa Anda lakukan adalah pergi ke Setelan -> Atur Folder yang Dikecualikan, lalu kecualikan folder root \"/\", lalu tambahkan folder yang diinginkan di Setelan -> Atur Folder yang Disertakan. + Menambahkan folder di Folder yang Disertakan tidak otomatis mengecualikan folder yang lain. Yang bisa anda lakukan adalah pergi ke Pengaturan -> Atur Folder yang Dikecualikan, lalu kecualikan folder root \"/\", lalu tambahkan folder yang diinginkan di Pengaturan -> Atur Folder yang Disertakan. Itu akan membuat folder yang dipilih saja yang muncul, dan jika sebuah folder disertakan dan dikecualikan secara bersamaan, folder tersebut akan muncul. Bisakah saya meng-crop gambar dengan aplikasi ini? - Ya, Anda bisa melakukannya di Editor, dengan menyeret sudut gambar. Anda bisa masuk ke editor dengan menekan lama thumbnail gambar dan memilih Edit, atau pilih Edit dari tampilan layar penuh. - Bisakah saya mengelompokkan thumbnail file media? - Bisa, gunakan menu \"Kelompokkan menurut\" pada tampilan thumbnail. Anda bisa mengelompokkan file dengan berbagai kriteria, termasuk Tanggal Diambil. Jika Anda menggunakan fungsi \"Tampilkan semua isi folder\", Anda juga bisa mengelompokkan berdasarkan foldernya. - Tidak dapat mengurutkan berdasarkan Tanggal Diambil, bagaimana cara memperbaikinya? - Itu umumnya disebabkan karena file yang disalin dari tempat lain. Anda bisa memperbaikinya dengan memilih thumbnail file dan pilih \"Perbaiki Tanggal Diambil\". + Ya, anda bisa melakukannya di Penyunting, dengan menyeret sudut gambar. Anda bisa masuk ke penyunting dengan menekan lama thumbnail gambar dan memilih Sunting, atau pilih Sunting dari tampilan layar penuh. + Bisakah saya mengelompokkan thumbnail berkas media? + Bisa, gunakan menu \"Kelompokkan menurut\" pada tampilan thumbnail. Anda bisa mengelompokkan berkas dengan berbagai kriteria, termasuk Tanggal Diambil. Jika anda menggunakan fungsi \"Tampilkan semua isi folder\", anda juga bisa mengelompokkan berdasarkan foldernya. + Tidak bisa mengurutkan berdasarkan Tanggal Diambil, bagaimana cara memperbaikinya? + Itu umumnya disebabkan karena berkas yang disalin dari tempat lain. Anda bisa memperbaikinya dengan memilih berkas thumbnail dan pilih \"Perbaiki Tanggal Diambil\". Saya melihat beberapa pita warna pada gambar. Bagaimana saya meningkatkan kualitasnya? - Solusi saat ini untuk menampilkan gambar berfungsi dengan baik dalam sebagian besar kasus, namun jika Anda ingin kualitas gambar yang lebih baik, Anda bisa mengaktifkan \"Tampilkan gambar dalam kualitas tertinggi\" di setelan aplikasi, pada bagian \"Zoom gambar mendalam\". - Saya punya file/folder tersembunyi. Bagaimana cara memunculkannya? - Anda bisa memilih menu \"Tampilkan sementara file tersembunyi\" di layar utama, atau \"Tampilkan file tersembunyi\" di setelan aplikasi untuk menampilkannya. Jika Anda tidak ingin menyembunyikannya, tekan lama dan pilih \"Jangan sembunyikan\". Folder disembunyikan dengan menambahkan file \".nomedia\" di dalamnya, Anda bisa menghapus file tersebut dengan aplikasi file manager. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Solusi saat ini untuk menampilkan gambar berfungsi dengan baik dalam sebagian besar kasus, namun jika anda ingin kualitas gambar yang lebih baik, anda bisa mengaktifkan \"Tampilkan gambar dalam kualitas tertinggi\" di pengaturan aplikasi, pada bagian \"Zoom gambar mendalam\". + Saya punya berkas/folder tersembunyi. Bagaimana cara memunculkannya? + Anda bisa memilih menu \"Tampilkan sementara berkas tersembunyi\" di layar utama, atau \"Tampilkan berkas tersembunyi\" di pengaturan aplikasi untuk menampilkannya. Jika anda tidak ingin menyembunyikannya, tekan lama dan pilih \"Jangan sembunyikan\". Folder disembunyikan dengan menambahkan berkas \".nomedia\" di dalamnya, anda bisa menghapus berkas tersebut dengan aplikasi pengelola berkas. + Kenapa aplikasi menggunakan sangat banyak ruang kosong? + Cache aplikasi bisa mencapai 250MB, ini untuk menjamin pemuatan gambar yang lebih cepat. Jika aplikasi menggunakan lebih banyak lagi ruang kosong, sangat memungkinkan anda memiliki item di dalam Keranjang Sampah. Berkas tersebut akan menambah ukuran aplikasi. Anda bisa mengosongkan Keranjang sampah dengan cara membukanya dan menghapus semua berkas, atau dari pengaturan aplikasi. Semua berkas di dalam keranjang sampah akan otomatis dihapus setelah 30 hari. - Simple Gallery Pro: Photo Manager & Editor + Simple Gallery Pro: Pengelola & Penyunting Foto - Offline gallery without ads. Organize, edit, recover and protect photos & videos + Galeri luring tanpa iklan. Kelola, sunting, pulihkan dan lindungi foto & video - 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. + Simple Gallery Pro adalah aplikasi galeri luring yang sangat mudah diubahsuai. Mengelola & menyunting foto anda, memulihkan berkas yang terhapus dari keranjang sampah, melindungi & menyembunyikan berkas, dan menampilkan banyak format foto & video, diantaranya RAW, SVG dan masih banyak lainnya. - The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. + Aplikasi sama sekali tidak berisi iklan dan tidak membutuhkan perizinan yang tidak perlu. Dan karena aplikasi juga tidak membutuhkan akses internet, privasi anda terlindungi. ------------------------------------------------- SIMPLE GALLERY PRO – FEATURES From 08ee4c60efbe6f56bdc4a29b14a9b9d24373e5c6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 16:46:05 +0200 Subject: [PATCH 093/165] fix #1449, do not wipe favorite items at fixing date taken values --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 6 ++++-- .../simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) 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 243298224..ac45129b3 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 @@ -781,11 +781,13 @@ fun Context.addPathToDB(path: String) { else -> TYPE_IMAGES } + val mediumDao = galleryDB.MediumDao() + val isFavorite = mediumDao.isFavorite(path) val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), - File(path).length(), type, videoDuration, false, 0L) + File(path).length(), type, videoDuration, isFavorite, 0L) try { - galleryDB.MediumDao().insert(medium) + mediumDao.insert(medium) } catch (ignored: Exception) { } }.start() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 1ce2bb641..ed96009a0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -21,6 +21,9 @@ interface MediumDao { @Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts FROM media WHERE deleted_ts != 0") fun getDeletedMedia(): List + @Query("SELECT is_favorite FROM media WHERE full_path = :path") + fun isFavorite(path: String): Boolean + @Insert(onConflict = REPLACE) fun insert(medium: Medium) From 6f6449c2b70afac4bcf9eaeefed2a6ced9174336 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 16:56:42 +0200 Subject: [PATCH 094/165] avoid reseting favorite items in one more case --- .../gallery/pro/activities/ViewPagerActivity.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 56db83d36..0fe36ff5c 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 @@ -325,7 +325,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (intent.action == "com.android.camera.action.REVIEW") { Thread { - if (galleryDB.MediumDao().getMediaFromPath(mPath).isEmpty()) { + val mediumDao = galleryDB.MediumDao() + if (mediumDao.getMediaFromPath(mPath).isEmpty()) { val type = when { mPath.isVideoFast() -> TYPE_VIDEOS mPath.isGif() -> TYPE_GIFS @@ -334,9 +335,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View else -> TYPE_IMAGES } + val isFavorite = mediumDao.isFavorite(mPath) val duration = if (type == TYPE_VIDEOS) mPath.getVideoDuration() else 0 - val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), File(mPath).length(), type, duration, false, 0) - galleryDB.MediumDao().insert(medium) + val ts = System.currentTimeMillis() + val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), ts, ts, File(mPath).length(), type, duration, isFavorite, 0) + mediumDao.insert(medium) } }.start() } From 12039bf4c5dc6da78649299f91b473e42ed08ff4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 22:51:53 +0200 Subject: [PATCH 095/165] updating GestureViews --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 0918f4360..8ccc6b7c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,7 +74,7 @@ dependencies { implementation 'info.androidhive:imagefilters:1.0.7' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.caverock:androidsvg-aar:1.3' - implementation 'com.github.tibbi:gestureviews:1506ec6156' + implementation 'com.github.tibbi:gestureviews:4444214285' implementation 'com.github.tibbi:subsampling-scale-image-view:43e37232ce' kapt 'com.github.bumptech.glide:compiler:4.9.0' // keep it here too, not just in Commons, else loading SVGs wont work From f61979b6ebbc89bcf528e95beb3bc54c876bfd7c Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 22:59:14 +0200 Subject: [PATCH 096/165] make the database favorite checker case insensitive --- .../com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index ed96009a0..490bd62f4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -21,7 +21,7 @@ interface MediumDao { @Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts FROM media WHERE deleted_ts != 0") fun getDeletedMedia(): List - @Query("SELECT is_favorite FROM media WHERE full_path = :path") + @Query("SELECT is_favorite FROM media WHERE full_path = :path COLLATE NOCASE") fun isFavorite(path: String): Boolean @Insert(onConflict = REPLACE) From 619a84deb1cdb9687c9093b7e38515395c45df56 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 23:17:40 +0200 Subject: [PATCH 097/165] updating commons to 5.13.9 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 8ccc6b7c7..bbac59a28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.7' + implementation 'com.simplemobiletools:commons:5.13.9' 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' From 096ccf7098a7b2d5b667d27d361d651c9e8e67b8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 23:24:52 +0200 Subject: [PATCH 098/165] update version to 6.7.8 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bbac59a28..fc7c2dc90 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 251 - versionName "6.7.7" + versionCode 252 + versionName "6.7.8" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 65288d156c840643d80e826fce477cc8718106ea Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 11 Jun 2019 23:24:59 +0200 Subject: [PATCH 099/165] updating changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b4cbe6a4..be5f8413a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 6.7.8 *(2019-06-11)* +---------------------------- + + * Improved the UX at zooming and panning at the fullscreen view + * Fixed unchecking Favorite items in some cases + * Show the available aspect ratios at the editor by default + * Couple stability, performance and translation improvements + Version 6.7.7 *(2019-05-28)* ---------------------------- From c40d3393ac994e9e452019c12ed8184b6a9205b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Marques?= Date: Tue, 11 Jun 2019 23:21:46 +0100 Subject: [PATCH 100/165] Update strings.xml features will be translated later --- app/src/main/res/values-pt/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 63ae35e77..7dae8946f 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -63,7 +63,7 @@ Gerir pastas incluídas Adicionar pasta Se possuir pastas com dados multimédia não reconhecidos pela aplicação, aqui pode adicioná-las manualmente. - No media files have been found. You can solve it by adding the folders containing media files manually. + Não foram encontrados ficheiros multimédia. Pode adicionar manualmente as pastas que contenham esses ficheiros. Redimensionar @@ -134,7 +134,7 @@ Data de obtenção Tipo de ficheiro Extensão - Tenha em atenção de que o agrupamento e a ordenação são campos independentes + Tenha em atenção de que agrupamento e ordenação são campos independentes Pasta mostrada no widget: @@ -156,7 +156,7 @@ Fundo escuro e barra de estado no modo de ecrã completo Deslocação horizontal de miniaturas Ocultar interface do sistema se em ecrã completo - Apagar as pastas vazias depois de remover o seu conteúdo + Apagar pastas vazias depois de remover o seu conteúdo Permitir controlo do brilho das fotos com gestos verticais Permitir controlo do volume e do brilho dos vídeos através de gestos verticais Mostrar número de ficheiros na vista principal @@ -170,14 +170,14 @@ Mostrar reciclagem no ecrã de pastas Ampliação de imagens Mostrar fotos com a melhor qualidade possível - Mostrar a reciclagem como o último item do ecrã principal + Mostrar reciclagem como o último item do ecrã principal Sair de ecrã completo com um gesto para baixo Permitir ampliação 1:1 com dois toques Abrir vídeos em ecrã distinto com os novos toques horizontais Mostrar \"notch\", se disponível Permitir rotação de imagens com gestos Prioridade de carregamento dos ficheiros - velocidade + Velocidade Compromisso Não mostrar ficheiros inválidos @@ -226,16 +226,16 @@ - Simple Gallery Pro: Photo Manager & Editor + Simple Gallery Pro: Editor e gestor de fotos - Offline gallery without ads. Organize, edit, recover and protect photos & videos + Sem anúncios. Organize, edite, recupere e protega os seus vídeos e fotos - 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. + Simple Gallery Pro é uma aplicação local para gerir fotos e vídeos. Pode organizar e editar as suas fotos, recuperar ficheiros através da reciclagem, proteger e ocultar ficheiros e ver imagens e vídeos disponíveis em vários formatos tais como RAW, SVG e muito mais. - The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. + A aplicação não tem anúncios nem pede permissões desnecessárias. uma vez que também não precisa de aceder à Internet, os seus ficheiros estão protegidos. ------------------------------------------------- - SIMPLE GALLERY PRO – FEATURES + SIMPLE GALLERY PRO – FUNCIONALIDADES ------------------------------------------------- • Offline gallery with no ads or popups From 5e4a852cedaac24e93f48d122e960894806351bd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 12 Jun 2019 10:16:53 +0200 Subject: [PATCH 101/165] updating subsampling and commons --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fc7c2dc90..c5d68a4de 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.9' + implementation 'com.simplemobiletools:commons:5.13.10' 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' @@ -75,7 +75,7 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.caverock:androidsvg-aar:1.3' implementation 'com.github.tibbi:gestureviews:4444214285' - implementation 'com.github.tibbi:subsampling-scale-image-view:43e37232ce' + implementation 'com.github.tibbi:subsampling-scale-image-view:55eb1ddd5b' kapt 'com.github.bumptech.glide:compiler:4.9.0' // keep it here too, not just in Commons, else loading SVGs wont work kapt 'androidx.room:room-compiler:2.0.0' From b9a0e1f9ffbc44f9cea66487979a61fea2f5858b Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 12 Jun 2019 10:20:48 +0200 Subject: [PATCH 102/165] update version to 6.7.9 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c5d68a4de..8845320f6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 252 - versionName "6.7.8" + versionCode 253 + versionName "6.7.9" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From a25c4a7021f5cd7bcd1ea0b95541a6b4f4564a43 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 12 Jun 2019 10:20:54 +0200 Subject: [PATCH 103/165] updating changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be5f8413a..848e60097 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 6.7.9 *(2019-06-12)* +---------------------------- + + * Fixed a crash at zooming + Version 6.7.8 *(2019-06-11)* ---------------------------- From 995550e1051950cc368e4d4144b4e667917e1365 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 14 Jun 2019 13:56:02 +0200 Subject: [PATCH 104/165] updating commons to 5.13.12 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 8845320f6..913cef868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.10' + implementation 'com.simplemobiletools:commons:5.13.12' 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' From b474ea73976c03da646abab42d6158d5a1dc4711 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 14 Jun 2019 15:19:57 +0200 Subject: [PATCH 105/165] updating commons to 5.13.14 --- app/build.gradle | 2 +- .../gallery/pro/activities/MainActivity.kt | 4 ++-- .../gallery/pro/extensions/Activity.kt | 2 +- .../gallery/pro/extensions/String.kt | 8 -------- .../gallery/pro/helpers/MyWidgetProvider.kt | 13 +++++++++++-- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 913cef868..54f42d958 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.12' + implementation 'com.simplemobiletools:commons:5.13.14' 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' 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 255ce9f8d..f262f6514 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 @@ -383,7 +383,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (newFolder.exists() && newFolder.isDirectory) { if (newFolder.list()?.isEmpty() == true) { toast(String.format(getString(R.string.deleting_folder), config.tempFolderPath), Toast.LENGTH_LONG) - tryDeleteFileDirItem(newFolder.toFileDirItem(applicationContext), true, true) + tryDeleteFileDirItem(newFolder.toFileDirItem(), true, true) } } config.tempFolderPath = "" @@ -554,7 +554,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { (it.isGif() && filter and TYPE_GIFS != 0) || (it.isRawFast() && filter and TYPE_RAWS != 0) || (it.isSvg() && filter and TYPE_SVGS != 0)) - }?.mapTo(itemsToDelete) { it.toFileDirItem(this) } + }?.mapTo(itemsToDelete) { it.toFileDirItem() } } if (config.useRecycleBin) { 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 8f2f23e97..3e8d8e013 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 @@ -168,7 +168,7 @@ fun BaseSimpleActivity.removeNoMedia(path: String, callback: (() -> Unit)? = nul return } - tryDeleteFileDirItem(file.toFileDirItem(applicationContext), false, false) { + tryDeleteFileDirItem(file.toFileDirItem(), false, false) { callback?.invoke() } } 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 e07e80657..17710e0e7 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 @@ -1,18 +1,10 @@ package com.simplemobiletools.gallery.pro.extensions import android.media.MediaMetadataRetriever -import com.bumptech.glide.signature.ObjectKey import com.simplemobiletools.gallery.pro.helpers.NOMEDIA import java.io.File import java.io.IOException -fun String.getFileSignature() = ObjectKey(getFileKey()) - -fun String.getFileKey(): String { - val file = File(this) - return "${file.absolutePath}${file.lastModified()}" -} - fun String.isThisOrParentIncluded(includedPaths: MutableSet) = includedPaths.any { startsWith(it, true) } fun String.isThisOrParentExcluded(excludedPaths: MutableSet) = excludedPaths.any { startsWith(it, true) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt index 2af024791..3b4ec5090 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt @@ -10,12 +10,16 @@ import android.widget.RemoteViews import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.request.RequestOptions +import com.simplemobiletools.commons.extensions.getFileSignature import com.simplemobiletools.commons.extensions.setBackgroundColor import com.simplemobiletools.commons.extensions.setText import com.simplemobiletools.commons.extensions.setVisibleIf import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.MediaActivity -import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.directoryDB +import com.simplemobiletools.gallery.pro.extensions.getFolderNameFromPath +import com.simplemobiletools.gallery.pro.extensions.widgetsDB import com.simplemobiletools.gallery.pro.models.Widget class MyWidgetProvider : AppWidgetProvider() { @@ -44,7 +48,12 @@ class MyWidgetProvider : AppWidgetProvider() { val options = RequestOptions() .signature(path.getFileSignature()) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - if (context.config.cropThumbnails) options.centerCrop() else options.fitCenter() + + if (context.config.cropThumbnails) { + options.centerCrop() + } else { + options.fitCenter() + } val density = context.resources.displayMetrics.density val appWidgetOptions = appWidgetManager.getAppWidgetOptions(appWidgetIds.first()) From 6e0364324712bfa9e7290552aa1e61e8b4fc6a3a Mon Sep 17 00:00:00 2001 From: sawka6630 Date: Sat, 15 Jun 2019 15:42:49 +0300 Subject: [PATCH 106/165] Update Ukrainian translation Fixing previous changes. --- app/src/main/res/values-uk/strings.xml | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 53c6cf730..1a9ba0497 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -14,7 +14,7 @@ Перемкнути у перегляд за теками Інша тека Показати на мапі - Невідоме розташування + Невідоме місцерозташування Збільшити кількість колонок Зменшити кількість колонок Змінити обкладинку @@ -32,7 +32,7 @@ Виправлення… Дати успішно виправлені Поділитися зображенням іншого розміру - Йой,\n\nздається, ви оновились із застарілого безкоштовного додатка. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатка.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатка.\n\nДякую! + Йой,\n\nздається, ви перейшли зі старого безкоштовного додатку на цей. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатку.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатку.\n\nДякую! Фільтр мультимедійних файлів @@ -146,7 +146,7 @@ Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів - Максимальна яскравість екрана при повноекранному перегляді медіафайлу + Максимальна яскравість екрану при повноекранному перегляді медіафайлу Обрізати ескізи у квадрат Показувати тривалість відео При повноекранному перегляді обертати за… @@ -163,10 +163,10 @@ Показувати розширені подробиці при повноекранному перегляді Керування розширеними подробицями Дозволити масштабування одним пальцем при повноекранному перегляді - Дозволити миттєво змінювати медіафайл натисканням на сторони екрана + Дозволити миттєво змінювати медіафайл натисканням на сторони екрану Дозволити глибоке масштабування зображень Приховати розширені подробиці, коли рядок стану прихований - Показати деякі кнопки дій внизу екрана + Показати деякі кнопки дій внизу екрану Показувати \"Кошик\" на головному екрані Глибокомасштабовані зображення Показувати зображення в найвищій можливій якості @@ -185,10 +185,10 @@ Ескізи Повноекранний перегляд Розширені подробиці - Кнопки дій внизу екрана + Кнопки дій внизу екрану - Керування видимими кнопками дій внизу екрана + Керування видимими кнопками дій внизу екрану Перемкнути улюблене Перемкнути видимість файлу @@ -196,7 +196,7 @@ Як зробити Simple Gallery галереєю за-замовчуванням? Спочатку необхідно знайти поточну галерею за-замовчуванням в розділі \"Додатки\" налаштувань вашого пристрою. Знайдіть і натисніть на кнопку \"Використовувати за-замовчуванням\" абощо, потім оберіть \"Очистити замовчування\". Наступного разу коли ви намагатиметеся відкрити зображення або відео, ви побачите вікно з вибором додатків для цього. Оберіть Simple Gallery та зробіть його додатком за-замовчуванням. - Я заблокував додаток за допомогою пароля і забув його. Що я можу зробити? + Я заблокував додаток за допомогою паролю і забув його. Що я можу зробити? Ви можете вирішити цю проблему двома способами: перевстановити додаток або знайти його в розділі \"Додатки\" налаштувань вашого пристрою та обрати \"Очистити дані\". Це скине усі ваші налаштування додатка, але не видалить жодного медіафайлу. Як зробити альбом завжди доступним у верхній частині? Ви можете виконати довге натискання на бажаному альбомі і вибрати піктограму \"Закріпити\" у меню дій, що закріпить його вгорі. Ви також можете закріпити декілька тек; закріплені елементи будуть відсортовані за методом сортування за-замовчуванням. @@ -218,11 +218,11 @@ Сортування за датою зйомки, здається, працює некоректно. Як я можу це виправити? Найбільш вірогідна причина цього - копіювання фалів з іншого місця. Це можна виправити, обравши ескізи файлів і потім - \"Виправити дату зйомки\". Я бачу деякі кольорові нашарування на зображенні. Як я можу покращити якість? - Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатка. + Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатку. Я приховав файл / теку. Як я можу відмінити цю дію? - Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатка. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. + Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатку. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. Чому додаток займає так багато місця? - Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатка. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатка. Кожен файл у Кошику автоматично видаляється через 30 днів. + Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатку. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатка. Кожен файл у Кошику автоматично видаляється через 30 днів. @@ -255,7 +255,7 @@ • Змінюйте видимість файлів, щоб приховати фото і відео • Створюйте налаштовуване слайд-шоу з ваших файлів • Переглядайте детальну інформацію про ваші файли (роздільна здатність, записи EXIF тощо) - • Simple Gallery Pro є додатком з відкритим програмним кодом + • Simple Gallery Pro є додатком з відкритим джерельним кодом … та багато-багато іншого! ФОТОРЕДАКТОР @@ -265,13 +265,13 @@ На відміну від деяких інших переглядачів та організаторів галереї, Simple Gallery Pro підтримує величезний перелік різноманітних типів файлів, включаючи JPEG, PNG, MP4, MKV, RAW, SVG, панорамні фото, панорамні відео та багато іншого. МЕНЕДЖЕР ГАЛЕРЕЇ З БЕЗЛІЧЧЮ НАЛАШТУВАНЬ - Від зовнішнього вигляду до функціональних кнопок у нижній панелі інструментів: Simple Gallery Pro має безліч налаштувань та працює у потрібний вам спосіб. Жодний інший менеджер галереї не має такої гнучкості! Завдяки відкритому програмному коду цей додаток доступний 32 мовами! + Від зовнішнього вигляду до функціональних кнопок у нижній панелі інструментів: Simple Gallery Pro має безліч налаштувань та працює у потрібний вам спосіб. Жодний інший менеджер галереї не має такої гнучкості! Завдяки відкритому джерельному коду цей додаток доступний 32 мовами! ВІДНОВЛЮЙТЕ ВИДАЛЕНІ ФОТО І ВІДЕО Випадково видалили дорогоцінне фото чи відео? Не хвилюйтеся! Simple Gallery Pro пропонує зручний кошик, звідки можна легко відновити видалені фото і відео. ЗАХИЩАЙТЕ І ПРИХОВУЙТЕ ФОТО, ВІДЕО І ФАЙЛИ - Використовуючи PIN-код, графічний ключ чи сканер відбитка пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитка пальця допоможе захистити ваші файли від випадкового видалення. + Використовуючи PIN-код, графічний ключ чи сканер відбитку пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитку пальця допоможе захистити ваші файли від випадкового видалення. Перегляньте повний набір додатків Simple Tools тут: https://www.simplemobiletools.com From 88046fd27af9a5a94b03fde212a11afc1a51400f Mon Sep 17 00:00:00 2001 From: sawka6630 Date: Mon, 17 Jun 2019 15:18:23 +0300 Subject: [PATCH 107/165] Update Ukrainian translation. *... after conversation with motomoto7* --- app/src/main/res/values-uk/strings.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1a9ba0497..41ca62c01 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -14,7 +14,7 @@ Перемкнути у перегляд за теками Інша тека Показати на мапі - Невідоме місцерозташування + Невідоме розташування Збільшити кількість колонок Зменшити кількість колонок Змінити обкладинку @@ -32,7 +32,7 @@ Виправлення… Дати успішно виправлені Поділитися зображенням іншого розміру - Йой,\n\nздається, ви перейшли зі старого безкоштовного додатку на цей. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатку.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатку.\n\nДякую! + Агов,\n\nздається, ви оновились зі старого безкоштовного додатка. Тепер ви можете видалити стару версію, у якій є кнопка \"Перейти на Pro\" вгорі налаштувань додатка.\n\nВи втратите лише елементи з Кошика, позначки улюблених елементів, а також потрібно буде скинути ваші налаштування додатка.\n\nДякую! Фільтр мультимедійних файлів @@ -146,7 +146,7 @@ Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів - Максимальна яскравість екрану при повноекранному перегляді медіафайлу + Максимальна яскравість екрана при повноекранному перегляді медіафайлу Обрізати ескізи у квадрат Показувати тривалість відео При повноекранному перегляді обертати за… @@ -163,10 +163,10 @@ Показувати розширені подробиці при повноекранному перегляді Керування розширеними подробицями Дозволити масштабування одним пальцем при повноекранному перегляді - Дозволити миттєво змінювати медіафайл натисканням на сторони екрану + Дозволити миттєво змінювати медіафайл натисканням на сторони екрана Дозволити глибоке масштабування зображень Приховати розширені подробиці, коли рядок стану прихований - Показати деякі кнопки дій внизу екрану + Показати деякі кнопки дій внизу екрана Показувати \"Кошик\" на головному екрані Глибокомасштабовані зображення Показувати зображення в найвищій можливій якості @@ -185,10 +185,10 @@ Ескізи Повноекранний перегляд Розширені подробиці - Кнопки дій внизу екрану + Кнопки дій внизу екрана - Керування видимими кнопками дій внизу екрану + Керування видимими кнопками дій внизу екрана Перемкнути улюблене Перемкнути видимість файлу @@ -196,7 +196,7 @@ Як зробити Simple Gallery галереєю за-замовчуванням? Спочатку необхідно знайти поточну галерею за-замовчуванням в розділі \"Додатки\" налаштувань вашого пристрою. Знайдіть і натисніть на кнопку \"Використовувати за-замовчуванням\" абощо, потім оберіть \"Очистити замовчування\". Наступного разу коли ви намагатиметеся відкрити зображення або відео, ви побачите вікно з вибором додатків для цього. Оберіть Simple Gallery та зробіть його додатком за-замовчуванням. - Я заблокував додаток за допомогою паролю і забув його. Що я можу зробити? + Я заблокував додаток за допомогою пароля і забув його. Що я можу зробити? Ви можете вирішити цю проблему двома способами: перевстановити додаток або знайти його в розділі \"Додатки\" налаштувань вашого пристрою та обрати \"Очистити дані\". Це скине усі ваші налаштування додатка, але не видалить жодного медіафайлу. Як зробити альбом завжди доступним у верхній частині? Ви можете виконати довге натискання на бажаному альбомі і вибрати піктограму \"Закріпити\" у меню дій, що закріпить його вгорі. Ви також можете закріпити декілька тек; закріплені елементи будуть відсортовані за методом сортування за-замовчуванням. @@ -218,11 +218,11 @@ Сортування за датою зйомки, здається, працює некоректно. Як я можу це виправити? Найбільш вірогідна причина цього - копіювання фалів з іншого місця. Це можна виправити, обравши ескізи файлів і потім - \"Виправити дату зйомки\". Я бачу деякі кольорові нашарування на зображенні. Як я можу покращити якість? - Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатку. + Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатка. Я приховав файл / теку. Як я можу відмінити цю дію? - Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатку. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. + Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатка. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером. Чому додаток займає так багато місця? - Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатку. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатка. Кожен файл у Кошику автоматично видаляється через 30 днів. + Кеш додатка може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатка. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатка. Кожен файл у Кошику автоматично видаляється через 30 днів. @@ -271,7 +271,7 @@ Випадково видалили дорогоцінне фото чи відео? Не хвилюйтеся! Simple Gallery Pro пропонує зручний кошик, звідки можна легко відновити видалені фото і відео. ЗАХИЩАЙТЕ І ПРИХОВУЙТЕ ФОТО, ВІДЕО І ФАЙЛИ - Використовуючи PIN-код, графічний ключ чи сканер відбитку пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитку пальця допоможе захистити ваші файли від випадкового видалення. + Використовуючи PIN-код, графічний ключ чи сканер відбитка пальця на вашому пристрої, ви можете захистити та приховати фото, відео та цілі альбоми. Ви можете захистити сам додаток або заблокувати окремі його функції. Наприклад, заборона видалення файлів без сканування відбитку пальця допоможе захистити ваші файли від випадкового видалення. Перегляньте повний набір додатків Simple Tools тут: https://www.simplemobiletools.com From 331b016a95e23b502737a753a67a6aac4799b57a Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 17 Jun 2019 16:51:18 +0200 Subject: [PATCH 108/165] extending the try/catch block at adding paths to db --- .../gallery/pro/extensions/Context.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 ac45129b3..c6582ccc2 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 @@ -781,12 +781,13 @@ fun Context.addPathToDB(path: String) { else -> TYPE_IMAGES } - val mediumDao = galleryDB.MediumDao() - val isFavorite = mediumDao.isFavorite(path) - val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 - val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), - File(path).length(), type, videoDuration, isFavorite, 0L) try { + val mediumDao = galleryDB.MediumDao() + val isFavorite = mediumDao.isFavorite(path) + val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 + val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), + File(path).length(), type, videoDuration, isFavorite, 0L) + mediumDao.insert(medium) } catch (ignored: Exception) { } From dbb0e45c0f424aad15830f70f7253b4baed1e5be Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 17 Jun 2019 21:39:50 +0200 Subject: [PATCH 109/165] separate daily and monthly thumbnail grouping by dates --- app/src/main/res/values-ar/strings.xml | 4 ++++ app/src/main/res/values-az/strings.xml | 4 ++++ app/src/main/res/values-ca/strings.xml | 4 ++++ app/src/main/res/values-cs/strings.xml | 4 ++++ app/src/main/res/values-da/strings.xml | 4 ++++ app/src/main/res/values-de/strings.xml | 4 ++++ app/src/main/res/values-el/strings.xml | 4 ++++ app/src/main/res/values-es/strings.xml | 4 ++++ app/src/main/res/values-fi/strings.xml | 4 ++++ app/src/main/res/values-fr/strings.xml | 4 ++++ app/src/main/res/values-gl/strings.xml | 4 ++++ app/src/main/res/values-hr/strings.xml | 4 ++++ app/src/main/res/values-hu/strings.xml | 4 ++++ app/src/main/res/values-id/strings.xml | 4 ++++ app/src/main/res/values-it/strings.xml | 4 ++++ app/src/main/res/values-ja/strings.xml | 4 ++++ app/src/main/res/values-ko-rKR/strings.xml | 4 ++++ app/src/main/res/values-lt/strings.xml | 4 ++++ app/src/main/res/values-nb/strings.xml | 4 ++++ app/src/main/res/values-nl/strings.xml | 4 ++++ app/src/main/res/values-pl/strings.xml | 4 ++++ app/src/main/res/values-pt-rBR/strings.xml | 4 ++++ app/src/main/res/values-pt/strings.xml | 4 ++++ app/src/main/res/values-ru/strings.xml | 4 ++++ app/src/main/res/values-sk/strings.xml | 4 ++++ app/src/main/res/values-sl/strings.xml | 4 ++++ app/src/main/res/values-sr/strings.xml | 4 ++++ app/src/main/res/values-sv/strings.xml | 4 ++++ app/src/main/res/values-tr/strings.xml | 4 ++++ app/src/main/res/values-uk/strings.xml | 4 ++++ app/src/main/res/values-zh-rCN/strings.xml | 4 ++++ app/src/main/res/values-zh-rHK/strings.xml | 4 ++++ app/src/main/res/values-zh-rTW/strings.xml | 4 ++++ app/src/main/res/values/strings.xml | 4 ++++ 34 files changed, 136 insertions(+) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 623bb3c8a..d976aaf83 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -135,7 +135,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 3d299a0c0..3852047e5 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -131,7 +131,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 507f46ecf..53610fb50 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -131,7 +131,11 @@ No agrupar fitxers Carpeta Darrer modificat + Last modified (daily) + Last modified (monthly) Data de presa + Date taken (daily) + Date taken (monthly) Tipus de fitxer Extensió Tingueu en compte que l’agrupació i la classificació són 2 camps independents diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 6d2c18104..2112f754c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -131,7 +131,11 @@ Neseskupovat soubory Složky Data poslední úpravy + Last modified (daily) + Last modified (monthly) Data pořízení + Date taken (daily) + Date taken (monthly) Typu souboru Přípony Mějte prosím na paměti, že seskupování a řazení jsou 2 nezávislé hodnoty diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index e7a520503..bc913d67c 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -131,7 +131,11 @@ Gruppér ikke filer Mappe Sidst ændret + Last modified (daily) + Last modified (monthly) Eksponeringsdato + Date taken (daily) + Date taken (monthly) Filtype Filendelse Vær opmærksom på at gruppering og sortering er to individuelle felter diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 28d8069c7..06964b051 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -131,7 +131,11 @@ Dateien nicht gruppieren Ordner Datum der letzten Änderung + Last modified (daily) + Last modified (monthly) Aufnahmedatum + Date taken (daily) + Date taken (monthly) Dateityp (Bilder/Videos) Dateierweiterung Bitte beachte, dass Gruppieren und Sortieren zwei unabhängige Felder sind. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 78a1557f2..09904433b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -131,7 +131,11 @@ Χωρίς Φάκελο Τελευταία τροπ/ηση + Last modified (daily) + Last modified (monthly) Ημερομ. λήψης + Date taken (daily) + Date taken (monthly) Τύπο αρχείου Επέκταση Σημειώστε ότι ομαδοποίηση και ταξινόμηση είναι 2 ανεξάρτητα πεδία diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4b129b459..0432d3c1c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -131,7 +131,11 @@ No agrupar ficheros Carpeta Último modificado + Last modified (daily) + Last modified (monthly) Data de toma + Date taken (daily) + Date taken (monthly) Tipo de fichero Extensión Tenga en cuenta que la agrupación y la clasificación son 2 campos independientes diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 6cad3b39d..821f86ba7 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -131,7 +131,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 14e2446ca..5fd197840 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -131,7 +131,11 @@ Ne pas grouper les fichiers Dossier Date de modification + Last modified (daily) + Last modified (monthly) Date de prise de vue + Date taken (daily) + Date taken (monthly) Type de fichier Extension Notez que grouper et trier sont 2 modes de tri indépendants diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 3bfd5b4f8..bcdb55857 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -131,7 +131,11 @@ Non agrupar ficheiros Cartafol Último modificado + Last modified (daily) + Last modified (monthly) Data de captura + Date taken (daily) + Date taken (monthly) Tipo de ficheior Extensión Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 999514a54..4a460e204 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -131,7 +131,11 @@ Nemoj grupirati ove datoteke Mapa Zadnje uređivano + Last modified (daily) + Last modified (monthly) Datum snimanja + Date taken (daily) + Date taken (monthly) Tip datoteke Vrsta datoteke Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index f0b8c58d0..a0ac24ec2 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -132,7 +132,11 @@ Nincs csoportosítás Mappa Utolsó módosítás + Last modified (daily) + Last modified (monthly) Dátum + Date taken (daily) + Date taken (monthly) 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ő diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index b9050bd78..296418cda 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -131,7 +131,11 @@ Jangan kelompokkan berkas Folder Terakhir diubah + Last modified (daily) + Last modified (monthly) Tanggal diambil + Date taken (daily) + Date taken (monthly) Jenis berkas Ekstensi Harap dicatat bahwa mengelompokkan dan mengurutkan adalah 2 ruas yang berbeda diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 44e5ad685..5f0bd9f4e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -131,7 +131,11 @@ Non raggruppare i file Cartella Ultima modifica + Last modified (daily) + Last modified (monthly) Data creazione + Date taken (daily) + Date taken (monthly) Tipo di file Estensione Notare che il raggruppamento e l\'ordinamento sono due campi indipendenti diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index a121af0f0..8a150f78b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -131,7 +131,11 @@ 何もしない フォルダ 更新日時 + Last modified (daily) + Last modified (monthly) 撮影日時 + Date taken (daily) + Date taken (monthly) ファイル形式 拡張子 Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 72e47130f..8f05eefa1 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -131,7 +131,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 4f4f52afc..8d4d10adc 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -131,7 +131,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 77e72a092..df54fa9fd 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -131,7 +131,11 @@ Ikke grupper filer Mappe Sist endret + Last modified (daily) + Last modified (monthly) Dato tatt + Date taken (daily) + Date taken (monthly) Filtype Endelse Vær oppmerksom på at gruppering og sortering er to uavhengige områder diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 18ef4b860..d1a11ccea 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -131,7 +131,11 @@ Bestanden niet groeperen Map Laatst gewijzigd + Last modified (daily) + Last modified (monthly) Datum opname + Date taken (daily) + Date taken (monthly) Bestandstype Extensie Groeperen en sorteren zijn twee aparte opties diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 0a3b68361..a29440031 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -131,7 +131,11 @@ Nie grupuj plików Folderu Daty ostatniej modyfikacji + Last modified (daily) + Last modified (monthly) Daty utworzenia + Date taken (daily) + Date taken (monthly) Typu Rozszerzenia Uwaga: grupowanie i sortowanie to dwa niezależne pola diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 609e6d77c..e1f9f02eb 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -131,7 +131,11 @@ Não agrupar arquivos Pasta Última modificação + Last modified (daily) + Last modified (monthly) Data de criação + Date taken (daily) + Date taken (monthly) Tipo de arquivo Extensão Por favor, note que o agrupamento e classificação são 2 campos independentes diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 7dae8946f..ae2a68098 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -131,7 +131,11 @@ Não agrupar ficheiros Pasta Última modificação + Last modified (daily) + Last modified (monthly) Data de obtenção + Date taken (daily) + Date taken (monthly) Tipo de ficheiro Extensão Tenha em atenção de que agrupamento e ordenação são campos independentes diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index cedb23e07..068ddaf91 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -131,7 +131,11 @@ Не группировать Папка Последнее изменение + Last modified (daily) + Last modified (monthly) Дата съёмки + Date taken (daily) + Date taken (monthly) Тип файла Расширение Обратите внимание, что группировка и сортировка — это два независимых поля diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 7439c6e43..ea3bfd1a6 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -131,7 +131,11 @@ Nezoskupovať súbory Priečinka Dátumu poslednej úpravy + Dátumu poslednej úpravy (denne) + Dátumu poslednej úpravy (mesačne) Dátumu vytvorenia + Dátumu vytvorenia (denne) + Dátumu vytvorenia (mesačne) Typu súboru Prípony Prosím vedzte, že radenie a zoskupovanie súborov sú 2 nezávislé hodnoty diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index ff68e020b..21580fba1 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -131,7 +131,11 @@ Ne združuj datotek Mapa Zadnjič spremenjeno + Last modified (daily) + Last modified (monthly) Posneto + Date taken (daily) + Date taken (monthly) Tip datoteke Končnica Združevanje in sortiranje sta dve neodvisni polji. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index ef85933bf..825e2088b 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -131,7 +131,11 @@ Не групиши датотеке Фасцикла Задње измењено + Last modified (daily) + Last modified (monthly) Датум настанка + Date taken (daily) + Date taken (monthly) Тип датотеке Тип датотеке Имајте на уму да су груписање и сортирање 2 различите ствари diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index ba827da08..e31ad5f5c 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -131,7 +131,11 @@ Gruppera inte filer Mapp Senast ändrad + Last modified (daily) + Last modified (monthly) Fotodatum + Date taken (daily) + Date taken (monthly) Filtyp Filnamnstillägg Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 06764a5e5..290137ed5 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -131,7 +131,11 @@ Dosyaları gruplandırma Klasör Son değiştirilme + Last modified (daily) + Last modified (monthly) Çekildiği tarih + Date taken (daily) + Date taken (monthly) Dosya türü Uzantı Please note that grouping and sorting are 2 independent fields diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 41ca62c01..3a75f29f3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -131,7 +131,11 @@ Не групувати файли текою останньою зміною + Last modified (daily) + Last modified (monthly) датою зйомки + Date taken (daily) + Date taken (monthly) типом файлу розширенням Зверніть увагу, що групування і сортування - це два окремих поля diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5cb402b8c..aec7423c6 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -131,7 +131,11 @@ 禁用文件分组 目录 最近修改 + Last modified (daily) + Last modified (monthly) 拍摄时间 + Date taken (daily) + Date taken (monthly) 文件类型 扩展名 请注意,分组和排序是相互独立的 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ff936c7c9..0db06033f 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -131,7 +131,11 @@ 不歸類檔案 資料夾 最後修改 + Last modified (daily) + Last modified (monthly) 拍照日期 + Date taken (daily) + Date taken (monthly) 檔案類型 副檔名 請注意,歸類和排序是兩者是獨立的 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2d9266e04..d4bc287e7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -131,7 +131,11 @@ 不歸類檔案 資料夾 最後修改 + Last modified (daily) + Last modified (monthly) 拍照日期 + Date taken (daily) + Date taken (monthly) 檔案類型 副檔名 請注意,歸類和排序是兩者是獨立的 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 17c09aba8..d453703d5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -131,7 +131,11 @@ Do not group files Folder Last modified + Last modified (daily) + Last modified (monthly) Date taken + Date taken (daily) + Date taken (monthly) File type Extension Please note that grouping and sorting are 2 independent fields From dc95824a2c44a32f33ac0486eb6a2d5339a0fd27 Mon Sep 17 00:00:00 2001 From: spkprs Date: Mon, 17 Jun 2019 23:18:29 +0300 Subject: [PATCH 110/165] update --- app/src/main/res/values-el/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 09904433b..2c9528188 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1,7 +1,7 @@ - Simple Gallery - Gallery + Απλή Συλλογή + Συλλογή Επεξεργασία Άνοιγμα κάμερας (κρυφά) @@ -131,11 +131,11 @@ Χωρίς Φάκελο Τελευταία τροπ/ηση - Last modified (daily) - Last modified (monthly) + Τελευταία τροπ/ηση (ημερήσια) + Τελευταία τροπ/ηση (μηνιαία) Ημερομ. λήψης - Date taken (daily) - Date taken (monthly) + Ημερομ. λήψης (ημερήσια) + Ημερομ. λήψης (μηνιαία) Τύπο αρχείου Επέκταση Σημειώστε ότι ομαδοποίηση και ταξινόμηση είναι 2 ανεξάρτητα πεδία From dd9b3b3528ea4422f5240e1dab7385bcfc69b194 Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Tue, 18 Jun 2019 12:34:04 +0800 Subject: [PATCH 111/165] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d4bc287e7..44cbfbbab 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -131,11 +131,11 @@ 不歸類檔案 資料夾 最後修改 - Last modified (daily) - Last modified (monthly) - 拍照日期 - Date taken (daily) - Date taken (monthly) + 最後修改 (按日) + 最後修改 (按月) + 拍攝日期 + 拍攝日期 (按日) + 拍攝日期 (按月) 檔案類型 副檔名 請注意,歸類和排序是兩者是獨立的 From 50bc2f45b5c6bc31427033c3bdb6aee5218e765a Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 18 Jun 2019 12:48:49 +0200 Subject: [PATCH 112/165] improve the performance at checking if a video is panorama --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c6582ccc2..2298bfaaf 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 @@ -741,7 +741,7 @@ fun Context.parseFileChannel(path: String, fc: FileChannel, level: Int, start: L val sb = StringBuilder() val buffer = ByteArray(1024) - while (true) { + while (sb.length < size) { val n = fis.read(buffer) if (n != -1) { sb.append(String(buffer, 0, n)) From 4cb9c08c60fe0cc613cfb850a034c4c1208f8df1 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Tue, 18 Jun 2019 18:49:59 +0200 Subject: [PATCH 113/165] Dutch --- app/src/main/res/values-nl/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d1a11ccea..350c12f50 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -131,11 +131,11 @@ Bestanden niet groeperen Map Laatst gewijzigd - Last modified (daily) - Last modified (monthly) + Laatst gewijzigd (per dag) + Laatst gewijzigd (per maand) Datum opname - Date taken (daily) - Date taken (monthly) + Datum opname (per dag) + Datum opname (per maand) Bestandstype Extensie Groeperen en sorteren zijn twee aparte opties From 3e2c66e294fae99214e9efebd5bac917aa6fcfa8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 18 Jun 2019 23:02:18 +0200 Subject: [PATCH 114/165] adding some new grouping related constants --- .../gallery/pro/activities/MainActivity.kt | 2 +- .../gallery/pro/asynctasks/GetMediaAsynctask.kt | 2 +- .../gallery/pro/dialogs/ChangeGroupingDialog.kt | 8 ++++---- .../simplemobiletools/gallery/pro/helpers/Constants.kt | 6 ++++-- .../simplemobiletools/gallery/pro/helpers/MediaFetcher.kt | 4 ++-- .../com/simplemobiletools/gallery/pro/models/Medium.kt | 4 ++-- 6 files changed, 14 insertions(+), 12 deletions(-) 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 f262f6514..117eda6f8 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 @@ -134,7 +134,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (!config.wasRecycleBinPinned) { config.addPinnedFolders(hashSetOf(RECYCLE_BIN)) config.wasRecycleBinPinned = true - config.saveFolderGrouping(SHOW_ALL, GROUP_BY_DATE_TAKEN or GROUP_DESCENDING) + config.saveFolderGrouping(SHOW_ALL, GROUP_BY_DATE_TAKEN_DAILY or GROUP_DESCENDING) } if (!config.wasSVGShowingHandled) { 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 d382422a4..5c21358cc 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 @@ -18,7 +18,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 getProperDateTaken = context.config.getFileSorting(pathToUse) and SORT_BY_DATE_TAKEN != 0 || context.config.getFolderGrouping(pathToUse) and GROUP_BY_DATE_TAKEN != 0 + val getProperDateTaken = context.config.getFileSorting(pathToUse) and SORT_BY_DATE_TAKEN != 0 || context.config.getFolderGrouping(pathToUse) and GROUP_BY_DATE_TAKEN_DAILY != 0 val getProperFileSize = context.config.getFileSorting(pathToUse) and SORT_BY_SIZE != 0 val favoritePaths = context.getFavoritePaths() val getVideoDurations = context.config.showThumbnailVideoDuration diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt index 90d1bdf6c..b477b8501 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt @@ -41,8 +41,8 @@ class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = val groupBtn = when { currGrouping and GROUP_BY_NONE != 0 -> groupingRadio.grouping_dialog_radio_none - currGrouping and GROUP_BY_LAST_MODIFIED != 0 -> groupingRadio.grouping_dialog_radio_last_modified - currGrouping and GROUP_BY_DATE_TAKEN != 0 -> groupingRadio.grouping_dialog_radio_date_taken + currGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> groupingRadio.grouping_dialog_radio_last_modified + currGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> groupingRadio.grouping_dialog_radio_date_taken currGrouping and GROUP_BY_FILE_TYPE != 0 -> groupingRadio.grouping_dialog_radio_file_type currGrouping and GROUP_BY_EXTENSION != 0 -> groupingRadio.grouping_dialog_radio_extension else -> groupingRadio.grouping_dialog_radio_folder @@ -64,8 +64,8 @@ class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = val groupingRadio = view.grouping_dialog_radio_grouping var grouping = when (groupingRadio.checkedRadioButtonId) { R.id.grouping_dialog_radio_none -> GROUP_BY_NONE - R.id.grouping_dialog_radio_last_modified -> GROUP_BY_LAST_MODIFIED - R.id.grouping_dialog_radio_date_taken -> GROUP_BY_DATE_TAKEN + R.id.grouping_dialog_radio_last_modified -> GROUP_BY_LAST_MODIFIED_DAILY + R.id.grouping_dialog_radio_date_taken -> GROUP_BY_DATE_TAKEN_DAILY R.id.grouping_dialog_radio_file_type -> GROUP_BY_FILE_TYPE R.id.grouping_dialog_radio_extension -> GROUP_BY_EXTENSION else -> GROUP_BY_FOLDER 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 481d49080..382f31ecb 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 @@ -161,11 +161,13 @@ const val LOCATION_SD = 2 const val LOCATION_OTG = 3 const val GROUP_BY_NONE = 1 -const val GROUP_BY_LAST_MODIFIED = 2 -const val GROUP_BY_DATE_TAKEN = 4 +const val GROUP_BY_LAST_MODIFIED_DAILY = 2 +const val GROUP_BY_DATE_TAKEN_DAILY = 4 const val GROUP_BY_FILE_TYPE = 8 const val GROUP_BY_EXTENSION = 16 const val GROUP_BY_FOLDER = 32 +const val GROUP_BY_LAST_MODIFIED_MONTHLY = 64 +const val GROUP_BY_DATE_TAKEN_MONTHLY = 128 const val GROUP_DESCENDING = 1024 // bottom actions 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 c64a0d88a..a7f867c7b 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 @@ -336,7 +336,7 @@ class MediaFetcher(val context: Context) { } val sortDescending = currentGrouping and GROUP_DESCENDING != 0 - val sorted = if (currentGrouping and GROUP_BY_DATE_TAKEN != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED != 0) { + val sorted = if (currentGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0) { mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it.toLongOrNull() ?: 0L } else { @@ -364,7 +364,7 @@ class MediaFetcher(val context: Context) { private fun getFormattedKey(key: String, grouping: Int, today: String, yesterday: String): String { return when { - grouping and GROUP_BY_LAST_MODIFIED != 0 || grouping and GROUP_BY_DATE_TAKEN != 0 -> getFinalDate(formatDate(key), today, yesterday) + grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getFinalDate(formatDate(key), today, yesterday) grouping and GROUP_BY_FILE_TYPE != 0 -> getFileTypeString(key) grouping and GROUP_BY_EXTENSION != 0 -> key.toUpperCase() grouping and GROUP_BY_FOLDER != 0 -> context.humanizePath(key) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt index 4851de9b0..6be0459e9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt @@ -56,8 +56,8 @@ data class Medium( fun getGroupingKey(groupBy: Int): String { return when { - groupBy and GROUP_BY_LAST_MODIFIED != 0 -> getDayStartTS(modified) - groupBy and GROUP_BY_DATE_TAKEN != 0 -> getDayStartTS(taken) + groupBy and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> getDayStartTS(modified) + groupBy and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getDayStartTS(taken) groupBy and GROUP_BY_FILE_TYPE != 0 -> type.toString() groupBy and GROUP_BY_EXTENSION != 0 -> name.getFilenameExtension().toLowerCase() groupBy and GROUP_BY_FOLDER != 0 -> parentPath From 48f097f7894847f2e598d6444f9963824d62e7ae Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 18 Jun 2019 23:43:06 +0200 Subject: [PATCH 115/165] properly handle grouping by last_modified and date_taken monthly --- .../pro/dialogs/ChangeGroupingDialog.kt | 12 ++++++---- .../gallery/pro/helpers/MediaFetcher.kt | 23 ++++++++++++------ .../gallery/pro/models/Medium.kt | 12 +++++++--- .../res/layout/dialog_change_grouping.xml | 24 +++++++++++++++---- 4 files changed, 53 insertions(+), 18 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt index b477b8501..71da2f57d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt @@ -41,8 +41,10 @@ class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = val groupBtn = when { currGrouping and GROUP_BY_NONE != 0 -> groupingRadio.grouping_dialog_radio_none - currGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> groupingRadio.grouping_dialog_radio_last_modified - currGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> groupingRadio.grouping_dialog_radio_date_taken + currGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> groupingRadio.grouping_dialog_radio_last_modified_daily + currGrouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 -> groupingRadio.grouping_dialog_radio_last_modified_monthly + currGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> groupingRadio.grouping_dialog_radio_date_taken_daily + currGrouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0 -> groupingRadio.grouping_dialog_radio_date_taken_monthly currGrouping and GROUP_BY_FILE_TYPE != 0 -> groupingRadio.grouping_dialog_radio_file_type currGrouping and GROUP_BY_EXTENSION != 0 -> groupingRadio.grouping_dialog_radio_extension else -> groupingRadio.grouping_dialog_radio_folder @@ -64,8 +66,10 @@ class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = val groupingRadio = view.grouping_dialog_radio_grouping var grouping = when (groupingRadio.checkedRadioButtonId) { R.id.grouping_dialog_radio_none -> GROUP_BY_NONE - R.id.grouping_dialog_radio_last_modified -> GROUP_BY_LAST_MODIFIED_DAILY - R.id.grouping_dialog_radio_date_taken -> GROUP_BY_DATE_TAKEN_DAILY + R.id.grouping_dialog_radio_last_modified_daily -> GROUP_BY_LAST_MODIFIED_DAILY + R.id.grouping_dialog_radio_last_modified_monthly -> GROUP_BY_LAST_MODIFIED_MONTHLY + R.id.grouping_dialog_radio_date_taken_daily -> GROUP_BY_DATE_TAKEN_DAILY + R.id.grouping_dialog_radio_date_taken_monthly -> GROUP_BY_DATE_TAKEN_MONTHLY R.id.grouping_dialog_radio_file_type -> GROUP_BY_FILE_TYPE R.id.grouping_dialog_radio_extension -> GROUP_BY_EXTENSION else -> GROUP_BY_FOLDER 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 a7f867c7b..a67a88468 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 @@ -336,7 +336,8 @@ class MediaFetcher(val context: Context) { } val sortDescending = currentGrouping and GROUP_DESCENDING != 0 - val sorted = if (currentGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0) { + val sorted = if (currentGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 || + currentGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 || currentGrouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0) { mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it.toLongOrNull() ?: 0L } else { @@ -351,8 +352,8 @@ class MediaFetcher(val context: Context) { mediumGroups[key] = value } - val today = formatDate(System.currentTimeMillis().toString()) - val yesterday = formatDate((System.currentTimeMillis() - DAY_SECONDS * 1000).toString()) + val today = formatDate(System.currentTimeMillis().toString(), true) + val yesterday = formatDate((System.currentTimeMillis() - DAY_SECONDS * 1000).toString(), true) for ((key, value) in mediumGroups) { val sectionKey = getFormattedKey(key, currentGrouping, today, yesterday) thumbnailItems.add(ThumbnailSection(sectionKey)) @@ -363,13 +364,20 @@ class MediaFetcher(val context: Context) { } private fun getFormattedKey(key: String, grouping: Int, today: String, yesterday: String): String { - return when { - grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getFinalDate(formatDate(key), today, yesterday) + var result = when { + grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || grouping and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getFinalDate(formatDate(key, true), today, yesterday) + grouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 || grouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0 -> formatDate(key, false) grouping and GROUP_BY_FILE_TYPE != 0 -> getFileTypeString(key) grouping and GROUP_BY_EXTENSION != 0 -> key.toUpperCase() grouping and GROUP_BY_FOLDER != 0 -> context.humanizePath(key) else -> key } + + if (result.isEmpty()) { + result = context.getString(R.string.unknown) + } + + return result } private fun getFinalDate(date: String, today: String, yesterday: String): String { @@ -380,11 +388,12 @@ class MediaFetcher(val context: Context) { } } - private fun formatDate(timestamp: String): String { + private fun formatDate(timestamp: String, showDay: Boolean): String { return if (timestamp.areDigitsOnly()) { val cal = Calendar.getInstance(Locale.ENGLISH) cal.timeInMillis = timestamp.toLong() - DateFormat.format("dd MMM yyyy", cal).toString() + val format = if (showDay) "dd MMM yyyy" else "MMM yyyy" + DateFormat.format(format, cal).toString() } else { "" } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt index 6be0459e9..6044219d7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt @@ -56,8 +56,10 @@ data class Medium( fun getGroupingKey(groupBy: Int): String { return when { - groupBy and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> getDayStartTS(modified) - groupBy and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getDayStartTS(taken) + groupBy and GROUP_BY_LAST_MODIFIED_DAILY != 0 -> getDayStartTS(modified, false) + groupBy and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 -> getDayStartTS(modified, true) + groupBy and GROUP_BY_DATE_TAKEN_DAILY != 0 -> getDayStartTS(taken, false) + groupBy and GROUP_BY_DATE_TAKEN_MONTHLY != 0 -> getDayStartTS(taken, true) groupBy and GROUP_BY_FILE_TYPE != 0 -> type.toString() groupBy and GROUP_BY_EXTENSION != 0 -> name.getFilenameExtension().toLowerCase() groupBy and GROUP_BY_FOLDER != 0 -> parentPath @@ -67,13 +69,17 @@ data class Medium( fun getIsInRecycleBin() = deletedTS != 0L - private fun getDayStartTS(ts: Long): String { + private fun getDayStartTS(ts: Long, resetDays: Boolean): String { val calendar = Calendar.getInstance(Locale.ENGLISH).apply { timeInMillis = ts set(Calendar.HOUR_OF_DAY, 0) set(Calendar.MINUTE, 0) set(Calendar.SECOND, 0) set(Calendar.MILLISECOND, 0) + + if (resetDays) { + set(Calendar.DAY_OF_MONTH, 1) + } } return calendar.timeInMillis.toString() diff --git a/app/src/main/res/layout/dialog_change_grouping.xml b/app/src/main/res/layout/dialog_change_grouping.xml index a51c19111..c64aad625 100644 --- a/app/src/main/res/layout/dialog_change_grouping.xml +++ b/app/src/main/res/layout/dialog_change_grouping.xml @@ -29,20 +29,36 @@ android:text="@string/do_not_group_files"/> + android:text="@string/by_last_modified_daily"/> + android:text="@string/by_last_modified_monthly"/> + + + + Date: Wed, 19 Jun 2019 20:59:32 +0200 Subject: [PATCH 116/165] updating Room and constraintLayout --- app/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 54f42d958..a886def92 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ dependencies { 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.17' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' 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' @@ -78,7 +78,7 @@ dependencies { implementation 'com.github.tibbi:subsampling-scale-image-view:55eb1ddd5b' kapt 'com.github.bumptech.glide:compiler:4.9.0' // keep it here too, not just in Commons, else loading SVGs wont work - kapt 'androidx.room:room-compiler:2.0.0' - implementation 'androidx.room:room-runtime:2.0.0' - annotationProcessor 'androidx.room:room-compiler:2.0.0' + kapt 'androidx.room:room-compiler:2.1.0' + implementation 'androidx.room:room-runtime:2.1.0' + annotationProcessor 'androidx.room:room-compiler:2.1.0' } From 07fcbaae6afe76f9b33f716c723b0402c92a0bcd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 19 Jun 2019 21:43:56 +0200 Subject: [PATCH 117/165] fix #1450, make sure the shortcut opens the proper folder if the app is paused --- .../simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index 965250340..fc6e60851 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -362,6 +362,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Date: Thu, 20 Jun 2019 10:10:08 +0200 Subject: [PATCH 118/165] removing a slideshow fade animation button + 2 related strings --- .../gallery/pro/dialogs/SlideshowDialog.kt | 7 -- .../gallery/pro/helpers/Config.kt | 8 +- .../gallery/pro/helpers/Constants.kt | 1 - app/src/main/res/layout/dialog_slideshow.xml | 23 +----- app/src/main/res/values-ar/strings.xml | 2 - app/src/main/res/values-az/strings.xml | 2 - app/src/main/res/values-ca/strings.xml | 2 - app/src/main/res/values-cs/strings.xml | 2 - app/src/main/res/values-da/strings.xml | 2 - app/src/main/res/values-de/strings.xml | 2 - app/src/main/res/values-el/strings.xml | 2 - app/src/main/res/values-es/strings.xml | 2 - app/src/main/res/values-fi/strings.xml | 2 - app/src/main/res/values-fr/strings.xml | 2 - app/src/main/res/values-gl/strings.xml | 2 - app/src/main/res/values-hr/strings.xml | 2 - app/src/main/res/values-hu/strings.xml | 2 - app/src/main/res/values-id/strings.xml | 2 - app/src/main/res/values-it/strings.xml | 2 - app/src/main/res/values-ja/strings.xml | 2 - app/src/main/res/values-ko-rKR/strings.xml | 2 - app/src/main/res/values-lt/strings.xml | 2 - app/src/main/res/values-nb/strings.xml | 2 - app/src/main/res/values-nl/strings.xml | 2 - app/src/main/res/values-pl/strings.xml | 74 +++++++++---------- app/src/main/res/values-pt-rBR/strings.xml | 2 - app/src/main/res/values-pt/strings.xml | 2 - app/src/main/res/values-ru/strings.xml | 2 - app/src/main/res/values-sk/strings.xml | 2 - app/src/main/res/values-sl/strings.xml | 2 - app/src/main/res/values-sr/strings.xml | 2 - app/src/main/res/values-sv/strings.xml | 2 - app/src/main/res/values-tr/strings.xml | 2 - app/src/main/res/values-uk/strings.xml | 2 - app/src/main/res/values-zh-rCN/strings.xml | 2 - app/src/main/res/values-zh-rHK/strings.xml | 2 - app/src/main/res/values-zh-rTW/strings.xml | 2 - app/src/main/res/values/strings.xml | 2 - 38 files changed, 38 insertions(+), 141 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt index 7ab0371a8..7e97fec57 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt @@ -43,11 +43,6 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit random_order.toggle() } - use_fade_holder.setOnClickListener { - interval_value.clearFocus() - use_fade.toggle() - } - move_backwards_holder.setOnClickListener { interval_value.clearFocus() move_backwards.toggle() @@ -82,7 +77,6 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit include_videos.isChecked = config.slideshowIncludeVideos include_gifs.isChecked = config.slideshowIncludeGIFs random_order.isChecked = config.slideshowRandomOrder - use_fade.isChecked = config.slideshowUseFade move_backwards.isChecked = config.slideshowMoveBackwards loop_slideshow.isChecked = config.loopSlideshow } @@ -98,7 +92,6 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit slideshowIncludeVideos = view.include_videos.isChecked slideshowIncludeGIFs = view.include_gifs.isChecked slideshowRandomOrder = view.random_order.isChecked - slideshowUseFade = view.use_fade.isChecked slideshowMoveBackwards = view.move_backwards.isChecked loopSlideshow = view.loop_slideshow.isChecked } 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 bd335ad6c..5ac100f0c 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 @@ -303,10 +303,6 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(SLIDESHOW_RANDOM_ORDER, false) set(slideshowRandomOrder) = prefs.edit().putBoolean(SLIDESHOW_RANDOM_ORDER, slideshowRandomOrder).apply() - var slideshowUseFade: Boolean - get() = prefs.getBoolean(SLIDESHOW_USE_FADE, false) - set(slideshowUseFade) = prefs.edit().putBoolean(SLIDESHOW_USE_FADE, slideshowUseFade).apply() - var slideshowMoveBackwards: Boolean get() = prefs.getBoolean(SLIDESHOW_MOVE_BACKWARDS, false) set(slideshowMoveBackwards) = prefs.edit().putBoolean(SLIDESHOW_MOVE_BACKWARDS, slideshowMoveBackwards).apply() @@ -387,8 +383,8 @@ class Config(context: Context) : BaseConfig(context) { fun getLastVideoPosition(path: String) = prefs.getInt("$LAST_VIDEO_POSITION_PREFIX${path.toLowerCase()}", 0) - fun getAllLastVideoPositions() = prefs.all.filterKeys { - it.startsWith(LAST_VIDEO_POSITION_PREFIX) + fun getAllLastVideoPositions() = prefs.all.filterKeys { + it.startsWith(LAST_VIDEO_POSITION_PREFIX) } var rememberLastVideoPosition: Boolean 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 382f31ecb..4d34894ad 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 @@ -84,7 +84,6 @@ const val SLIDESHOW_INTERVAL = "slideshow_interval" const val SLIDESHOW_INCLUDE_VIDEOS = "slideshow_include_videos" const val SLIDESHOW_INCLUDE_GIFS = "slideshow_include_gifs" const val SLIDESHOW_RANDOM_ORDER = "slideshow_random_order" -const val SLIDESHOW_USE_FADE = "slideshow_use_fade" const val SLIDESHOW_MOVE_BACKWARDS = "slideshow_move_backwards" const val SLIDESHOW_LOOP = "loop_slideshow" const val SLIDESHOW_DEFAULT_INTERVAL = 5 diff --git a/app/src/main/res/layout/dialog_slideshow.xml b/app/src/main/res/layout/dialog_slideshow.xml index 611da4f87..b78daf699 100644 --- a/app/src/main/res/layout/dialog_slideshow.xml +++ b/app/src/main/res/layout/dialog_slideshow.xml @@ -94,32 +94,11 @@ - - - - - - تضمين الفديو تضمين GIF ترتيب عشوائي - استخدام تاثير التلاشي ارجع للخلف حلقة عرض الشرائح انتهى عرض الشرائح لم يتم العثور على وسائط لعرض الشرائح - Use crossfade animations تغيير طريقة العرض diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 3852047e5..19976d386 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -113,12 +113,10 @@ Include videos Include GIFs Random order - Use fade animations Move backwards Loop slideshow The slideshow ended No media for the slideshow have been found - Use crossfade animations Change view type diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 53610fb50..40aa90b39 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -113,12 +113,10 @@ Inclou vídeos Inclou GIFs Ordre aleatori - Utilitza animacions de desaparició Moure cap enrere Presentació de diapositives S’ha acabat la presentació de diapositives No s’han trobat mitjans per a la presentació de diapositives - Utilitzeu animacions creuades Canviar el tipus de vista diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 2112f754c..b26d39d11 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -113,12 +113,10 @@ Zahrnout videa Zahrnout GIFy Náhodné pořadí - Použít animaci slábnutí Jít opačným směrem Opakovat prezentaci ve smyčce Prezentace skončila Nebyla nalezena žádná média pro prezentaci - Použít animaci prolnutí Změnit typ zobrazení diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index bc913d67c..125fe4293 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -113,12 +113,10 @@ Inkluder videoer Inkluder GIF\'er Tilfældig rækkefølge - Brug udtonende animationer Kør baglæns Endeløs kørsel Slideshowet endte Der blev ikke funket nogen mediefiler til slideshowet - Anvend crossfade-animationer Skift visning diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 06964b051..2acc90f96 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -113,12 +113,10 @@ Videos verwenden GIFs verwenden Zufällige Reihenfolge - Übergänge animieren Rückwärts abspielen Endlos abspielen Diashow beendet. Keine Medien für Diashow gefunden. - Verwende Überblendanimationen Darstellung ändern diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 2c9528188..3ec6705ca 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -113,12 +113,10 @@ Συμπερίληψη βίντεο Συμπερίληψη GIFs6 Τυχαία σειρά - Εφέ σταδιακής αλλαγής Κίνηση προς τα πίσω Επανάληψη εμφάνισης διαφανιών Η εμφάνιση διαφανειών τελείωσε Δεν βρέθηκαν πολυμέσα για την εμφάνιση διαφανειών - Χρήση κίνησης εικόνων με διαγώνιο ξεθώριασμα Αλλαγή τύπου εμφάνισης diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0432d3c1c..204c4a707 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -113,12 +113,10 @@ Incluir vídeos Incluir GIFs Orden aleatorio - Usar animaciones de desvanecimiento Mover hacia atrás Presentación de diapositivas La diapositiva terminó No se han encontrado medios para la presentación de diapositivas - Usa animaciones de crossfade. Cambiar tipo de vista diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 821f86ba7..710b9d50b 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -113,12 +113,10 @@ Sisällytä Videot Sisällytä GIFit Satunnainen järjestys - Käytä häivitys-animaatiota Liiku takaisinpäin Jatkuva diaesitys Diaesitys päättyi Mediaa diaesitykseen ei löytynyt - Use crossfade animations Vaihda näkymää diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 5fd197840..627537baf 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -113,12 +113,10 @@ Inclure les vidéos Inclure les GIFs Ordre aléatoire - Utiliser un fondu Défilement inverse Diaporama en boucle Diaporama terminé Aucun média trouvé pour le diaporama - Utiliser des animations en fondu enchaîné Changer de mode d\'affichage diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index bcdb55857..687d6f505 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -113,12 +113,10 @@ Incluír vídeos Incluír GIFs Orde aleatoria - Utilizar animación esvaescente Mover atrás Reproducir en bucle Rematou a presentación Non se atoparon medios para a presentación - Use crossfade animations Cambiar o tipo de vista diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 4a460e204..ea85eaca2 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -113,12 +113,10 @@ Dodaj videe Dodaj GIF-ove Nasumični redoslijed - Koristi animaciju izbljeđivanja Pomakni unatrag Prikaži dijaprojekciju kao petlju Kraj dijaprojekcije Nema datoteka za dijaprojekciju - Koristi prijelazne animacije Promijeni vrstu prikaza diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index a0ac24ec2..5f95884be 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -114,12 +114,10 @@ Videók befoglalása GIF befoglalása Véletlen sorrend - Halványuló animáció használat Áthelyezés hátra Diavetítés ismétlése A diavetítés vége A diavetítéshez nem található média - Animáció átmenet használat Nézet típus változtatása diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 296418cda..f62ab2a5d 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -113,12 +113,10 @@ Sertakan video Sertakan GIF Urutan acak - Animasi memudar Mundur Slideshow tanpa henti Slideshow berakhir Tidak ditemukan media untuk slideshow - Gunakan animasi crossfade Ubah jenis tampilan diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5f0bd9f4e..87d86fd97 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -113,12 +113,10 @@ Includi video Includi GIF Ordine sparso - Usa animazioni a dissolvenza Scorri al contrario Ripeti presentazione La presentazione è terminata Nessun file trovato per la presentazione - Usa le animazioni in dissolvenza Cambia modalità visualizzazione diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8a150f78b..003741572 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -113,12 +113,10 @@ ビデオを含める GIFを含める ランダムな順序 - フェードアニメーションを使用する 逆方向に進む スライドショーをリピート再生する スライドショーが終了しました スライドショーに表示するメディアがありません - クロスフェードアニメーションを使用する 表示形式の変更 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 8f05eefa1..ecc241338 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -113,12 +113,10 @@ 포함된 비디오 포함된 GIFs 랜덤 순서 - 페이드 애니메이션 사용 뒤로 이동 슬라이드 쇼 반복 슬라이드 쇼 종료 슬라이드 쇼를 위한 미디어를 찾을 수 없음 - Use crossfade animations 보기방식 변경 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 8d4d10adc..5b123f99f 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -113,12 +113,10 @@ Įtraukti vaizdo įrašus Itraukti GIF\'us Atsitiktinė tvarka - Naudoti išblukimo animacijas Sukti atgal Klipuoti skaidrių demonstraciją Skaidrių demonstracija pasibaigė Nerasta medijos skaidrių demonstracijai - Use crossfade animations Keisti peržiūros tipą diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index df54fa9fd..893477882 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -113,12 +113,10 @@ Inkluder videoer Inkluder GIF-bilder Tilfeldig rekkefølge - Bruk toningseffekt Avspill bakover Gjenta lysbildeshow Lysbildeshowet er slutt Ingen media for lysbildeshowet er funnet - Bruk krysstoningsanimasjon Endre visningstype diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 350c12f50..2188e15e8 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -113,12 +113,10 @@ Video’s weergeven GIF-bestanden weergeven Willekeurige volgorde - Animaties gebruiken (vervagen) Omgekeerde volgorde Voorstelling herhalen De diavoorstelling is beëindigd Geen media gevonden voor diavoorstelling - Crossfade-animaties gebruiken Weergave diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a29440031..75bb4f956 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,14 +1,14 @@ Prosta Galeria -    Galeria + Galeria Edytuj Uruchom aplikację aparatu (ukryty) (wykluczony) Przypnij folder Odepnij folder -    Przypnij na górze + Przypnij na górze Pokaż wszystko Wszystkie foldery Przełącz na widok folderów @@ -51,11 +51,11 @@ Zarządzaj wykluczonymi folderami Działa na folderach galerii. Możesz zarządzać wykluczonymi folderami w ustawieniach aplikacji. Wykluczyć folder nadrzędny? -    Wykluczenie folderów ukryje je tylko w niniejszej aplikacji, w innych aplikacjach będą one wciąż widoczne.\n\nJeśli chcesz je ukryć także w innych aplikacjach, użyj funkcji ukrywania. + Wykluczenie folderów ukryje je tylko w niniejszej aplikacji, w innych aplikacjach będą one wciąż widoczne.\n\nJeśli chcesz je ukryć także w innych aplikacjach, użyj funkcji ukrywania. Usuń wszystko Usunąć wszystkie foldery z listy wykluczonych? Foldery nie zostaną fizycznie usunięte. Ukryte foldery -    Zarządzaj ukrytymi folderami + Zarządzaj ukrytymi folderami Zdaje się, że nie masz żadnych folderów z plikiem \'.nomedia\'. @@ -71,7 +71,7 @@ Szerokość Wysokość Zachowaj proporcje -    Podaj poprawną rozdzielczość + Podaj poprawną rozdzielczość Edycja @@ -102,9 +102,9 @@ Tapeta została ustawiona Proporcje ekranu w trybie pionowym Proporcje ekranu w trybie poziomym -    Pulpit -    Ekran blokady -    Pulpit i ekran blokady + Pulpit + Ekran blokady + Pulpit i ekran blokady Pokaz slajdów @@ -113,17 +113,15 @@ Dołączaj filmy Dołączaj GIFy Losowa kolejność - Używaj płynnych przejść -    Odwrotna kolejność -    Zapętlaj + Odwrotna kolejność + Zapętlaj Pokaz slajdów zakończony Nie znalazłem multimediów do pokazu slajdów - Używaj animacji przejścia -    Zmień typ widoku -    Siatka -    Lista + Zmień typ widoku + Siatka + Lista Grupuj bezpośrednie podfoldery @@ -157,21 +155,19 @@ Ustawień systemowych Orientacji urządzenia Proporcji -    Czarne tło i pasek stanu przy widoku pełnoekranowym + Czarne tło i pasek stanu przy widoku pełnoekranowym Przewijaj miniatury poziomo Ukrywaj interfejs przy pełnoekranowym podglądzie Usuwaj puste foldery po usunięciu ich zawartości -    Zezwalaj na kontrolowanie jasności zdjęcia pionowymi gestami -    Zezwalaj na kontrolowanie jasności i głośności filmów pionowymi gestami + Zezwalaj na kontrolowanie jasności zdjęcia pionowymi gestami + Zezwalaj na kontrolowanie jasności i głośności filmów pionowymi gestami Pokazuj liczbę elementów w folderach w głównym widoku Dodatkowe szczegóły przy podglądzie pełnoekranowym Zarządzaj dodatkowymi szczegółami -    Zezwalaj na powiększanie jednym palcem w widoku pełnoekranowym -    Zezwalaj na natychmiastową zmianę multimediów po kliknięciu boków ekranu + Zezwalaj na powiększanie jednym palcem w widoku pełnoekranowym + Zezwalaj na natychmiastową zmianę multimediów po kliknięciu boków ekranu Zezwalaj na duże powiększanie obrazów - Ukrywaj dodatkowe szczegóły, gdy pasek stanu jest ukryty + Ukrywaj dodatkowe szczegóły, gdy pasek stanu jest ukryty Pokazuj niektóre przyciski akcji na dole ekranu Pokazuj kosz w widoku folderów Duże powiększanie obrazów @@ -188,9 +184,9 @@ Unikaj pokazywania niewłaściwych plików -    Miniatury -    Widok pełnoekranowy -    Dodatkowe szczegóły + Miniatury + Widok pełnoekranowy + Dodatkowe szczegóły Przyciski na dolnym pasku @@ -199,22 +195,22 @@ Widoczność plików -    Jak mogę ustawić tą aplikację jako domyślną aplikację galerii? -    Znajdź obecną domyślną aplikację galerii w ustawieniach systemowych (sekcja \'Aplikacje\'). Na ekranie z informacjami o niej kliknij \'Otwórz domyślnie\', a następnie \'Wyczyść domyślne\'. Gdy podczas następnej próby otwarcia zdjęcia czy filmu system zapyta Cię jaką aplikacją to zrobić, wybierz Prostą Galerię i opcję zapamiętania tego wyboru. -    Zablokowałem(-am) aplikację hasłem i wyleciało mi ono z głowy. Co mogę zrobić? -    Masz dwie opcje: przeinstalowanie aplikacji lub wyczyszczenie jej ustawień. Niezależnie od wyboru, pliki pozostaną nienaruszone. -    Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze? -    Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji. -    Jak mogę przwijać filmy? + Jak mogę ustawić tą aplikację jako domyślną aplikację galerii? + Znajdź obecną domyślną aplikację galerii w ustawieniach systemowych (sekcja \'Aplikacje\'). Na ekranie z informacjami o niej kliknij \'Otwórz domyślnie\', a następnie \'Wyczyść domyślne\'. Gdy podczas następnej próby otwarcia zdjęcia czy filmu system zapyta Cię jaką aplikacją to zrobić, wybierz Prostą Galerię i opcję zapamiętania tego wyboru. + Zablokowałem(-am) aplikację hasłem i wyleciało mi ono z głowy. Co mogę zrobić? + Masz dwie opcje: przeinstalowanie aplikacji lub wyczyszczenie jej ustawień. Niezależnie od wyboru, pliki pozostaną nienaruszone. + Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze? + Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji. + Jak mogę przwijać filmy? Na dwa sposoby: albo przeciągając poziomo palcem po filmie, albo klikając obecny (przewinięcie do tyłu) lub całkowity czas trwania (do przodu). -    Jaka jest różnica między ukryciem, a wykluczeniem folderu? -    Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików. -    Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy? + Jaka jest różnica między ukryciem, a wykluczeniem folderu? + Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików. + Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy? Aplikacja nie wie, czy dany obraz jest okładką od piosenki czy czymś innym. Aby ukryć niechciane rzeczy, przytrzymaj je i wybierz opcję \'Wyklucz\' z paska akcji. -    Nie pokazuje(-ą) mi się folder(y) ze zdjęciami / filmami. Co mogę zrobić? -    Wejdź do ustawień aplikacji i w sekcji z dołączonymi folderami dodaj tenże folder do listy. + Nie pokazuje(-ą) mi się folder(y) ze zdjęciami / filmami. Co mogę zrobić? + Wejdź do ustawień aplikacji i w sekcji z dołączonymi folderami dodaj tenże folder do listy. Co jeśli chcę widzieć tylko wybrane foldery? -    Przejdź do sekcji z wykluczonymi folderami w ustawieniach aplikacji, dodaj tam folder główny (\"/\"), a następnie dodaj pożądane foldery w sekcji z dołączonymi folderami. + Przejdź do sekcji z wykluczonymi folderami w ustawieniach aplikacji, dodaj tam folder główny (\"/\"), a następnie dodaj pożądane foldery w sekcji z dołączonymi folderami. Czy mogę w tej aplikacji przycinać obrazy? Tak, możesz to zrobić w edytorze, przeciągając krawędzie obrazu. Edytor otworzysz przytrzymując miniaturę obrazu i wybierając opcję \'Edytuj\', bądź wybierając tą samą opcję w menu pełnoekranowym. Czy mogę jakoś grupować miniatury plików? diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e1f9f02eb..eefb68042 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -113,12 +113,10 @@ Incluir videos Incluir GIFs Ordem aleatória - Usar animação de esmaecimento Retroceder Apresentação em ciclo Fim da apresentação Nenhuma mídia encontrada para a apresentação - Usar animações crossfade Alterar modo de visualização diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index ae2a68098..e4d6b5bde 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -113,12 +113,10 @@ Incluir vídeos Incluir GIF Ordem aleatória - Utilizar animações Mover para trás Apresentação em ciclo Apresentação terminada Não foram encontrados ficheiros para a apresentação - Utilizar animação de transição Tipo de exibição diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 068ddaf91..8ec1c5916 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -113,12 +113,10 @@ Видео GIF В случайном порядке - Эффект затухания В обратном порядке Зациклить Слайдшоу завершено Медиафайлов для слайдшоу не найдено - Эффект плавного перехода Вид diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index ea3bfd1a6..dd7931896 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -113,12 +113,10 @@ Zahrnúť videá Zahrnúť GIFy Náhodné poradie - Používať miznúce animácie Ísť opačným smerom Automaticky reštartovať prezentáciu Prezentácia skončila Pre prezentáciu sa nenašli žiadne vhodné súbory - Použiť prelínacie animácie Zmeniť typ zobrazenia diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 21580fba1..50f05a2b0 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -113,12 +113,10 @@ Vključi videoposnetke Vključi GIFe Naključni vrstni red - Uporabi zameglitev animacij Premik nazaj Ponavljaj diaprojekcijo Diaprojekcija se je zaključila Ne najdem datotek za diaprojekcijo - Uporabi križanje animacij Spremeni tip pogleda diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 825e2088b..48d90b652 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -113,12 +113,10 @@ Садржи видео снимке Садржи ГИФове Насумични редослед - Користи изблеђујуће анимације Помери уназад Понављај слајдшоу Слајдшоу се завршио Нису пронађени медији за слајдшоу - Користи анимације са унакрсним изблеђивањем Промени тип прегледа diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index e31ad5f5c..8e134361e 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -113,12 +113,10 @@ Inkludera videor Inkludera GIF-bilder Spela upp i slumpmässig ordning - Använd toningsanimationer Spela upp i omvänd ordning Spela upp i en slinga Bildspelet har avslutats Ingen media hittades för bildspelet - Använd övertoningsanimationer Ändra vy diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 290137ed5..dc284c14b 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -113,12 +113,10 @@ Videoları dahil et GIF\'leri dahil et Rastgele sırala - Soldurma animasyonlarını kullan Geriye doğru git Slayt gösterisini tekrarla Slayt gösterisi sona erdi Slayt gösterisi için medya bulunamadı - Çapraz geçiş animasyonlarını kullan Görünüm türünü değiştir diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3a75f29f3..1bc982c7c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -113,12 +113,10 @@ Включити відео Включити GIF-зображення Випадковий порядок - Використовувати анімацію затухання Рухатися назад Зациклити показ слайдів Слайдшоу закінчено Не знайдено медіафайлів для показу у слайдшоу - Анімувати перехід між елементами Змінити тип перегляду diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index aec7423c6..102200ad9 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -113,12 +113,10 @@ 包括视频 包括 GIFs 随机顺序 - 使用渐变动画 倒播 循环幻灯片 幻灯片结束 未发现可用媒体 - 使用淡入淡出动画 更改视图类型 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 0db06033f..7ed2b6f68 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -113,12 +113,10 @@ 包含影片 包含GIF 隨機順序 - 使用淡入淡出動畫 反向播放 投影片循環 投影片結束 找不到投影片的媒體檔案 - 使用淡入淡出動畫 改變瀏覽類型 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 44cbfbbab..ffd80796e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -113,12 +113,10 @@ 包含影片 包含GIF 隨機順序 - 使用淡入淡出動畫 反向播放 投影片循環 投影片結束 找不到投影片的媒體檔案 - 使用淡入淡出動畫 改變瀏覽類型 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d453703d5..293f9700b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,12 +113,10 @@ Include videos Include GIFs Random order - Use fade animations Move backwards Loop slideshow The slideshow ended No media for the slideshow have been found - Use crossfade animations Change view type From ff01f4fef419821b29d731fcdee7e625d2f75823 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Jun 2019 10:21:38 +0200 Subject: [PATCH 119/165] adding some new slideshow animation related strings --- app/src/main/res/values-ar/strings.xml | 4 ++++ app/src/main/res/values-az/strings.xml | 4 ++++ app/src/main/res/values-ca/strings.xml | 4 ++++ app/src/main/res/values-cs/strings.xml | 4 ++++ app/src/main/res/values-da/strings.xml | 4 ++++ app/src/main/res/values-de/strings.xml | 4 ++++ app/src/main/res/values-el/strings.xml | 4 ++++ app/src/main/res/values-es/strings.xml | 4 ++++ app/src/main/res/values-fi/strings.xml | 4 ++++ app/src/main/res/values-fr/strings.xml | 4 ++++ app/src/main/res/values-gl/strings.xml | 4 ++++ app/src/main/res/values-hr/strings.xml | 4 ++++ app/src/main/res/values-hu/strings.xml | 4 ++++ app/src/main/res/values-id/strings.xml | 4 ++++ app/src/main/res/values-it/strings.xml | 4 ++++ app/src/main/res/values-ja/strings.xml | 4 ++++ app/src/main/res/values-ko-rKR/strings.xml | 4 ++++ app/src/main/res/values-lt/strings.xml | 4 ++++ app/src/main/res/values-nb/strings.xml | 4 ++++ app/src/main/res/values-nl/strings.xml | 4 ++++ app/src/main/res/values-pl/strings.xml | 4 ++++ app/src/main/res/values-pt-rBR/strings.xml | 4 ++++ app/src/main/res/values-pt/strings.xml | 4 ++++ app/src/main/res/values-ru/strings.xml | 4 ++++ app/src/main/res/values-sk/strings.xml | 4 ++++ app/src/main/res/values-sl/strings.xml | 4 ++++ app/src/main/res/values-sr/strings.xml | 4 ++++ app/src/main/res/values-sv/strings.xml | 4 ++++ app/src/main/res/values-tr/strings.xml | 4 ++++ app/src/main/res/values-uk/strings.xml | 4 ++++ app/src/main/res/values-zh-rCN/strings.xml | 4 ++++ app/src/main/res/values-zh-rHK/strings.xml | 4 ++++ app/src/main/res/values-zh-rTW/strings.xml | 4 ++++ app/src/main/res/values/strings.xml | 4 ++++ 34 files changed, 136 insertions(+) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 38107069b..b514045c4 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -119,6 +119,10 @@ ترتيب عشوائي ارجع للخلف حلقة عرض الشرائح + Animation: + None + Fade + Slide انتهى عرض الشرائح لم يتم العثور على وسائط لعرض الشرائح diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 19976d386..32572be4a 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -115,6 +115,10 @@ Random order Move backwards Loop slideshow + Animation: + None + Fade + Slide The slideshow ended No media for the slideshow have been found diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 40aa90b39..47cbd2cbe 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -115,6 +115,10 @@ Ordre aleatori Moure cap enrere Presentació de diapositives + Animation: + None + Fade + Slide S’ha acabat la presentació de diapositives No s’han trobat mitjans per a la presentació de diapositives diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b26d39d11..a518059b5 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -115,6 +115,10 @@ Náhodné pořadí Jít opačným směrem Opakovat prezentaci ve smyčce + Animation: + None + Fade + Slide Prezentace skončila Nebyla nalezena žádná média pro prezentaci diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 125fe4293..ed5f684fb 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -115,6 +115,10 @@ Tilfældig rækkefølge Kør baglæns Endeløs kørsel + Animation: + None + Fade + Slide Slideshowet endte Der blev ikke funket nogen mediefiler til slideshowet diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2acc90f96..6e448a2be 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -115,6 +115,10 @@ Zufällige Reihenfolge Rückwärts abspielen Endlos abspielen + Animation: + None + Fade + Slide Diashow beendet. Keine Medien für Diashow gefunden. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 3ec6705ca..d5c007f2c 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -115,6 +115,10 @@ Τυχαία σειρά Κίνηση προς τα πίσω Επανάληψη εμφάνισης διαφανιών + Animation: + None + Fade + Slide Η εμφάνιση διαφανειών τελείωσε Δεν βρέθηκαν πολυμέσα για την εμφάνιση διαφανειών diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 204c4a707..f83bd28da 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -115,6 +115,10 @@ Orden aleatorio Mover hacia atrás Presentación de diapositivas + Animation: + None + Fade + Slide La diapositiva terminó No se han encontrado medios para la presentación de diapositivas diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 710b9d50b..5e4021ec7 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -115,6 +115,10 @@ Satunnainen järjestys Liiku takaisinpäin Jatkuva diaesitys + Animation: + None + Fade + Slide Diaesitys päättyi Mediaa diaesitykseen ei löytynyt diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 627537baf..8178649ef 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -115,6 +115,10 @@ Ordre aléatoire Défilement inverse Diaporama en boucle + Animation: + None + Fade + Slide Diaporama terminé Aucun média trouvé pour le diaporama diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 687d6f505..1ee116418 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -115,6 +115,10 @@ Orde aleatoria Mover atrás Reproducir en bucle + Animation: + None + Fade + Slide Rematou a presentación Non se atoparon medios para a presentación diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index ea85eaca2..06c58ae1f 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -115,6 +115,10 @@ Nasumični redoslijed Pomakni unatrag Prikaži dijaprojekciju kao petlju + Animation: + None + Fade + Slide Kraj dijaprojekcije Nema datoteka za dijaprojekciju diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 5f95884be..00d426850 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -116,6 +116,10 @@ Véletlen sorrend Áthelyezés hátra Diavetítés ismétlése + Animation: + None + Fade + Slide A diavetítés vége A diavetítéshez nem található média diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index f62ab2a5d..25b58c79c 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -115,6 +115,10 @@ Urutan acak Mundur Slideshow tanpa henti + Animation: + None + Fade + Slide Slideshow berakhir Tidak ditemukan media untuk slideshow diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 87d86fd97..9bddb694a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -115,6 +115,10 @@ Ordine sparso Scorri al contrario Ripeti presentazione + Animation: + None + Fade + Slide La presentazione è terminata Nessun file trovato per la presentazione diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 003741572..7dd128b52 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -115,6 +115,10 @@ ランダムな順序 逆方向に進む スライドショーをリピート再生する + Animation: + None + Fade + Slide スライドショーが終了しました スライドショーに表示するメディアがありません diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index ecc241338..03a03e5df 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -115,6 +115,10 @@ 랜덤 순서 뒤로 이동 슬라이드 쇼 반복 + Animation: + None + Fade + Slide 슬라이드 쇼 종료 슬라이드 쇼를 위한 미디어를 찾을 수 없음 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 5b123f99f..b793ef0b1 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -115,6 +115,10 @@ Atsitiktinė tvarka Sukti atgal Klipuoti skaidrių demonstraciją + Animation: + None + Fade + Slide Skaidrių demonstracija pasibaigė Nerasta medijos skaidrių demonstracijai diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 893477882..0103806ef 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -115,6 +115,10 @@ Tilfeldig rekkefølge Avspill bakover Gjenta lysbildeshow + Animation: + None + Fade + Slide Lysbildeshowet er slutt Ingen media for lysbildeshowet er funnet diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2188e15e8..266ae131d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -115,6 +115,10 @@ Willekeurige volgorde Omgekeerde volgorde Voorstelling herhalen + Animation: + None + Fade + Slide De diavoorstelling is beëindigd Geen media gevonden voor diavoorstelling diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 75bb4f956..4ab40245a 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -115,6 +115,10 @@ Losowa kolejność Odwrotna kolejność Zapętlaj + Animation: + None + Fade + Slide Pokaz slajdów zakończony Nie znalazłem multimediów do pokazu slajdów diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index eefb68042..fdaeaf08c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -115,6 +115,10 @@ Ordem aleatória Retroceder Apresentação em ciclo + Animation: + None + Fade + Slide Fim da apresentação Nenhuma mídia encontrada para a apresentação diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e4d6b5bde..408a438d4 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -115,6 +115,10 @@ Ordem aleatória Mover para trás Apresentação em ciclo + Animation: + None + Fade + Slide Apresentação terminada Não foram encontrados ficheiros para a apresentação diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8ec1c5916..a66ba24ea 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -115,6 +115,10 @@ В случайном порядке В обратном порядке Зациклить + Animation: + None + Fade + Slide Слайдшоу завершено Медиафайлов для слайдшоу не найдено diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index dd7931896..f5e7965ad 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -115,6 +115,10 @@ Náhodné poradie Ísť opačným smerom Automaticky reštartovať prezentáciu + Animácia: + Žiadna + Prelínanie + Posúvanie Prezentácia skončila Pre prezentáciu sa nenašli žiadne vhodné súbory diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 50f05a2b0..101368ad6 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -115,6 +115,10 @@ Naključni vrstni red Premik nazaj Ponavljaj diaprojekcijo + Animation: + None + Fade + Slide Diaprojekcija se je zaključila Ne najdem datotek za diaprojekcijo diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 48d90b652..b9df49bee 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -115,6 +115,10 @@ Насумични редослед Помери уназад Понављај слајдшоу + Animation: + None + Fade + Slide Слајдшоу се завршио Нису пронађени медији за слајдшоу diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 8e134361e..991fee330 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -115,6 +115,10 @@ Spela upp i slumpmässig ordning Spela upp i omvänd ordning Spela upp i en slinga + Animation: + None + Fade + Slide Bildspelet har avslutats Ingen media hittades för bildspelet diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index dc284c14b..374e977a8 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -115,6 +115,10 @@ Rastgele sırala Geriye doğru git Slayt gösterisini tekrarla + Animation: + None + Fade + Slide Slayt gösterisi sona erdi Slayt gösterisi için medya bulunamadı diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1bc982c7c..e36d99e87 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -115,6 +115,10 @@ Випадковий порядок Рухатися назад Зациклити показ слайдів + Animation: + None + Fade + Slide Слайдшоу закінчено Не знайдено медіафайлів для показу у слайдшоу diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 102200ad9..190838e50 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -115,6 +115,10 @@ 随机顺序 倒播 循环幻灯片 + Animation: + None + Fade + Slide 幻灯片结束 未发现可用媒体 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 7ed2b6f68..7e044b555 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -115,6 +115,10 @@ 隨機順序 反向播放 投影片循環 + Animation: + None + Fade + Slide 投影片結束 找不到投影片的媒體檔案 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ffd80796e..34ed3acb6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -115,6 +115,10 @@ 隨機順序 反向播放 投影片循環 + Animation: + None + Fade + Slide 投影片結束 找不到投影片的媒體檔案 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 293f9700b..13879fbe5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,6 +115,10 @@ Random order Move backwards Loop slideshow + Animation: + None + Fade + Slide The slideshow ended No media for the slideshow have been found From cd261dc8e10fabb117ac80f4038288175ee85558 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Jun 2019 12:29:55 +0200 Subject: [PATCH 120/165] adding some constants related to slideshow animations --- .../com/simplemobiletools/gallery/pro/helpers/Config.kt | 4 ++++ .../com/simplemobiletools/gallery/pro/helpers/Constants.kt | 6 ++++++ 2 files changed, 10 insertions(+) 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 5ac100f0c..45642f914 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 @@ -307,6 +307,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(SLIDESHOW_MOVE_BACKWARDS, false) set(slideshowMoveBackwards) = prefs.edit().putBoolean(SLIDESHOW_MOVE_BACKWARDS, slideshowMoveBackwards).apply() + var slideshowAnimation: Int + get() = prefs.getInt(SLIDESHOW_ANIMATION, SLIDESHOW_ANIMATION_SLIDE) + set(slideshowAnimation) = prefs.edit().putInt(SLIDESHOW_ANIMATION, slideshowAnimation).apply() + var loopSlideshow: Boolean get() = prefs.getBoolean(SLIDESHOW_LOOP, false) set(loopSlideshow) = prefs.edit().putBoolean(SLIDESHOW_LOOP, loopSlideshow).apply() 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 4d34894ad..267ec5ab2 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 @@ -85,11 +85,17 @@ const val SLIDESHOW_INCLUDE_VIDEOS = "slideshow_include_videos" const val SLIDESHOW_INCLUDE_GIFS = "slideshow_include_gifs" const val SLIDESHOW_RANDOM_ORDER = "slideshow_random_order" const val SLIDESHOW_MOVE_BACKWARDS = "slideshow_move_backwards" +const val SLIDESHOW_ANIMATION = "slideshow_animation" const val SLIDESHOW_LOOP = "loop_slideshow" const val SLIDESHOW_DEFAULT_INTERVAL = 5 const val SLIDESHOW_SCROLL_DURATION = 500L const val SLIDESHOW_START_ON_ENTER = "slideshow_start_on_enter" +// slideshow animations +const val SLIDESHOW_ANIMATION_NONE = 0 +const val SLIDESHOW_ANIMATION_SLIDE = 1 +const val SLIDESHOW_ANIMATION_FADE = 2 + const val NOMEDIA = ".nomedia" const val FAVORITES = "favorites" const val RECYCLE_BIN = "recycle_bin" From 2c9ac6e4403834f3e913fce6159d724f992eff52 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Jun 2019 15:17:55 +0200 Subject: [PATCH 121/165] adding an implementation of slideshow fade animations --- .../pro/activities/ViewPagerActivity.kt | 14 ++++++++++++-- .../gallery/pro/helpers/Constants.kt | 3 ++- .../pro/helpers/DefaultPageTransformer.kt | 8 ++++++++ .../gallery/pro/helpers/FadePageTransformer.kt | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/DefaultPageTransformer.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FadePageTransformer.kt 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 0fe36ff5c..361cbc326 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 @@ -396,6 +396,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (getMediaForSlideshow()) { view_pager.onGlobalLayout { if (!isDestroyed) { + if (config.slideshowAnimation == SLIDESHOW_ANIMATION_FADE) { + view_pager.setPageTransformer(false, FadePageTransformer()) + } + hideSystemUI(true) mSlideshowInterval = config.slideshowInterval mSlideshowMoveBackwards = config.slideshowMoveBackwards @@ -436,7 +440,13 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } }) - animator.interpolator = DecelerateInterpolator() + if (config.slideshowAnimation == SLIDESHOW_ANIMATION_SLIDE) { + animator.interpolator = DecelerateInterpolator() + animator.duration = SLIDESHOW_SLIDE_DURATION + } else { + animator.duration = SLIDESHOW_FADE_DURATION + } + animator.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener { var oldDragPosition = 0 override fun onAnimationUpdate(animation: ValueAnimator) { @@ -453,7 +463,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } }) - animator.duration = SLIDESHOW_SCROLL_DURATION view_pager.beginFakeDrag() animator.start() } @@ -473,6 +482,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun stopSlideshow() { if (mIsSlideshowActive) { + view_pager.setPageTransformer(false, DefaultPageTransformer()) mIsSlideshowActive = false showSystemUI(true) mSlideshowHandler.removeCallbacksAndMessages(null) 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 267ec5ab2..8193e9de8 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 @@ -88,7 +88,8 @@ const val SLIDESHOW_MOVE_BACKWARDS = "slideshow_move_backwards" const val SLIDESHOW_ANIMATION = "slideshow_animation" const val SLIDESHOW_LOOP = "loop_slideshow" const val SLIDESHOW_DEFAULT_INTERVAL = 5 -const val SLIDESHOW_SCROLL_DURATION = 500L +const val SLIDESHOW_SLIDE_DURATION = 500L +const val SLIDESHOW_FADE_DURATION = 1500L const val SLIDESHOW_START_ON_ENTER = "slideshow_start_on_enter" // slideshow animations diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/DefaultPageTransformer.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/DefaultPageTransformer.kt new file mode 100644 index 000000000..95981ba4a --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/DefaultPageTransformer.kt @@ -0,0 +1,8 @@ +package com.simplemobiletools.gallery.pro.helpers + +import android.view.View +import androidx.viewpager.widget.ViewPager + +class DefaultPageTransformer : ViewPager.PageTransformer { + override fun transformPage(view: View, position: Float) {} +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FadePageTransformer.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FadePageTransformer.kt new file mode 100644 index 000000000..3ed113b40 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FadePageTransformer.kt @@ -0,0 +1,18 @@ +package com.simplemobiletools.gallery.pro.helpers + +import android.view.View +import androidx.viewpager.widget.ViewPager + +class FadePageTransformer : ViewPager.PageTransformer { + override fun transformPage(view: View, position: Float) { + view.translationX = view.width * -position + + view.alpha = if (position <= -1f || position >= 1f) { + 0f + } else if (position == 0f) { + 1f + } else { + 1f - Math.abs(position) + } + } +} From ecb1557bd770829edcd364c06712eaca3c2aea5f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Jun 2019 15:38:25 +0200 Subject: [PATCH 122/165] removing a colon from a string --- app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-az/strings.xml | 2 +- app/src/main/res/values-ca/strings.xml | 2 +- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-da/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-fi/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-gl/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ko-rKR/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-nb/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sl/strings.xml | 2 +- app/src/main/res/values-sr/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index b514045c4..fec865af6 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -119,7 +119,7 @@ ترتيب عشوائي ارجع للخلف حلقة عرض الشرائح - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 32572be4a..d621f25e5 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -115,7 +115,7 @@ Random order Move backwards Loop slideshow - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 47cbd2cbe..1c0c43d6c 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -115,7 +115,7 @@ Ordre aleatori Moure cap enrere Presentació de diapositives - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index a518059b5..1ebb50c7c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -115,7 +115,7 @@ Náhodné pořadí Jít opačným směrem Opakovat prezentaci ve smyčce - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ed5f684fb..fdbede921 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -115,7 +115,7 @@ Tilfældig rækkefølge Kør baglæns Endeløs kørsel - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6e448a2be..f2e8d74bf 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -115,7 +115,7 @@ Zufällige Reihenfolge Rückwärts abspielen Endlos abspielen - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index d5c007f2c..ac86a636d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -115,7 +115,7 @@ Τυχαία σειρά Κίνηση προς τα πίσω Επανάληψη εμφάνισης διαφανιών - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f83bd28da..826aa6b14 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -115,7 +115,7 @@ Orden aleatorio Mover hacia atrás Presentación de diapositivas - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 5e4021ec7..737c12e5c 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -115,7 +115,7 @@ Satunnainen järjestys Liiku takaisinpäin Jatkuva diaesitys - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8178649ef..0e0a9a9ba 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -115,7 +115,7 @@ Ordre aléatoire Défilement inverse Diaporama en boucle - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 1ee116418..a01d46cc3 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -115,7 +115,7 @@ Orde aleatoria Mover atrás Reproducir en bucle - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 06c58ae1f..cd8831065 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -115,7 +115,7 @@ Nasumični redoslijed Pomakni unatrag Prikaži dijaprojekciju kao petlju - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 00d426850..95b0f32cf 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -116,7 +116,7 @@ Véletlen sorrend Áthelyezés hátra Diavetítés ismétlése - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 25b58c79c..34eb6a5af 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -115,7 +115,7 @@ Urutan acak Mundur Slideshow tanpa henti - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9bddb694a..4ca5ac135 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -115,7 +115,7 @@ Ordine sparso Scorri al contrario Ripeti presentazione - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7dd128b52..b21bf6e15 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -115,7 +115,7 @@ ランダムな順序 逆方向に進む スライドショーをリピート再生する - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 03a03e5df..d2362a199 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -115,7 +115,7 @@ 랜덤 순서 뒤로 이동 슬라이드 쇼 반복 - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index b793ef0b1..564b12e21 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -115,7 +115,7 @@ Atsitiktinė tvarka Sukti atgal Klipuoti skaidrių demonstraciją - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 0103806ef..6d4737cb1 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -115,7 +115,7 @@ Tilfeldig rekkefølge Avspill bakover Gjenta lysbildeshow - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 266ae131d..cd3b6d787 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -115,7 +115,7 @@ Willekeurige volgorde Omgekeerde volgorde Voorstelling herhalen - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4ab40245a..721e90ec2 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -115,7 +115,7 @@ Losowa kolejność Odwrotna kolejność Zapętlaj - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fdaeaf08c..032c07b49 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -115,7 +115,7 @@ Ordem aleatória Retroceder Apresentação em ciclo - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 408a438d4..6a44570d5 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -115,7 +115,7 @@ Ordem aleatória Mover para trás Apresentação em ciclo - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a66ba24ea..319cca65f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -115,7 +115,7 @@ В случайном порядке В обратном порядке Зациклить - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 101368ad6..64d29cfe6 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -115,7 +115,7 @@ Naključni vrstni red Premik nazaj Ponavljaj diaprojekcijo - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index b9df49bee..deaca7956 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -115,7 +115,7 @@ Насумични редослед Помери уназад Понављај слајдшоу - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 991fee330..6609790bb 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -115,7 +115,7 @@ Spela upp i slumpmässig ordning Spela upp i omvänd ordning Spela upp i en slinga - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 374e977a8..f86062f48 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -115,7 +115,7 @@ Rastgele sırala Geriye doğru git Slayt gösterisini tekrarla - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e36d99e87..45f3bfb7e 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -115,7 +115,7 @@ Випадковий порядок Рухатися назад Зациклити показ слайдів - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 190838e50..bfff3f9f3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -115,7 +115,7 @@ 随机顺序 倒播 循环幻灯片 - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 7e044b555..5dd4781fe 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -115,7 +115,7 @@ 隨機順序 反向播放 投影片循環 - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 34ed3acb6..6646a770e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -115,7 +115,7 @@ 隨機順序 反向播放 投影片循環 - Animation: + Animation None Fade Slide diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13879fbe5..6b7b65968 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,7 +115,7 @@ Random order Move backwards Loop slideshow - Animation: + Animation None Fade Slide From c60e321278346f379fb057025d883f7a1bc48497 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Jun 2019 15:40:33 +0200 Subject: [PATCH 123/165] adding an Animation field at the slideshow config dialog --- .../gallery/pro/dialogs/SlideshowDialog.kt | 15 ++++++++ app/src/main/res/layout/activity_settings.xml | 4 ++- app/src/main/res/layout/dialog_slideshow.xml | 35 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt index 7e97fec57..44a818665 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt @@ -7,6 +7,8 @@ import com.simplemobiletools.commons.extensions.hideKeyboard import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_ANIMATION_FADE +import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_ANIMATION_SLIDE import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_DEFAULT_INTERVAL import kotlinx.android.synthetic.main.dialog_slideshow.view.* @@ -28,6 +30,10 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit activity.hideKeyboard(v) } + animation_holder.setOnClickListener { + + } + include_videos_holder.setOnClickListener { interval_value.clearFocus() include_videos.toggle() @@ -74,6 +80,7 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit val config = activity.config view.apply { interval_value.setText(config.slideshowInterval.toString()) + animation_value.text = getAnimationText() include_videos.isChecked = config.slideshowIncludeVideos include_gifs.isChecked = config.slideshowIncludeGIFs random_order.isChecked = config.slideshowRandomOrder @@ -96,4 +103,12 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit loopSlideshow = view.loop_slideshow.isChecked } } + + private fun getAnimationText(): String { + return when (activity.config.slideshowAnimation) { + SLIDESHOW_ANIMATION_SLIDE -> activity.getString(R.string.slide) + SLIDESHOW_ANIMATION_FADE -> activity.getString(R.string.fade) + else -> activity.getString(R.string.no_animation) + } + } } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 9331be83c..4a8c5a1c1 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -2,6 +2,7 @@ @@ -105,7 +106,8 @@ android:layout_alignParentEnd="true" android:layout_marginEnd="@dimen/small_margin" android:background="@null" - android:clickable="false"/> + android:clickable="false" + tools:text="@string/compromise"/> diff --git a/app/src/main/res/layout/dialog_slideshow.xml b/app/src/main/res/layout/dialog_slideshow.xml index b78daf699..86120da2c 100644 --- a/app/src/main/res/layout/dialog_slideshow.xml +++ b/app/src/main/res/layout/dialog_slideshow.xml @@ -1,6 +1,7 @@ @@ -35,10 +36,42 @@ android:textSize="@dimen/normal_text_size"/> + + + + + + + + Date: Thu, 20 Jun 2019 17:26:51 +0300 Subject: [PATCH 124/165] UPD ;-) --- app/src/main/res/values-el/strings.xml | 50 +++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index ac86a636d..ce74c0fd8 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -49,9 +49,9 @@ Εξαίρεση Εξαίρεση φακέλων Διαχείριση εξαιρεμένων φακέλων - Αυτό θα εξαιρέσει το επιλεγμένο μαζί με τους υποφακέλους από το Simple Gallery μόνο. Μπορείτε να διαχειριστείτε τους φακέλους που εξαιρέθηκαν στις Ρυθμίσεις. + Αυτό θα εξαιρέσει το επιλεγμένο μαζί με τους υποφακέλους από την Απλή Συλλογή μόνο. Μπορείτε να διαχειριστείτε τους φακέλους που εξαιρέθηκαν στις Ρυθμίσεις. Να εξαιρεθεί μήπως ο γονικός φάκελος; - Εξαιρώντας τους φακέλους, θα τους αποκρύψει μαζί με τους υποφακέλους τους μόνο στο Simple Gallery, θα είναι ορατοί στις υπόλοιπες εφαρμογές.\n\nΑν θέλετε να τους αποκρύψετε και στις υπόλοιπες εφαρμογές, χρησιμοποιήστε την λειτουργία Απόκρυψη. + Εξαιρώντας τους φακέλους, θα τους αποκρύψει μαζί με τους υποφακέλους τους μόνο στην Απλή Συλλογή, θα είναι ορατοί στις υπόλοιπες εφαρμογές.\n\nΑν θέλετε να τους αποκρύψετε και στις υπόλοιπες εφαρμογές, χρησιμοποιήστε την λειτουργία Απόκρυψη. Διαγραφή όλων Να αφαιρεθούν όλοι οι φάκελοι από την λίστα των εξαιρεμένων; Αυτό δεν θα διαγράψει τους φακέλους. Κρυφοί φάκελοι @@ -94,7 +94,7 @@ Άλλο - Simple Wallpaper + Απλή Συλλογή Εφαρμογή ως ταπετσαρία Η εφαρμογή ως ταπετσαρία απέτυχε Εφαρμογή ως ταπετσαρία με: @@ -104,7 +104,7 @@ Αναλογία σε οριζόντια προβολή Αρχική οθόνη Οθόνη κλειδώματος - Αρχική οθόνη και κλειδώματος + Αρχική και Οθόνη Κλειδώματος Παρουσίαση διαφανιών @@ -114,11 +114,11 @@ Συμπερίληψη GIFs6 Τυχαία σειρά Κίνηση προς τα πίσω - Επανάληψη εμφάνισης διαφανιών - Animation - None - Fade - Slide + Επανάληψη εμφάνισης διαφανειών + Κινήσεις: + Χωρίς + Εξασθένηση + Ολίσθηση Η εμφάνιση διαφανειών τελείωσε Δεν βρέθηκαν πολυμέσα για την εμφάνιση διαφανειών @@ -199,9 +199,9 @@ Εναλλαγή προβολής αρχείου - Πώς μπορώ να κάνω το Simple Gallery προεπιλεγμένη εφαρμογή συλλογής πολυμέσων; + Πώς μπορώ να κάνω την Απλή Συλλογή προεπιλεγμένη εφαρμογή συλλογής πολυμέσων; Αρχικά πρέπει να βρείτε την τρέχουσα προεπιλεγμένη εφαρμογή γκάλερι στις Ρυθμίσεις (τμήμα Εφαρμογών) της συσκευής. Αναζητήστε για ένα κουμπί που αναφέρει κάτι σαν \"Άνοιγμα με προεπιλογή\", πατήστε το, μετά επιλέξτε \"Καθαρισμός προεπιλεγμένων\". - Την επόμενη φορά που θα προσπαθήσετε να ανοίξετε μία εικόνα ή ένα βίντεο θα πρέπει να δείτε έναν διάλογο επιλογής εφαρμογών, όπου μπορείτε να επιλέξετε Simple Gallery να το κάνετε προεπιλεγμένη εφαρμογή. + Την επόμενη φορά που θα προσπαθήσετε να ανοίξετε μία εικόνα ή ένα βίντεο θα πρέπει να δείτε έναν διάλογο επιλογής εφαρμογών, όπου μπορείτε να επιλέξετε Απλή Συλλογή να την κάνετε προεπιλεγμένη εφαρμογή. Κλείδωσα την εφαρμογή με κωδικό, αλλά τον ξέχασα. Τι μπορώ να κάνω; Υπάρχουν 2 λύσεις. Είτε επανεγκατάσταση της εφαρμογής, ή να εντοπίσετε την εφαρμογή στις ρυθμίσεις της συσκευής και να επιλέξετε \"Καθαρισμό δεδομένων\". Θα επαναφέρει όλες τις ρυθμίσεις και δεν θα σβήσει κάποιο αρχείο πολυμέσου. Πώς μπορώ να κάνω ένα άλμπουμ να φαίνεται στην κορυφή; @@ -209,7 +209,7 @@ Πώς μπορώ να τρέξω μπροστά (fast-forward) τα βίντεο; Μπορείτε είτε να σύρετε το δάχτυλό σας οριζόντια πάνω από το πρόγραμμα αναπαραγωγής Βίντεο ή να κάνετε κλικ στα γράμματα της τρέχουσας ή της μέγιστης διάρκειας κοντά στο Γραμμή Αναζήτησης. Αυτό θα μετακινήσει το βίντεο προς τα πίσω ή προς τα εμπρός. Ποια είναι διαφορά μεταξύ απόκρυψης και εξαίρεσης ενός φακέλου; - Η εξαίρεση δεν επιτρέπει την εμφάνιση του φακέλου μόνο στο Simple Gallery, ενώ η απόκρυψη λειτουργεί σε επίπεδο συστήματος και θα αποκρύψει τον φάκελο και από άλλες εφαρμογές γκάλερι. Λειτουργεί δημιουργώντας ένα άδειο \".nomedia\" αρχείο στον επιλεγμένο φάκελο, το οποίο μπορείτε να το διαγράψετε και με οποιονδήποτε διαχειριστή αρχείων. + Η εξαίρεση δεν επιτρέπει την εμφάνιση του φακέλου μόνο στην Απλή Συλλογή, ενώ η απόκρυψη λειτουργεί σε επίπεδο συστήματος και θα αποκρύψει τον φάκελο και από άλλες εφαρμογές γκάλερι. Λειτουργεί δημιουργώντας ένα άδειο \".nomedia\" αρχείο στον επιλεγμένο φάκελο, το οποίο μπορείτε να το διαγράψετε και με οποιονδήποτε διαχειριστή αρχείων. Γιατί εμφανίζονται φάκελοι με εξώφυλλο μουσικής ή αυτόκολλητα; Είναι πιθανόν να δείτε κάποια περίεργα άλμπουμ να εμφανίζονται. Μπορείτε να τα εξαιρέσετε εύκολα με παρατεταμένο άγγιγμα και επιλογή του Εξαίρεση. Στον επόμενο διάλογο μπορείτε να επιλέξετε επάνω φάκελο. Είναι πιθανό να μην επιτρέψει την εμφάνιση και άλλων σχετικών άλμπουμ. Ένας φάκελος με εικόνες δεν εμφανίζεται. Τι μπορώ να κάνω; @@ -232,27 +232,27 @@ - Απλή Συλλογή Pro: Διαχείριση & Επεξεργασία + ΑΠΛΗ ΣΥΛΛΟΓΗ Pro: Διαχείριση & Επεξεργασία - Μια Offline gallery χωρίς διαφ/σεις. Επεξεργασία ανάκτηση προστασία Φωτό-Βίντεο + Μια Offline Συλλογή χωρίς διαφ/σεις. Επεξεργασία ανάκτηση προστασία Φωτό-Βίντεο - Η Simple Gallery Pro είναι εκτός σύνδεσης και εξαιρετικά προσαρμόσιμη. Οργανώστε και επεξεργαστείτε τις φωτογραφίες σας, ανακτήσετε διαγραμμένα αρχεία απο τον κάδο ανακύκλωσης, προστατεύσετε και αποκρύψτε αρχεία, προβάλετε πλήθος διαφορετικών φωτογραφιών και μορφών βίντεο, συμπεριλαμβανομένων των RAW, SVG και πολλών άλλων. + Η Απλή Συλλογή Pro είναι εκτός σύνδεσης και εξαιρετικά προσαρμόσιμη. Οργανώστε και επεξεργαστείτε τις φωτογραφίες σας, ανακτήσετε διαγραμμένα αρχεία απο τον κάδο ανακύκλωσης, προστατεύσετε και αποκρύψτε αρχεία, προβάλετε πλήθος διαφορετικών φωτογραφιών και μορφών βίντεο, συμπεριλαμβανομένων των RAW, SVG και πολλών άλλων. Η εφαρμογή δεν περιέχει διαφημίσεις και περιττά δικαιώματα. Εφόσον δεν απαιτεί πρόσβαση στο διαδίκτυο, έτσι προστατεύεται το απόρρητό σας. ------------------------------------------------- - ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ-SIMPLE GALLERY PRO + ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ-ΑΠΛΗΣ ΣΥΛΛΟΓΗΣ PRO ------------------------------------------------- • Εκτός σύνδεσης χωρίς διαφημίσεις ή αναδυόμενα παράθυρα - • Simple gallery photo editor – κόψιμο, περιστροφή, αλλαγή μεγέθους, σχεδίαση, φίλτρα και άλλα + • Απλής Συλλογής Επεξεργαστής – κόψιμο, περιστροφή, αλλαγή μεγέθους, σχεδίαση, φίλτρα και άλλα • Δεν απαιτείται πρόσβαση στο διαδίκτυο, παρέχοντας μεγαλύτερη προστασία της ιδιωτικής ζωής και ασφάλειας • Δεν απαιτούνται περιττά δικαιώματα • Γρήγορη αναζήτηση εικόνων, βίντεο και αρχείων • Άνοιγμα και προβολή πολλών διαφορετικών τύπων φωτογραφιών και βίντεο (RAW, SVG, πανοραμική κλπ) • Μια ποικιλία διαισθητικών χειρονομιών για εύκολη επεξεργασία και οργάνωση αρχείων • Πολλοί τρόποι για φιλτράρισμα, ομαδοποίησης και ταξινόμησης αρχείων - • Προσαρμογή εμφάνισης του Simple Gallery Pro + • Προσαρμογή εμφάνισης της Απλής Συλλογής Pro • Διατίθεται σε 32 γλώσσες • Σημειώστε τα αρχεία ως αγαπημένα για γρήγορη πρόσβαση • Προστατέψτε τις φωτογραφίες σας και βίντεο με μοτίβο, κωδικό ή δακτυλικό αποτύπωμα @@ -261,20 +261,20 @@ • Εναλλαγή προβολής αρχείων για απόκρυψη φωτογραφιών και Βίντεο • Δημιουργήστε μια προσαρμόσιμη παρουσίαση των αρχείων σας • Δείτε λεπτομερείς πληροφορίες των αρχείων σας (ανάλυση, τιμές EXIF κλπ.) - • Η Simple Gallery Pro είναι ανοικτού κώδικα + • Η Απλή Συλλογή Pro είναι ανοικτού κώδικα … και πάρα πολλά ακόμα! - ΕΞΕΡΓΑΣΤΗΣ PHOTO GALLERY - Η Simple Gallery Pro σας διευκολύνει να επεξεργαστείτε τις φωτογραφίες σας άμεσα. Περικοπή, αναστροφή, περιστροφή και αλλαγή μεγέθους των εικόνων σας. Εάν αισθάνεστε λίγο πιο δημιουργικοί, μπορείτε να προσθέσετε φίλτρα και σχεδίαση στις φωτογραφίες σας! + ΕΞΕΡΓΑΣΤΗΣ ΑΠΛΗΣ ΣΥΛΛΟΓΗΣ + Η Απλή Συλλογή Pro σας διευκολύνει να επεξεργαστείτε τις φωτογραφίες σας άμεσα. Περικοπή, αναστροφή, περιστροφή και αλλαγή μεγέθους των εικόνων σας. Εάν αισθάνεστε λίγο πιο δημιουργικοί, μπορείτε να προσθέσετε φίλτρα και σχεδίαση στις φωτογραφίες σας! ΥΠΟΣΤΗΡΙΞΗ ΠΟΛΛΩΝ ΤΥΠΩΝ ΑΡΧΕΙΩΝ - Σε αντίθεση με κάποιες άλλες εφαρμογές η Simple Gallery Pro υποστηρίζει ένα τεράστιο φάσμα διαφορετικών τύπων αρχείων, όπως JPEG, PNG, MP4, MKV, RAW, SVG, Πανοραμικές φωτογραφίες, βίντεο πανοραμικών και πολλά άλλα. + Σε αντίθεση με κάποιες άλλες εφαρμογές η Απλή Συλλογή Pro υποστηρίζει ένα τεράστιο φάσμα διαφορετικών τύπων αρχείων, όπως JPEG, PNG, MP4, MKV, RAW, SVG, Πανοραμικές φωτογραφίες, βίντεο πανοραμικών και πολλά άλλα. - ΠΟΛΥ ΠΡΟΣΑΡΜΟΣΙΜΟΣ ΔΙΑΧΕΙΡΙΣΤΗΣ GALLERY - Από το UI στα κουμπιά λειτουργιών στην κάτω γραμμή εργαλείων, η Simple Gallery Pro είναι ιδιαίτερα προσαρμόσιμη και λειτουργεί όπως εσείς θέλετε. Καμιά άλλη εφαρμογή δεν έχει τέτοια ευελιξία! Χάρη στον ανοιχτό κώδικα, είναι επίσης διαθέσιμη σε 32 γλώσσες! + ΠΟΛΥ ΠΡΟΣΑΡΜΟΣΙΜΟΣ ΔΙΑΧΕΙΡΙΣΤΗΣ ΣΥΛΛΟΓΗΣ + Από το UI στα κουμπιά λειτουργιών στην κάτω γραμμή εργαλείων, η Απλή Συλλογή Pro είναι ιδιαίτερα προσαρμόσιμη και λειτουργεί όπως εσείς θέλετε. Καμιά άλλη εφαρμογή δεν έχει τέτοια ευελιξία! Χάρη στον ανοιχτό κώδικα, είναι επίσης διαθέσιμη σε 32 γλώσσες! ΕΠΑΝΑΦΟΡΑ ΔΙΑΓΡΑΜΕΝΩΝ ΦΩΤΟ ΚΑΙ ΒΙΝΤΕΟ - Διαγράψατε τυχαία μια πολύτιμη φωτογραφία ή βίντεο; Μην ανησυχείτε! Η Simple Gallery Pro διαθέτει έναν εύχρηστο κάδο ανακύκλωσης όπου μπορείτε να ανακτήσετε τις διαγραμμένες φωτογραφίες και βίντεο πανεύκολα. + Διαγράψατε τυχαία μια πολύτιμη φωτογραφία ή βίντεο; Μην ανησυχείτε! Η Απλή Συλλογή Pro διαθέτει έναν εύχρηστο κάδο ανακύκλωσης όπου μπορείτε να ανακτήσετε τις διαγραμμένες φωτογραφίες και βίντεο πανεύκολα. ΠΡΟΣΤΑΣΙΑ ΚΑΙ ΑΠΟΚΡΥΨΗ ΑΡΧΕΙΩΝ ΦΩΤΟ ΚΑΙ ΒΙΝΤΕΟ Χρησιμοποιώντας κωδικό, μοτίβο ή τον σαρωτή δακτυλικών αποτυπωμάτων της συσκευής σας, μπορείτε να προστατεύσετε και να αποκρύψετε φωτογραφίες, βίντεο ή ολόκληρα άλμπουμ. Μπορείτε να προστατεύσετε την ίδια την εφαρμογή ή να κλειδώσετε συγκεκριμένες λειτουργίες της. Για παράδειγμα, δεν μπορείτε να διαγράψετε ένα αρχείο χωρίς χρήση των δακτυλικών αποτυπωμάτων, συμβάλλοντας στην προστασία των αρχείων σας από τυχαία διαγραφή. From a62535671ac566d4c0abc727a44c6f85426f4cc5 Mon Sep 17 00:00:00 2001 From: spkprs Date: Thu, 20 Jun 2019 17:41:42 +0300 Subject: [PATCH 125/165] fix --- app/src/main/res/values-el/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index ce74c0fd8..cd2a4ef12 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -115,7 +115,7 @@ Τυχαία σειρά Κίνηση προς τα πίσω Επανάληψη εμφάνισης διαφανειών - Κινήσεις: + Κινήσεις Χωρίς Εξασθένηση Ολίσθηση From b91b3bfecf8efefd30adce6fb80f53ba5da32780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Thu, 20 Jun 2019 17:20:19 +0200 Subject: [PATCH 126/165] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1c0c43d6c..2ca930a0a 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -115,10 +115,10 @@ Ordre aleatori Moure cap enrere Presentació de diapositives - Animation - None - Fade - Slide + Animació + Cap + Esvair + Lliscar S’ha acabat la presentació de diapositives No s’han trobat mitjans per a la presentació de diapositives From f0eb88bd0df0d2c1aa05f7255147b05ef70bcce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Thu, 20 Jun 2019 17:20:26 +0200 Subject: [PATCH 127/165] Update strings.xml --- app/src/main/res/values-es/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 826aa6b14..28d04d70e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -115,10 +115,10 @@ Orden aleatorio Mover hacia atrás Presentación de diapositivas - Animation - None - Fade - Slide + Animación + Ninguna + Fusión + Desplazamineto La diapositiva terminó No se han encontrado medios para la presentación de diapositivas From a5d8b9e83c22f9a7899151c6ab88f6db56c91e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Thu, 20 Jun 2019 20:57:29 +0200 Subject: [PATCH 128/165] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1c0c43d6c..7f5e46a87 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -133,11 +133,11 @@ No agrupar fitxers Carpeta Darrer modificat - Last modified (daily) - Last modified (monthly) + Darrer modificat (diari) + Darrer modificat (mensual) Data de presa - Date taken (daily) - Date taken (monthly) + Data de presa (diari) + Data de presa (mensual) Tipus de fitxer Extensió Tingueu en compte que l’agrupació i la classificació són 2 camps independents From 8eee33b0eb00a83ed19527b47f328eb9a50e0a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Thu, 20 Jun 2019 20:59:12 +0200 Subject: [PATCH 129/165] Update strings.xml --- app/src/main/res/values-es/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 826aa6b14..33ced4578 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -133,11 +133,11 @@ No agrupar ficheros Carpeta Último modificado - Last modified (daily) - Last modified (monthly) - Data de toma - Date taken (daily) - Date taken (monthly) + Último modificado (diario) + Último modificado (mensual) + Fecha de toma + Fecha de toma (diario) + Fecha de toma (mensual) Tipo de fichero Extensión Tenga en cuenta que la agrupación y la clasificación son 2 campos independientes From 4cd0b81ca3e78cdf5433baf3074088470caf3a4d Mon Sep 17 00:00:00 2001 From: Guillaume Date: Thu, 20 Jun 2019 21:42:55 +0200 Subject: [PATCH 130/165] Dutch --- app/src/main/res/values-nl/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index cd3b6d787..f84455f71 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -115,10 +115,10 @@ Willekeurige volgorde Omgekeerde volgorde Voorstelling herhalen - Animation - None - Fade - Slide + Overgangseffect + Geen + Overvloeien + Verschuiven De diavoorstelling is beëindigd Geen media gevonden voor diavoorstelling From 86ac8caad7508d12004bf96bd01da0ba32092dec Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 11:46:49 +0200 Subject: [PATCH 131/165] allow changing the slideshow animation --- .../gallery/pro/dialogs/SlideshowDialog.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt index 44a818665..66d57fef9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt @@ -3,11 +3,15 @@ package com.simplemobiletools.gallery.pro.dialogs import android.view.View import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.hideKeyboard import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.extensions.value +import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_ANIMATION_FADE +import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_ANIMATION_NONE import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_ANIMATION_SLIDE import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_DEFAULT_INTERVAL import kotlinx.android.synthetic.main.dialog_slideshow.view.* @@ -31,7 +35,15 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit } animation_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(SLIDESHOW_ANIMATION_NONE, activity.getString(R.string.no_animation)), + RadioItem(SLIDESHOW_ANIMATION_SLIDE, activity.getString(R.string.slide)), + RadioItem(SLIDESHOW_ANIMATION_FADE, activity.getString(R.string.fade))) + RadioGroupDialog(activity, items, activity.config.slideshowAnimation) { + activity.config.slideshowAnimation = it as Int + animation_value.text = getAnimationText() + } } include_videos_holder.setOnClickListener { @@ -95,6 +107,7 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit interval = SLIDESHOW_DEFAULT_INTERVAL.toString() activity.config.apply { + slideshowAnimation = getAnimationValue(view.animation_value.value) slideshowInterval = interval.toInt() slideshowIncludeVideos = view.include_videos.isChecked slideshowIncludeGIFs = view.include_gifs.isChecked @@ -111,4 +124,12 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit else -> activity.getString(R.string.no_animation) } } + + private fun getAnimationValue(text: String): Int { + return when (text) { + activity.getString(R.string.slide) -> SLIDESHOW_ANIMATION_SLIDE + activity.getString(R.string.fade) -> SLIDESHOW_ANIMATION_FADE + else -> SLIDESHOW_ANIMATION_NONE + } + } } From 558b0a9f576ce2b9d5b97a123fe31b71fe5375bf Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 11:46:57 +0200 Subject: [PATCH 132/165] updating kotlin to 1.3.40 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a88757196..bfe902f73 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.31' + ext.kotlin_version = '1.3.40' repositories { google() From af36fd45ad56a93350756cd751457c7d159a7809 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 12:16:38 +0200 Subject: [PATCH 133/165] properly handle instant slideshow transition without animations --- .../gallery/pro/activities/ViewPagerActivity.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 361cbc326..285277d44 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 @@ -411,6 +411,16 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun goToNextMedium(forward: Boolean) { + val oldPosition = view_pager.currentItem + val newPosition = if (forward) oldPosition + 1 else oldPosition - 1 + if (newPosition == -1 || newPosition > view_pager.adapter!!.count - 1) { + slideshowEnded(forward) + } else { + view_pager.setCurrentItem(newPosition, false) + } + } + private fun animatePagerTransition(forward: Boolean) { val oldPosition = view_pager.currentItem val animator = ValueAnimator.ofInt(0, view_pager.width) @@ -506,7 +516,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun swipeToNextMedium() { - animatePagerTransition(!mSlideshowMoveBackwards) + if (config.slideshowAnimation == SLIDESHOW_ANIMATION_NONE) { + goToNextMedium(!mSlideshowMoveBackwards) + } else { + animatePagerTransition(!mSlideshowMoveBackwards) + } } private fun getMediaForSlideshow(): Boolean { From b353a9d2d32373bcf3df0c875c8b0b7dffef566a Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 17:46:31 +0200 Subject: [PATCH 134/165] updating commons to 5.14.0 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a886def92..79e5a3c60 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.13.14' + implementation 'com.simplemobiletools:commons:5.14.0' 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' From b952f4baf313fba558077da7a995efc845f600bd Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 17:53:23 +0200 Subject: [PATCH 135/165] update version to 6.8.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 79e5a3c60..eb5bc1b49 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 253 - versionName "6.7.9" + versionCode 254 + versionName "6.8.0" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 48256307bbf4c265d4c1a805428ea66ed8d27d36 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 21 Jun 2019 17:53:28 +0200 Subject: [PATCH 136/165] updating changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 848e60097..2aa135e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ Changelog ========== +Version 6.8.0 *(2019-06-21)* +---------------------------- + + * Allow grouping files by date_taken or last_modified either daily, or monthly + * Allow selecting fade animation or no animation at all at slideshow transitions + * Improved the performance at loading fullscreen videos + * Use last_modified value at batch file renaming, if date_taken isn't available + * Some other stability and translation improvements + Version 6.7.9 *(2019-06-12)* ---------------------------- From 3d4a86b39e376f61e3bb5c858f4f024fe403e831 Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 22 Jun 2019 13:01:48 +0300 Subject: [PATCH 137/165] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 319cca65f..06a4f65e0 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -115,10 +115,10 @@ В случайном порядке В обратном порядке Зациклить - Animation - None - Fade - Slide + Анимация + Нет + Затухание + Сдвиг Слайдшоу завершено Медиафайлов для слайдшоу не найдено @@ -133,11 +133,11 @@ Не группировать Папка Последнее изменение - Last modified (daily) - Last modified (monthly) + Последнее изменение (по дням) + Последнее изменение (по месяцам) Дата съёмки - Date taken (daily) - Date taken (monthly) + Дата съёмки (по дням) + Дата съёмки (по месяцам) Тип файла Расширение Обратите внимание, что группировка и сортировка — это два независимых поля From 3bd8dc9cd976d083a423a0a6dd03e392d770e78b Mon Sep 17 00:00:00 2001 From: Hugo Musso Gualandi Date: Sat, 22 Jun 2019 22:04:22 -0300 Subject: [PATCH 138/165] Update brazilian portuguese translations --- app/src/main/res/values-pt-rBR/strings.xml | 251 ++++++++++----------- 1 file changed, 124 insertions(+), 127 deletions(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 032c07b49..99b7f63cd 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,13 +1,13 @@ - Simple Gallery + Simple Galeria Galeria Editar Abrir câmera (oculto) (excluído) Fixar pasta - Desfixar pasta + Desafixar pasta Fixar no topo Mostrar conteúdo de todas as pastas Todas as pastas @@ -24,46 +24,46 @@ Brilho Travar orientação Destravar orientação - Mudar orientação + Alterar orientação Forçar modo retrato Forçar modo paisagem Usar orientação padrão - Fix Date Taken value - Fixing… - Dates fixed successfully - Share a resized version - Hey,\n\nparece que você atualizou o antigo aplicativo gratuito. Agora você poderá desinstalar a velha versão que tem o botão \'Atualize para a versão Pro\' no topo das Configurações.\n\nVocê terá os itens da Lixeira excluídos, itens favoritos desmarcados e também terá que redefinir as configurações do seu aplicativo.\n\nObrigado! + Corrigir data da foto + Corrigindo… + Datas corrigidas com sucesso + Compartilhar uma versão redimensionada + Olá,\n\nparece que você atualizou o antigo aplicativo gratuito. Agora você poderá desinstalar a velha versão que tem o botão de atualizar para a versão Pro no topo das Configurações.\n\nVocê terá os itens da Lixeira excluídos, itens favoritos desmarcados e também terá que redefinir as configurações do seu aplicativo.\n\nObrigado! Filtrar mídia Imagens Vídeos GIFs - RAW images + Imagens RAW SVGs Nenhum arquivo de mídia encontrado a partir dos filtros selecionados. - Mudar filtros + Alterar filtros - Esta opção oculta uma pasta com a adição de um arquivo \'.nomedia\' dentro dela, e irá ocultar todas as subpastas que estejam dentro da mesma. Você poderá rever essas pastas com a opção \'Mostrar pastas ocultas\'. Continuar? - Excluir - Pastas excluídas - Gerenciar pastas excluídas - Esta ação irá excluir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas excuídas nas Configurações do aplicativo. - Excluir antes a pasta raiz? - A exclusão de uma pasta apenas oculta o seu conteúdo da galeria, pois todos os outros aplicativos poderão acessá-las.\\n\\nSe quiser ocultar de todos os aplicativos, utilize a função ocultar. + Esta opção oculta a pasta com a adição de um arquivo \".nomedia\" dentro dela, o que também ocultará todas as subpastas que estejam dentro da mesma. Você poderá voltar a exibir estas pastas com a opção \"Mostrar pastas ocultas\". Continuar? + Ignorar + Pastas ignoradas + Gerenciar pastas ignoradas + Esta ação deixará de exibir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas ignoradas nas Configurações do aplicativo. + Ignorar a pasta raiz ao invés desta? + Ignorar uma pasta apenas deixa de exibi-la nesta galeria. Ela continuará visível para outros aplicativos.\\n\\nSe você quiser ocultar a pasta para todos os aplicativos, utilize a função ocultar. Remover todas - Remover todas as pastas da lista de exclusões? Esta ação não apaga as pastas. + Remover todas as pastas da lista de pastas ignoradas? Esta ação não exclui as pastas. Pastas ocultas Gerenciar pastas ocultas - Parece que você não tem nenhuma pasta oculta com um arquivo \".nomedia\". + Parece que você não tem nenhuma pasta ocultada por um arquivo \".nomedia\". Pastas incluídas Gerenciar pastas incluídas Adicionar pasta - Se possuir pastas com dados multimídia não reconhecidos pelo aplicativo, aqui você pode adicioná-las manualmente. - No media files have been found. You can solve it by adding the folders containing media files manually. + Se você possuir pastas com dados multimídia não reconhecidos pelo aplicativo, aqui você pode adicioná-las manualmente. + Nenhum arquivo de mídia foi encontrado. Como alternativa você pode tentar incluir manualmente as pastas com arquivos de mídia. Redimensionar @@ -90,16 +90,16 @@ Inverter Horizontalmente Verticalmente - Gratuito + Livre Outro - Simple Wallpaper + Simple Papel de Parede Definir como papel de parede Falha ao definir como papel de parede Definir papel de parede com: Definindo como papel de parede - Papel de parede com sucesso + Papel de parede definido com sucesso Retrato Paisagem Tela inicial @@ -110,15 +110,15 @@ Apresentação Intervalo (segundos): Incluir fotos - Incluir videos + Incluir vídeos Incluir GIFs Ordem aleatória Retroceder Apresentação em ciclo - Animation - None - Fade - Slide + Animação + Nenhuma + Esmaecer + Deslizar Fim da apresentação Nenhuma mídia encontrada para a apresentação @@ -126,24 +126,24 @@ Alterar modo de visualização Grade Lista - Agrupar subpastas do diretório + Agrupar subpastas diretas Agrupar por Não agrupar arquivos Pasta Última modificação - Last modified (daily) - Last modified (monthly) - Data de criação - Date taken (daily) - Date taken (monthly) + Última modificação (por dia) + Última modificação (por mês) + Data da foto + Data da foto (por dia) + Data da foto (por mês) Tipo de arquivo Extensão - Por favor, note que o agrupamento e classificação são 2 campos independentes + Por favor, lembre-se que o agrupamento e classificação são configurados por dois campos independentes - Exibição da Pasta no widget: + Pasta exibida no widget: Exibir nome da pasta @@ -151,135 +151,132 @@ Lembrar da última posição de reprodução de vídeo Mostrar/ocultar nome do arquivo Reproduzir vídeos em ciclo - Animação de GIFs nas miniaturas - Brilho máximo ao visualizar mídia + Animar GIFs nas miniaturas + Maximizar o brilho ao visualizar mídia em tela cheia Recortar miniaturas em quadrados - Exibir durações de vídeo + Exibir duração dos vídeos Critério para rotação de tela Padrão do sistema Sensor do aparelho Proporção da mídia Fundo de tela e barra de status preta quando em visualização de tela cheia Rolar miniaturas horizontalmente - Esconder interface do sistema automaticamente quando em tela cheia - Apagar pastas vazias após deleter seu conteúdo + Esconder interface do sistema quando em tela cheia + Apagar pastas vazias após excluir o seu conteúdo Permitir controle do brilho com gestos na vertical Permitir controle do volume e brilho com gestos na vertical - Mostrar quantidade de arquivos das pastas - Exibir detalhes extendidos quando em tela cheia - Gerenciar detalhes extendidos + Mostrar quantidade de arquivos em cada pasta na tela inicial + Exibir detalhes adicionais quando em tela cheia + Gerenciar detalhes adicionais Permitir zoom com um dedo quando em exibição de tela cheia - Permitir alternância instantânia de mídia clicando nas laterais da tela - Permitir zoom aprofundado em imagens - Ocultar detalhes extendidos quando a barra de status estiver oculta + Tocar na lateral da tela navega para a próxima imagem ou vídeo + Permitir zoom aprofundado para imagens + Ocultar detalhes adicionais quando a barra de status estiver oculta Mostrar alguns botões de ação na parte inferior da tela - Mostar a Lixeira na tela de pastas - Imagens com zoom aprofundado - Mostrar imagens com a maior qualidade possível - Mostrar a Lixeira como o último item na tela principal - Permitir fechar a exibição em tela cheia com um gesto para baixo - Permitir zoom 1:1 com dois toques duplos + Mostrar a Lixeira na tela inicial + Zoom aprofundado para imagens + Mostrar imagens na maior qualidade possível + Mostrar a Lixeira como o último item na tela inicial + Gesto para baixo sai da exibição em tela cheia + Dois toques duplos fazem zoom 1:1 Sempre abrir vídeos em uma tela separada com novos gestos horizontais - Mostrar um encaixe, se disponível + Mostrar o notch, se existente Permitir rotação de imagens com gestos Prioridade de carregamento de arquivos Velocidade - Compromise - Evite exibit arquivos inválidos + Meio termo + Evitar a exibição de arquivos inválidos Miniaturas Mídia em tela cheia - Detalhes extendidos - Bottom actions + Detalhes adicionais + Botões de ação - Manage visible bottom actions - Toggle favorite - Toggle file visibilityv + Gerenciar botões de ação + Favoritar/Desfavoritar + Exibir/Ocultar arquivov - Como eu posso tornar o Simple Gallery como galeria padrão do meu aparelho? - First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\". - The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app. - I locked the app with a password, but I forgot it. What can I do? - You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files. - How can I make an album always appear at the top? - You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method. - How can I fast-forward videos? - You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward. - What is the difference between hiding and excluding a folder? - Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too. - Why do folders with music cover art or stickers show up? - It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too. - A folder with images isn\'t showing up, or it doesn\'t show all items. What can I do? - That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder. - What if I want just a few particular folders visible? - Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. - That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up. - Can I crop images with this app? - Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view. - Can I somehow group media file thumbnails? - Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. - Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? - It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". - I see some color banding on the images. How can I improve the quality? - The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + O que devo fazer para que a Simple Galeria seja o aplicativo de galeria padrão do meu aparelho? + Primeiro, você deve encontrar o aplicativo padrão atual nas configurações do seu aparelho, e apertar o botão que diz "Limpar Padrões". + Na próxima vez que você abrir uma imagem ou vídeo, você deverá ver um seletor do aplicativo, no qual você terá a oportunidade de selecionar a Simple Galeria como o app padrão. + Eu protegi o app com senha, mas me esqueci da senha. O que posso fazer? + Você pode resolver isto de duas formas. A primeira é reinstalar o aplicativo. A segunda é ir nas configurações do seu dispositivo e selecionar a opção "Restaurar preferências do app". + Como 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 para fixar a pasta ao topo. Se você fixar múltiplas pastas, elas serão ordenadas de acordo como seu critério de ordenação padrão. + Como faço para avançar rapidamente um vídeo (fast-forward)? + Você pode fazer um gesto horizontal como dedo, ou tocar nos números de tempo atual ou tempo total do vídeo, que se encontram próximos à barra de posicionamento. + Qual é a diferença entre ocultar e ignorar uma pasta? + O opção de ignorar deixa de exibir a pasta apenas na Simple Galeria, enquanto a opção de ocultar afeta todo o sistema, e também irá deixar de exibir a pasta em outros apps de galeria. A função de ocultar cria um arquivo vazio chamado \".nomedia\" na raiz da pasta em questão. Caso você queira fazer a pasta voltar a ser exibida, você pode excluir o arquivo \".nomedia\" usando o gerenciador de arquivos. + Porque pastas com capas de CD de música ou figurinhas aparecem na lista? + Você pode pedir para a Simple Galeria ignorar estas pastas, adicionando a pasta raiz onde você guarda as suas músicas à lista de pastas ignoradas. Uma maneira de fazer isso é fazer um toque longo em uma destas pastas, e selecionar a opção Ignorar e, em seguida, seleciona a pasta pai. + Uma das minhas pastas não aparece, ou nem todos os seus itens são exibidos. O que posso fazer? + Isso pode ocorrer por diversos motivos, mas resolver o problema é fácil. Entre em Configurações --> Gerenciar pastas incluídas, toque no botão \"+\", e selecione a pasta em questão. + Como posso fazer para exibir apenas certas pastas? + Adicionar uma pasta à lista de Pastas Incluídas não remove outras pastas da exibição. O que você pode fazer é ir em Configurações -> Gerenciar pastas ignoradas, excluir a pasta raiz \"/\", e finalmente incluir somente as pastas desejadas através de Configurações -> Gerenciar pastas incluídas. + Posso recortar imagens usando este app? + Sim, você pode recortar imagens no editor, arrastando os cantos da imagem. Você pode entrar no editor fazendo um toque longo na imagem e selecionando Editar, ou selecionando Editar a partir da visualização de tela cheia. + É possível exibir os meus arquivos de mídia em subgrupos ao invés de em uma única grande lista? + Você pode usar a opção \"Agrupar por\" para agrupar os seus arquivos de mídia por data, formato ou outros critérios. Se a opção \"Mostrar conteúdo de todas as pastas\" estiver ativada, você também poderá agrupar por subpasta. + A ordenação por Data da Foto não funciona corretamente. O que posso fazer? + Isto pode ter ocorrer caso as suas fotos tenham sido copiadas de outro local. Para resolver o problema, você pode selecionar a função \"Corrigir data da foto\" no menu deste aplicativo. + Algumas imagens exibem artefatos de exibição, como bandas de cor. Como posso melhorar a qualidade da exibição? + O nosso método atual para a exibição de imagens funciona bem na grande maioria dos casos, mas caso você queira uma qualidade ainda melhor, ative a opção \"Mostrar imagens na maior qualidade possível\" na seção \"Zoom aprofundado para imagens\" das configurações deste aplicativo. I have hidden a file/folder. How can I unhide it? You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Porque este app gasta tanto espaço? + O cache deste app, que garante que as imagens sejam carregadas mais rapidamente, pode gastar até 250 MB. Se o app estiver gastando mais espaço que isso, pode ser por que você tem muitos arquivos na sua Lixeira. Arquivos na Lixeira são removidos permanentemente após 30 dias, mas se sua Lixeira estiver usando muito espaço apesar disso você pode esvaziá-la manualmente. Para fazer isso, você pode abrir a Lixeira e excluir os arquivos dentro dela, ou você pode fazer o mesmo na tela de configurações deste app. - Simple Gallery Pro: Photo Manager & Editor + Simple Galeria Pro: Gerenciador de Imagens - Offline gallery without ads. Organize, edit, recover and protect photos & videos + Galeria offline sem anúncios. Organize, edite, e proteja fotos e vídeos. - 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. + A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais. + Este app não inclui anúncios ou permissões desnecessárias e também não acessa a internet. Sua privacidade está protegida. ------------------------------------------------- - SIMPLE GALLERY PRO – FEATURES + SIMPLE GALERIA PRO – FUNCIONALIDADES ------------------------------------------------- - • Offline gallery with no ads or popups - • Simple gallery photo editor – crop, rotate, resize, draw, filters & more - • No internet access needed, giving you more privacy and security - • No unnecessary permissions required - • Quickly search images, videos & files - • Open & view many different photo and video types (RAW, SVG, panoramic etc) - • A variety of intuitive gestures to easily edit & organize files - • Lots of ways to filter, group & sort files - • Customize the appearance of Simple Gallery Pro - • Available in 32 languages - • Mark files as favorites for quick access - • Protect your photos & videos with a pattern, pin or fingerprint - • Use pin, pattern & fingerprint to protect the app launch or specific functions too - • Recover deleted photos & videos from the recycle bin - • Toggle visibility of files to hide photos & videos - • Create a customizable slideshow of your files - • View detailed information of your files (resolution, EXIF values etc) - • Simple Gallery Pro is open source - … and much much more! + • Galeria offline sem anúncios ou popups + • Editor de imagens – recorte, rotacione, redimensione, desenhe, adicione filtros, e muito mais + • Não requer acesso à internet. Mais privacidade e segurança. + • Não pede permissões desnecessárias + • Pesquise por imagens, vídeos e arquivos rapidamente + • Visualize diversos formatos de arquivos de imagem ou vídeo (RAW, SVG, imagens panorâmicas, etc) + • Use uma variedade de gestos intuitivos para editar e organizar seus arquivos + • Varias maneiras de filtrar, agrupar, e ordenar seus arquivos + • Customize a aparência da Simple Galeria Pro + • Disponível em 32 idiomas + • Marque seus arquivos favoritos para acesso mais rápido + • Proteja suas imagens e vídeos com um padrão, PIN, ou impressão digital + • Recupere imagens e vídeos que foram excluídos para a lixeira + • Oculte arquivos para deixar de exibir certas imagens ou vídeos no app. + • Crie um slideshow customizado com os seus arquivos + • Exiba informações avançadas sobre seus arquivos (resolução, metadados EXIF, etc) + • A Simple Galeria Pro tem código aberto! + … e muito mais! - PHOTO GALLERY EDITOR - Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If you’re feeling a little more creative you can add filters and draw on your pictures! + EDITOR DE IMAGENS + Com a Simple Galeria Pro é bem fácil editar suas imagens na hora. Recorte, rotacione, e redimensione suas imagens. Se você estiver se sentindo mais criativo, você também pode desenhar ou adicionar filtros! - SUPPORT FOR MANY FILE TYPES - Unlike some other gallery viewers & photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more. + SUPORTE A VÁRIOS FORMATOS DE ARQUIVO + Ao contrário de alguns outros aplicativos de organização de imagens, a Simple Galeria Pro é capaz de exibir uma grande variedade de formatos de arquivo, incluindo JPEG, PNG, MP4, MKV, RAW, SVG, fotos panorâmicas, vídeos panorâmicos e muito mais. - HIGHLY CUSTOMIZABLE GALLERY MANAGER - From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, we’re also available in 32 languages! + GERENCIADOR DE IMAGENS ALTAMENTE CUSTOMIZÁVEL + Desde a interface de usuário, até os botões da barra de ferramentas, a Simple Galeria Pro é altamente customizável, e você pode fazer com que ela funcione exatamente do seu jeito. Nenhum outro app de galeria de imagens é tão flexível! Além disso, por ter o código aberto, a Simple Galeria está disponível em 32 idiomas! - RECOVER DELETED PHOTOS & VIDEOS - Accidentally deleted a precious photo or video? Don’t worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos & videos easily. + RECUPERE IMAGENS E VÍDEOS EXCLUÍDOS + Acidentalmente excluiu uma preciosa imagem ou vídeo? Não se preocupe! A Simple Galeria Pro vem com uma lixeira que permite facilmente recuperar fotos ou vídeos excluídos nos últimos 30 dias. + + PROTEJA E OCULTE FOTOS, VÍDEOS E ARQUIVOS + Usando um PIN, padrão, ou sua impressão digital, você pode proteger ou ocultar imagens, vídeos ou até álbuns inteiros. Você também pode proteger o app como um todo por senha, ou apenas funções específicas. Por exemplo, você pode fazer com que a Simple Galeria verifique a impressão digital antes de excluir arquivos, para ajudar a evitar que arquivos sejam excluí. - PROTECT & HIDE PHOTOS, VIDEOS & FILES - Using pin, pattern or your device’s fingerprint scanner you can protect and hide photos, videos & entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you can’t delete a file without a fingerprint scan, helping to protect your files from accidental deletion. - - Check out the full suite of Simple Tools here: + Dê uma olhada nos nossos outros aplicativos Simple: https://www.simplemobiletools.com Facebook: From 152381d5f2aa341a6bafff33dbd8a35e83a75fe3 Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Sun, 23 Jun 2019 09:56:02 +0200 Subject: [PATCH 139/165] addin some spaces --- app/src/main/res/values-pt-rBR/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 99b7f63cd..970fe03ad 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -235,7 +235,7 @@ Galeria offline sem anúncios. Organize, edite, e proteja fotos e vídeos. - A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais. + A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais. Este app não inclui anúncios ou permissões desnecessárias e também não acessa a internet. Sua privacidade está protegida. ------------------------------------------------- From a49e5984cdcf8a1eb220f7c8d152d795f8524aaa Mon Sep 17 00:00:00 2001 From: FTno <16176811+FTno@users.noreply.github.com> Date: Sun, 23 Jun 2019 14:38:56 +0200 Subject: [PATCH 140/165] Update strings.xml Norwegian (nb) translation update --- app/src/main/res/values-nb/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 6d4737cb1..998c2dcb3 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -63,7 +63,7 @@ Håndter inkluderte mapper Legg til mappe Hvis du har noen mapper som inneholder media, men ikke ble gjenkjent av appen, kan du legge dem til manuelt her.\n\nÅ legge til noen elementer her, ekskluderer ikke noen annen mappe. - No media files have been found. You can solve it by adding the folders containing media files manually. + Ingen mediafiler er funnet. Dette kan løses ved å legge til mapper som inneholder mediafiler manuelt. Endre størrelse @@ -115,8 +115,8 @@ Tilfeldig rekkefølge Avspill bakover Gjenta lysbildeshow - Animation - None + Animasjon + Ingen Fade Slide Lysbildeshowet er slutt @@ -133,11 +133,11 @@ Ikke grupper filer Mappe Sist endret - Last modified (daily) - Last modified (monthly) + Sist endret (daglig) + Sist endret (månedlig) Dato tatt - Date taken (daily) - Date taken (monthly) + Dato tatt (daglig) + Dato tatt (månedlig) Filtype Endelse Vær oppmerksom på at gruppering og sortering er to uavhengige områder From 36603654625b5002d1862606fc2f5fceee984707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20F=C4=B1r=C4=B1nc=C4=B1?= Date: Sun, 23 Jun 2019 19:46:19 +0300 Subject: [PATCH 141/165] Update strings.xml --- app/src/main/res/values-tr/strings.xml | 74 +++++++++++++------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f86062f48..a08a6b948 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -227,59 +227,59 @@ Görüntüleri görüntülemek için geçerli çözüm, vakaların büyük çoğunluğunda iyi çalışır, ama daha iyi görüntü kalitesi istiyorsanız, \"Derin yakınlaştırılabilir resimler\" bölümündeki uygulama ayarlarında \"Resimleri mümkün olan en yüksek kalitede göster\" seçeneğini etkinleştirebilirsiniz. Bir dosya/klasör gizledim. Nasıl gösterebilirim? Ana ekranda \"Geçici olarak gizli öğeleri göster\" menü öğesine veya gizli öğeyi görmek için uygulama ayarlarında \"Gizli öğeleri göster\" seçeneğine tıklayabilirsiniz. Göstermek isterseniz, sadece uzun basın ve \"Göster\"i seçin. Klasörler gizlenmiş bir \".nomedia\" dosyası ekleyerek gizlenir, dosyayı herhangi bir dosya yöneticisi ile de silebilirsiniz. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + Uygulama neden bu kadar yer kaplıyor? + Uygulama önbelleği 250 MB\'a kadar çıkabilir, daha hızlı resim yüklemesini sağlar. Uygulama daha da fazla yer kaplıyorsa, büyük olasılıkla Geri Dönüşüm Kutusu\'nda öğe bulundurmanızdan kaynaklanmaktadır. Bu dosyalar uygulama boyutuna göre sayılır. Geri Dönüşüm Kutusu\'nu açarak ve tüm dosyaları silerek ya da uygulama ayarlarından temizleyebilirsiniz. Geri dönüşümdeki her dosya 30 gün sonra otomatik olarak silinir. - Simple Gallery Pro: Photo Manager & Editor + Basit Galeri Pro: Fotoğraf Yönetici & Düzenleyici - Offline gallery without ads. Organize, edit, recover and protect photos & videos + Reklamsız çevrimdışı galeri. Fotoğraf & videolarınızı yönetin ve düzenleyin - 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. + Basit Galeri Pro, özelleştirilebilir bir çevrimdışı galeridir. Fotoğraflarınızı düzenleyin ve organize edin, geri dönüşüm kutusuyla silinen dosyaları kurtarın, dosyaları koruyun ve gizleyin ve RAW, SVG ve çok daha fazlası dahil olmak üzere çok çeşitli fotoğraf ve video formatlarını görüntüleyin. - The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. + Uygulamaya hiçbir reklam ve gereksiz izinler içermez. Uygulama internet erişimi gerektirmediğinden gizliliğiniz de korunur. ------------------------------------------------- - SIMPLE GALLERY PRO – FEATURES + BASİT GALERİ PRO – ÖZELLİKLER ------------------------------------------------- - • Offline gallery with no ads or popups - • Simple gallery photo editor – crop, rotate, resize, draw, filters & more - • No internet access needed, giving you more privacy and security - • No unnecessary permissions required - • Quickly search images, videos & files - • Open & view many different photo and video types (RAW, SVG, panoramic etc) - • A variety of intuitive gestures to easily edit & organize files - • Lots of ways to filter, group & sort files - • Customize the appearance of Simple Gallery Pro - • Available in 32 languages - • Mark files as favorites for quick access - • Protect your photos & videos with a pattern, pin or fingerprint - • Use pin, pattern & fingerprint to protect the app launch or specific functions too - • Recover deleted photos & videos from the recycle bin - • Toggle visibility of files to hide photos & videos - • Create a customizable slideshow of your files - • View detailed information of your files (resolution, EXIF values etc) - • Simple Gallery Pro is open source - … and much much more! + • Reklamsız veya açılır penceresiz, çevrimdışı galeri + • Basit galeri fotoğraf editörü - kırpma, döndürme, yeniden boyutlandırma, çizim, filtreler ve daha fazlası + • İnternet erişimi gerekmez, size daha fazla gizlilik ve güvenlik sunar + • Gereksiz izinler gerekmez + • Resimleri, videoları ve dosyaları hızlıca arama + • Birçok farklı fotoğraf ve video türünü (RAW, SVG, panoramik vb.) açma ve görüntüleme + • Dosyaları kolayca düzenlemek ve organize etmek için çeşitli sezgisel hareketler + • Dosyaları filtrelemenin, gruplandırmanın ve sıralamanın birçok yolu + • Basit Galeri Pro\'nun görünümünü özelleştirme + • 32 dilde mevcut + • Hızlı erişim için dosyaları sık kullanılan olarak işaretleme + • Fotoğraflarınızı ve videolarınızı desen, pin veya parmak izi ile koruma + • Uygulama başlatılmasını veya belirli işlevleri de korumak için pin, desen ve parmak izi kullanma + • Silinen fotoğrafları ve videoları geri dönüşüm kutusundan kurtarma + • Fotoğrafları ve videoları gizlemek için dosyaların görünürlüğünü değiştirme + • Dosyalarınızın özelleştirilebilir bir slayt gösterisini oluşturma + • Dosyalarınızın ayrıntılı bilgilerini (çözünürlük, EXIF değerleri vb.) görüntüleme + • Basit Galeri Pro açık kaynak kodludur + … ve çok daha fazlası! - PHOTO GALLERY EDITOR - Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If you’re feeling a little more creative you can add filters and draw on your pictures! + FOTOĞRAF GALERİSİ EDİTÖRÜ + Basit Galeri Pro, fotoğraflarınızı anında düzenlemenizi kolaylaştırır. Resimlerinizi kırpın, çevirin, döndürün ve yeniden boyutlandırın. Kendinizi biraz daha yaratıcı hissediyorsanız, filtre ekleyebilir ve resimlerinizi çizebilirsiniz! - SUPPORT FOR MANY FILE TYPES - Unlike some other gallery viewers & photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more. + BİRÇOK DOSYA TÜRÜ İÇİN DESTEK + Diğer galeri görüntüleyicilerinden ve fotoğraf düzenleyicilerinden farklı olarak, Basit Galeri Pro, JPEG, PNG, MP4, MKV, RAW, SVG, Panoramik fotoğraflar, Panoramik videolar ve daha pek çok farklı dosya türünü destekler. - HIGHLY CUSTOMIZABLE GALLERY MANAGER - From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, we’re also available in 32 languages! + SON DERECE ÖZELLEŞTİRİLEBİLİR GALERİ YÖNETİCİSİ + Kullanıcı arayüzünden alt araç çubuğundaki işlev düğmelerine kadar, Basit Galeri Pro oldukça özelleştirilebilirdir ve istediğiniz şekilde çalışır. Başka hiçbir galeri yöneticisi bu tür bir esnekliğe sahip değildir! Açık kaynak olması sayesinde 32 dilde de kullanıma hazırız! - RECOVER DELETED PHOTOS & VIDEOS - Accidentally deleted a precious photo or video? Don’t worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos & videos easily. + SİLİNEN FOTOĞRAFLARI VE VİDEOLARI KURTARIN + Yanlışlıkla önemli bir fotoğrafı veya videoyu mu sildiniz? Endişelenmeyin! Basit Galeri Pro, silinmiş fotoğrafları ve videoları kolayca kurtarabileceğiniz kullanışlı bir geri dönüşüm kutusuna sahiptir. - PROTECT & HIDE PHOTOS, VIDEOS & FILES - Using pin, pattern or your device’s fingerprint scanner you can protect and hide photos, videos & entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you can’t delete a file without a fingerprint scan, helping to protect your files from accidental deletion. + FOTOĞRAFLARI, VİDEOLARI VE DOSYALARI KORUYUN VE GİZLEYİN + Pin, desen veya cihazınızın parmak izi tarayıcısını kullanarak fotoğrafları, videoları ve albümün tamamını koruyabilir ve gizleyebilirsiniz. Uygulamanın kendisini koruyabilir veya uygulamanın belirli işlevlerine kilitler yerleştirebilirsiniz. Örneğin, parmak izi taraması olmadan bir dosyayı silemez ve dosyalarınızı yanlışlıkla silmeye karşı korumaya yardımcı olabilirsiniz. - Check out the full suite of Simple Tools here: + Tüm Basit Araçlar paketini buradan inceleyin: https://www.simplemobiletools.com Facebook: From 70379087a016d1f857a6888afa95f849d1a27b02 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Jun 2019 21:14:09 +0200 Subject: [PATCH 142/165] adding an "in" strings file too for indonesian, just to be sure --- app/src/main/res/values-in/strings.xml | 296 +++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 app/src/main/res/values-in/strings.xml diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml new file mode 100644 index 000000000..34eb6a5af --- /dev/null +++ b/app/src/main/res/values-in/strings.xml @@ -0,0 +1,296 @@ + + + Simple Gallery + Galeri + Sunting + Buka kamera + (tersembunyi) + (dikecualikan) + Pin folder + Lepas pin folder + Pin ke atas + Tampilkan semua isi folder + Semua folder + Beralih ke tampilan folder + Folder lain + Tampilkan di peta + Lokasi tidak diketahui + Tambah jumlah kolom + Kurangi jumlah kolom + Ubah sampul + Pilih foto + Gunakan default + Volume + Kecerahan + Kunci rotasi + Aktifkan rotasi + Ubah orientasi + Paksa potret + Paksa lanskap + Gunakan orientasi default + Perbaiki Tanggal Diambil + Memperbaiki… + Tanggal berhasil diperbaiki + Bagikan versi yang diubah ukurannya + Hai,\n\nsepertinya anda memperbarui dari aplikasi gratis versi lama. Anda sekarang bisa mencopot versi yang lama, yang ada tombol \'Tingkatkan ke Pro\' di bagian atas pengaturan aplikasi.\n\nHanya item Keranjang sampah yang akan dihapus, item favorit menjadi tak bertanda dan anda juga harus menyetel ulang pengaturan aplikasi.\n\nThanks! + + + Filter media + Gambar + Video + GIF + Gambar RAW + SVG + Tidak ada berkas media ditemukan dari filter ini. + Ubah filter + + + Fungsi ini menyembunyikan folder dengan menambahkan berkas \'.nomedia\' ke dalamnya, juga akan menyembunyikan semua subfolder. Anda bisa melihatnya dari opsi \'Tampilkan berkas tersembunyi\' di Pengaturan. Lanjutkan? + Kecualikan + Folder yang dikecualikan + Atur folder yang dikecualikan + Ini hanya akan mengecualikan pilihan bersama dengan subfoldernya di Simple Gallery. Anda bisa mengatur pengecualian di Pengaturan. + Kecualikan folder induk? + Mengecualikan folder akan membuatnya bersama subfoldernya tersembunyi hanya di Simple Gallery, namun masih bisa dilihat di aplikasi lain.\n\nJika anda ingin menyembunyikannya dari aplikasi lain juga, gunakan fitur Sembunyikan. + Bersihkan daftar + Hapus semua folder dari daftar pengecualian? Ini tidak akan menghapus folder tersebut. + Folder tersembunyi + Atur folder tersembunyi + Sepertinya tidak ada folder tersembunyi dengan berkas \".nomedia\" didalamnya. + + + Folder yang disertakan + Atur folder yang disertakan + Tambah folder + Jika ada folder yang berisi berkas media, namun tidak dikenali oleh aplikasi ini, anda bisa menambahkannya disini secara manual.\n\nMenambah beberapa item disini tidak akan mengecualikan folder yang lain. + Tidak ada berkas media yang ditemukan. Anda bisa memperbaikinya dengan menambahkan folder yang berisi berkas media secara manual. + + + Ubah ukuran + Ubah ukuran terpilih dan simpan + Lebar + Tinggi + Jaga aspek rasio + Harap masukkan resolusi dengan benar + + + Penyunting + Simpan + Rotasi + Jalur + Jalur gambar tidak valid + Gagal menyunting gambar + Sunting dengan: + Tidak ada aplikasi penyunting gambar + Lokasi berkas tidak diketahui + Tidak bisa mengganti berkas sumber + Putar ke kiri + Putar ke kanan + Putar 180º + Balik + Balik horizontal + Balik vertikal + Bebas + Lainnya + + + Simple Wallpaper + Setel wallpaper + Gagal menyetel sebagai wallpaper + Setel wallpaper dengan: + Menyetel wallpaper… + Wallpaper berhasil disetel + Aspek rasio potret + Aspek rasio lanskap + Layar beranda + Layar kunci + Beranda dan layar kunci + + + Slideshow + Interval (detik): + Sertakan foto + Sertakan video + Sertakan GIF + Urutan acak + Mundur + Slideshow tanpa henti + Animation + None + Fade + Slide + Slideshow berakhir + Tidak ditemukan media untuk slideshow + + + Ubah jenis tampilan + Kotak + Daftar + Kelompokkan subfolder langsung + + + Kelompokkan menurut + Jangan kelompokkan berkas + Folder + Terakhir diubah + Last modified (daily) + Last modified (monthly) + Tanggal diambil + Date taken (daily) + Date taken (monthly) + Jenis berkas + Ekstensi + Harap dicatat bahwa mengelompokkan dan mengurutkan adalah 2 ruas yang berbeda + + + Folder yang ditampilkan pada widget: + Tampilkan nama folder + + + Putar video otomatis + Ingat posisi pemutaran terakhir + Tampil/sembunyikan nama berkas + Ulangi video + Animasi GIF di thumbnail + Kecerahan maksimal saat melihat di layar penuh + Pangkas thumbnail menjadi persegi + Tampilkan durasi video + Rotasi layar penuh dari + Pengaturan sistem + Rotasi perangkat + Aspek rasio + Background dan status bar hitam saat layar penuh + Gulir thumbnail secara horizontal + Otomatis sembunyikan sistem UI saat layar penuh + Hapus folder kosong setelah menghapus isinya + Izinkan mengontrol kecerahan foto dengan gerakan vertikal + Izinkan mengontrol kecerahan dan volume video dengan gerakan vertikal + Tampilkan jumlah folder media di tampilan utama + Tampilkan detail tambahan saat layar penuh + Atur detail tambahan + Izinkan zoom satu jari di layar penuh + Izinkan mengganti media dengan mengklik sisi layar + Izinkan zoom gambar lebih dalam + Sembunyikan detail tambahan ketika status bar disembunyikan + Tampilkan beberapa tombol tindakan dibawah layar + Tampilkan Sampah di layar folder + Zoom gambar mendalam + Tampilkan gambar dalam kualitas tertinggi + Tampilkan Sampah sebagai item terakhir di layar utama + Izinkan keluar dari layar penuh dengan menggeser kebawah + Izinkan pembesaran 1:1 dengan dua kali ketuk + Selalu buka video pada layar terpisah dengan gestur horizontal baru + Tampilkan notch jika tersedia + Izinkan memutar gambar dengan gestur + Prioritas pemuatan berkas + Kecepatan + Kompromi + Hindari menampilkan berkas yang tidak valid + + + Thumbnail + Media layar penuh + Detail tambahan + Tindakan bawah + + + Sesuaikan tombol tindakan bawah + Favorit + Tampil/sembunyikan berkas + + + Bagaimana cara menjadikan Simple Gallery sebagai aplikasi galeri default? + Pertama anda harus menemukan galeri default saat ini di bagian Aplikasi di Pengaturan perangkat, lihatlah tombol yang seperti \"Buka secara default\", klik itu, lalu pilih \"Hapus default\". + Lain kali anda mencoba membuka gambar atau video, anda akan disuruh memilih aplikasi, dan anda bisa memilih Simple Gallery dan menjadikannya default. + Saya mengunci aplikasi dengan sandi, tapi saya lupa. Apa yang harus dilakukan? + Anda bisa menyelesaikannya dengan 2 cara. Anda bisa pasang ulang aplikasi, atau cari aplikasi ini di Pengaturan perangkat dan pilih \"Hapus data\". Ini akan menyetel ulang semua pengaturan anda, dan tidak akan menghapus berkas media apapun. + Bagaimana agar sebuah album selalu muncul paling atas di daftar? + Anda bisa menekan lama album tersebut dan pilih ikon Pin di menu tindakan, itu akan menaruhnya di atas daftar. Anda juga bisa menyematkan beberapa folder, item yang di-pin akan diurutkan berdasarkan metode urutan default. + Bagaimana cara mempercepat laju video? + You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward. + Apa perbedaan antara menyembunyikan dan mengecualikan folder? + Mengecualikan tidak akan menampilkan folder di Simple Gallery, sedangkan Sembunyikan bekerja sesuai aturan sistem dan akan menyembunyikan folder juga dari aplikasi galeri yang lain. Cara kerjanya dengan membuat berkas \".nomedia\" kosong pada folder yang diinginkan, yang bisa anda hapus juga dengan aplikasi pengelola berkas. + Mengapa folder dengan gambar album musik atau stiker muncul? + Kadang anda melihat beberapa album yang tidak biasa muncul. Anda bisa dengan mudah menyembunyikannya dengan menekan lama dan pilih Kecualikan. Pada dialog berikutnya, anda lalu bisa memilih folder induk, yang akan mencegah album terkait muncul kembali. + Ada folder berisi gambar namun tidak muncul, apa yang harus dilakukan? + Itu bisa disebabkan berbagai alasan, namun solusinya mudah. Pergi ke Pengaturan -> Atur folder yang disertakan, pilih Tambah dan cari folder yang diinginkan. + Bagaimana jika saya hanya ingin beberapa folder saja yang terlihat? + Menambahkan folder di Folder yang Disertakan tidak otomatis mengecualikan folder yang lain. Yang bisa anda lakukan adalah pergi ke Pengaturan -> Atur Folder yang Dikecualikan, lalu kecualikan folder root \"/\", lalu tambahkan folder yang diinginkan di Pengaturan -> Atur Folder yang Disertakan. + Itu akan membuat folder yang dipilih saja yang muncul, dan jika sebuah folder disertakan dan dikecualikan secara bersamaan, folder tersebut akan muncul. + Bisakah saya meng-crop gambar dengan aplikasi ini? + Ya, anda bisa melakukannya di Penyunting, dengan menyeret sudut gambar. Anda bisa masuk ke penyunting dengan menekan lama thumbnail gambar dan memilih Sunting, atau pilih Sunting dari tampilan layar penuh. + Bisakah saya mengelompokkan thumbnail berkas media? + Bisa, gunakan menu \"Kelompokkan menurut\" pada tampilan thumbnail. Anda bisa mengelompokkan berkas dengan berbagai kriteria, termasuk Tanggal Diambil. Jika anda menggunakan fungsi \"Tampilkan semua isi folder\", anda juga bisa mengelompokkan berdasarkan foldernya. + Tidak bisa mengurutkan berdasarkan Tanggal Diambil, bagaimana cara memperbaikinya? + Itu umumnya disebabkan karena berkas yang disalin dari tempat lain. Anda bisa memperbaikinya dengan memilih berkas thumbnail dan pilih \"Perbaiki Tanggal Diambil\". + Saya melihat beberapa pita warna pada gambar. Bagaimana saya meningkatkan kualitasnya? + Solusi saat ini untuk menampilkan gambar berfungsi dengan baik dalam sebagian besar kasus, namun jika anda ingin kualitas gambar yang lebih baik, anda bisa mengaktifkan \"Tampilkan gambar dalam kualitas tertinggi\" di pengaturan aplikasi, pada bagian \"Zoom gambar mendalam\". + Saya punya berkas/folder tersembunyi. Bagaimana cara memunculkannya? + Anda bisa memilih menu \"Tampilkan sementara berkas tersembunyi\" di layar utama, atau \"Tampilkan berkas tersembunyi\" di pengaturan aplikasi untuk menampilkannya. Jika anda tidak ingin menyembunyikannya, tekan lama dan pilih \"Jangan sembunyikan\". Folder disembunyikan dengan menambahkan berkas \".nomedia\" di dalamnya, anda bisa menghapus berkas tersebut dengan aplikasi pengelola berkas. + Kenapa aplikasi menggunakan sangat banyak ruang kosong? + Cache aplikasi bisa mencapai 250MB, ini untuk menjamin pemuatan gambar yang lebih cepat. Jika aplikasi menggunakan lebih banyak lagi ruang kosong, sangat memungkinkan anda memiliki item di dalam Keranjang Sampah. Berkas tersebut akan menambah ukuran aplikasi. Anda bisa mengosongkan Keranjang sampah dengan cara membukanya dan menghapus semua berkas, atau dari pengaturan aplikasi. Semua berkas di dalam keranjang sampah akan otomatis dihapus setelah 30 hari. + + + + Simple Gallery Pro: Pengelola & Penyunting Foto + + Galeri luring tanpa iklan. Kelola, sunting, pulihkan dan lindungi foto & video + + Simple Gallery Pro adalah aplikasi galeri luring yang sangat mudah diubahsuai. Mengelola & menyunting foto anda, memulihkan berkas yang terhapus dari keranjang sampah, melindungi & menyembunyikan berkas, dan menampilkan banyak format foto & video, diantaranya RAW, SVG dan masih banyak lainnya. + + Aplikasi sama sekali tidak berisi iklan dan tidak membutuhkan perizinan yang tidak perlu. Dan karena aplikasi juga tidak membutuhkan akses internet, privasi anda terlindungi. + + ------------------------------------------------- + SIMPLE GALLERY PRO – FEATURES + ------------------------------------------------- + + • Offline gallery with no ads or popups + • Simple gallery photo editor – crop, rotate, resize, draw, filters & more + • No internet access needed, giving you more privacy and security + • No unnecessary permissions required + • Quickly search images, videos & files + • Open & view many different photo and video types (RAW, SVG, panoramic etc) + • A variety of intuitive gestures to easily edit & organize files + • Lots of ways to filter, group & sort files + • Customize the appearance of Simple Gallery Pro + • Available in 32 languages + • Mark files as favorites for quick access + • Protect your photos & videos with a pattern, pin or fingerprint + • Use pin, pattern & fingerprint to protect the app launch or specific functions too + • Recover deleted photos & videos from the recycle bin + • Toggle visibility of files to hide photos & videos + • Create a customizable slideshow of your files + • View detailed information of your files (resolution, EXIF values etc) + • Simple Gallery Pro is open source + … and much much more! + + PHOTO GALLERY EDITOR + Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If you’re feeling a little more creative you can add filters and draw on your pictures! + + SUPPORT FOR MANY FILE TYPES + Unlike some other gallery viewers & photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more. + + HIGHLY CUSTOMIZABLE GALLERY MANAGER + From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, we’re also available in 32 languages! + + RECOVER DELETED PHOTOS & VIDEOS + Accidentally deleted a precious photo or video? Don’t worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos & videos easily. + + PROTECT & HIDE PHOTOS, VIDEOS & FILES + Using pin, pattern or your device’s fingerprint scanner you can protect and hide photos, videos & entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you can’t delete a file without a fingerprint scan, helping to protect your files from accidental deletion. + + Check out the full suite of Simple Tools here: + https://www.simplemobiletools.com + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From 2f0522b3e2615e2c88a541b9dacb872c9c7d630e Mon Sep 17 00:00:00 2001 From: chreddy Date: Sun, 23 Jun 2019 22:00:07 +0200 Subject: [PATCH 143/165] Updating Danish translation --- app/src/main/res/values-da/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index fdbede921..8985ded14 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -116,9 +116,9 @@ Kør baglæns Endeløs kørsel Animation - None - Fade - Slide + Ingen + Udton + Glid Slideshowet endte Der blev ikke funket nogen mediefiler til slideshowet @@ -133,11 +133,11 @@ Gruppér ikke filer Mappe Sidst ændret - Last modified (daily) - Last modified (monthly) + Sidst ændret (daglig) + Sidst ændret (månedlig) Eksponeringsdato - Date taken (daily) - Date taken (monthly) + Eksponeringsdato (daglig) + Eksponeringsdato (månedlig) Filtype Filendelse Vær opmærksom på at gruppering og sortering er to individuelle felter From 6feccf3973d1189781dd1826d2fea1fb0b11996b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Jun 2019 22:36:49 +0200 Subject: [PATCH 144/165] fix #72, add Print functionality at fullscreen images --- .../pro/activities/ViewPagerActivity.kt | 64 +++++++++++++++++++ .../gallery/pro/helpers/Constants.kt | 1 + app/src/main/res/menu/menu_viewpager.xml | 4 ++ 3 files changed, 69 insertions(+) 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 285277d44..eedd54868 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 @@ -10,6 +10,7 @@ import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager import android.content.res.Configuration import android.database.Cursor +import android.graphics.Bitmap import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Icon @@ -24,7 +25,15 @@ import android.view.View import android.view.WindowManager import android.view.animation.DecelerateInterpolator import android.widget.Toast +import androidx.print.PrintHelper import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.RequestOptions +import com.bumptech.glide.request.target.Target import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.* @@ -160,6 +169,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0 findItem(R.id.menu_move_to).isVisible = visibleBottomActions and BOTTOM_ACTION_MOVE == 0 findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 + findItem(R.id.menu_print).isVisible = currentMedium.isImage() || currentMedium.isRaw() findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin() @@ -197,6 +207,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_share -> shareMediumPath(getCurrentPath()) R.id.menu_delete -> checkDeleteConfirmation() R.id.menu_rename -> renameFile() + R.id.menu_print -> printFile() R.id.menu_edit -> openEditor(getCurrentPath()) R.id.menu_properties -> showProperties() R.id.menu_show_on_map -> showOnMap() @@ -874,6 +885,59 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View }.start() } + private fun printFile() { + sendPrintIntent(getCurrentPath()) + } + + private fun sendPrintIntent(path: String) { + val printHelper = PrintHelper(this) + printHelper.scaleMode = PrintHelper.SCALE_MODE_FIT + printHelper.orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT + + try { + val resolution = path.getImageResolution() + if (resolution == null) { + toast(R.string.unknown_error_occurred) + return + } + + var requestedWidth = resolution.x + var requestedHeight = resolution.y + + if (requestedWidth >= MAX_PRINT_SIDE_SIZE) { + requestedHeight = (requestedHeight / (requestedWidth / MAX_PRINT_SIDE_SIZE.toFloat())).toInt() + requestedWidth = MAX_PRINT_SIDE_SIZE + } else if (requestedHeight >= MAX_PRINT_SIDE_SIZE) { + requestedWidth = (requestedWidth / (requestedHeight / MAX_PRINT_SIDE_SIZE.toFloat())).toInt() + requestedHeight = MAX_PRINT_SIDE_SIZE + } + + val options = RequestOptions() + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + + Glide.with(this) + .asBitmap() + .load(path) + .apply(options) + .listener(object : RequestListener { + override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { + showErrorToast(e?.localizedMessage ?: "") + return false + } + + override fun onResourceReady(bitmap: Bitmap?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { + if (bitmap != null) { + printHelper.printBitmap(path.getFilenameFromPath(), bitmap) + } + + return false + } + }).submit(requestedWidth, requestedHeight) + } catch (e: Exception) { + } + } + private fun restoreFile() { restoreRecycleBinPath(getCurrentPath()) { refreshViewPager() 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 8193e9de8..015c12beb 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 @@ -115,6 +115,7 @@ const val DRAG_THRESHOLD = 8 const val MONTH_MILLISECONDS = MONTH_SECONDS * 1000L const val MIN_SKIP_LENGTH = 2000 const val HIDE_SYSTEM_UI_DELAY = 500L +const val MAX_PRINT_SIDE_SIZE = 4096 const val DIRECTORY = "directory" const val MEDIUM = "medium" diff --git a/app/src/main/res/menu/menu_viewpager.xml b/app/src/main/res/menu/menu_viewpager.xml index f995fe0f1..ed3dcc8ac 100644 --- a/app/src/main/res/menu/menu_viewpager.xml +++ b/app/src/main/res/menu/menu_viewpager.xml @@ -110,6 +110,10 @@ android:icon="@drawable/ic_rename_new" android:title="@string/rename" app:showAsAction="ifRoom"/> + Date: Sun, 23 Jun 2019 22:48:34 +0200 Subject: [PATCH 145/165] updating Exoplayer to 2.10.2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index eb5bc1b49..591f7345c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' - implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' + implementation 'com.google.android.exoplayer:exoplayer-core:2.10.2' implementation 'com.google.vr:sdk-panowidget:1.180.0' implementation 'com.google.vr:sdk-videowidget:1.180.0' implementation 'org.apache.sanselan:sanselan:0.97-incubator' From bf7b0d0386c7e39b91534dc5a1d80d4cbe3573ab Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Jun 2019 23:07:36 +0200 Subject: [PATCH 146/165] fix #1474, improve the handling of third party intents and type filters --- .../pro/activities/PhotoVideoActivity.kt | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) 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 a596d86cb..c27186cd4 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 @@ -97,9 +97,11 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList val realPath = intent.extras!!.getString(REAL_FILE_PATH) if (realPath != null && File(realPath).exists()) { if (realPath.getFilenameFromPath().contains('.') || filename.contains('.')) { - sendViewPagerIntent(realPath) - finish() - return + if (isFileTypeVisible(realPath)) { + sendViewPagerIntent(realPath) + finish() + return + } } else { filename = realPath.getFilenameFromPath() } @@ -116,10 +118,12 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } else { val path = applicationContext.getRealPathFromURI(mUri!!) ?: "" if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && filename.contains('.') && File(path).exists()) { - rescanPaths(arrayListOf(mUri!!.path)) - sendViewPagerIntent(path) - finish() - return + if (isFileTypeVisible(path)) { + rescanPaths(arrayListOf(mUri!!.path)) + sendViewPagerIntent(path) + finish() + return + } } } @@ -253,6 +257,15 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList PropertiesDialog(this, mUri!!.path) } + private fun isFileTypeVisible(path: String): Boolean { + val filter = config.filterMedia + return !(path.isImageFast() && filter and TYPE_IMAGES == 0 || + path.isVideoFast() && filter and TYPE_VIDEOS == 0 || + path.isGif() && filter and TYPE_GIFS == 0 || + path.isRawFast() && filter and TYPE_RAWS == 0 || + path.isSvg() && filter and TYPE_SVGS == 0) + } + private fun initBottomActions() { initBottomActionsLayout() initBottomActionButtons() From 6aa597bdaf1556b17c769682775cedf78499b687 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Jun 2019 00:13:32 +0200 Subject: [PATCH 147/165] always underline the "Change Filters" placeholder text --- .../simplemobiletools/gallery/pro/activities/MainActivity.kt | 3 ++- .../simplemobiletools/gallery/pro/activities/MediaActivity.kt | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 117eda6f8..e6268ccfb 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 @@ -1003,7 +1003,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (dirs.isEmpty() && config.filterMedia == TYPE_DEFAULT_FILTER) { directories_empty_text_label.text = getString(R.string.no_media_add_included) directories_empty_text.text = getString(R.string.add_folder) - directories_empty_text.underlineText() directories_empty_text.setOnClickListener { showAddIncludedFolderDialog { @@ -1013,11 +1012,13 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } else { directories_empty_text_label.text = getString(R.string.no_media_with_filters) directories_empty_text.text = getString(R.string.change_filters_underlined) + directories_empty_text.setOnClickListener { showFilterMediaDialog() } } + directories_empty_text.underlineText() directories_grid.beVisibleIf(directories_empty_text_label.isGone()) } 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 e2043f87d..1e8f78974 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 @@ -846,6 +846,10 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { media_refresh_layout.isRefreshing = false media_empty_text_label.beVisibleIf(media.isEmpty() && !isFromCache) media_empty_text.beVisibleIf(media.isEmpty() && !isFromCache) + + if (media_empty_text_label.isVisible()) { + media_empty_text_label.text = getString(R.string.no_media_with_filters) + } media_grid.beVisibleIf(media_empty_text_label.isGone()) val viewType = config.getFolderViewType(if (mShowAll) SHOW_ALL else mPath) From 9161c8e1d8339e28e51f07f699fbab134551d820 Mon Sep 17 00:00:00 2001 From: ScratchBuild Date: Tue, 25 Jun 2019 17:38:55 +0900 Subject: [PATCH 148/165] Update Japanese translation --- app/src/main/res/values-ja/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b21bf6e15..243c98235 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -115,10 +115,10 @@ ランダムな順序 逆方向に進む スライドショーをリピート再生する - Animation - None - Fade - Slide + アニメーション + なし + フェード + スライド スライドショーが終了しました スライドショーに表示するメディアがありません @@ -133,11 +133,11 @@ 何もしない フォルダ 更新日時 - Last modified (daily) - Last modified (monthly) + 更新日時 (毎日) + 更新日時 (毎月) 撮影日時 - Date taken (daily) - Date taken (monthly) + 撮影日時 (毎日) + 撮影日時 (毎月) ファイル形式 拡張子 Please note that grouping and sorting are 2 independent fields From 58ba160571b0a337dbd199610a6533f9d9bf8a71 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Jun 2019 11:19:56 +0200 Subject: [PATCH 149/165] show a placeholder text if search gives no results --- .../gallery/pro/activities/MediaActivity.kt | 7 +++++++ 1 file changed, 7 insertions(+) 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 1e8f78974..dfae84429 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 @@ -333,6 +333,13 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { filtered.sortBy { it is Medium && !it.name.startsWith(text, true) } val grouped = MediaFetcher(applicationContext).groupMedia(filtered as ArrayList, mPath) runOnUiThread { + if (grouped.isEmpty()) { + media_empty_text_label.text = getString(R.string.no_items_found) + media_empty_text_label.beVisible() + } else { + media_empty_text_label.beGone() + } + getMediaAdapter()?.updateMedia(grouped) measureRecyclerViewContent(grouped) } From 6ee3f04d8fde846d99437e8dd9a798ee354b5e94 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Jun 2019 15:06:52 +0200 Subject: [PATCH 150/165] start migrating search related functionality into SearchActivity --- app/src/main/AndroidManifest.xml | 23 +++--- .../gallery/pro/activities/MainActivity.kt | 53 ++------------ .../gallery/pro/activities/SearchActivity.kt | 59 +++++++++++++++ app/src/main/res/layout/activity_search.xml | 71 +++++++++++++++++++ app/src/main/res/menu/menu_main.xml | 3 +- app/src/main/res/menu/menu_search.xml | 10 +++ 6 files changed, 163 insertions(+), 56 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt create mode 100644 app/src/main/res/layout/activity_search.xml create mode 100644 app/src/main/res/menu/menu_search.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa2a48308..25f4250ff 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,14 +36,6 @@ android:name=".activities.MainActivity" android:resizeableActivity="true"> - - - - - - @@ -81,6 +73,21 @@ + + + + + + + + + () private var mStoredAnimateGifs = true @@ -224,8 +218,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { override fun onStop() { super.onStop() - mSearchMenuItem?.collapseActionView() - if (config.temporarilyShowHidden || config.tempSkipDeleteConfirmation) { mTempShowHiddenHandler.postDelayed({ config.temporarilyShowHidden = false @@ -276,7 +268,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { findItem(R.id.reduce_column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID && config.dirColumnCnt > 1 findItem(R.id.hide_the_recycle_bin).isVisible = useBin && config.showRecycleBinAtFolders findItem(R.id.show_the_recycle_bin).isVisible = useBin && !config.showRecycleBinAtFolders - setupSearch(this) } } @@ -288,6 +279,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.search -> launchSearchActivity() R.id.sort -> showSortingDialog() R.id.filter -> showFilterMediaDialog() R.id.open_camera -> launchCamera() @@ -331,43 +323,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } - private fun setupSearch(menu: Menu) { - val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager - mSearchMenuItem = menu.findItem(R.id.search) - (mSearchMenuItem?.actionView as? SearchView)?.apply { - setSearchableInfo(searchManager.getSearchableInfo(componentName)) - isSubmitButtonEnabled = false - setOnQueryTextListener(object : SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(query: String) = false - - override fun onQueryTextChange(newText: String): Boolean { - if (mIsSearchOpen) { - setupAdapter(mDirs, newText) - } - return true - } - }) - } - - MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem?): Boolean { - mIsSearchOpen = true - directories_refresh_layout.isEnabled = false - return true - } - - // this triggers on device rotation too, avoid doing anything - override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { - if (mIsSearchOpen) { - mIsSearchOpen = false - directories_refresh_layout.isEnabled = config.enablePullToRefresh - setupAdapter(mDirs, "") - } - return true - } - }) - } - private fun startNewPhotoFetcher() { if (isNougatPlus()) { val photoFetcher = NewPhotoFetcher() @@ -467,6 +422,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } + private fun launchSearchActivity() { + Intent(this, SearchActivity::class.java).apply { + startActivity(this) + } + } + private fun showSortingDialog() { ChangeSortingDialog(this, true, false) { directories_grid.adapter = null 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 new file mode 100644 index 000000000..d0fb5c1c9 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt @@ -0,0 +1,59 @@ +package com.simplemobiletools.gallery.pro.activities + +import android.app.SearchManager +import android.content.Context +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuItemCompat +import com.simplemobiletools.gallery.pro.R + +class SearchActivity : SimpleActivity() { + private var mIsSearchOpen = false + private var mSearchMenuItem: MenuItem? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_search) + } + + override fun onStop() { + super.onStop() + mSearchMenuItem?.collapseActionView() + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_search, menu) + setupSearch(menu) + return true + } + + private fun setupSearch(menu: Menu) { + val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager + mSearchMenuItem = menu.findItem(R.id.search) + (mSearchMenuItem?.actionView as? SearchView)?.apply { + setSearchableInfo(searchManager.getSearchableInfo(componentName)) + isSubmitButtonEnabled = false + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String) = false + + override fun onQueryTextChange(newText: String): Boolean { + return true + } + }) + } + + MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + return true + } + + // this triggers on device rotation too, avoid doing anything + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + return true + } + }) + mSearchMenuItem?.expandActionView() + } +} diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml new file mode 100644 index 000000000..852cec099 --- /dev/null +++ b/app/src/main/res/layout/activity_search.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 1de075c0c..0d9b32e12 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -5,8 +5,7 @@ android:id="@+id/search" android:icon="@drawable/ic_search" android:title="@string/search" - app:actionViewClass="androidx.appcompat.widget.SearchView" - app:showAsAction="collapseActionView|ifRoom"/> + app:showAsAction="always"/> + + + From 10f903129db9618505bac6d5aa7afc622ba38cef Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 11:18:48 +0200 Subject: [PATCH 151/165] remove pull to refresh layout from the search results --- .../gallery/pro/activities/SearchActivity.kt | 12 ++ app/src/main/res/layout/activity_search.xml | 106 +++++++++--------- 2 files changed, 62 insertions(+), 56 deletions(-) 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 d0fb5c1c9..d0939fa2e 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 @@ -39,6 +39,9 @@ class SearchActivity : SimpleActivity() { override fun onQueryTextSubmit(query: String) = false override fun onQueryTextChange(newText: String): Boolean { + if (mIsSearchOpen) { + textChanged(newText) + } return true } }) @@ -46,14 +49,23 @@ class SearchActivity : SimpleActivity() { MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + mIsSearchOpen = true return true } // this triggers on device rotation too, avoid doing anything override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + if (mIsSearchOpen) { + mIsSearchOpen = false + textChanged("") + } return true } }) mSearchMenuItem?.expandActionView() } + + private fun textChanged(text: String) { + + } } diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 852cec099..7b5f29da2 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -1,71 +1,65 @@ - - + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:paddingLeft="@dimen/big_margin" + android:paddingTop="@dimen/activity_margin" + android:paddingRight="@dimen/big_margin" + android:text="@string/no_media_with_filters" + android:textSize="@dimen/bigger_text_size" + android:visibility="gone"/> - + - + - + - + - + - + - + - - - - - + + From e7edb729a4ae3fb9b4a3de039397c02c453e8343 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 12:06:12 +0200 Subject: [PATCH 152/165] add file fetching at the search activity --- .../gallery/pro/activities/SearchActivity.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) 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 d0939fa2e..b4c678cc2 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 @@ -8,14 +8,20 @@ import android.view.MenuItem import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.extensions.getCachedMedia +import com.simplemobiletools.gallery.pro.models.ThumbnailItem class SearchActivity : SimpleActivity() { private var mIsSearchOpen = false private var mSearchMenuItem: MenuItem? = null + private var mCurrAsyncTask: GetMediaAsynctask? = null + private var mAllMedia = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_search) + getAllMedia() } override fun onStop() { @@ -23,6 +29,11 @@ class SearchActivity : SimpleActivity() { mSearchMenuItem?.collapseActionView() } + override fun onDestroy() { + super.onDestroy() + mCurrAsyncTask?.stopFetching() + } + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_search, menu) setupSearch(menu) @@ -68,4 +79,22 @@ class SearchActivity : SimpleActivity() { private fun textChanged(text: String) { } + + private fun getAllMedia() { + getCachedMedia("") { + if (it.isNotEmpty()) { + mAllMedia = it + } + startAsyncTask() + } + } + + private fun startAsyncTask() { + mCurrAsyncTask?.stopFetching() + mCurrAsyncTask = GetMediaAsynctask(applicationContext, "", showAll = true) { + mAllMedia = it + } + + mCurrAsyncTask!!.execute() + } } From 02b3f4d5c206165a48e8cc04bdca3b8b449c9a29 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 12:47:13 +0200 Subject: [PATCH 153/165] copying some file thumbnail related code to the search screen --- .../gallery/pro/activities/SearchActivity.kt | 207 +++++++++++++++++- app/src/main/res/layout/activity_search.xml | 12 - 2 files changed, 198 insertions(+), 21 deletions(-) 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 b4c678cc2..58574ecb5 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 @@ -2,17 +2,31 @@ package com.simplemobiletools.gallery.pro.activities import android.app.SearchManager import android.content.Context +import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.models.FileDirItem +import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.MediaAdapter import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.extensions.config import com.simplemobiletools.gallery.pro.extensions.getCachedMedia +import com.simplemobiletools.gallery.pro.extensions.openPath +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener +import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.models.ThumbnailSection +import kotlinx.android.synthetic.main.activity_search.* -class SearchActivity : SimpleActivity() { +class SearchActivity : SimpleActivity(), MediaOperationsListener { private var mIsSearchOpen = false private var mSearchMenuItem: MenuItem? = null private var mCurrAsyncTask: GetMediaAsynctask? = null @@ -21,14 +35,10 @@ class SearchActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_search) + media_empty_text_label.setTextColor(config.textColor) getAllMedia() } - override fun onStop() { - super.onStop() - mSearchMenuItem?.collapseActionView() - } - override fun onDestroy() { super.onDestroy() mCurrAsyncTask?.stopFetching() @@ -68,7 +78,6 @@ class SearchActivity : SimpleActivity() { override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { if (mIsSearchOpen) { mIsSearchOpen = false - textChanged("") } return true } @@ -77,13 +86,184 @@ class SearchActivity : SimpleActivity() { } private fun textChanged(text: String) { + Thread { + try { + val filtered = mAllMedia.filter { it is Medium && it.name.contains(text, true) } as ArrayList + filtered.sortBy { it is Medium && !it.name.startsWith(text, true) } + val grouped = MediaFetcher(applicationContext).groupMedia(filtered as ArrayList, "") + runOnUiThread { + if (grouped.isEmpty()) { + media_empty_text_label.text = getString(R.string.no_items_found) + media_empty_text_label.beVisible() + } else { + media_empty_text_label.beGone() + } + getMediaAdapter()?.updateMedia(grouped) + measureRecyclerViewContent(grouped) + } + } catch (ignored: Exception) { + } + }.start() + } + + private fun setupAdapter() { + val currAdapter = media_grid.adapter + if (currAdapter == null) { + val fastscroller = if (config.scrollHorizontally) media_horizontal_fastscroller else media_vertical_fastscroller + MediaAdapter(this, ArrayList(), this, false, false, "", media_grid, fastscroller) { + if (it is Medium) { + itemClicked(it.path) + } + }.apply { + media_grid.adapter = this + } + setupLayoutManager() + } else { + (currAdapter as MediaAdapter).updateMedia(MediaActivity.mMedia) + } + + measureRecyclerViewContent(mAllMedia) + setupScrollDirection() + } + + private fun getMediaAdapter() = media_grid.adapter as? MediaAdapter + + private fun itemClicked(path: String) { + val isVideo = path.isVideoFast() + if (isVideo) { + openPath(path, false) + } else { + Intent(this, ViewPagerActivity::class.java).apply { + putExtra(PATH, path) + putExtra(SHOW_ALL, false) + startActivity(this) + } + } + } + + private fun setupLayoutManager() { + val viewType = config.getFolderViewType(SHOW_ALL) + if (viewType == VIEW_TYPE_GRID) { + setupGridLayoutManager() + } else { + setupListLayoutManager() + } + } + + private fun setupGridLayoutManager() { + val layoutManager = media_grid.layoutManager as MyGridLayoutManager + /*if (config.scrollHorizontally) { + layoutManager.orientation = RecyclerView.HORIZONTAL + media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) + } else { + layoutManager.orientation = RecyclerView.VERTICAL + media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + }*/ + + layoutManager.spanCount = config.mediaColumnCnt + val adapter = getMediaAdapter() + layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { + override fun getSpanSize(position: Int): Int { + return if (adapter?.isASectionTitle(position) == true) { + layoutManager.spanCount + } else { + 1 + } + } + } + } + + private fun setupListLayoutManager() { + val layoutManager = media_grid.layoutManager as MyGridLayoutManager + layoutManager.spanCount = 1 + layoutManager.orientation = RecyclerView.VERTICAL + } + + private fun setupScrollDirection() { + val viewType = config.getFolderViewType(SHOW_ALL) + val allowHorizontalScroll = config.scrollHorizontally && viewType == VIEW_TYPE_GRID + media_vertical_fastscroller.isHorizontal = false + media_vertical_fastscroller.beGoneIf(allowHorizontalScroll) + + media_horizontal_fastscroller.isHorizontal = true + media_horizontal_fastscroller.beVisibleIf(allowHorizontalScroll) + + val sorting = config.getFileSorting(SHOW_ALL) + if (allowHorizontalScroll) { + media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble + media_horizontal_fastscroller.setViews(media_grid) { + media_horizontal_fastscroller.updateBubbleText(getBubbleTextItem(it, sorting)) + } + } else { + media_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble + media_vertical_fastscroller.setViews(media_grid) { + media_vertical_fastscroller.updateBubbleText(getBubbleTextItem(it, sorting)) + } + } + } + + private fun getBubbleTextItem(index: Int, sorting: Int): String { + var realIndex = index + val mediaAdapter = getMediaAdapter() + if (mediaAdapter?.isASectionTitle(index) == true) { + realIndex++ + } + return mediaAdapter?.getItemBubbleText(realIndex, sorting) ?: "" + } + + private fun measureRecyclerViewContent(media: ArrayList) { + media_grid.onGlobalLayout { + if (config.scrollHorizontally) { + calculateContentWidth(media) + } else { + calculateContentHeight(media) + } + } + } + + private fun calculateContentWidth(media: ArrayList) { + val layoutManager = media_grid.layoutManager as MyGridLayoutManager + val thumbnailWidth = layoutManager.getChildAt(0)?.width ?: 0 + val fullWidth = ((media.size - 1) / layoutManager.spanCount + 1) * thumbnailWidth + media_horizontal_fastscroller.setContentWidth(fullWidth) + media_horizontal_fastscroller.setScrollToX(media_grid.computeHorizontalScrollOffset()) + } + + private fun calculateContentHeight(media: ArrayList) { + val layoutManager = media_grid.layoutManager as MyGridLayoutManager + val pathToCheck = SHOW_ALL + val hasSections = config.getFolderGrouping(pathToCheck) and GROUP_BY_NONE == 0 && !config.scrollHorizontally + val sectionTitleHeight = if (hasSections) layoutManager.getChildAt(0)?.height ?: 0 else 0 + val thumbnailHeight = if (hasSections) layoutManager.getChildAt(1)?.height ?: 0 else layoutManager.getChildAt(0)?.height ?: 0 + + var fullHeight = 0 + var curSectionItems = 0 + media.forEach { + if (it is ThumbnailSection) { + fullHeight += sectionTitleHeight + if (curSectionItems != 0) { + val rows = ((curSectionItems - 1) / layoutManager.spanCount + 1) + fullHeight += rows * thumbnailHeight + } + curSectionItems = 0 + } else { + curSectionItems++ + } + } + + fullHeight += ((curSectionItems - 1) / layoutManager.spanCount + 1) * thumbnailHeight + media_vertical_fastscroller.setContentHeight(fullHeight) + media_vertical_fastscroller.setScrollToY(media_grid.computeVerticalScrollOffset()) } private fun getAllMedia() { getCachedMedia("") { if (it.isNotEmpty()) { - mAllMedia = it + mAllMedia = it.clone() as ArrayList + } + runOnUiThread { + setupAdapter() } startAsyncTask() } @@ -92,9 +272,18 @@ class SearchActivity : SimpleActivity() { private fun startAsyncTask() { mCurrAsyncTask?.stopFetching() mCurrAsyncTask = GetMediaAsynctask(applicationContext, "", showAll = true) { - mAllMedia = it + mAllMedia = it.clone() as ArrayList } mCurrAsyncTask!!.execute() } + + override fun refreshItems() { + } + + override fun tryDeleteFiles(fileDirItems: ArrayList) { + } + + override fun selectedPaths(paths: ArrayList) { + } } diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 7b5f29da2..13f9fb57e 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -18,18 +18,6 @@ android:textSize="@dimen/bigger_text_size" android:visibility="gone"/> - - Date: Wed, 26 Jun 2019 16:47:07 +0200 Subject: [PATCH 154/165] change the way Search menu item is displayed at the Search screen --- app/src/main/res/menu/menu_search.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/menu/menu_search.xml b/app/src/main/res/menu/menu_search.xml index d2c4465f2..ac2a96bcb 100644 --- a/app/src/main/res/menu/menu_search.xml +++ b/app/src/main/res/menu/menu_search.xml @@ -6,5 +6,5 @@ android:icon="@drawable/ic_search" android:title="@string/search" app:actionViewClass="androidx.appcompat.widget.SearchView" - app:showAsAction="collapseActionView|ifRoom"/> + app:showAsAction="collapseActionView|always"/> From 8691f4ea688285b31590a0df88a1c4c41ba6df17 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 16:48:14 +0200 Subject: [PATCH 155/165] removing a redundant variable --- .../com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index e0eafbb6a..b6904bae6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -46,7 +46,6 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList Date: Wed, 26 Jun 2019 23:00:57 +0200 Subject: [PATCH 156/165] properly handle horizontal scrolling at search results --- .../gallery/pro/activities/SearchActivity.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 58574ecb5..a8fe7edf6 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 @@ -6,6 +6,8 @@ import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem +import android.view.ViewGroup +import android.widget.RelativeLayout import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat import androidx.recyclerview.widget.GridLayoutManager @@ -153,13 +155,13 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { private fun setupGridLayoutManager() { val layoutManager = media_grid.layoutManager as MyGridLayoutManager - /*if (config.scrollHorizontally) { + if (config.scrollHorizontally) { layoutManager.orientation = RecyclerView.HORIZONTAL - media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) + media_grid.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) } else { layoutManager.orientation = RecyclerView.VERTICAL - media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) - }*/ + media_grid.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + } layoutManager.spanCount = config.mediaColumnCnt val adapter = getMediaAdapter() From b2cd19109f64ab4bd329d20af9342454f4edea52 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 23:15:04 +0200 Subject: [PATCH 157/165] properly handle item refreshing at the search screen --- .../gallery/pro/activities/SearchActivity.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 a8fe7edf6..abf917df1 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 @@ -30,6 +30,8 @@ import kotlinx.android.synthetic.main.activity_search.* class SearchActivity : SimpleActivity(), MediaOperationsListener { private var mIsSearchOpen = false + private var mLastSearchedText = "" + private var mSearchMenuItem: MenuItem? = null private var mCurrAsyncTask: GetMediaAsynctask? = null private var mAllMedia = ArrayList() @@ -63,6 +65,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { override fun onQueryTextChange(newText: String): Boolean { if (mIsSearchOpen) { + mLastSearchedText = newText textChanged(newText) } return true @@ -80,6 +83,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { if (mIsSearchOpen) { mIsSearchOpen = false + mLastSearchedText = "" } return true } @@ -267,20 +271,24 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { runOnUiThread { setupAdapter() } - startAsyncTask() + startAsyncTask(false) } } - private fun startAsyncTask() { + private fun startAsyncTask(updateItems: Boolean) { mCurrAsyncTask?.stopFetching() mCurrAsyncTask = GetMediaAsynctask(applicationContext, "", showAll = true) { mAllMedia = it.clone() as ArrayList + if (updateItems) { + textChanged(mLastSearchedText) + } } mCurrAsyncTask!!.execute() } override fun refreshItems() { + startAsyncTask(true) } override fun tryDeleteFiles(fileDirItems: ArrayList) { From 54e5cb2c14833749ba2ed73428d5f0b664d48ede Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Jun 2019 23:44:04 +0200 Subject: [PATCH 158/165] adding file deleting from the search results view --- .../gallery/pro/activities/SearchActivity.kt | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) 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 abf917df1..663f1b9bd 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 @@ -18,15 +18,14 @@ import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.adapters.MediaAdapter import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask -import com.simplemobiletools.gallery.pro.extensions.config -import com.simplemobiletools.gallery.pro.extensions.getCachedMedia -import com.simplemobiletools.gallery.pro.extensions.openPath +import com.simplemobiletools.gallery.pro.extensions.* import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.ThumbnailItem import com.simplemobiletools.gallery.pro.models.ThumbnailSection import kotlinx.android.synthetic.main.activity_search.* +import java.io.File class SearchActivity : SimpleActivity(), MediaOperationsListener { private var mIsSearchOpen = false @@ -126,7 +125,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { } setupLayoutManager() } else { - (currAdapter as MediaAdapter).updateMedia(MediaActivity.mMedia) + (currAdapter as MediaAdapter).updateMedia(mAllMedia) } measureRecyclerViewContent(mAllMedia) @@ -292,6 +291,47 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { } override fun tryDeleteFiles(fileDirItems: ArrayList) { + val filtered = fileDirItems.filter { File(it.path).isFile && it.path.isMediaFile() } as ArrayList + if (filtered.isEmpty()) { + return + } + + if (config.useRecycleBin && !filtered.first().path.startsWith(recycleBinPath)) { + val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) + toast(movingItems) + + movePathsInRecycleBin(filtered.map { it.path } as ArrayList, galleryDB.MediumDao()) { + if (it) { + deleteFilteredFiles(filtered) + } else { + toast(R.string.unknown_error_occurred) + } + } + } else { + val deletingItems = resources.getQuantityString(R.plurals.deleting_items, filtered.size, filtered.size) + toast(deletingItems) + deleteFilteredFiles(filtered) + } + } + + private fun deleteFilteredFiles(filtered: ArrayList) { + deleteFiles(filtered) { + if (!it) { + toast(R.string.unknown_error_occurred) + return@deleteFiles + } + + mAllMedia.removeAll { filtered.map { it.path }.contains((it as? Medium)?.path) } + + Thread { + val useRecycleBin = config.useRecycleBin + filtered.forEach { + if (it.path.startsWith(recycleBinPath) || !useRecycleBin) { + deleteDBPath(galleryDB.MediumDao(), it.path) + } + } + }.start() + } } override fun selectedPaths(paths: ArrayList) { From 44014ef44afd88cae5f6eb5df94bedc412512070 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 09:42:44 +0200 Subject: [PATCH 159/165] fix #1461, avoid a glitch at rotated pngs getting deleted --- .../com/simplemobiletools/gallery/pro/extensions/Activity.kt | 4 ---- 1 file changed, 4 deletions(-) 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 3e8d8e013..e3130cca5 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 @@ -431,10 +431,6 @@ fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, saveFile(tmpPath, bitmap, it as FileOutputStream, newDegrees) } - if (File(newPath).exists()) { - tryDeleteFileDirItem(FileDirItem(newPath, newPath.getFilenameFromPath()), false, true) - } - copyFile(tmpPath, newPath) rescanPaths(arrayListOf(newPath)) fileRotatedSuccessfully(newPath, oldLastModified) From f066f4b84a3723f1f2668255d42bfbc361e1fe48 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 09:52:11 +0200 Subject: [PATCH 160/165] catch exceptions thrown at clearing the recycle bin --- .../gallery/pro/extensions/Activity.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 e3130cca5..77bd3fd9d 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 @@ -293,11 +293,15 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { Thread { - recycleBin.deleteRecursively() - galleryDB.MediumDao().clearRecycleBin() - galleryDB.DirectoryDao().deleteRecycleBin() - toast(R.string.recycle_bin_emptied) - callback?.invoke() + try { + recycleBin.deleteRecursively() + galleryDB.MediumDao().clearRecycleBin() + galleryDB.DirectoryDao().deleteRecycleBin() + toast(R.string.recycle_bin_emptied) + callback?.invoke() + } catch (e: Exception) { + toast(R.string.unknown_error_occurred) + } }.start() } From 49584029197e5969a2dde3aafd796280dc06edd8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 10:10:29 +0200 Subject: [PATCH 161/165] try catching an exception at an editor filter applying --- .../gallery/pro/activities/EditActivity.kt | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) 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 617e5207a..6a395f3e0 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 @@ -583,18 +583,25 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener if (currPrimaryAction == PRIMARY_ACTION_FILTER && bottom_actions_filter_list.adapter == null) { Thread { val thumbnailSize = resources.getDimension(R.dimen.bottom_filters_thumbnail_size).toInt() - val bitmap = Glide.with(this) - .asBitmap() - .load(uri).listener(object : RequestListener { - override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { - showErrorToast(e.toString()) - return false - } - override fun onResourceReady(resource: Bitmap?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean) = false - }) - .submit(thumbnailSize, thumbnailSize) - .get() + val bitmap = try { + Glide.with(this) + .asBitmap() + .load(uri).listener(object : RequestListener { + override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { + showErrorToast(e.toString()) + return false + } + + override fun onResourceReady(resource: Bitmap?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean) = false + }) + .submit(thumbnailSize, thumbnailSize) + .get() + } catch (e: GlideException) { + showErrorToast(e) + finish() + return@Thread + } runOnUiThread { val filterThumbnailsManager = FilterThumbnailsManager() From 86f73f8d5c2de084459ccea6898e8b3adf99f356 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 11:43:07 +0200 Subject: [PATCH 162/165] avoid creating unnecessary background threads --- app/build.gradle | 2 +- .../gallery/pro/activities/EditActivity.kt | 33 +++++++------- .../pro/activities/HiddenFoldersActivity.kt | 5 ++- .../gallery/pro/activities/MainActivity.kt | 44 +++++++++---------- .../gallery/pro/activities/MediaActivity.kt | 29 ++++++------ .../pro/activities/PanoramaPhotoActivity.kt | 5 ++- .../gallery/pro/activities/SearchActivity.kt | 9 ++-- .../pro/activities/SetWallpaperActivity.kt | 5 ++- .../pro/activities/SettingsActivity.kt | 8 ++-- .../gallery/pro/activities/SimpleActivity.kt | 5 ++- .../pro/activities/VideoPlayerActivity.kt | 9 ++-- .../pro/activities/ViewPagerActivity.kt | 28 ++++++------ .../pro/activities/WidgetConfigureActivity.kt | 9 ++-- .../gallery/pro/adapters/DirectoryAdapter.kt | 9 ++-- .../gallery/pro/adapters/MediaAdapter.kt | 21 ++++----- .../gallery/pro/extensions/Activity.kt | 32 +++++++------- .../gallery/pro/extensions/Context.kt | 30 ++++++------- .../gallery/pro/fragments/PhotoFragment.kt | 5 ++- .../gallery/pro/fragments/VideoFragment.kt | 13 +++--- .../gallery/pro/helpers/MyWidgetProvider.kt | 9 ++-- .../gallery/pro/jobs/NewPhotoFetcher.kt | 5 ++- 21 files changed, 163 insertions(+), 152 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 591f7345c..7ee3799c6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.14.0' + implementation 'com.simplemobiletools:commons:5.14.2' 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' 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 6a395f3e0..f65b800fe 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 @@ -26,10 +26,7 @@ import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.target.Target import com.simplemobiletools.commons.dialogs.ColorPickerDialog 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.SIDELOADING_TRUE -import com.simplemobiletools.commons.helpers.isNougatPlus +import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.gallery.pro.BuildConfig import com.simplemobiletools.gallery.pro.R @@ -259,9 +256,9 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener if (!wasDrawCanvasPositioned) { wasDrawCanvasPositioned = true editor_draw_canvas.onGlobalLayout { - Thread { + ensureBackgroundThread { fillCanvasBackground() - }.start() + } } } } @@ -336,7 +333,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener bottom_actions_filter_list.adapter = null bottom_actions_filter_list.beGone() - Thread { + ensureBackgroundThread { try { val originalBitmap = Glide.with(applicationContext).asBitmap().load(uri).submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get() currentFilter.filter.processFilter(originalBitmap) @@ -344,23 +341,23 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } catch (e: OutOfMemoryError) { toast(R.string.out_of_memory_error) } - }.start() + } } } } private fun shareImage() { - Thread { + ensureBackgroundThread { when { default_image_view.isVisible() -> { val currentFilter = getFiltersAdapter()?.getCurrentFilter() if (currentFilter == null) { toast(R.string.unknown_error_occurred) - return@Thread + return@ensureBackgroundThread } val originalBitmap = Glide.with(applicationContext).asBitmap().load(uri).submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get() - currentFilter!!.filter.processFilter(originalBitmap) + currentFilter.filter.processFilter(originalBitmap) shareBitmap(originalBitmap) } crop_image_view.isVisible() -> { @@ -371,12 +368,12 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } editor_draw_canvas.isVisible() -> shareBitmap(editor_draw_canvas.getBitmap()) } - }.start() + } } private fun getTempImagePath(bitmap: Bitmap, callback: (path: String?) -> Unit) { val bytes = ByteArrayOutputStream() - bitmap.compress(Bitmap.CompressFormat.PNG, 0, bytes) + bitmap.compress(CompressFormat.PNG, 0, bytes) val folder = File(cacheDir, TEMP_FOLDER_NAME) if (!folder.exists()) { @@ -581,7 +578,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener bottom_editor_draw_actions.beVisibleIf(currPrimaryAction == PRIMARY_ACTION_DRAW) if (currPrimaryAction == PRIMARY_ACTION_FILTER && bottom_actions_filter_list.adapter == null) { - Thread { + ensureBackgroundThread { val thumbnailSize = resources.getDimension(R.dimen.bottom_filters_thumbnail_size).toInt() val bitmap = try { @@ -600,7 +597,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } catch (e: GlideException) { showErrorToast(e) finish() - return@Thread + return@ensureBackgroundThread } runOnUiThread { @@ -630,7 +627,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener bottom_actions_filter_list.adapter = adapter adapter.notifyDataSetChanged() } - }.start() + } } if (currPrimaryAction != PRIMARY_ACTION_CROP_ROTATE) { @@ -811,7 +808,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener private fun saveBitmapToFile(bitmap: Bitmap, path: String, showSavingToast: Boolean) { try { - Thread { + ensureBackgroundThread { val file = File(path) val fileDirItem = FileDirItem(path, path.getFilenameFromPath()) getFileOutputStream(fileDirItem, true) { @@ -821,7 +818,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener toast(R.string.image_editing_failed) } } - }.start() + } } catch (e: Exception) { showErrorToast(e) } catch (e: OutOfMemoryError) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt index 98d5eb9d9..a7a5002ba 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt @@ -5,6 +5,7 @@ import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.adapters.ManageHiddenFoldersAdapter @@ -55,11 +56,11 @@ class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { private fun addFolder() { FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) { config.lastFilepickerPath = it - Thread { + ensureBackgroundThread { addNoMedia(it) { updateFolders() } - }.start() + } } } } 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 fcf7f04de..4b25b4bb0 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 @@ -346,7 +346,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } private fun checkOTGPath() { - Thread { + ensureBackgroundThread { if (!config.wasOTGHandled && hasPermission(PERMISSION_WRITE_STORAGE) && hasOTGConnected() && config.OTGPath.isEmpty()) { getStorageDirectories().firstOrNull { it.trimEnd('/') != internalStoragePath && it.trimEnd('/') != sdCardPath }?.apply { config.wasOTGHandled = true @@ -364,7 +364,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } } - }.start() + } } private fun checkDefaultSpamFolders() { @@ -434,9 +434,9 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (config.directorySorting and SORT_BY_DATE_MODIFIED > 0 || config.directorySorting and SORT_BY_DATE_TAKEN > 0) { getDirectories() } else { - Thread { + ensureBackgroundThread { gotDirectories(getCurrentlyDisplayedDirs()) - }.start() + } } } } @@ -540,11 +540,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { refreshItems() } - Thread { + ensureBackgroundThread { folders.filter { !it.exists() }.forEach { mDirectoryDao.deleteDirPath(it.absolutePath) } - }.start() + } } } @@ -629,22 +629,22 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun toggleRecycleBin(show: Boolean) { config.showRecycleBinAtFolders = show invalidateOptionsMenu() - Thread { + ensureBackgroundThread { var dirs = getCurrentlyDisplayedDirs() if (!show) { dirs = dirs.filter { it.path != RECYCLE_BIN } as ArrayList } gotDirectories(dirs) - }.start() + } } private fun createNewFolder() { FilePickerDialog(this, internalStoragePath, false, config.shouldShowHidden, false, true) { CreateNewFolderDialog(this, it) { config.tempFolderPath = it - Thread { + ensureBackgroundThread { gotDirectories(addTempFolderIfNeeded(getCurrentlyDisplayedDirs())) - }.start() + } } } } @@ -1098,12 +1098,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { ?: "" private fun setupLatestMediaId() { - Thread { + ensureBackgroundThread { if (hasPermission(PERMISSION_READ_STORAGE)) { mLatestMediaId = getLatestMediaId() mLatestMediaDateId = getLatestMediaByDateId() } - }.start() + } } private fun checkLastMediaChanged() { @@ -1112,7 +1112,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } mLastMediaHandler.postDelayed({ - Thread { + ensureBackgroundThread { val mediaId = getLatestMediaId() val mediaDateId = getLatestMediaByDateId() if (mLatestMediaId != mediaId || mLatestMediaDateId != mediaDateId) { @@ -1125,7 +1125,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { mLastMediaHandler.removeCallbacksAndMessages(null) checkLastMediaChanged() } - }.start() + } }, LAST_MEDIA_CHECK_PERIOD) } @@ -1133,12 +1133,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (config.useRecycleBin && config.lastBinCheck < System.currentTimeMillis() - DAY_SECONDS * 1000) { config.lastBinCheck = System.currentTimeMillis() Handler().postDelayed({ - Thread { + ensureBackgroundThread { try { mMediumDao.deleteOldRecycleBinItems(System.currentTimeMillis() - MONTH_MILLISECONDS) } catch (e: Exception) { } - }.start() + } }, 3000L) } } @@ -1147,7 +1147,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { // /storage/emulated/0/Android/data/com.facebook.orca/files/stickers/175139712676531/209575122566323 // /storage/emulated/0/Android/data/com.facebook.orca/files/stickers/497837993632037/499671223448714 private fun excludeSpamFolders() { - Thread { + ensureBackgroundThread { try { val internalPath = internalStoragePath val checkedPaths = ArrayList() @@ -1184,7 +1184,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } catch (e: Exception) { } - }.start() + } } override fun refreshItems() { @@ -1192,16 +1192,16 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } override fun recheckPinnedFolders() { - Thread { + ensureBackgroundThread { gotDirectories(movePinnedDirectoriesToFront(getCurrentlyDisplayedDirs())) - }.start() + } } override fun updateDirectories(directories: ArrayList) { - Thread { + ensureBackgroundThread { storeDirectoryItems(directories, mDirectoryDao) removeInvalidDBDirectories() - }.start() + } } private fun checkWhatsNewDialog() { 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 dfae84429..f79e0a1f5 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 @@ -27,6 +27,7 @@ import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.REQUEST_EDIT_IMAGE import com.simplemobiletools.commons.helpers.SORT_BY_RANDOM +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.commons.views.MyRecyclerView @@ -327,7 +328,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } private fun searchQueryChanged(text: String) { - Thread { + ensureBackgroundThread { try { val filtered = mMedia.filter { it is Medium && it.name.contains(text, true) } as ArrayList filtered.sortBy { it is Medium && !it.name.startsWith(text, true) } @@ -345,7 +346,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } } catch (ignored: Exception) { } - }.start() + } } private fun tryLoadGallery() { @@ -435,7 +436,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { mLastMediaHandler.removeCallbacksAndMessages(null) mLastMediaHandler.postDelayed({ - Thread { + ensureBackgroundThread { val mediaId = getLatestMediaId() val mediaDateId = getLatestMediaByDateId() if (mLatestMediaId != mediaId || mLatestMediaDateId != mediaDateId) { @@ -447,7 +448,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } else { checkLastMediaChanged() } - }.start() + } }, LAST_MEDIA_CHECK_PERIOD) } @@ -487,9 +488,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun restoreAllFiles() { val paths = mMedia.filter { it is Medium }.map { (it as Medium).path } as ArrayList restoreRecycleBinPaths(paths, mMediumDao) { - Thread { + ensureBackgroundThread { mDirectoryDao.deleteDirPath(RECYCLE_BIN) - }.start() + } finish() } } @@ -593,7 +594,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun startAsyncTask() { mCurrAsyncTask?.stopFetching() mCurrAsyncTask = GetMediaAsynctask(applicationContext, mPath, mIsGetImageIntent, mIsGetVideoIntent, mShowAll) { - Thread { + ensureBackgroundThread { val oldMedia = mMedia.clone() as ArrayList val newMedia = it gotMedia(newMedia, false) @@ -603,7 +604,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } } catch (e: Exception) { } - }.start() + } } mCurrAsyncTask!!.execute() @@ -617,9 +618,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } if (mPath == FAVORITES) { - Thread { + ensureBackgroundThread { mDirectoryDao.deleteDirPath(FAVORITES) - }.start() + } } finish() @@ -630,9 +631,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } private fun deleteDBDirectory() { - Thread { + ensureBackgroundThread { mDirectoryDao.deleteDirPath(mPath) - }.start() + } } private fun createNewFolder() { @@ -910,14 +911,14 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { mMedia.removeAll { filtered.map { it.path }.contains((it as? Medium)?.path) } - Thread { + ensureBackgroundThread { val useRecycleBin = config.useRecycleBin filtered.forEach { if (it.path.startsWith(recycleBinPath) || !useRecycleBin) { deleteDBPath(mMediumDao, it.path) } } - }.start() + } if (mMedia.isEmpty()) { deleteDirectoryIfEmpty() 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 fa8dcfb54..c69cd5271 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 @@ -15,6 +15,7 @@ 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.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.* import com.simplemobiletools.gallery.pro.helpers.PATH @@ -94,7 +95,7 @@ open class PanoramaPhotoActivity : SimpleActivity() { try { val options = VrPanoramaView.Options() options.inputType = VrPanoramaView.Options.TYPE_MONO - Thread { + ensureBackgroundThread { val bitmap = getBitmapToLoad(path) runOnUiThread { panorama_view.apply { @@ -120,7 +121,7 @@ open class PanoramaPhotoActivity : SimpleActivity() { }) } } - }.start() + } } catch (e: Exception) { showErrorToast(e) } 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 663f1b9bd..33901c1d4 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 @@ -13,6 +13,7 @@ import androidx.core.view.MenuItemCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.gallery.pro.R @@ -91,7 +92,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { } private fun textChanged(text: String) { - Thread { + ensureBackgroundThread { try { val filtered = mAllMedia.filter { it is Medium && it.name.contains(text, true) } as ArrayList filtered.sortBy { it is Medium && !it.name.startsWith(text, true) } @@ -109,7 +110,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { } } catch (ignored: Exception) { } - }.start() + } } private fun setupAdapter() { @@ -323,14 +324,14 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { mAllMedia.removeAll { filtered.map { it.path }.contains((it as? Medium)?.path) } - Thread { + ensureBackgroundThread { val useRecycleBin = config.useRecycleBin filtered.forEach { if (it.path.startsWith(recycleBinPath) || !useRecycleBin) { deleteDBPath(galleryDB.MediumDao(), it.path) } } - }.start() + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt index 946e0176f..2ceafc06b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt @@ -11,6 +11,7 @@ import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.toast +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.isNougatPlus import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.gallery.pro.R @@ -117,7 +118,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete if (result.error == null) { toast(R.string.setting_wallpaper) - Thread { + ensureBackgroundThread { val bitmap = result.bitmap val wantedHeight = wallpaperManager.desiredMinimumHeight val ratio = wantedHeight / bitmap.height.toFloat() @@ -135,7 +136,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete setResult(Activity.RESULT_CANCELED) } finish() - }.start() + } } else { toast("${getString(R.string.image_editing_failed)}: ${result.error.message}") } 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 a8df6dc58..c1e278770 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 @@ -572,7 +572,7 @@ class SettingsActivity : SimpleActivity() { } private fun setupEmptyRecycleBin() { - Thread { + ensureBackgroundThread { try { mRecycleBinContentSize = galleryDB.MediumDao().getDeletedMedia().sumByLong { it.size } } catch (ignored: Exception) { @@ -580,7 +580,7 @@ class SettingsActivity : SimpleActivity() { runOnUiThread { settings_empty_recycle_bin_size.text = mRecycleBinContentSize.formatSize() } - }.start() + } settings_empty_recycle_bin_holder.setOnClickListener { if (mRecycleBinContentSize == 0L) { @@ -686,13 +686,13 @@ class SettingsActivity : SimpleActivity() { private fun setupImportSettings() { settings_import_holder.setOnClickListener { FilePickerDialog(this) { - Thread { + ensureBackgroundThread { try { parseFile(it) } catch (e: Exception) { showErrorToast(e) } - }.start() + } } } } 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 8b3505972..da2a95982 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 @@ -10,6 +10,7 @@ import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getRealPathFromURI import com.simplemobiletools.commons.extensions.scanPathRecursively +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.addPathToDB @@ -87,9 +88,9 @@ open class SimpleActivity : BaseSimpleActivity() { config.lastFilepickerPath = it config.addIncludedFolder(it) callback() - Thread { + ensureBackgroundThread { scanPathRecursively(it) - }.start() + } } } } 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 a1f0c225e..bed9bc018 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 @@ -25,6 +25,7 @@ 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.* import com.simplemobiletools.gallery.pro.helpers.* @@ -566,10 +567,10 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen private fun releaseExoPlayer() { mExoPlayer?.stop() - Thread { + ensureBackgroundThread { mExoPlayer?.release() mExoPlayer = null - }.start() + } } override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { @@ -602,9 +603,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen override fun onSurfaceTextureDestroyed(surface: SurfaceTexture?) = false override fun onSurfaceTextureAvailable(surface: SurfaceTexture?, width: Int, height: Int) { - Thread { + ensureBackgroundThread { mExoPlayer?.setVideoSurface(Surface(video_surface!!.surfaceTexture)) - }.start() + } } override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture?, width: Int, height: Int) {} 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 eedd54868..e6418911f 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 @@ -335,7 +335,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } if (intent.action == "com.android.camera.action.REVIEW") { - Thread { + ensureBackgroundThread { val mediumDao = galleryDB.MediumDao() if (mediumDao.getMediaFromPath(mPath).isEmpty()) { val type = when { @@ -352,7 +352,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), ts, ts, File(mPath).length(), type, duration, isFavorite, 0) mediumDao.insert(medium) } - }.start() + } } } @@ -362,9 +362,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun initFavorites() { - Thread { + ensureBackgroundThread { mFavoritePaths = getFavoritePaths() - }.start() + } } private fun setupOrientation() { @@ -635,14 +635,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val newPath = it handleSAFDialog(it) { toast(R.string.saving) - Thread { - val photoFragment = getCurrentPhotoFragment() ?: return@Thread + ensureBackgroundThread { + val photoFragment = getCurrentPhotoFragment() ?: return@ensureBackgroundThread saveRotatedImageToFile(currPath, newPath, photoFragment.mCurrentRotationDegrees, true) { toast(R.string.file_saved) getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0 invalidateOptionsMenu() } - }.start() + } } } } @@ -874,7 +874,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun toggleFavorite() { val medium = getCurrentMedium() ?: return medium.isFavorite = !medium.isFavorite - Thread { + ensureBackgroundThread { galleryDB.MediumDao().updateFavorite(medium.path, medium.isFavorite) if (medium.isFavorite) { mFavoritePaths.add(medium.path) @@ -882,7 +882,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View mFavoritePaths.remove(medium.path) } invalidateOptionsMenu() - }.start() + } } private fun printFile() { @@ -1053,9 +1053,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View name = it.getFilenameFromPath() } - Thread { + ensureBackgroundThread { updateDBMediaPath(oldPath, it) - }.start() + } updateActionbarTitle() } } @@ -1156,8 +1156,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } override fun launchViewVideoIntent(path: String) { - Thread { - val newUri = getFinalUriFromPath(path, BuildConfig.APPLICATION_ID) ?: return@Thread + ensureBackgroundThread { + val newUri = getFinalUriFromPath(path, BuildConfig.APPLICATION_ID) ?: return@ensureBackgroundThread val mimeType = getUriMimeType(path, newUri) Intent().apply { action = Intent.ACTION_VIEW @@ -1180,7 +1180,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } } - }.start() + } } private fun checkSystemUI() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt index 20feaa695..f34a23e9b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt @@ -10,6 +10,7 @@ import android.widget.RelativeLayout import android.widget.RemoteViews import com.simplemobiletools.commons.dialogs.ColorPickerDialog import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.dialogs.PickDirectoryDialog import com.simplemobiletools.gallery.pro.extensions.* @@ -89,9 +90,9 @@ class WidgetConfigureActivity : SimpleActivity() { AppWidgetManager.getInstance(this).updateAppWidget(mWidgetId, views) config.showWidgetFolderName = folder_picker_show_folder_name.isChecked val widget = Widget(null, mWidgetId, mFolderPath) - Thread { + ensureBackgroundThread { widgetsDB.insertOrUpdate(widget) - }.start() + } storeWidgetColors() requestWidgetUpdate() @@ -161,14 +162,14 @@ class WidgetConfigureActivity : SimpleActivity() { config_folder_name.text = getFolderNameFromPath(folderPath) } - Thread { + ensureBackgroundThread { val path = directoryDB.getDirectoryThumbnail(folderPath) if (path != null) { runOnUiThread { loadJpg(path, config_image, config.cropThumbnails) } } - }.start() + } } private fun handleFolderNameDisplay() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index fc6e60851..2d3256258 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -17,6 +17,7 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.dialogs.RenameItemsDialog import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.isOreoPlus import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller @@ -170,10 +171,10 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Unit)? = null) { deleteFile(fileDirItem, allowDeleteFolder) { if (deleteFromDatabase) { - Thread { + ensureBackgroundThread { deleteDBPath(galleryDB.MediumDao(), fileDirItem.path) runOnUiThread { callback?.invoke(it) } - }.start() + } } else { callback?.invoke(it) } @@ -225,7 +225,7 @@ fun BaseSimpleActivity.tryDeleteFileDirItem(fileDirItem: FileDirItem, allowDelet } fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao: MediumDao = galleryDB.MediumDao(), callback: ((wasSuccess: Boolean) -> Unit)?) { - Thread { + ensureBackgroundThread { var pathsCnt = paths.size paths.forEach { val file = File(it) @@ -246,7 +246,7 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao } } callback?.invoke(pathsCnt == 0) - }.start() + } } fun BaseSimpleActivity.restoreRecycleBinPath(path: String, callback: () -> Unit) { @@ -254,7 +254,7 @@ fun BaseSimpleActivity.restoreRecycleBinPath(path: String, callback: () -> Unit) } fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDao: MediumDao = galleryDB.MediumDao(), callback: () -> Unit) { - Thread { + ensureBackgroundThread { val newPaths = ArrayList() paths.forEach { val source = it @@ -288,11 +288,11 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa } fixDateTaken(newPaths, false) - }.start() + } } fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { - Thread { + ensureBackgroundThread { try { recycleBin.deleteRecursively() galleryDB.MediumDao().clearRecycleBin() @@ -302,16 +302,16 @@ fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { } catch (e: Exception) { toast(R.string.unknown_error_occurred) } - }.start() + } } fun BaseSimpleActivity.emptyAndDisableTheRecycleBin(callback: () -> Unit) { - Thread { + ensureBackgroundThread { emptyTheRecycleBin { config.useRecycleBin = false callback() } - }.start() + } } fun BaseSimpleActivity.showRecycleBinEmptyingDialog(callback: () -> Unit) { @@ -321,12 +321,12 @@ fun BaseSimpleActivity.showRecycleBinEmptyingDialog(callback: () -> Unit) { } fun BaseSimpleActivity.updateFavoritePaths(fileDirItems: ArrayList, destination: String) { - Thread { + ensureBackgroundThread { fileDirItems.forEach { val newPath = "$destination/${it.name}" updateDBMediaPath(it.path, newPath) } - }.start() + } } fun Activity.hasNavBar(): Boolean { @@ -515,7 +515,7 @@ fun saveFile(path: String, bitmap: Bitmap, out: FileOutputStream, degrees: Int) } fun Activity.getShortcutImage(tmb: String, drawable: Drawable, callback: () -> Unit) { - Thread { + ensureBackgroundThread { val options = RequestOptions() .format(DecodeFormat.PREFER_ARGB_8888) .skipMemoryCache(true) @@ -538,5 +538,5 @@ fun Activity.getShortcutImage(tmb: String, drawable: Drawable, callback: () -> U runOnUiThread { callback() } - }.start() + } } 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 2298bfaaf..ea4b13734 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 @@ -358,7 +358,7 @@ fun Context.updateSubfolderCounts(children: ArrayList, parentDirs: Ar } fun Context.getNoMediaFolders(callback: (folders: ArrayList) -> Unit) { - Thread { + ensureBackgroundThread { val folders = ArrayList() val uri = MediaStore.Files.getContentUri("external") @@ -384,20 +384,20 @@ fun Context.getNoMediaFolders(callback: (folders: ArrayList) -> Unit) { } callback(folders) - }.start() + } } fun Context.rescanFolderMedia(path: String) { - Thread { + ensureBackgroundThread { rescanFolderMediaSync(path) - }.start() + } } fun Context.rescanFolderMediaSync(path: String) { getCachedMedia(path) { val cached = it GetMediaAsynctask(applicationContext, path, false, false, false) { - Thread { + ensureBackgroundThread { val newMedia = it val mediumDao = galleryDB.MediumDao() val media = newMedia.filter { it is Medium } as ArrayList @@ -411,15 +411,15 @@ fun Context.rescanFolderMediaSync(path: String) { } } } - }.start() + } }.execute() } } fun Context.storeDirectoryItems(items: ArrayList, directoryDao: DirectoryDao) { - Thread { + ensureBackgroundThread { directoryDao.insertAll(items) - }.start() + } } fun Context.checkAppendingHidden(path: String, hidden: String, includedFolders: MutableSet): String { @@ -539,7 +539,7 @@ fun Context.loadSVG(path: String, target: MySquareImageView, cropThumbnails: Boo } fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, directoryDao: DirectoryDao = galleryDB.DirectoryDao(), forceShowHidden: Boolean = false, callback: (ArrayList) -> Unit) { - Thread { + ensureBackgroundThread { val directories = try { directoryDao.getAll() as ArrayList } catch (e: Exception) { @@ -581,12 +581,12 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: callback(clone.distinctBy { it.path.getDistinctPath() } as ArrayList) removeInvalidDBDirectories(filteredDirectories, directoryDao) - }.start() + } } fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, mediumDao: MediumDao = galleryDB.MediumDao(), callback: (ArrayList) -> Unit) { - Thread { + ensureBackgroundThread { val mediaFetcher = MediaFetcher(this) val foldersToScan = if (path.isEmpty()) mediaFetcher.getFoldersToScan() else arrayListOf(path) var media = ArrayList() @@ -644,7 +644,7 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag } } catch (ignored: Exception) { } - }.start() + } } fun Context.removeInvalidDBDirectories(dirs: ArrayList? = null, directoryDao: DirectoryDao = galleryDB.DirectoryDao()) { @@ -768,9 +768,9 @@ fun Context.parseFileChannel(path: String, fc: FileChannel, level: Int, start: L } fun Context.addPathToDB(path: String) { - Thread { + ensureBackgroundThread { if (!File(path).exists()) { - return@Thread + return@ensureBackgroundThread } val type = when { @@ -791,7 +791,7 @@ fun Context.addPathToDB(path: String) { mediumDao.insert(medium) } catch (ignored: Exception) { } - }.start() + } } fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList, albumCovers: ArrayList, hiddenString: String, 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 71c78ff0c..fc80387e9 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 @@ -36,6 +36,7 @@ import com.davemorrissey.labs.subscaleview.ImageRegionDecoder import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity import com.simplemobiletools.gallery.pro.activities.PhotoActivity @@ -241,10 +242,10 @@ class PhotoFragment : ViewPagerFragment() { mLoadZoomableViewHandler.removeCallbacksAndMessages(null) if (mCurrentRotationDegrees != 0) { - Thread { + ensureBackgroundThread { val path = mMedium.path (activity as? BaseSimpleActivity)?.saveRotatedImageToFile(path, path, mCurrentRotationDegrees, false) {} - }.start() + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index a7829beea..1f14eef95 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -24,6 +24,7 @@ import com.google.android.exoplayer2.upstream.DataSource import com.google.android.exoplayer2.upstream.DataSpec import com.google.android.exoplayer2.upstream.FileDataSource import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.PanoramaVideoActivity import com.simplemobiletools.gallery.pro.activities.VideoActivity @@ -139,12 +140,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S initTimeHolder() checkIfPanorama() - Thread { + ensureBackgroundThread { activity?.getVideoResolution(mMedium.path)?.apply { mVideoSize.x = x mVideoSize.y = y } - }.start() + } if (mIsPanorama) { mView.apply { @@ -657,10 +658,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun releaseExoPlayer() { mExoPlayer?.stop() - Thread { + ensureBackgroundThread { mExoPlayer?.release() mExoPlayer = null - }.start() + } } override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture?, width: Int, height: Int) {} @@ -670,9 +671,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onSurfaceTextureDestroyed(surface: SurfaceTexture?) = false override fun onSurfaceTextureAvailable(surface: SurfaceTexture?, width: Int, height: Int) { - Thread { + ensureBackgroundThread { mExoPlayer?.setVideoSurface(Surface(mTextureView.surfaceTexture)) - }.start() + } } private fun setVideoSize() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt index 3b4ec5090..5ba0e3811 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt @@ -14,6 +14,7 @@ import com.simplemobiletools.commons.extensions.getFileSignature import com.simplemobiletools.commons.extensions.setBackgroundColor import com.simplemobiletools.commons.extensions.setText import com.simplemobiletools.commons.extensions.setVisibleIf +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.MediaActivity import com.simplemobiletools.gallery.pro.extensions.config @@ -34,7 +35,7 @@ class MyWidgetProvider : AppWidgetProvider() { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { super.onUpdate(context, appWidgetManager, appWidgetIds) - Thread { + ensureBackgroundThread { val config = context.config context.widgetsDB.getWidgets().filter { appWidgetIds.contains(it.widgetId) }.forEach { val views = RemoteViews(context.packageName, R.layout.widget).apply { @@ -75,7 +76,7 @@ class MyWidgetProvider : AppWidgetProvider() { setupAppOpenIntent(context, views, R.id.widget_holder, it) appWidgetManager.updateAppWidget(it.widgetId, views) } - }.start() + } } override fun onAppWidgetOptionsChanged(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, newOptions: Bundle) { @@ -85,10 +86,10 @@ class MyWidgetProvider : AppWidgetProvider() { override fun onDeleted(context: Context, appWidgetIds: IntArray) { super.onDeleted(context, appWidgetIds) - Thread { + ensureBackgroundThread { appWidgetIds.forEach { context.widgetsDB.deleteWidgetId(it) } - }.start() + } } } 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 07d24df9d..e00e2eb4f 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 @@ -14,6 +14,7 @@ import android.os.Handler import android.provider.MediaStore import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getStringValue +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.extensions.addPathToDB import com.simplemobiletools.gallery.pro.extensions.updateDirectoryPath @@ -94,11 +95,11 @@ class NewPhotoFetcher : JobService() { } } - Thread { + ensureBackgroundThread { affectedFolderPaths.forEach { updateDirectoryPath(it) } - }.start() + } mHandler.post(mWorker) return true From 5e048d6a6577491cdd7539e1b5efde3d5bc2b9f1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 12:06:53 +0200 Subject: [PATCH 163/165] update version to 6.8.1 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7ee3799c6..f03764864 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 254 - versionName "6.8.0" + versionCode 255 + versionName "6.8.1" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 575c07fba810a439ed5bc0340d77fa80f8c9d79f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Jun 2019 12:06:58 +0200 Subject: [PATCH 164/165] updating changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aa135e11..00150c15f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 6.8.1 *(2019-06-27)* +---------------------------- + + * Improved Search on the main screen, allow using it for searching all files, not folders + * Added Print functionality at fullscreen images + * Fixed a glitch at PNGs getting deleted after rotating + * Other stability, translation and performance improvements + Version 6.8.0 *(2019-06-21)* ---------------------------- From 9b76168a73ae0f79e7facc6b52a1ebefd3164e55 Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Fri, 28 Jun 2019 19:34:56 +0800 Subject: [PATCH 165/165] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 6646a770e..0c557e7a4 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -28,7 +28,7 @@ 強制直向 強制橫向 使用預設方向 - 修復拍照日期數值 + 修復拍攝日期數值 修復中… 日期修復成功 分享調整大小的版本 @@ -115,10 +115,10 @@ 隨機順序 反向播放 投影片循環 - Animation - None - Fade - Slide + 動畫 + + 漸變 + 滑動 投影片結束 找不到投影片的媒體檔案 @@ -220,9 +220,9 @@ 我可以用這程式裁減圖片嗎? 是的,你能夠在編輯器內拉動圖片角落來裁剪圖片。要進入編輯器,你可以長按圖片縮圖然後選擇[編輯],或是在全螢幕檢視下選擇[編輯]。 我可以歸類媒體檔案的縮圖嗎? - 當然,只要在縮圖瀏覽中使用[歸類]選單項目就可以了。你能依多種條件歸類檔案,包含拍照日期。如果你使用了[資料夾內容全部顯示]功能,你還能以資料夾來歸類。 - 依拍照日期排序似乎沒正確運作,我該如何修復? - 那很可能是由於檔案從某處複製過來所造成的。你可以選擇檔案縮圖,然後選擇\"修復拍照日期數值\"來進行修復。 + 當然,只要在縮圖瀏覽中使用[歸類]選單項目就可以了。你能依多種條件歸類檔案,包含拍攝日期。如果你使用了[資料夾內容全部顯示]功能,你還能以資料夾來歸類。 + 依拍攝日期排序似乎沒正確運作,我該如何修復? + 那很可能是由於檔案從某處複製過來所造成的。你可以選擇檔案縮圖,然後選擇\"修復拍攝日期數值\"來進行修復。 我在圖片上看到一些色彩條紋。我如何提升品質? 目前顯示圖片的處理方法,在大部分情況下都能正常運行。但如果你想要更好的圖片品質,你可以在程式設定中[可深度縮放的圖片]部分,啟用[以最高品質顯示圖片]。 我隱藏了一個檔案/資料夾。我如何取消隱藏?