Merge branch 'master' of github.com:SimpleMobileTools/Simple-Gallery into master

This commit is contained in:
Roland Kister 2020-11-03 22:50:40 +01:00
commit 273ac6bd01
67 changed files with 311 additions and 469 deletions

View file

@ -1,6 +1,26 @@
Changelog
==========
Version 6.17.1 *(2020-11-03)*
----------------------------
* Reverting to the previous UI of the main screen, but keep rounded corners at list view
* Some UI and stability improvements
Version 6.17.0 *(2020-11-02)*
----------------------------
* Redesigning the main folders screen, try making it moderner (!)
* Fix some glitches with deep zoomable fullscreen images not loading in well
* Couple other UX, stability and translation improvements
Version 6.16.5 *(2020-10-28)*
----------------------------
* Added some hidden folder handling related improvements
* Fixed saving files on the SD card after editing
* Couple other UX, translation and performance improvements
Version 6.16.4 *(2020-10-24)*
----------------------------

View file

@ -17,8 +17,8 @@ android {
applicationId "com.simplemobiletools.gallery.pro"
minSdkVersion 21
targetSdkVersion 29
versionCode 323
versionName "6.16.4"
versionCode 326
versionName "6.17.1"
setProperty("archivesBaseName", "gallery-$versionCode")
vectorDrawables.useSupportLibrary = true
}
@ -77,7 +77,7 @@ android {
}
dependencies {
implementation 'com.simplemobiletools:commons:5.31.8'
implementation 'com.simplemobiletools:commons:5.31.19'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'it.sephiroth.android.exif:library:1.0.1'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'

View file

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.dialogs.NewAppsIconsDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.FileDirItem
@ -156,12 +155,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
finish()
}
}
// notify some users about the Dialer, SMS Messenger and Voice Recorder apps
if (!config.wasMessengerRecorderShown && config.appRunCount > 35) {
NewAppsIconsDialog(this)
config.wasMessengerRecorderShown = true
}
}
override fun onStart() {
@ -644,6 +637,21 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
layoutManager.spanCount = config.dirColumnCnt
}
private fun setupListLayoutManager() {
val layoutManager = directories_grid.layoutManager as MyGridLayoutManager
layoutManager.spanCount = 1
layoutManager.orientation = RecyclerView.VERTICAL
directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
val smallMargin = resources.getDimension(R.dimen.small_margin).toInt()
(directories_grid.layoutParams as RelativeLayout.LayoutParams).apply {
topMargin = smallMargin
bottomMargin = smallMargin
}
mZoomListener = null
}
private fun measureRecyclerViewContent(directories: ArrayList<Directory>) {
directories_grid.onGlobalLayout {
if (config.scrollHorizontally) {
@ -693,21 +701,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
}
}
private fun setupListLayoutManager() {
val layoutManager = directories_grid.layoutManager as MyGridLayoutManager
layoutManager.spanCount = 1
layoutManager.orientation = RecyclerView.VERTICAL
directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
val smallMargin = resources.getDimension(R.dimen.small_margin).toInt()
(directories_grid.layoutParams as RelativeLayout.LayoutParams).apply {
topMargin = smallMargin
bottomMargin = smallMargin
}
mZoomListener = null
}
private fun toggleRecycleBin(show: Boolean) {
config.showRecycleBinAtFolders = show
invalidateOptionsMenu()
@ -913,6 +906,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
val hiddenString = getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders
val noMediaFolders = getNoMediaFoldersSync()
val tempFolderPath = config.tempFolderPath
val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0
val favoritePaths = getFavoritePaths()
@ -947,7 +941,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
}
directory
} else {
createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
}
// we are looping through the already displayed folders looking for changes, do not do anything if nothing changed
@ -1053,7 +1047,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
}
}
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
dirs.add(newDir)
setupAdapter(dirs)

View file

@ -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.VIEW_TYPE_GRID
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.MyGridLayoutManager

View file

@ -15,6 +15,7 @@ import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.dialogs.PickDirectoryDialog
import com.simplemobiletools.gallery.pro.extensions.*
import com.simplemobiletools.gallery.pro.helpers.MyWidgetProvider
import com.simplemobiletools.gallery.pro.helpers.ROUNDED_CORNERS_NONE
import com.simplemobiletools.gallery.pro.models.Directory
import com.simplemobiletools.gallery.pro.models.Widget
import kotlinx.android.synthetic.main.activity_widget_config.*
@ -166,7 +167,7 @@ class WidgetConfigureActivity : SimpleActivity() {
val path = directoryDao.getDirectoryThumbnail(folderPath)
if (path != null) {
runOnUiThread {
loadJpg(path, config_image, config.cropThumbnails)
loadJpg(path, config_image, config.cropThumbnails, ROUNDED_CORNERS_NONE)
}
}
}

View file

@ -15,10 +15,7 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.*
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.FAVORITES
import com.simplemobiletools.commons.helpers.SHOW_ALL_TABS
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.FastScroller
import com.simplemobiletools.commons.views.MyRecyclerView
@ -38,7 +35,6 @@ import kotlinx.android.synthetic.main.directory_item_grid.view.dir_lock
import kotlinx.android.synthetic.main.directory_item_grid.view.dir_name
import kotlinx.android.synthetic.main.directory_item_grid.view.dir_pin
import kotlinx.android.synthetic.main.directory_item_grid.view.dir_thumbnail
import kotlinx.android.synthetic.main.directory_item_grid.view.photo_cnt
import kotlinx.android.synthetic.main.directory_item_list.view.*
import java.io.File
@ -305,7 +301,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
val includedFolders = activity.config.includedFolders
val hidden = activity.getString(R.string.hidden)
dirs.forEach {
it.name = activity.checkAppendingHidden(it.path, hidden, includedFolders)
it.name = activity.checkAppendingHidden(it.path, hidden, includedFolders, ArrayList())
}
listener?.updateDirectories(dirs.toMutableList() as ArrayList)
activity.runOnUiThread {
@ -479,10 +475,10 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
intent.putExtra(DIRECTORY, path)
val shortcut = ShortcutInfo.Builder(activity, path)
.setShortLabel(dir.name)
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
.setShortLabel(dir.name)
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
manager.requestPinShortcut(shortcut, null)
}
@ -687,7 +683,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
dir_lock.applyColorFilter(config.backgroundColor.getContrastColor())
} else {
dir_lock.beGone()
activity.loadImage(thumbnailType, directory.tmb, dir_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
val roundedCorners = if (isListViewType) ROUNDED_CORNERS_SMALL else ROUNDED_CORNERS_NONE
activity.loadImage(thumbnailType, directory.tmb, dir_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, roundedCorners)
}
dir_pin.beVisibleIf(pinnedFolders.contains(directory.path))

View file

@ -19,6 +19,7 @@ import com.simplemobiletools.commons.dialogs.RenameDialog
import com.simplemobiletools.commons.dialogs.RenameItemDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.FAVORITES
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.models.FileDirItem
@ -370,10 +371,10 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
}
val shortcut = ShortcutInfo.Builder(activity, path)
.setShortLabel(path.getFilenameFromPath())
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
.setShortLabel(path.getFilenameFromPath())
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
manager.requestPinShortcut(shortcut, null)
}
@ -541,15 +542,16 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
path = path.getOTGPublicPath(context)
}
val roundedCorners = if (isListViewType) ROUNDED_CORNERS_SMALL else ROUNDED_CORNERS_NONE
if (loadImageInstantly) {
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, rotatedImagePaths)
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, roundedCorners, rotatedImagePaths)
} else {
medium_thumbnail.setImageDrawable(null)
medium_thumbnail.isHorizontalScrolling = scrollHorizontally
delayHandler.postDelayed({
val isVisible = visibleItemPaths.contains(medium.path)
if (isVisible) {
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, rotatedImagePaths)
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, roundedCorners, rotatedImagePaths)
}
}, IMAGE_LOAD_DELAY)
}

View file

