diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d63e5505..e7657fb9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,25 @@ Changelog ========== +Version 2.10.10 *(2017-06-07)* +---------------------------- + + * Some crashfixes + +Version 2.10.9 *(2017-06-06)* +---------------------------- + + * Allow setting custom folder covers + * Properly handle manually included folders + * Improve the performance at opening fullscreen media + +Version 2.10.8 *(2017-06-02)* +---------------------------- + + * Always properly show hidden files from third party intents + * Properly handle Crop intent used for example at selecting contact photos + * Couple smaller fixes and crashfixes + Version 2.10.7 *(2017-05-29)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index 786bb1d31..cd03e6b5f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.simplemobiletools.gallery" minSdkVersion 16 targetSdkVersion 23 - versionCode 106 - versionName "2.10.7" + versionCode 109 + versionName "2.10.10" } signingConfigs { @@ -32,7 +32,7 @@ android { } dependencies { - compile 'com.simplemobiletools:commons:2.19.0' + compile 'com.simplemobiletools:commons:2.20.1' compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0' compile 'com.theartofdev.edmodo:android-image-cropper:2.4.0' compile 'com.bignerdranch.android:recyclerview-multiselect:0.2' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index a9c0f371b..34de0fb81 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,2 +1,5 @@ -keep class com.simplemobiletools.** { *; } -dontwarn com.simplemobiletools.** + +-renamesourcefileattribute SourceFile +-keepattributes SourceFile, LineNumberTable diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f3cf094b3..8c640a923 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -145,6 +145,18 @@ + + + + + + + + + + + + () private var mPath = "" private var mDirectory = "" @@ -51,6 +51,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private var mShowAll = false private var mRotationDegrees = 0f private var mLastHandledOrientation = 0 + private var mPrevHashcode = 0 companion object { var screenWidth = 0 @@ -73,10 +74,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View try { val proj = arrayOf(MediaStore.Images.Media.DATA) cursor = contentResolver.query(uri, proj, null, null, null) - if (cursor != null) { - val dataIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA) - cursor.moveToFirst() - mPath = cursor.getString(dataIndex) + if (cursor?.moveToFirst() == true) { + mPath = cursor.getStringValue(MediaStore.Images.Media.DATA) } } finally { cursor?.close() @@ -92,14 +91,18 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View return } - mMedia = ArrayList() + if (intent.extras?.containsKey(IS_VIEW_INTENT) == true) { + config.temporarilyShowHidden = true + } + showSystemUI() mDirectory = File(mPath).parent title = mPath.getFilenameFromPath() - if (MediaActivity.mMedia.isNotEmpty()) - gotMedia(MediaActivity.mMedia) + if (mMedia.isNotEmpty()) { + gotMedia(mMedia) + } reloadViewPager() scanPath(mPath) {} @@ -109,6 +112,13 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View view_pager.background = ColorDrawable(Color.BLACK) } + override fun onDestroy() { + super.onDestroy() + if (intent.extras?.containsKey(IS_VIEW_INTENT) == true) { + config.temporarilyShowHidden = false + } + } + private fun setupOrientationEventListener() { mOrientationEventListener = object : OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { override fun onOrientationChanged(orientation: Int) { @@ -424,10 +434,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun gotMedia(media: ArrayList) { - if (isDirEmpty(media) || mMedia.hashCode() == media.hashCode()) { + if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) { return } + mPrevHashcode = media.hashCode() mMedia = media if (mPos == -1) { mPos = getProperPosition() @@ -493,12 +504,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun updateActionbarTitle() { runOnUiThread { - title = mMedia[mPos].path.getFilenameFromPath() + if (mPos < mMedia.size) { + title = mMedia[mPos].path.getFilenameFromPath() + } } } private fun getCurrentMedium(): Medium? { - return if (mMedia.isEmpty()) + return if (mMedia.isEmpty() || mPos == -1) null else mMedia[Math.min(mPos, mMedia.size - 1)] diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt index 4a5876a18..7b76fb7a9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt @@ -10,6 +10,7 @@ import com.bignerdranch.android.multiselector.ModalMultiSelectorCallback import com.bignerdranch.android.multiselector.MultiSelector import com.bignerdranch.android.multiselector.SwappingHolder import com.bumptech.glide.Glide +import com.google.gson.Gson import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog @@ -20,7 +21,9 @@ import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.activities.SimpleActivity import com.simplemobiletools.gallery.dialogs.ExcludeFolderDialog +import com.simplemobiletools.gallery.dialogs.PickMediumDialog import com.simplemobiletools.gallery.extensions.* +import com.simplemobiletools.gallery.models.AlbumCover import com.simplemobiletools.gallery.models.Directory import kotlinx.android.synthetic.main.directory_item.view.* import kotlinx.android.synthetic.main.directory_tmb.view.* @@ -111,6 +114,8 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList copyMoveTo(false) R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() + R.id.cab_select_photo -> changeAlbumCover(false) + R.id.cab_use_default -> changeAlbumCover(true) else -> return false } return true @@ -125,6 +130,7 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList() if (selectedPositions.isEmpty()) return + val files = ArrayList() selectedPositions.forEach { val dir = File(dirs[it].path) files.addAll(dir.listFiles().filter { it.isFile && it.isImageVideoGif() }) @@ -320,6 +326,31 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList) { + activity.config.albumCovers = Gson().toJson(albumCovers) + actMode?.finish() + listener?.refreshItems() + } + private fun getSelectedPaths(): HashSet { val paths = HashSet(selectedPositions.size) selectedPositions.forEach { paths.add(dirs[it].path) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetDirectoriesAsynctask.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetDirectoriesAsynctask.kt index 2ba94ceee..539e78e1e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetDirectoriesAsynctask.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetDirectoriesAsynctask.kt @@ -35,6 +35,7 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va } private fun groupDirectories(media: ArrayList): Map { + val albumCovers = config.parseAlbumCovers() val hidden = context.resources.getString(R.string.hidden) val directories = LinkedHashMap() for ((name, path, isVideo, dateModified, dateTaken, size) in media) { @@ -62,7 +63,14 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va continue } - val directory = Directory(parentDir, path, dirName, 1, dateModified, dateTaken, size) + var thumbnail = path + albumCovers.forEach { + if (it.path == parentDir && File(it.tmb).exists()) { + thumbnail = it.tmb + } + } + + val directory = Directory(parentDir, thumbnail, dirName, 1, dateModified, dateTaken, size) directories.put(parentDir, directory) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickAlbumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickAlbumDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt index 9318120bb..cf384829e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickAlbumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt @@ -13,15 +13,15 @@ import com.simplemobiletools.gallery.asynctasks.GetDirectoriesAsynctask import com.simplemobiletools.gallery.extensions.config import com.simplemobiletools.gallery.extensions.getCachedDirectories import com.simplemobiletools.gallery.models.Directory -import kotlinx.android.synthetic.main.dialog_album_picker.view.* +import kotlinx.android.synthetic.main.dialog_directory_picker.view.* -class PickAlbumDialog(val activity: SimpleActivity, val sourcePath: String, val callback: (path: String) -> Unit) { +class PickDirectoryDialog(val activity: SimpleActivity, val sourcePath: String, val callback: (path: String) -> Unit) { var dialog: AlertDialog var directoriesGrid: RecyclerView var shownDirectories: ArrayList = ArrayList() init { - val view = LayoutInflater.from(activity).inflate(R.layout.dialog_album_picker, null) + val view = LayoutInflater.from(activity).inflate(R.layout.dialog_directory_picker, null) directoriesGrid = view.directories_grid dialog = AlertDialog.Builder(activity) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt new file mode 100644 index 000000000..8d2bacf2b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -0,0 +1,56 @@ +package com.simplemobiletools.gallery.dialogs + +import android.support.v7.app.AlertDialog +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.activities.SimpleActivity +import com.simplemobiletools.gallery.adapters.MediaAdapter +import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.models.Medium +import kotlinx.android.synthetic.main.dialog_medium_picker.view.* + +class PickMediumDialog(val activity: SimpleActivity, val path: String, val callback: (path: String) -> Unit) { + var dialog: AlertDialog + var mediaGrid: RecyclerView + var shownMedia: ArrayList = ArrayList() + + init { + val view = LayoutInflater.from(activity).inflate(R.layout.dialog_medium_picker, null) + mediaGrid = view.media_grid + + dialog = AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok, null) + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this, R.string.select_photo) + + val token = object : TypeToken>() {}.type + val media = Gson().fromJson>(activity.config.loadFolderMedia(path), token) ?: ArrayList(1) + + if (media.isNotEmpty()) { + gotMedia(media) + } + + GetMediaAsynctask(activity, path, false, true, false) { + gotMedia(it) + }.execute() + } + } + + private fun gotMedia(media: ArrayList) { + if (media.hashCode() == shownMedia.hashCode()) + return + + shownMedia = media + val adapter = MediaAdapter(activity, media, null) { + callback(it.path) + dialog.dismiss() + } + mediaGrid.adapter = adapter + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/context.kt index 5c781f4df..b8f37cf99 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/context.kt @@ -57,8 +57,12 @@ fun Context.getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boo val selection = if (curPath.isEmpty()) null else "(${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?)" val selectionArgs = if (curPath.isEmpty()) null else arrayOf("$curPath/%", "$curPath/%/%") - val cur = contentResolver.query(uri, projection, selection, selectionArgs, getSortingForFolder(curPath)) - return parseCursor(this, cur, isPickImage, isPickVideo, curPath) + try { + val cur = contentResolver.query(uri, projection, selection, selectionArgs, getSortingForFolder(curPath)) + return parseCursor(this, cur, isPickImage, isPickVideo, curPath) + } catch (e: Exception) { + return ArrayList() + } } private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isPickVideo: Boolean, curPath: String): ArrayList { @@ -66,23 +70,15 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP val config = context.config val showMedia = config.showMedia val showHidden = config.shouldShowHidden + val excludedFolders = config.excludedFolders + val noMediaFolders = context.getNoMediaFolders() cur.use { cur -> if (cur.moveToFirst()) { - var filename: String - var path: String - var dateTaken: Long - var dateModified: Long - var size: Long - var isImage: Boolean - var isVideo: Boolean - val excludedFolders = config.excludedFolders - val noMediaFolders = context.getNoMediaFolders() - do { try { - path = cur.getStringValue(MediaStore.Images.Media.DATA) - size = cur.getLongValue(MediaStore.Images.Media.SIZE) + val path = cur.getStringValue(MediaStore.Images.Media.DATA) + var size = cur.getLongValue(MediaStore.Images.Media.SIZE) if (size == 0L) { size = File(path).length() } @@ -91,12 +87,12 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP continue } - filename = cur.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) ?: "" + var filename = cur.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) ?: "" if (filename.isEmpty()) filename = path.getFilenameFromPath() - isImage = filename.isImageFast() || filename.isGif() - isVideo = if (isImage) false else filename.isVideoFast() + val isImage = filename.isImageFast() || filename.isGif() + val isVideo = if (isImage) false else filename.isVideoFast() if (!isImage && !isVideo) continue @@ -130,8 +126,8 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP } if (!isExcluded) { - dateTaken = cur.getLongValue(MediaStore.Images.Media.DATE_TAKEN) - dateModified = cur.getIntValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L + val dateTaken = cur.getLongValue(MediaStore.Images.Media.DATE_TAKEN) + val dateModified = cur.getIntValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L val medium = Medium(filename, path, isVideo, dateModified, dateTaken, size) curMedia.add(medium) @@ -143,6 +139,38 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP } } + if (curPath.isEmpty()) { + config.includedFolders.mapNotNull { File(it).listFiles() }.forEach { + for (file in it) { + val size = file.length() + if (size <= 0L) { + continue + } + + val filename = file.name + val isImage = filename.isImageFast() || filename.isGif() + val isVideo = if (isImage) false else filename.isVideoFast() + + if (!isImage && !isVideo) + continue + + if (isVideo && (isPickImage || showMedia == IMAGES)) + continue + + if (isImage && (isPickVideo || showMedia == VIDEOS)) + continue + + val dateTaken = file.lastModified() + val dateModified = file.lastModified() + + val medium = Medium(filename, file.absolutePath, isVideo, dateModified, dateTaken, size) + val isAlreadyAdded = curMedia.any { it.path == file.absolutePath } + if (!isAlreadyAdded) + curMedia.add(medium) + } + } + } + Medium.sorting = config.getFileSorting(curPath) curMedia.sort() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt index 3f894e8e8..5359bcc67 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -302,7 +302,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee if (mSurfaceHolder == null) mSurfaceHolder = mSurfaceView!!.holder - if (activity == null || !mSurfaceHolder!!.surface.isValid) + if (activity == null || mSurfaceHolder == null || !mSurfaceHolder!!.surface.isValid) return initMediaPlayer() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt index e84570f46..424721c88 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -1,10 +1,13 @@ package com.simplemobiletools.gallery.helpers import android.content.Context +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.helpers.BaseConfig import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED import com.simplemobiletools.commons.helpers.SORT_DESCENDING import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.models.AlbumCover import java.util.* class Config(context: Context) : BaseConfig(context) { @@ -167,4 +170,13 @@ class Config(context: Context) : BaseConfig(context) { var directories: String get() = prefs.getString(DIRECTORIES, "") set(directories) = prefs.edit().putString(DIRECTORIES, directories).apply() + + var albumCovers: String + get() = prefs.getString(ALBUM_COVERS, "") + set(albumCovers) = prefs.edit().putString(ALBUM_COVERS, albumCovers).apply() + + fun parseAlbumCovers(): ArrayList { + val listType = object : TypeToken>() {}.type + return Gson().fromJson>(albumCovers, listType) ?: ArrayList(1) + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt index 5ebaa98a6..21dc7c6de 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -17,12 +17,13 @@ val DARK_BACKGROUND = "dark_background" val PINNED_FOLDERS = "pinned_folders" val DIR_COLUMN_CNT = "dir_column_cnt" val MEDIA_COLUMN_CNT = "media_column_cnt" -val SHOW_ALL = "show_all" // display images and videos from all folders together +val SHOW_ALL = "show_all" // display images and videos from all folders together val SHOW_MEDIA = "show_media" val SAVE_FOLDER_PREFIX = "folder2_" val HIDE_FOLDER_TOOLTIP_SHOWN = "hide_folder_tooltip_shown" val EXCLUDED_FOLDERS = "excluded_folders" val INCLUDED_FOLDERS = "included_folders" +val ALBUM_COVERS = "album_covers" val NOMEDIA = ".nomedia" @@ -33,6 +34,7 @@ val GET_VIDEO_INTENT = "get_video_intent" val GET_ANY_INTENT = "get_any_intent" val SET_WALLPAPER_INTENT = "set_wallpaper_intent" val DIRECTORIES = "directories2" +val IS_VIEW_INTENT = "is_view_intent" val REQUEST_EDIT_IMAGE = 1 val REQUEST_SET_WALLPAPER = 2 diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt new file mode 100644 index 000000000..f5937ad08 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt @@ -0,0 +1,3 @@ +package com.simplemobiletools.gallery.models + +data class AlbumCover(val path: String, val tmb: String) diff --git a/app/src/main/res/layout/dialog_album_picker.xml b/app/src/main/res/layout/dialog_directory_picker.xml similarity index 90% rename from app/src/main/res/layout/dialog_album_picker.xml rename to app/src/main/res/layout/dialog_directory_picker.xml index 079c72fa4..0feb6bf5a 100644 --- a/app/src/main/res/layout/dialog_album_picker.xml +++ b/app/src/main/res/layout/dialog_directory_picker.xml @@ -5,5 +5,6 @@ android:id="@+id/directories_grid" android:layout_width="match_parent" android:layout_height="wrap_content" + android:paddingTop="@dimen/activity_margin" app:layoutManager="android.support.v7.widget.GridLayoutManager" app:spanCount="@integer/directory_columns"/> diff --git a/app/src/main/res/layout/dialog_medium_picker.xml b/app/src/main/res/layout/dialog_medium_picker.xml new file mode 100644 index 000000000..f2aebbd17 --- /dev/null +++ b/app/src/main/res/layout/dialog_medium_picker.xml @@ -0,0 +1,10 @@ + + diff --git a/app/src/main/res/menu/cab_directories.xml b/app/src/main/res/menu/cab_directories.xml index 5900ba1e9..2267e4c6e 100644 --- a/app/src/main/res/menu/cab_directories.xml +++ b/app/src/main/res/menu/cab_directories.xml @@ -24,12 +24,12 @@ + + + + + + Zvýšit počet sloupců Snížit počet sloupců Dočasně zobrazit skryté + Change cover image + Select photo + Use default Tato funkce skryje složku, včetně podsložek, přidáním souboru \'.nomedia\'. Zobrazíte je zvolením možnosti \'Zobrazit skryté složky\' v nastavení. Pokračovat? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6740ea0d9..5e8f7e578 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -20,6 +20,9 @@ Kacheln verkleinern Kacheln vergrößern Verstecktes temporär zeigen + Change cover image + Select photo + Use default Diese Funktion versteckt ausgewählte Ordner (auch für andere Apps), indem dort im Dateisystem eine \'.nomedia\'-Datei abgelegt wird. Dadurch werden auch deren Unterordner versteckt. Solche Ordner werden nur gezeigt, wenn die Einstellung \'Versteckte Ordner zeigen\' aktiv ist (auch andere Apps bieten üblicherweise eine solche Option). Fortfahren? @@ -95,6 +98,7 @@ Gerätedrehung Seitenverhältnis Schwarzer Hintergrund im Vollbild + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 2f5f40426..feea9961a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -20,6 +20,9 @@ Aumentar el número de columnas Reducir el número de columnas Mostrar ocultos temporalmente + Change cover image + Select photo + Use default Esta función oculta la carpeta agregando un archivo \'.nomedia\' en ella, y ocultará también las subcarpetas. Puede mostrarlas cambiando la opción \'Mostrar carpetas ocultas\' en los Ajustes. ¿Continuar? @@ -95,6 +98,7 @@ Rotación del dispositivo Relación de aspecto Utilizar siempre fondo oscuro en pantalla completa + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 14b972ee6..e98176869 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -20,6 +20,9 @@ Augmenter le nombre de colonnes Réduire le nombre de colonnes Afficher temporairement les fichiers masqués + Change cover image + Select photo + Use default Cette option masque le dossier en ajoutant un fichier \'.nomedia\' à l\'intérieur, cela masquera aussi tous les sous-dossiers. Vous pouvez les voir en modifiant l\'option \'Afficher les dossiers cachés\' dans les Paramètres. Continuer ? @@ -95,6 +98,7 @@ Rotation de l\'appareil Ratio d\'aspect Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 06fd2d48e..709a41f0d 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -20,6 +20,9 @@ Increase column count Reduce column count Temporarily show hidden + Change cover image + Select photo + Use default This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index fa72ec622..5087d0362 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -20,6 +20,9 @@ Aumenta numero colonne Riduci numero colonne Mostra temporaneamente nascosti + Change cover image + Select photo + Use default Questa funzione nasconde la cartella aggiungendo un file \'.nomedia\' all\'interno, nasconderà anche tutte le sottocartelle. Puoi vederle attivando l\'opzione \'Mostra cartelle nascoste\' nelle impostazioni. Continuare? @@ -95,6 +98,7 @@ Rotazione dispositivo Proporzioni Sfondo scuro a schermo intero + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1a8f07151..d14c6d20f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -20,6 +20,9 @@ Increase column count Reduce column count Temporarily show hidden + Change cover image + Select photo + Use default This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index f09badda8..e850a9af4 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -20,6 +20,9 @@ Zwiększ liczbę kolumn Zmniejsz liczbę kolumn Temporarily show hidden + Change cover image + Select photo + Use default Ta funkcja ukrywa folder dodając \'. \' Nomedia plik do niego, można tak ukryć wszystkie podfoldery. Można je zobaczyć poprzez przełączanie \'Pokaż ukryte foldery \' opcję w ustawieniach. Kontyntynuj? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 704b2ca4b..5fd798068 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -20,6 +20,9 @@ Aumentar número de colunas Reduzir número de colunas Mostrar pastas ocultas temporariamente + Change cover image + Select photo + Use default 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? @@ -95,6 +98,7 @@ Sensor do aparelho Proporção da mídia Fundo de tela escuro em mídia tela cheia + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index fa5099f3f..89c7bfd08 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -20,6 +20,9 @@ Aumentar número de colunas Reduzir número de colunas Mostrar ocultas temporariamente + Change cover image + Select photo + Use default Esta opção oculta uma pasta com a adição de um ficheiro \'.nomedia\' na pasta, e irá ocultar todas as subpastas existentes. Pode ver as pastas com a opção \'Mostrar pastas ocultas\'. Continuar? @@ -95,6 +98,7 @@ Rotação do dispositivo Proporção Usar sempre um fundo escuro se em ecrã completo + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 70e652789..bd5fb9684 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -20,6 +20,9 @@ Добавить 1 столбец Убрать 1 столбец Временный показ скрытых + Change cover image + Select photo + Use default Эта опция скрывает папку, добавляя в неё файл \'.nomedia\'; будут скрыты все подпапки. Можно показывать их, переключая \'Показать скрытые папки\' в настройках. Продолжить? @@ -95,6 +98,7 @@ Поворот устройства Соотношение сторон Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 08cdcd80c..cf7f93f41 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -20,6 +20,9 @@ Zvýšiť počet stĺpcov Znížiť počet stĺpcov Dočasne zobraziť skryté + Zmeniť obal albumu + Zvoliť foto + Použiť predvolený Táto funkcia skryje priečinok pridaním súboru \'.nomedia\', skryté budú aj podpriečinky. Môžete ich vidieť zvolením možnosti \'Zobraziť skryté priečinky\' v nastaveniach. Pokračovať? @@ -95,6 +98,7 @@ Otočenia zariadenia Pomeru strán Tmavé pozadie pri médiách na celú obrazovku + Prehliadať miniatúry vodorovne diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 844ac7150..a0c67d09e 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -20,6 +20,9 @@ Increase column count Reduce column count Temporarily show hidden + Change cover image + Select photo + Use default This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d3e441d8a..61ef91e0d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -20,6 +20,9 @@ Sütun sayısını artır Sütun sayısını azalt Geçici olarak gizli göster + Change cover image + Select photo + Use default Bu işlev, klasöre\'.medya yok\'dosyası ekleyerek gizler; tüm alt klasörleri de gizler. Bunları Ayarlar\'da\'Gizli klasörleri göster\'seçeneğine basarak görebilirsiniz. Devam et? @@ -95,6 +98,7 @@ Cihaz döndürme En-boy oranı Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index aa0150eb8..42deb7bcc 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,6 +20,9 @@ 增加一行 减少一行 显示/隐藏缓存内容 + Change cover image + Select photo + Use default 通过添加一个 \'.nomedia\' 文件到目录下,该目录包括子目录下的所有媒体都不会被扫描。 你可以通过设置中的 \'Show hidden folders\' 选项改变设置, 继续? @@ -95,6 +98,7 @@ 设备方向 根据长宽比 全屏时黑色背景 + Scroll thumbnails horizontally diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a1f2f43c8..fdd431271 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -20,6 +20,9 @@ Increase column count Reduce column count Temporarily show hidden + Change cover image + Select photo + Use default This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 205206c16..d1487c62f 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -2,6 +2,7 @@ + Allow setting custom folder covers Allow selecting multiple items by finger dragging\n Added an option to always use black background at fullscreen media diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc650dc22..a65e48784 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,9 @@ Increase column count Reduce column count Temporarily show hidden + Change cover image + Select photo + Use default This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? @@ -95,6 +98,7 @@ Device rotation Aspect ratio Dark background at fullscreen media + Scroll thumbnails horizontally