@ -5,11 +5,11 @@ import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL
import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_LIST
import kotlinx.android.synthetic.main.dialog_change_view_type.view.*
class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val fromFoldersView: Boolean, val path: String = "", val callback: () -> Unit) {

View file

@ -6,11 +6,11 @@ import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.commons.views.MyGridLayoutManager
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.adapters.DirectoryAdapter
import com.simplemobiletools.gallery.pro.extensions.*
import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.gallery.pro.models.Directory
import kotlinx.android.synthetic.main.dialog_directory_picker.view.*

View file

@ -7,6 +7,7 @@ import com.simplemobiletools.commons.extensions.beGoneIf
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getTimeFormat
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.commons.views.MyGridLayoutManager
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.adapters.MediaAdapter
@ -14,7 +15,6 @@ 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.helpers.SHOW_ALL
import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.gallery.pro.models.Medium
import com.simplemobiletools.gallery.pro.models.ThumbnailItem
import kotlinx.android.synthetic.main.dialog_medium_picker.view.*

View file

@ -3,6 +3,7 @@ package com.simplemobiletools.gallery.pro.extensions
import android.annotation.TargetApi
import android.app.Activity
import android.content.ContentProviderOperation
import android.content.ContentValues
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
@ -13,6 +14,7 @@ import android.media.ExifInterface
import android.net.Uri
import android.os.Build
import android.provider.MediaStore
import android.provider.MediaStore.Files
import android.provider.MediaStore.Images
import android.util.DisplayMetrics
import android.view.View
@ -102,7 +104,8 @@ fun SimpleActivity.launchAbout() {
FAQItem(R.string.faq_15_title, R.string.faq_15_text),
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons),
FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons))
FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons),
FAQItem(R.string.faq_9_title_commons, R.string.faq_9_text_commons))
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
}
@ -147,9 +150,8 @@ fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) {
val fileDocument = getDocumentFile(path)
if (fileDocument?.exists() == true && fileDocument.isDirectory) {
fileDocument.createFile("", NOMEDIA)
applicationContext.scanPathRecursively(file.absolutePath) {
callback()
}
addNoMediaIntoMediaStore(file.absolutePath)
callback()
} else {
toast(R.string.unknown_error_occurred)
callback()
@ -158,7 +160,7 @@ fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) {
} else {
try {
if (file.createNewFile()) {
rescanFolderMedia(file.absolutePath)
addNoMediaIntoMediaStore(file.absolutePath)
} else {
toast(R.string.unknown_error_occurred)
}
@ -169,6 +171,19 @@ fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) {
}
}
fun BaseSimpleActivity.addNoMediaIntoMediaStore(path: String) {
try {
val content = ContentValues().apply {
put(Files.FileColumns.TITLE, NOMEDIA)
put(Files.FileColumns.DATA, path)
put(Files.FileColumns.MEDIA_TYPE, Files.FileColumns.MEDIA_TYPE_NONE)
}
contentResolver.insert(Files.getContentUri("external"), content)
} catch (e: Exception) {
showErrorToast(e)
}
}
fun BaseSimpleActivity.removeNoMedia(path: String, callback: (() -> Unit)? = null) {
val file = File(path, NOMEDIA)
if (!getDoesFilePathExist(file.absolutePath)) {

View file

@ -14,6 +14,8 @@ 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.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestOptions
import com.simplemobiletools.commons.extensions.*
@ -304,35 +306,40 @@ fun Context.updateSubfolderCounts(children: ArrayList<Directory>, parentDirs: Ar
fun Context.getNoMediaFolders(callback: (folders: ArrayList<String>) -> Unit) {
ensureBackgroundThread {
val folders = ArrayList<String>()
val uri = Files.getContentUri("external")
val projection = arrayOf(Files.FileColumns.DATA)
val selection = "${Files.FileColumns.MEDIA_TYPE} = ? AND ${Files.FileColumns.TITLE} LIKE ?"
val selectionArgs = arrayOf(Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
val sortOrder = "${Files.FileColumns.DATE_MODIFIED} DESC"
val OTGPath = config.OTGPath
var cursor: Cursor? = null
try {
cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
if (cursor?.moveToFirst() == true) {
do {
val path = cursor.getStringValue(Files.FileColumns.DATA) ?: continue
val noMediaFile = File(path)
if (getDoesFilePathExist(noMediaFile.absolutePath, OTGPath) && noMediaFile.name == NOMEDIA) {
folders.add("${noMediaFile.parent}/")
}
} while (cursor.moveToNext())
}
} finally {
cursor?.close()
}
callback(folders)
callback(getNoMediaFoldersSync())
}
}
fun Context.getNoMediaFoldersSync(): ArrayList<String> {
val folders = ArrayList<String>()
val uri = Files.getContentUri("external")
val projection = arrayOf(Files.FileColumns.DATA)
val selection = "${Files.FileColumns.MEDIA_TYPE} = ? AND ${Files.FileColumns.TITLE} LIKE ?"
val selectionArgs = arrayOf(Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
val sortOrder = "${Files.FileColumns.DATE_MODIFIED} DESC"
val OTGPath = config.OTGPath
var cursor: Cursor? = null
try {
cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
if (cursor?.moveToFirst() == true) {
do {
val path = cursor.getStringValue(Files.FileColumns.DATA) ?: continue
val noMediaFile = File(path)
if (getDoesFilePathExist(noMediaFile.absolutePath, OTGPath) && noMediaFile.name == NOMEDIA) {
folders.add(noMediaFile.parent)
}
} while (cursor.moveToNext())
}
} catch (ignored: Exception) {
} finally {
cursor?.close()
}
return folders
}
fun Context.rescanFolderMedia(path: String) {
ensureBackgroundThread {
rescanFolderMediaSync(path)
@ -370,9 +377,9 @@ fun Context.storeDirectoryItems(items: ArrayList<Directory>) {
}
}
fun Context.checkAppendingHidden(path: String, hidden: String, includedFolders: MutableSet<String>): String {
fun Context.checkAppendingHidden(path: String, hidden: String, includedFolders: MutableSet<String>, noMediaFolders: ArrayList<String>): String {
val dirName = getFolderNameFromPath(path)
return if (path.doesThisOrParentHaveNoMedia() && !path.isThisOrParentIncluded(includedFolders)) {
return if (path.doesThisOrParentHaveNoMedia(noMediaFolders) && !path.isThisOrParentIncluded(includedFolders)) {
"$dirName $hidden"
} else {
dirName
@ -391,17 +398,17 @@ fun Context.getFolderNameFromPath(path: String): String {
}
fun Context.loadImage(type: Int, path: String, target: MySquareImageView, horizontalScroll: Boolean, animateGifs: Boolean, cropThumbnails: Boolean,
skipMemoryCacheAtPaths: ArrayList<String>? = null) {
roundCorners: Int, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
target.isHorizontalScrolling = horizontalScroll
if (type == TYPE_IMAGES || type == TYPE_VIDEOS || type == TYPE_RAWS || type == TYPE_PORTRAITS) {
if (type == TYPE_IMAGES && path.isPng()) {
loadPng(path, target, cropThumbnails, skipMemoryCacheAtPaths)
loadPng(path, target, cropThumbnails, roundCorners, skipMemoryCacheAtPaths)
} else {
loadJpg(path, target, cropThumbnails, skipMemoryCacheAtPaths)
loadJpg(path, target, cropThumbnails, roundCorners, skipMemoryCacheAtPaths)
}
} else if (type == TYPE_GIFS) {
if (!animateGifs) {
loadStaticGIF(path, target, cropThumbnails, skipMemoryCacheAtPaths)
loadStaticGIF(path, target, cropThumbnails, roundCorners, skipMemoryCacheAtPaths)
return
}
@ -412,12 +419,12 @@ fun Context.loadImage(type: Int, path: String, target: MySquareImageView, horizo
target.scaleType = if (cropThumbnails) ImageView.ScaleType.CENTER_CROP else ImageView.ScaleType.FIT_CENTER
} catch (e: Exception) {
loadStaticGIF(path, target, cropThumbnails, skipMemoryCacheAtPaths)
loadStaticGIF(path, target, cropThumbnails, roundCorners, skipMemoryCacheAtPaths)
} catch (e: OutOfMemoryError) {
loadStaticGIF(path, target, cropThumbnails, skipMemoryCacheAtPaths)
loadStaticGIF(path, target, cropThumbnails, roundCorners, skipMemoryCacheAtPaths)
}
} else if (type == TYPE_SVGS) {
loadSVG(path, target, cropThumbnails)
loadSVG(path, target, cropThumbnails, roundCorners)
}
}
@ -442,7 +449,7 @@ fun Context.getPathLocation(path: String): Int {
}
}
fun Context.loadPng(path: String, target: MySquareImageView, cropThumbnails: Boolean, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
fun Context.loadPng(path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
val options = RequestOptions()
.signature(path.getFileSignature())
.skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true)
@ -450,57 +457,83 @@ fun Context.loadPng(path: String, target: MySquareImageView, cropThumbnails: Boo
.priority(Priority.LOW)
.format(DecodeFormat.PREFER_ARGB_8888)
val builder = Glide.with(applicationContext)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
var builder = Glide.with(applicationContext)
.asBitmap()
.load(path)
.apply(options)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
builder.apply(options).into(target)
if (roundCorners != ROUNDED_CORNERS_NONE) {
val cornerSize = if (roundCorners == ROUNDED_CORNERS_SMALL) R.dimen.rounded_corner_radius_small else R.dimen.rounded_corner_radius_big
val cornerRadius = resources.getDimension(cornerSize).toInt()
builder = builder.transform(CenterCrop(), RoundedCorners(cornerRadius))
}
builder.into(target)
}
fun Context.loadJpg(path: String, target: MySquareImageView, cropThumbnails: Boolean, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
fun Context.loadJpg(path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
val options = RequestOptions()
.signature(path.getFileSignature())
.skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true)
.priority(Priority.LOW)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
val builder = Glide.with(applicationContext)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
var builder = Glide.with(applicationContext)
.load(path)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
builder.apply(options)
.apply(options)
.transition(DrawableTransitionOptions.withCrossFade())
.into(target)
if (roundCorners != ROUNDED_CORNERS_NONE) {
val cornerSize = if (roundCorners == ROUNDED_CORNERS_SMALL) R.dimen.rounded_corner_radius_small else R.dimen.rounded_corner_radius_big
val cornerRadius = resources.getDimension(cornerSize).toInt()
builder = builder.transform(CenterCrop(), RoundedCorners(cornerRadius))
}
builder.into(target)
}
fun Context.loadStaticGIF(path: String, target: MySquareImageView, cropThumbnails: Boolean, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
fun Context.loadStaticGIF(path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int, skipMemoryCacheAtPaths: ArrayList<String>? = null) {
val options = RequestOptions()
.signature(path.getFileSignature())
.skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true)
.priority(Priority.LOW)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
val builder = Glide.with(applicationContext)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
var builder = Glide.with(applicationContext)
.asBitmap() // make sure the GIF wont animate
.load(path)
.apply(options)
if (cropThumbnails) options.centerCrop() else options.fitCenter()
builder.apply(options)
.into(target)
if (roundCorners != ROUNDED_CORNERS_NONE) {
val cornerSize = if (roundCorners == ROUNDED_CORNERS_SMALL) R.dimen.rounded_corner_radius_small else R.dimen.rounded_corner_radius_big
val cornerRadius = resources.getDimension(cornerSize).toInt()
builder = builder.transform(CenterCrop(), RoundedCorners(cornerRadius))
}
builder.into(target)
}
fun Context.loadSVG(path: String, target: MySquareImageView, cropThumbnails: Boolean) {
fun Context.loadSVG(path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int) {
target.scaleType = if (cropThumbnails) ImageView.ScaleType.CENTER_CROP else ImageView.ScaleType.FIT_CENTER
val options = RequestOptions().signature(path.getFileSignature())
Glide.with(applicationContext)
var builder = Glide.with(applicationContext)
.`as`(PictureDrawable::class.java)
.listener(SvgSoftwareLayerSetter())
.load(path)
.apply(options)
.transition(DrawableTransitionOptions.withCrossFade())
.into(target)
if (roundCorners != ROUNDED_CORNERS_NONE) {
val cornerSize = if (roundCorners == ROUNDED_CORNERS_SMALL) R.dimen.rounded_corner_radius_small else R.dimen.rounded_corner_radius_big
val cornerRadius = resources.getDimension(cornerSize).toInt()
builder = builder.transform(CenterCrop(), RoundedCorners(cornerRadius))
}
builder.into(target)
}
fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, forceShowHidden: Boolean = false, callback: (ArrayList<Directory>) -> Unit) {
@ -519,10 +552,11 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly:
val excludedPaths = config.excludedFolders
val includedPaths = config.includedFolders
val folderNomediaStatuses = HashMap<String, Boolean>()
val noMediaFolders = getNoMediaFoldersSync()
val folderNoMediaStatuses = HashMap<String, Boolean>()
var filteredDirectories = directories.filter {
it.path.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden, folderNomediaStatuses) { path, hasNoMedia ->
folderNomediaStatuses[path] = hasNoMedia
it.path.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden, folderNoMediaStatuses, noMediaFolders) { path, hasNoMedia ->
folderNoMediaStatuses[path] = hasNoMedia
}
} as ArrayList<Directory>
val filterMedia = config.filterMedia
@ -542,7 +576,7 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly:
val hiddenString = resources.getString(R.string.hidden)
filteredDirectories.forEach {
it.name = if (it.path.doesThisOrParentHaveNoMedia() && !it.path.isThisOrParentIncluded(includedPaths)) {
it.name = if (it.path.doesThisOrParentHaveNoMedia(noMediaFolders) && !it.path.isThisOrParentIncluded(includedPaths)) {
"${it.name.removeSuffix(hiddenString).trim()} $hiddenString"
} else {
it.name.removeSuffix(hiddenString).trim()
@ -808,7 +842,7 @@ fun Context.addPathToDB(path: String) {
}
fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
includedFolders: MutableSet<String>, getProperFileSize: Boolean): Directory {
includedFolders: MutableSet<String>, getProperFileSize: Boolean, noMediaFolders: ArrayList<String>): Directory {
val OTGPath = config.OTGPath
val grouped = MediaFetcher(this).groupMedia(curMedia, path)
var thumbnail: String? = null
@ -832,7 +866,7 @@ fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>,
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 dirName = checkAppendingHidden(path, hiddenString, includedFolders, noMediaFolders)
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
@ -874,6 +908,7 @@ fun Context.updateDirectoryPath(path: String) {
val hiddenString = getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders
val noMediaFolders = getNoMediaFoldersSync()
val sorting = config.getFolderSorting(path)
val grouping = config.getFolderGrouping(path)
@ -894,7 +929,7 @@ fun Context.updateDirectoryPath(path: String) {
val favoritePaths = getFavoritePaths()
val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperLastModified, getProperFileSize,
favoritePaths, false, lastModifieds, dateTakens)
val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize)
val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
updateDBDirectory(directory)
}

View file

@ -11,7 +11,8 @@ fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedP
// cache which folders contain .nomedia files to avoid checking them over and over again
fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean,
folderNomediaStatuses: HashMap<String, Boolean>, callback: (path: String, hasNoMedia: Boolean) -> Unit): Boolean {
folderNoMediaStatuses: HashMap<String, Boolean>, noMediaFolders: ArrayList<String> = ArrayList(),
callback: (path: String, hasNoMedia: Boolean) -> Unit): Boolean {
if (isEmpty()) {
return false
}
@ -36,7 +37,7 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
val containsNoMedia = if (showHidden) {
false
} else {
File(this, NOMEDIA).exists()
noMediaFolders.contains(this) || File(this, NOMEDIA).exists()
}
return if (!showHidden && containsNoMedia) {
@ -54,13 +55,13 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
for (i in 0 until count { it == '/' } - 1) {
curPath = curPath.substringBeforeLast('/')
val pathToCheck = "$curPath/${NOMEDIA}"
if (folderNomediaStatuses.contains(pathToCheck)) {
if (folderNomediaStatuses[pathToCheck] == true) {
if (folderNoMediaStatuses.contains(pathToCheck)) {
if (folderNoMediaStatuses[pathToCheck] == true) {
containsNoMediaOrDot = true
break
}
} else {
val noMediaExists = File(pathToCheck).exists()
val noMediaExists = noMediaFolders.contains(pathToCheck) || File(pathToCheck).exists()
callback(pathToCheck, noMediaExists)
if (noMediaExists) {
containsNoMediaOrDot = true

View file

@ -8,6 +8,7 @@ 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.commons.helpers.VIEW_TYPE_GRID
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.models.AlbumCover
import java.util.*
@ -409,8 +410,10 @@ class Config(context: Context) : BaseConfig(context) {
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).absolutePath,
"${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).absolutePath}/Screenshots",
"internalStoragePath/WhatsApp/Media/WhatsApp Images",
"internalStoragePath/WhatsApp/Media/WhatsApp Video"
"$internalStoragePath/WhatsApp/Media/WhatsApp Images",
"$internalStoragePath/WhatsApp/Media/WhatsApp Images/Sent",
"$internalStoragePath/WhatsApp/Media/WhatsApp Video",
"$internalStoragePath/WhatsApp/Media/WhatsApp Video/Sent",
)
var showRecycleBinAtFolders: Boolean

View file

@ -145,10 +145,6 @@ const val PRIORITY_SPEED = 0
const val PRIORITY_COMPROMISE = 1
const val PRIORITY_VALIDITY = 2
// view types
const val VIEW_TYPE_GRID = 1
const val VIEW_TYPE_LIST = 2
// extended details values
const val EXT_NAME = 1
const val EXT_PATH = 2
@ -225,3 +221,7 @@ const val LOW_TILE_DPI = 160
const val NORMAL_TILE_DPI = 220
const val WEIRD_TILE_DPI = 240
const val HIGH_TILE_DPI = 280
const val ROUNDED_CORNERS_NONE = 1
const val ROUNDED_CORNERS_SMALL = 2
const val ROUNDED_CORNERS_BIG = 3

View file

@ -82,8 +82,9 @@ class MediaFetcher(val context: Context) {
}
}
val noMediaFolders = context.getNoMediaFoldersSync()
distinctPaths.filter {
it.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden, folderNomediaStatuses) { path, hasNoMedia ->
it.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden, folderNomediaStatuses, noMediaFolders) { path, hasNoMedia ->
folderNomediaStatuses[path] = hasNoMedia
}
}.toMutableList() as ArrayList<String>

View file

@ -20,7 +20,7 @@ class MyGlideImageDecoder(val degrees: Int, val signature: ObjectKey) : ImageDec
val builder = Glide.with(context)
.asBitmap()
.load(uri)
.load(uri.toString().substringAfter("file://"))
.apply(options)
.transform(RotateTransformation(-degrees))
.into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/small_margin" />
<solid android:color="@color/gradient_grey_start" />
</shape>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/directories_refresh_layout"
android:layout_width="match_parent"
@ -19,22 +18,22 @@
android:gravity="center"
android:padding="@dimen/activity_margin"
android:text="@string/switch_to_file_search"
android:visibility="gone"/>
android:visibility="gone" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/directories_empty_placeholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/directories_switch_searching"
android:gravity="center_horizontal"
android:alpha="0.8"
android:textStyle="italic"
android:gravity="center_horizontal"
android:paddingStart="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingEnd="@dimen/activity_margin"
android:text="@string/no_media_with_filters"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/>
android:textStyle="italic"
android:visibility="gone" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/directories_empty_placeholder_2"
@ -46,7 +45,7 @@
android:padding="@dimen/activity_margin"
android:text="@string/change_filters_underlined"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/>
android:visibility="gone" />
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/directories_grid"
@ -55,7 +54,7 @@
android:layout_below="@+id/directories_switch_searching"
android:scrollbars="none"
app:layoutManager="com.simplemobiletools.commons.views.MyGridLayoutManager"
app:spanCount="@integer/directory_columns_vertical_scroll"/>
app:spanCount="@integer/directory_columns_vertical_scroll" />
<com.simplemobiletools.commons.views.FastScroller
android:id="@+id/directories_vertical_fastscroller"
@ -66,7 +65,7 @@
android:paddingStart="@dimen/normal_margin"
android:visibility="gone">
<include layout="@layout/fastscroller_handle_vertical"/>
<include layout="@layout/fastscroller_handle_vertical" />
</com.simplemobiletools.commons.views.FastScroller>
@ -79,7 +78,7 @@
android:paddingTop="@dimen/normal_margin"
android:visibility="gone">
<include layout="@layout/fastscroller_handle_horizontal"/>
<include layout="@layout/fastscroller_handle_horizontal" />
</com.simplemobiletools.commons.views.FastScroller>
</RelativeLayout>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dir_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -11,7 +10,7 @@
<com.simplemobiletools.gallery.pro.views.MySquareImageView
android:id="@+id/dir_thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<ImageView
android:id="@+id/dir_lock"
@ -26,7 +25,7 @@
android:contentDescription="@string/lock_folder"
android:padding="@dimen/lock_padding"
android:src="@drawable/ic_lock_vector"
android:visibility="gone"/>
android:visibility="gone" />
<ImageView
android:id="@+id/dir_check"
@ -40,7 +39,7 @@
android:contentDescription="@null"
android:padding="@dimen/tiny_margin"
android:src="@drawable/ic_check_vector"
android:visibility="gone"/>
android:visibility="gone" />
<ImageView
android:id="@+id/dir_pin"
@ -53,7 +52,7 @@
android:contentDescription="@string/pin"
android:padding="@dimen/small_margin"
android:src="@drawable/ic_pin"
android:visibility="gone"/>
android:visibility="gone" />
<ImageView
android:id="@+id/dir_shadow_holder"
@ -63,7 +62,7 @@
android:layout_alignEnd="@+id/dir_bottom_holder"
android:layout_alignParentBottom="true"
android:background="@drawable/gradient_background"
android:contentDescription="@null"/>
android:contentDescription="@null" />
<LinearLayout
android:id="@+id/dir_bottom_holder"
@ -89,14 +88,14 @@
android:shadowColor="@color/default_background_color"
android:shadowRadius="4"
android:textColor="@android:color/white"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/normal_text_size" />
<TextView
android:id="@+id/photo_cnt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/normal_text_size" />
</LinearLayout>
@ -111,6 +110,6 @@
android:paddingEnd="@dimen/small_margin"
android:paddingBottom="@dimen/small_margin"
android:src="@drawable/ic_sd_card_vector"
android:visibility="gone"/>
android:visibility="gone" />
</RelativeLayout>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/photo_holder"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -9,7 +9,7 @@
<com.alexvasilkov.gestures.GestureImageView
android:id="@+id/gestures_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<com.alexvasilkov.gestures.GestureFrameLayout
android:id="@+id/gif_view_frame"
@ -22,7 +22,7 @@
android:id="@+id/gif_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"/>
android:scaleType="fitCenter" />
</com.alexvasilkov.gestures.GestureFrameLayout>
@ -30,17 +30,17 @@
android:id="@+id/subsampling_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
android:visibility="gone" />
<ImageView
android:id="@+id/panorama_outline"
android:layout_width="@dimen/play_outline_size_big"
android:layout_height="@dimen/play_outline_size_big"
android:layout_centerInParent="true"
android:padding="20dp"
android:contentDescription="@null"
android:padding="20dp"
android:src="@drawable/ic_panorama_outline"
android:visibility="gone"/>
android:visibility="gone" />
<TextView
android:id="@+id/photo_details"
@ -49,18 +49,18 @@
android:layout_alignParentStart="true"
android:layout_marginLeft="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@color/gradient_grey_start"
android:background="@drawable/extended_details_background"
android:padding="@dimen/small_margin"
android:textColor="@color/theme_dark_text_color"
android:textSize="@dimen/smaller_text_size"
android:visibility="gone"
tools:text="My image\nAnother line"/>
tools:text="My image\nAnother line" />
<com.simplemobiletools.gallery.pro.views.MediaSideScroll
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_alignParentStart="true" />
<TextView
android:id="@+id/slide_info"
@ -77,7 +77,7 @@
android:paddingRight="@dimen/activity_margin"
android:paddingBottom="@dimen/medium_margin"
android:textColor="@android:color/white"
android:textSize="@dimen/extra_big_text_size"/>
android:textSize="@dimen/extra_big_text_size" />
<RelativeLayout
android:id="@+id/photo_portrait_stripe_wrapper"
@ -99,12 +99,12 @@
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_prev_item"
android:layout_width="1dp"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<com.simplemobiletools.gallery.pro.views.InstantItemSwitch
android:id="@+id/instant_next_item"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"/>
android:layout_alignParentEnd="true" />
</RelativeLayout>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/video_holder"
android:layout_width="match_parent"
@ -9,7 +8,7 @@
<ImageView
android:id="@+id/video_preview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<com.alexvasilkov.gestures.GestureFrameLayout
android:id="@+id/video_surface_frame"
@ -20,7 +19,7 @@
android:id="@+id/video_surface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
android:layout_centerInParent="true" />
</com.alexvasilkov.gestures.GestureFrameLayout>
@ -28,12 +27,12 @@
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_alignParentEnd="true" />
<com.simplemobiletools.gallery.pro.views.MediaSideScroll
android:id="@+id/video_brightness_controller"
android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<ImageView
android:id="@+id/video_play_outline"
@ -41,7 +40,7 @@
android:layout_height="@dimen/play_outline_size_big"
android:layout_centerInParent="true"
android:padding="20dp"
android:src="@drawable/ic_play_outline_vector"/>
android:src="@drawable/ic_play_outline_vector" />
<ImageView
android:id="@+id/panorama_outline"
@ -50,7 +49,7 @@
android:layout_centerInParent="true"
android:padding="20dp"
android:src="@drawable/ic_panorama_outline"
android:visibility="gone"/>
android:visibility="gone" />
<TextView
android:id="@+id/video_details"
@ -59,14 +58,14 @@
android:layout_alignParentStart="true"
android:layout_marginLeft="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@color/gradient_grey_start"
android:background="@drawable/extended_details_background"
android:padding="@dimen/small_margin"
android:textColor="@color/theme_dark_text_color"
android:textSize="@dimen/smaller_text_size"
android:visibility="gone"
tools:text="My video\nAnother line"/>
tools:text="My video\nAnother line" />
<include layout="@layout/bottom_video_time_holder"/>
<include layout="@layout/bottom_video_time_holder" />
<TextView
android:id="@+id/slide_info"
@ -83,6 +82,6 @@
android:paddingRight="@dimen/activity_margin"
android:paddingBottom="@dimen/medium_margin"
android:textColor="@android:color/white"
android:textSize="@dimen/extra_big_text_size"/>
android:textSize="@dimen/extra_big_text_size" />
</RelativeLayout>

View file

@ -15,11 +15,6 @@
<string name="other_folder">مجلد آخر</string>
<string name="show_on_map">عرض علي الخريطة</string>
<string name="unknown_location">موقع غير معروف</string>
<string name="increase_column_count">زيادة عدد الأعمدة</string>
<string name="reduce_column_count">تقليل عدد الأعمدة</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">تغيير صورة الغلاف</string>
<string name="select_photo">تحديد صورة</string>
<string name="volume">الصوت</string>
<string name="brightness">السطوع</string>
<string name="lock_orientation">قفل الاتجاه</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">لم يتم العثور علي أي وسائط لعرض الشرائح</string>
<!-- View types -->
<string name="change_view_type">تغيير نوع العرض</string>
<string name="grid">الشبكة</string>
<string name="list">القائمة</string>
<string name="group_direct_subfolders">تجميع المجلدات الفرعية مباشرة</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Other folder</string>
<string name="show_on_map">Show on map</string>
<string name="unknown_location">Unknown location</string>
<string name="increase_column_count">Increase column count</string>
<string name="reduce_column_count">Reduce column count</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="volume">Volume</string>
<string name="brightness">Brightness</string>
<string name="lock_orientation">Lock orientation</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">No media for the slideshow have been found</string>
<!-- View types -->
<string name="change_view_type">Change view type</string>
<string name="grid">Grid</string>
<string name="list">List</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Un altre carpeta</string>
<string name="show_on_map">Mostrar al mapa</string>
<string name="unknown_location">Ubicació desconeguda</string>
<string name="increase_column_count">Augmentar el número de columnes</string>
<string name="reduce_column_count">Reduir el número de columnes</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Canviar imatge de portada</string>
<string name="select_photo">Sel·leccionar imatge</string>
<string name="volume">Volum</string>
<string name="brightness">Brillantor</string>
<string name="lock_orientation">Bloquejar orientació</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">No shan trobat mitjans per a la presentació de diapositives</string>
<!-- View types -->
<string name="change_view_type">Canviar el tipus de vista</string>
<string name="grid">Reixeta</string>
<string name="list">Llista</string>
<string name="group_direct_subfolders">Agrupar carpetes directes</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Jiná složka</string>
<string name="show_on_map">Zobrazit na mapě</string>
<string name="unknown_location">Neznámá poloha</string>
<string name="increase_column_count">Zvýšit počet sloupců</string>
<string name="reduce_column_count">Snížit počet sloupců</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Změnit obal alba</string>
<string name="select_photo">Vybrat fotografii</string>
<string name="volume">Hlasitost</string>
<string name="brightness">Jas</string>
<string name="lock_orientation">Uzamknout orientaci</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">Nebyla nalezena žádná média pro prezentaci</string>
<!-- View types -->
<string name="change_view_type">Změnit typ zobrazení</string>
<string name="grid">Mřížka</string>
<string name="list">Seznam</string>
<string name="group_direct_subfolders">Sloučit přímé podsložky</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Anden mappe</string>
<string name="show_on_map">Vis på kort</string>
<string name="unknown_location">Ukendt placering</string>
<string name="increase_column_count">Flere kolonner</string>
<string name="reduce_column_count">Færre kolonner</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Skift cover-billede</string>
<string name="select_photo">Vælg billede</string>
<string name="volume">Lydstyrke</string>
<string name="brightness">Lysstyrke</string>
<string name="lock_orientation">Lås orientering</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">Der blev ikke funket nogen mediefiler til slideshowet</string>
<!-- View types -->
<string name="change_view_type">Skift visning</string>
<string name="grid">Gitter</string>
<string name="list">Liste</string>
<string name="group_direct_subfolders">Gruppér direkte undermapper</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Ordner wählen</string>
<string name="show_on_map">Auf Karte zeigen</string>
<string name="unknown_location">Unbekannter Pfad</string>
<string name="increase_column_count">Kacheln verkleinern</string>
<string name="reduce_column_count">Kacheln vergrößern</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Coverbild ändern</string>
<string name="select_photo">Auswählen</string>
<string name="volume">Lautstärke</string>
<string name="brightness">Helligkeit</string>
<string name="lock_orientation">Bildausrichtung sperren</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">Keine Medien für Diashow gefunden</string>
<!-- View types -->
<string name="change_view_type">Darstellung ändern</string>
<string name="grid">Gitternetz</string>
<string name="list">Liste</string>
<string name="group_direct_subfolders">Direkte Unterordner gruppieren</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Άλλος φάκελος</string>
<string name="show_on_map">Εμφάνιση στο χάρτη</string>
<string name="unknown_location">Άγνωστη τοποθεσία</string>
<string name="increase_column_count">Αύξηση αριθμού στηλών</string>
<string name="reduce_column_count">Μείωση αριθμού στηλών</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Αλλαγή εξώφυλλου φακέλου</string>
<string name="select_photo">Επιλογή φωτογραφίας</string>
<string name="volume">Ένταση</string>
<string name="brightness">Φωτεινότητα</string>
<string name="lock_orientation">Κλείδωμα προσανατολισμού</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">Δεν βρέθηκαν πολυμέσα για την εμφάνιση διαφανειών</string>
<!-- View types -->
<string name="change_view_type">Αλλαγή τύπου εμφάνισης</string>
<string name="grid">Πλέγμα</string>
<string name="list">Λίστα</string>
<string name="group_direct_subfolders">Ομαδοποίηση υποφακέλων</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Otra carpeta</string>
<string name="show_on_map">Mostrar en el mapa</string>
<string name="unknown_location">Ubicación desconocida</string>
<string name="increase_column_count">Aumentar el número de columnas</string>
<string name="reduce_column_count">Reducir el número de columnas</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Cambiar imagen de portada</string>
<string name="select_photo">Seleccionar imagen</string>
<string name="volume">Volumen</string>
<string name="brightness">Brillo</string>
<string name="lock_orientation">Bloquear orientación</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">No se han encontrado medios para la presentación de diapositivas</string>
<!-- View types -->
<string name="change_view_type">Cambiar tipo de vista</string>
<string name="grid">Cuadrícula</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Agrupar subcarpetas directas</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,11 +15,6 @@
<string name="other_folder">Muu kansio</string>
<string name="show_on_map">Näytä kartalla</string>
<string name="unknown_location">Tuntematon sijainti</string>
<string name="increase_column_count">Lisää sarakkeita</string>
<string name="reduce_column_count">Vähennä sarakkeita</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="change_cover_image">Vaihda kansikuva</string>
<string name="select_photo">Valitse kuva</string>
<string name="volume">Äänenvoimakkuus</string>
<string name="brightness">Kirkkaus</string>
<string name="lock_orientation">Lukitse näytönkierto</string>
@ -126,9 +121,6 @@
<string name="no_media_for_slideshow">Mediaa diaesitykseen ei löytynyt</string>
<!-- View types -->
<string name="change_view_type">Vaihda näkymää</string>
<string name="grid">Ruudukko</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Autre dossier</string>
<string name="show_on_map">Afficher sur la carte</string>
<string name="unknown_location">Position inconnue</string>
<string name="increase_column_count">Ajouter une colonne</string>
<string name="reduce_column_count">Supprimer une colonne</string>
<string name="change_cover_image">Changer l\'image du dossier</string>
<string name="select_photo">Choisir une image</string>
<string name="volume">Volume</string>
<string name="brightness">Luminosité</string>
<string name="lock_orientation">Verrouiller la rotation</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Aucun média trouvé pour le diaporama</string>
<!-- View types -->
<string name="change_view_type">Changer de mode d\'affichage</string>
<string name="grid">Grille</string>
<string name="list">Liste</string>
<string name="group_direct_subfolders">Mode sous-dossiers</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Outro cartafol</string>
<string name="show_on_map">Mostrar no mapa</string>
<string name="unknown_location">Localización descoñecida</string>
<string name="increase_column_count">Aumenta o número de columnas</string>
<string name="reduce_column_count">Reduce o número de columnas</string>
<string name="change_cover_image">Cambiar a imaxe de portada</string>
<string name="select_photo">Escolle foto</string>
<string name="volume">Volume</string>
<string name="brightness">Brillo</string>
<string name="lock_orientation">Fixar orientación</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Non se atopou multimedia para a presentación</string>
<!-- View types -->
<string name="change_view_type">Cambiar o tipo de vista</string>
<string name="grid">Grella</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Agrupar subcartafoles directos</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Ostale mape</string>
<string name="show_on_map">Prikaži na karti</string>
<string name="unknown_location">Nepoznata lokacija</string>
<string name="increase_column_count">Povećaj broj stupaca</string>
<string name="reduce_column_count">Smanji broj stupaca</string>
<string name="change_cover_image">Promjeni naslovnu sliku</string>
<string name="select_photo">Odaberi sliku</string>
<string name="volume">Glasnoća</string>
<string name="brightness">Svjetlina</string>
<string name="lock_orientation">Zaključaj orijentaciju slike</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Nema datoteka za dijaprojekciju</string>
<!-- View types -->
<string name="change_view_type">Promijeni vrstu prikaza</string>
<string name="grid">Mreža</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Egyéb mappa</string>
<string name="show_on_map">Mutassa a térképen</string>
<string name="unknown_location">Ismeretlen helyszín</string>
<string name="increase_column_count">Növelje az oszlopok számát</string>
<string name="reduce_column_count">Csökkentse az oszlopok számát</string>
<string name="change_cover_image">Borítókép változtatása</string>
<string name="select_photo">Válasszon fotót</string>
<string name="volume">Hangerő</string>
<string name="brightness">Fényesség</string>
<string name="lock_orientation">Tájolás zárolása</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">A diavetítéshez nem található média</string>
<!-- View types -->
<string name="change_view_type">Nézet típus változtatása</string>
<string name="grid">Rács</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Közvetlen almappa csoport</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Folder lainnya</string>
<string name="show_on_map">Tampilkan di peta</string>
<string name="unknown_location">Lokasi tidak diketahui</string>
<string name="increase_column_count">Tambah jumlah kolom</string>
<string name="reduce_column_count">Kurangi jumlah kolom</string>
<string name="change_cover_image">Ubah gambar kover</string>
<string name="select_photo">Pilih foto</string>
<string name="volume">Volume</string>
<string name="brightness">Kecerahan</string>
<string name="lock_orientation">Kunci orientasi</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Tidak ditemukan media untuk slideshow</string>
<!-- View types -->
<string name="change_view_type">Ubah tampilan</string>
<string name="grid">Kotak</string>
<string name="list">Daftar</string>
<string name="group_direct_subfolders">Kelompokkan subfolder langsung</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Folder lainnya</string>
<string name="show_on_map">Tampilkan di peta</string>
<string name="unknown_location">Lokasi tidak diketahui</string>
<string name="increase_column_count">Tambah jumlah kolom</string>
<string name="reduce_column_count">Kurangi jumlah kolom</string>
<string name="change_cover_image">Ubah gambar kover</string>
<string name="select_photo">Pilih foto</string>
<string name="volume">Volume</string>
<string name="brightness">Kecerahan</string>
<string name="lock_orientation">Kunci orientasi</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Tidak ditemukan media untuk slideshow</string>
<!-- View types -->
<string name="change_view_type">Ubah tampilan</string>
<string name="grid">Kotak</string>
<string name="list">Daftar</string>
<string name="group_direct_subfolders">Kelompokkan subfolder langsung</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Altra cartella</string>
<string name="show_on_map">Mostra sulla mappa</string>
<string name="unknown_location">Posizione sconosciuta</string>
<string name="increase_column_count">Aumenta numero colonne</string>
<string name="reduce_column_count">Riduci numero colonne</string>
<string name="change_cover_image">Cambia immagine copertina</string>
<string name="select_photo">Seleziona foto</string>
<string name="volume">Volume</string>
<string name="brightness">Luminosità</string>
<string name="lock_orientation">Blocca orientamento</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Nessun file trovato per la presentazione</string>
<!-- View types -->
<string name="change_view_type">Cambia modalità visualizzazione</string>
<string name="grid">Griglia</string>
<string name="list">Elenco</string>
<string name="group_direct_subfolders">Raggruppa sottocartelle dirette</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">その他のフォルダ</string>
<string name="show_on_map">地図上で表示</string>
<string name="unknown_location">位置情報がありません</string>
<string name="increase_column_count">列数を増やす</string>
<string name="reduce_column_count">列数を減らす</string>
<string name="change_cover_image">カバー画像を変更</string>
<string name="select_photo">写真を選択</string>
<string name="volume">音量</string>
<string name="brightness">明るさ</string>
<string name="lock_orientation">画面の向きを固定する</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">スライドショーに表示するメディアがありません</string>
<!-- View types -->
<string name="change_view_type">表示形式の変更</string>
<string name="grid">グリッド</string>
<string name="list">リスト</string>
<string name="group_direct_subfolders">サブフォルダでグループ化</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">다른 폴더</string>
<string name="show_on_map">지도에서 보기</string>
<string name="unknown_location">위치정보 없음</string>
<string name="increase_column_count">섬네일크기 축소</string>
<string name="reduce_column_count">섬네일크기 확대</string>
<string name="change_cover_image">커버 사진 변경</string>
<string name="select_photo">사진 선택</string>
<string name="volume">볼륨</string>
<string name="brightness">밝기</string>
<string name="lock_orientation">화면 회전 잠금</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">슬라이드 쇼를 표시할 사진이 없습니다.</string>
<!-- View types -->
<string name="change_view_type">보기 방식 변경</string>
<string name="grid">타일</string>
<string name="list">목록</string>
<string name="group_direct_subfolders">상위 폴더 표시</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Kitas aplankas</string>
<string name="show_on_map">Rodyti žemėlapyje</string>
<string name="unknown_location">Nežinoma vieta</string>
<string name="increase_column_count">Padidinti stulpelių skaičių</string>
<string name="reduce_column_count">Sumažinti stulpelių skaičių</string>
<string name="change_cover_image">Pakeisti viršelio atvaizdą</string>
<string name="select_photo">Pasirinkti nuotrauką</string>
<string name="volume">Garsas</string>
<string name="brightness">Ryškumas</string>
<string name="lock_orientation">Užrakinti orientaciją</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Nerasta medijos skaidrių demonstracijai</string>
<!-- View types -->
<string name="change_view_type">Keisti peržiūros tipą</string>
<string name="grid">Tinklelis</string>
<string name="list">Sąrašas</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Annen mappe</string>
<string name="show_on_map">Vis på kart</string>
<string name="unknown_location">Ukjent plassering</string>
<string name="increase_column_count">Øk antall kolonner</string>
<string name="reduce_column_count">Reduser antall kolonner</string>
<string name="change_cover_image">Endre omslagsbilde</string>
<string name="select_photo">Velg foto</string>
<string name="volume">Volum</string>
<string name="brightness">Lysstyrke</string>
<string name="lock_orientation">Lås skjermorientering</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Ingen media for lysbildeshowet er funnet</string>
<!-- View types -->
<string name="change_view_type">Endre visningstype</string>
<string name="grid">Rutenett</string>
<string name="list">Liste</string>
<string name="group_direct_subfolders">Grupper direkte undermapper</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">अन्य फोल्डर</string>
<string name="show_on_map">नक्सामा देखाउनुहोस</string>
<string name="unknown_location">थाहानभएको ठाउ</string>
<string name="increase_column_count">कोलम सङ्खा बढाउनुहोस</string>
<string name="reduce_column_count">कोलम सङ्खा घटाउनुहोस</string>
<string name="change_cover_image">कभर तस्बिर परिवर्तन गर्नुहोस</string>
<string name="select_photo">फोटो चयन गर्नुहोस</string>
<string name="volume">भोलुम</string>
<string name="brightness">उज्यालोपन</string>
<string name="lock_orientation">Lock orientation</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">No media for the slideshow have been found</string>
<!-- View types -->
<string name="change_view_type">भ्यू प्रकार परिवर्तन गर्नुहोस</string>
<string name="grid">कोठे</string>
<string name="list">सुची</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Andere map</string>
<string name="show_on_map">Op kaart tonen</string>
<string name="unknown_location">Locatie onbekend</string>
<string name="increase_column_count">Meer kolommen</string>
<string name="reduce_column_count">Minder kolommen</string>
<string name="change_cover_image">Afbeelding omslag wijzigen</string>
<string name="select_photo">Foto selecteren</string>
<string name="volume">Volume</string>
<string name="brightness">Helderheid</string>
<string name="lock_orientation">Schermoriëntatie vergrendelen</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Geen media gevonden voor diavoorstelling</string>
<!-- View types -->
<string name="change_view_type">Weergave</string>
<string name="grid">Raster</string>
<string name="list">Lijst</string>
<string name="group_direct_subfolders">Directe submappen groeperen</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Inny folder</string>
<string name="show_on_map">Pokaż na mapie</string>
<string name="unknown_location">Nieznana lokalizacja</string>
<string name="increase_column_count">Zwiększ liczbę kolumn</string>
<string name="reduce_column_count">Zmniejsz liczbę kolumn</string>
<string name="change_cover_image">Zmień okładkę</string>
<string name="select_photo">Wybierz obraz</string>
<string name="volume">Głośność</string>
<string name="brightness">Jasność</string>
<string name="lock_orientation">Zablokuj orientację ekranu</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Nie znalazłem multimediów do pokazu slajdów</string>
<!-- View types -->
<string name="change_view_type">Zmień typ widoku</string>
<string name="grid">Siatka</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Grupuj bezpośrednie podfoldery</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Outra pasta</string>
<string name="show_on_map">Exibir no mapa</string>
<string name="unknown_location">Localização desconhecida</string>
<string name="increase_column_count">Aumentar número de colunas</string>
<string name="reduce_column_count">Reduzir número de colunas</string>
<string name="change_cover_image">Trocar imagem de capa</string>
<string name="select_photo">Selecionar foto</string>
<string name="volume">Volume</string>
<string name="brightness">Brilho</string>
<string name="lock_orientation">Travar orientação</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Nenhuma mídia encontrada para a apresentação</string>
<!-- View types -->
<string name="change_view_type">Alterar modo de visualização</string>
<string name="grid">Grade</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Agrupar subpastas diretas</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Outra pasta</string>
<string name="show_on_map">Mostrar no mapa</string>
<string name="unknown_location">Localização desconhecida</string>
<string name="increase_column_count">Aumentar número de colunas</string>
<string name="reduce_column_count">Diminuir número de colunas</string>
<string name="change_cover_image">Alterar imagem de capa</string>
<string name="select_photo">Selecionar foto</string>
<string name="volume">Volume</string>
<string name="brightness">Brilho</string>
<string name="lock_orientation">Bloquear orientação</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Não foram encontrados ficheiros para a apresentação</string>
<!-- View types -->
<string name="change_view_type">Tipo de exibição</string>
<string name="grid">Grelha</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Agrupar sub-pastas</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Выбор папки</string>
<string name="show_on_map">Показать место съёмки</string>
<string name="unknown_location">Место съёмки не указано</string>
<string name="increase_column_count">Добавить столбец</string>
<string name="reduce_column_count">Убрать столбец</string>
<string name="change_cover_image">Изменить обложку</string>
<string name="select_photo">Выбрать изображение</string>
<string name="volume">Громкость</string>
<string name="brightness">Яркость</string>
<string name="lock_orientation">Заблокировать ориентацию</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Не найдено медиафайлов для слайдшоу</string>
<!-- View types -->
<string name="change_view_type">Вид</string>
<string name="grid">Сетка</string>
<string name="list">Список</string>
<string name="group_direct_subfolders">Объединять вложенные папки</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Iný priečinok</string>
<string name="show_on_map">Zobraziť na mape</string>
<string name="unknown_location">Neznáma poloha</string>
<string name="increase_column_count">Zvýšiť počet stĺpcov</string>
<string name="reduce_column_count">Znížiť počet stĺpcov</string>
<string name="change_cover_image">Zmeniť obal albumu</string>
<string name="select_photo">Zvoliť foto</string>
<string name="volume">Hlasitosť</string>
<string name="brightness">Jas</string>
<string name="lock_orientation">Uzamknúť otočenie obrazovky</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Pre prezentáciu sa nenašli žiadne vhodné súbory</string>
<!-- View types -->
<string name="change_view_type">Zmeniť typ zobrazenia</string>
<string name="grid">Mriežka</string>
<string name="list">Zoznam</string>
<string name="group_direct_subfolders">Zlúčiť priame podpriečinky</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Druga mapa</string>
<string name="show_on_map">Prikaži na zemljevidu</string>
<string name="unknown_location">Neznana lokacija</string>
<string name="increase_column_count">Povečaj število stolpcev</string>
<string name="reduce_column_count">Zmanjšaj število stolpcev</string>
<string name="change_cover_image">Spremeni naslovno fotografijo</string>
<string name="select_photo">Izberi fotografijo</string>
<string name="volume">Glasnost</string>
<string name="brightness">Svetlost</string>
<string name="lock_orientation">Zakleni usmerjenost</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Ne najdem datotek za diaprojekcijo</string>
<!-- View types -->
<string name="change_view_type">Spremeni tip pogleda</string>
<string name="grid">Mreža</string>
<string name="list">Seznam</string>
<string name="group_direct_subfolders">Združi neposredne podmape</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Друга фасцикла</string>
<string name="show_on_map">Прикажи на мапи</string>
<string name="unknown_location">Непозната локација</string>
<string name="increase_column_count">Повећај број колона</string>
<string name="reduce_column_count">Смањи број колона</string>
<string name="change_cover_image">Промени насловну слику</string>
<string name="select_photo">Изабери фотографију</string>
<string name="volume">Јачина звука</string>
<string name="brightness">Осветљење</string>
<string name="lock_orientation">Закључај оријентацију</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Нису пронађени медији за слајдшоу</string>
<!-- View types -->
<string name="change_view_type">Промени тип прегледа</string>
<string name="grid">Мрежа</string>
<string name="list">Листа</string>
<string name="group_direct_subfolders">Групирај директне подфасцикле</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Annan mapp</string>
<string name="show_on_map">Visa på karta</string>
<string name="unknown_location">Okänd plats</string>
<string name="increase_column_count">Öka antalet kolumner</string>
<string name="reduce_column_count">Minska antalet kolumner</string>
<string name="change_cover_image">Byt omslagsbild</string>
<string name="select_photo">Välj foto</string>
<string name="volume">Volym</string>
<string name="brightness">Ljusstyrka</string>
<string name="lock_orientation">Aktivera rotationslås</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Ingen media hittades för bildspelet</string>
<!-- View types -->
<string name="change_view_type">Ändra vy</string>
<string name="grid">Rutnät</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Gruppera direkta undermappar</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Diğer klasör</string>
<string name="show_on_map">Haritada göster</string>
<string name="unknown_location">Bilinmeyen konum</string>
<string name="increase_column_count">Sütun sayısını artır</string>
<string name="reduce_column_count">Sütun sayısını azalt</string>
<string name="change_cover_image">Kapak resmini değiştir</string>
<string name="select_photo">Fotoğraf seç</string>
<string name="volume">Ses</string>
<string name="brightness">Parlaklık</string>
<string name="lock_orientation">Yönü kilitle</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Slayt gösterisi için medya bulunamadı</string>
<!-- View types -->
<string name="change_view_type">Görünüm türünü değiştir</string>
<string name="grid">Izgara</string>
<string name="list">Liste</string>
<string name="group_direct_subfolders">Doğrudan alt klasörleri gruplandır</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Інша тека</string>
<string name="show_on_map">Показати на мапі</string>
<string name="unknown_location">Невідоме розташування</string>
<string name="increase_column_count">Збільшити кількість колонок</string>
<string name="reduce_column_count">Зменшити кількість колонок</string>
<string name="change_cover_image">Змінити обкладинку</string>
<string name="select_photo">Вибрати фото</string>
<string name="volume">Об\'єм</string>
<string name="brightness">Яскравість</string>
<string name="lock_orientation">Закріпити орієнтацію</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Не знайдено медіафайлів для показу у слайдшоу</string>
<!-- View types -->
<string name="change_view_type">Змінити тип перегляду</string>
<string name="grid">Сітка</string>
<string name="list">Список</string>
<string name="group_direct_subfolders">Групувати безпосередні підтеки</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">Thư mục khác</string>
<string name="show_on_map">Hiển thị trên bản đồ</string>
<string name="unknown_location">Vị trí không xác định</string>
<string name="increase_column_count">Tăng số lượng cột</string>
<string name="reduce_column_count">Giảm số lượng cột</string>
<string name="change_cover_image">Thay đổi ảnh bìa</string>
<string name="select_photo">Chọn ảnh</string>
<string name="volume">Âm lượng</string>
<string name="brightness">Độ sáng</string>
<string name="lock_orientation">Khóa xoay màn hình</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">Không có tập tin phương tiện cho trình chiếu được tìm thấy</string>
<!-- View types -->
<string name="change_view_type">Thay đổi kiểu xem</string>
<string name="grid">Lưới</string>
<string name="list">Danh sách</string>
<string name="group_direct_subfolders">Nhóm thư mục con trực tiếp</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">其他文件夹</string>
<string name="show_on_map">在地图上显示</string>
<string name="unknown_location">未知位置</string>
<string name="increase_column_count">显示更多项目</string>
<string name="reduce_column_count">显示更少项目</string>
<string name="change_cover_image">更换封面图片</string>
<string name="select_photo">选择图片</string>
<string name="volume">音量</string>
<string name="brightness">亮度</string>
<string name="lock_orientation">锁定屏幕方向</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">没有找到可播放幻灯片媒体文件</string>
<!-- View types -->
<string name="change_view_type">更改视图类型</string>
<string name="grid">网格</string>
<string name="list">列表</string>
<string name="group_direct_subfolders">直接分组文件夹</string>
<!-- Grouping at media thumbnails -->

View file

@ -15,10 +15,6 @@
<string name="other_folder">其他資料夾</string>
<string name="show_on_map">在地圖上顯示</string>
<string name="unknown_location">未知的位置</string>
<string name="increase_column_count">增加欄數</string>
<string name="reduce_column_count">減少欄數</string>
<string name="change_cover_image">更換封面圖片</string>
<string name="select_photo">選擇相片</string>
<string name="volume">音量</string>
<string name="brightness">亮度</string>
<string name="lock_orientation">鎖定方向</string>
@ -125,9 +121,6 @@
<string name="no_media_for_slideshow">找不到投影片的媒體檔案</string>
<!-- View types -->
<string name="change_view_type">改變瀏覽類型</string>
<string name="grid">格狀</string>
<string name="list">列表</string>
<string name="group_direct_subfolders">歸類子資料夾</string>
<!-- Grouping at media thumbnails -->

View file

@ -22,5 +22,5 @@
<dimen name="default_status_action_height">86dp</dimen>
<dimen name="widget_initial_size">110dp</dimen>
<dimen name="full_brush_size">40dp</dimen>
<dimen name="lock_padding">40dp</dimen>
<dimen name="lock_padding">30dp</dimen>
</resources>

View file

@ -15,12 +15,6 @@
<string name="other_folder">Other folder</string>
<string name="show_on_map">Show on map</string>
<string name="unknown_location">Unknown location</string>
<string name="increase_column_count">Increase column count</string>
<string name="reduce_column_count">Reduce column count</string>
<string name="set_as_default_folder">Set as default folder</string>
<string name="unset_as_default_folder">Unset as default folder</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="volume">Volume</string>
<string name="brightness">Brightness</string>
<string name="lock_orientation">Lock orientation</string>
@ -127,9 +121,6 @@
<string name="no_media_for_slideshow">No media for the slideshow have been found</string>
<!-- View types -->
<string name="change_view_type">Change view type</string>
<string name="grid">Grid</string>
<string name="list">List</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<!-- Grouping at media thumbnails -->

View file

@ -13,10 +13,12 @@ import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.helpers.isNougatPlus
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.extensions.fixDateTaken
import com.simplemobiletools.gallery.pro.extensions.tryDeleteFileDirItem
import ly.img.android.pesdk.PhotoEditorSettingsList
import ly.img.android.pesdk.assets.filter.basic.FilterPackBasic
import ly.img.android.pesdk.assets.font.basic.FontPackBasic
@ -134,42 +136,44 @@ class NewEditActivity : SimpleActivity() {
storeOldExif(source)
sourceFileLastModified = File(source).lastModified()
var inputStream: InputStream? = null
var outputStream: OutputStream? = null
try {
inputStream = contentResolver.openInputStream(Uri.parse(resultPath))
outputStream = getFileOutputStreamSync(destinationFilePath, destinationFilePath.getMimeType())
inputStream!!.copyTo(outputStream!!)
outputStream.flush()
inputStream.close()
outputStream.close()
handleFileOverwriting(destinationFilePath) {
var inputStream: InputStream? = null
var outputStream: OutputStream? = null
try {
if (isNougatPlus()) {
val newExif = ExifInterface(destinationFilePath)
oldExif?.copyTo(newExif, false)
inputStream = contentResolver.openInputStream(Uri.parse(resultPath))
outputStream = getFileOutputStreamSync(destinationFilePath, destinationFilePath.getMimeType())
inputStream!!.copyTo(outputStream!!)
outputStream.flush()
inputStream.close()
outputStream.close()
try {
if (isNougatPlus()) {
val newExif = ExifInterface(destinationFilePath)
oldExif?.copyTo(newExif, false)
}
} catch (ignored: Exception) {
}
} catch (ignored: Exception) {
}
if (config.keepLastModified) {
// add 1 s to the last modified time to properly update the thumbnail
updateLastModified(destinationFilePath, sourceFileLastModified + 1000)
}
if (config.keepLastModified) {
// add 1 s to the last modified time to properly update the thumbnail
updateLastModified(destinationFilePath, sourceFileLastModified + 1000)
}
val paths = arrayListOf(destinationFilePath)
rescanPaths(arrayListOf(destinationFilePath)) {
fixDateTaken(paths, false)
}
val paths = arrayListOf(destinationFilePath)
rescanPaths(arrayListOf(destinationFilePath)) {
fixDateTaken(paths, false)
}
setResult(Activity.RESULT_OK, intent)
toast(R.string.file_edited_successfully)
finish()
} catch (e: Exception) {
showErrorToast(e)
} finally {
inputStream?.close()
outputStream?.close()
setResult(Activity.RESULT_OK, intent)
toast(R.string.file_edited_successfully)
finish()
} catch (e: Exception) {
showErrorToast(e)
} finally {
inputStream?.close()
outputStream?.close()
}
}
}
} else {
@ -197,6 +201,23 @@ class NewEditActivity : SimpleActivity() {
}
}
// in case the user wants to overwrite the original file and it is on an SD card, delete it manually. Else the system just appends (1)
private fun handleFileOverwriting(path: String, callback: () -> Unit) {
if (getDoesFilePathExist(path) && isPathOnSD(path)) {
val fileDirItem = FileDirItem(path, path.getFilenameFromPath())
tryDeleteFileDirItem(fileDirItem, false, true) { success ->
if (success) {
callback()
} else {
toast(R.string.unknown_error_occurred)
finish()
}
}
} else {
callback()
}
}
private fun openEditor(inputImage: Uri) {
val settingsList = createPesdkSettingsList()

View file

@ -13,7 +13,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.2'
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
if (is_proprietary) {
classpath 'ly.img.android.pesdk:plugin:8.0.2'

View file

@ -0,0 +1,3 @@
* Added some hidden folder handling related improvements
* Fixed saving files on the SD card after editing
* Couple other UX, translation and performance improvements

View file

@ -0,0 +1,3 @@
* Redesigning the main folders screen, try making it moderner (!)
* Fix some glitches with deep zoomable fullscreen images not loading in well
* Couple other UX, stability and translation improvements

View file

@ -0,0 +1,2 @@
* Reverting to the previous UI of the main screen, but keep rounded corners at list view
* Some UI and stability improvements

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 910 KiB

After

Width:  |  Height:  |  Size: 279 KiB

View file

@ -1,6 +1,6 @@
#Fri Jun 19 14:12:24 CEST 2020
#Tue Nov 03 10:00:17 CET 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip