commit
e22e6da69b
78 changed files with 824 additions and 498 deletions
36
CHANGELOG.md
36
CHANGELOG.md
|
@ -1,6 +1,42 @@
|
||||||
Changelog
|
Changelog
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
Version 6.5.5 *(2019-03-05)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Improve new file discovery
|
||||||
|
* Fixed some third party intent related glitches
|
||||||
|
* Fixed some issues related to grouping thumbnails
|
||||||
|
* Added a note at Sorting and Grouping dialog to avoid some confusion
|
||||||
|
* Avoid deleting filtered out file types at deleting folders
|
||||||
|
|
||||||
|
Version 6.5.4 *(2019-02-28)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Allow customizing file loading priority
|
||||||
|
* Fixed the handling of some image picker intents
|
||||||
|
* Speeded up renaming files on SD cards
|
||||||
|
* Added some file loading performance improvements
|
||||||
|
* Some stability improvements
|
||||||
|
|
||||||
|
Version 6.5.3 *(2019-02-22)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Added main screen menu buttons for fast Recycle Bin showing/hiding
|
||||||
|
* Added a new setting item for changing date and time format
|
||||||
|
* Do not shuffle images with Random sorting that often
|
||||||
|
* Fixed some glitches related to file rename, delete, move
|
||||||
|
* Added many smaller bugfixes and UX improvements
|
||||||
|
|
||||||
|
Version 6.5.2 *(2019-02-16)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Added an option to disable rotating fullscreen images with gestures
|
||||||
|
* Improved OTG usb device handling
|
||||||
|
* Fixed Grouping by date taken
|
||||||
|
* Improved the performance at deleting files from the fullscreen view
|
||||||
|
* Some stability improvements
|
||||||
|
|
||||||
Version 6.5.1 *(2019-02-11)*
|
Version 6.5.1 *(2019-02-11)*
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ The fingerprint permission is needed for locking either hidden item visibility,
|
||||||
|
|
||||||
This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
|
This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
|
||||||
|
|
||||||
<a href='https://play.google.com/store/apps/details?id=com.simplemobiletools.gallery.pro'><img src='http://simplemobiletools.github.io/assets/public/google-play.png' alt='Get it on Google Play' height='45' /></a>
|
<a href='https://play.google.com/store/apps/details?id=com.simplemobiletools.gallery.pro'><img src='https://simplemobiletools.com/assets/images/google-play.png' alt='Get it on Google Play' height='45' /></a>
|
||||||
<a href='https://f-droid.org/packages/com.simplemobiletools.gallery.pro'><img src='http://simplemobiletools.github.io/assets/public/f-droid.png' alt='Get it on F-Droid' height='45' /></a>
|
<a href='https://f-droid.org/packages/com.simplemobiletools.gallery.pro'><img src='https://simplemobiletools.com/assets/images/f-droid.png' alt='Get it on F-Droid' height='45' /></a>
|
||||||
|
|
||||||
<div style="display:flex;">
|
<div style="display:flex;">
|
||||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app.jpg" width="30%">
|
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app.jpg" width="30%">
|
||||||
|
|
|
@ -15,8 +15,8 @@ android {
|
||||||
applicationId "com.simplemobiletools.gallery.pro"
|
applicationId "com.simplemobiletools.gallery.pro"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 229
|
versionCode 233
|
||||||
versionName "6.5.1"
|
versionName "6.5.5"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
setProperty("archivesBaseName", "gallery")
|
setProperty("archivesBaseName", "gallery")
|
||||||
}
|
}
|
||||||
|
@ -61,22 +61,22 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:5.7.7'
|
implementation 'com.simplemobiletools:commons:5.10.0'
|
||||||
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
||||||
implementation 'androidx.multidex:multidex:2.0.1'
|
implementation 'androidx.multidex:multidex:2.0.1'
|
||||||
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
||||||
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'
|
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
|
||||||
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.2'
|
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6'
|
||||||
implementation 'com.google.vr:sdk-panowidget:1.180.0'
|
implementation 'com.google.vr:sdk-panowidget:1.180.0'
|
||||||
implementation 'com.google.vr:sdk-videowidget:1.180.0'
|
implementation 'com.google.vr:sdk-videowidget:1.180.0'
|
||||||
implementation 'org.apache.sanselan:sanselan:0.97-incubator'
|
implementation 'org.apache.sanselan:sanselan:0.97-incubator'
|
||||||
implementation 'info.androidhive:imagefilters:1.0.7'
|
implementation 'info.androidhive:imagefilters:1.0.7'
|
||||||
implementation 'com.squareup.picasso:picasso:2.71828'
|
implementation 'com.squareup.picasso:picasso:2.71828'
|
||||||
implementation 'com.caverock:androidsvg-aar:1.3'
|
implementation 'com.caverock:androidsvg-aar:1.3'
|
||||||
implementation 'com.github.tibbi:gestureviews:bd0a8e67a1'
|
implementation 'com.github.tibbi:gestureviews:cb7c2c191a'
|
||||||
implementation 'com.github.tibbi:subsampling-scale-image-view:6c14987053'
|
implementation 'com.github.tibbi:subsampling-scale-image-view:7e4202eaee'
|
||||||
kapt 'com.github.bumptech.glide:compiler:4.8.0' // keep it here too, not just in Commons, else loading SVGs wont work
|
kapt 'com.github.bumptech.glide:compiler:4.9.0' // keep it here too, not just in Commons, else loading SVGs wont work
|
||||||
|
|
||||||
kapt 'androidx.room:room-compiler:2.0.0'
|
kapt 'androidx.room:room-compiler:2.0.0'
|
||||||
implementation 'androidx.room:room-runtime:2.0.0'
|
implementation 'androidx.room:room-runtime:2.0.0'
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
tools:overrideLibrary="com.google.vr.widgets.common, com.google.vr.sdk.widgets.pano"/>
|
tools:overrideLibrary="com.google.vr.widgets.common, com.google.vr.sdk.widgets.pano"/>
|
||||||
|
|
||||||
|
<uses-feature
|
||||||
|
android:name="android.hardware.faketouch"
|
||||||
|
android:required="false"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
|
|
@ -26,9 +26,9 @@ import com.bumptech.glide.request.RequestOptions
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
||||||
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||||
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
|
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
|
||||||
|
import com.simplemobiletools.commons.helpers.SIDELOADING_TRUE
|
||||||
import com.simplemobiletools.commons.helpers.isNougatPlus
|
import com.simplemobiletools.commons.helpers.isNougatPlus
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.gallery.pro.BuildConfig
|
import com.simplemobiletools.gallery.pro.BuildConfig
|
||||||
|
@ -93,6 +93,11 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_edit)
|
setContentView(R.layout.activity_edit)
|
||||||
|
|
||||||
|
if (config.appSideloadingStatus == SIDELOADING_TRUE) {
|
||||||
|
showSideloadingDialog()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
handlePermission(PERMISSION_WRITE_STORAGE) {
|
||||||
if (it) {
|
if (it) {
|
||||||
initEditActivity()
|
initEditActivity()
|
||||||
|
@ -148,7 +153,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
|
||||||
if (intent.extras?.containsKey(REAL_FILE_PATH) == true) {
|
if (intent.extras?.containsKey(REAL_FILE_PATH) == true) {
|
||||||
val realPath = intent.extras.getString(REAL_FILE_PATH)
|
val realPath = intent.extras.getString(REAL_FILE_PATH)
|
||||||
uri = when {
|
uri = when {
|
||||||
realPath.startsWith(OTG_PATH) -> uri
|
isPathOnOTG(realPath) -> uri
|
||||||
realPath.startsWith("file:/") -> Uri.parse(realPath)
|
realPath.startsWith("file:/") -> Uri.parse(realPath)
|
||||||
else -> Uri.fromFile(File(realPath))
|
else -> Uri.fromFile(File(realPath))
|
||||||
}
|
}
|
||||||
|
@ -766,6 +771,10 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
|
||||||
|
|
||||||
private fun getNewFilePath(): Pair<String, Boolean> {
|
private fun getNewFilePath(): Pair<String, Boolean> {
|
||||||
var newPath = applicationContext.getRealPathFromURI(saveUri) ?: ""
|
var newPath = applicationContext.getRealPathFromURI(saveUri) ?: ""
|
||||||
|
if (newPath.startsWith("/mnt/")) {
|
||||||
|
newPath = ""
|
||||||
|
}
|
||||||
|
|
||||||
var shouldAppendFilename = true
|
var shouldAppendFilename = true
|
||||||
if (newPath.isEmpty()) {
|
if (newPath.isEmpty()) {
|
||||||
val filename = applicationContext.getFilenameFromContentUri(saveUri) ?: ""
|
val filename = applicationContext.getFilenameFromContentUri(saveUri) ?: ""
|
||||||
|
|
|
@ -17,7 +17,6 @@ import android.widget.Toast
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.view.MenuItemCompat
|
import androidx.core.view.MenuItemCompat
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
|
||||||
import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog
|
import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog
|
||||||
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
|
@ -44,6 +43,7 @@ import com.simplemobiletools.gallery.pro.models.Medium
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
private val PICK_MEDIA = 2
|
private val PICK_MEDIA = 2
|
||||||
|
@ -147,6 +147,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateWidgets()
|
updateWidgets()
|
||||||
|
registerFileUpdateListener()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
|
@ -239,6 +240,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
config.tempSkipDeleteConfirmation = false
|
config.tempSkipDeleteConfirmation = false
|
||||||
mTempShowHiddenHandler.removeCallbacksAndMessages(null)
|
mTempShowHiddenHandler.removeCallbacksAndMessages(null)
|
||||||
removeTempFolder()
|
removeTempFolder()
|
||||||
|
unregisterFileUpdateListener()
|
||||||
|
|
||||||
if (!config.showAll) {
|
if (!config.showAll) {
|
||||||
GalleryDatabase.destroyInstance()
|
GalleryDatabase.destroyInstance()
|
||||||
|
@ -265,9 +267,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
menuInflater.inflate(R.menu.menu_main_intent, menu)
|
menuInflater.inflate(R.menu.menu_main_intent, menu)
|
||||||
} else {
|
} else {
|
||||||
menuInflater.inflate(R.menu.menu_main, menu)
|
menuInflater.inflate(R.menu.menu_main, menu)
|
||||||
|
val useBin = config.useRecycleBin
|
||||||
menu.apply {
|
menu.apply {
|
||||||
findItem(R.id.increase_column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID && config.dirColumnCnt < MAX_COLUMN_COUNT
|
findItem(R.id.increase_column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID && config.dirColumnCnt < MAX_COLUMN_COUNT
|
||||||
findItem(R.id.reduce_column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID && config.dirColumnCnt > 1
|
findItem(R.id.reduce_column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID && config.dirColumnCnt > 1
|
||||||
|
findItem(R.id.hide_the_recycle_bin).isVisible = useBin && config.showRecycleBinAtFolders
|
||||||
|
findItem(R.id.show_the_recycle_bin).isVisible = useBin && !config.showRecycleBinAtFolders
|
||||||
setupSearch(this)
|
setupSearch(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,6 +293,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden()
|
R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden()
|
||||||
R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden()
|
R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden()
|
||||||
R.id.create_new_folder -> createNewFolder()
|
R.id.create_new_folder -> createNewFolder()
|
||||||
|
R.id.show_the_recycle_bin -> toggleRecycleBin(true)
|
||||||
|
R.id.hide_the_recycle_bin -> toggleRecycleBin(false)
|
||||||
R.id.increase_column_count -> increaseColumnCount()
|
R.id.increase_column_count -> increaseColumnCount()
|
||||||
R.id.reduce_column_count -> reduceColumnCount()
|
R.id.reduce_column_count -> reduceColumnCount()
|
||||||
R.id.settings -> launchSettings()
|
R.id.settings -> launchSettings()
|
||||||
|
@ -371,17 +378,15 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkOTGInclusion() {
|
private fun checkOTGPath() {
|
||||||
Thread {
|
Thread {
|
||||||
if (hasOTGConnected()) {
|
if (!config.wasOTGHandled && hasPermission(PERMISSION_WRITE_STORAGE) && hasOTGConnected() && config.OTGPath.isEmpty()) {
|
||||||
runOnUiThread {
|
|
||||||
ConfirmationDialog(this, getString(R.string.usb_detected), positive = R.string.ok, negative = 0) {
|
|
||||||
handleOTGPermission {
|
|
||||||
config.addIncludedFolder(OTG_PATH)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.wasOTGHandled = true
|
config.wasOTGHandled = true
|
||||||
|
getStorageDirectories().firstOrNull { it.trimEnd('/') != internalStoragePath && it.trimEnd('/') != sdCardPath }?.apply {
|
||||||
|
val otgPath = trimEnd('/')
|
||||||
|
config.OTGPath = otgPath
|
||||||
|
config.addIncludedFolder(otgPath)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
@ -389,9 +394,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
private fun tryLoadGallery() {
|
private fun tryLoadGallery() {
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
handlePermission(PERMISSION_WRITE_STORAGE) {
|
||||||
if (it) {
|
if (it) {
|
||||||
if (!config.wasOTGHandled && hasPermission(PERMISSION_WRITE_STORAGE)) {
|
checkOTGPath()
|
||||||
checkOTGInclusion()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.showAll) {
|
if (config.showAll) {
|
||||||
showAllMedia()
|
showAllMedia()
|
||||||
|
@ -497,36 +500,39 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val itemsToDelete = ArrayList<FileDirItem>()
|
||||||
|
val filter = config.filterMedia
|
||||||
|
val showHidden = config.shouldShowHidden
|
||||||
|
fileDirItems.filter { it.isDirectory }.forEach {
|
||||||
|
val files = File(it.path).listFiles()
|
||||||
|
files?.filter {
|
||||||
|
it.absolutePath.isMediaFile() && (showHidden || !it.name.startsWith('.')) &&
|
||||||
|
((it.isImageFast() && filter and TYPE_IMAGES != 0) ||
|
||||||
|
(it.isVideoFast() && filter and TYPE_VIDEOS != 0) ||
|
||||||
|
(it.isGif() && filter and TYPE_GIFS != 0) ||
|
||||||
|
(it.isRawFast() && filter and TYPE_RAWS != 0) ||
|
||||||
|
(it.isSvg() && filter and TYPE_SVGS != 0))
|
||||||
|
}?.mapTo(itemsToDelete) { it.toFileDirItem(this) }
|
||||||
|
}
|
||||||
|
|
||||||
if (config.useRecycleBin) {
|
if (config.useRecycleBin) {
|
||||||
val pathsToDelete = ArrayList<String>()
|
val pathsToDelete = ArrayList<String>()
|
||||||
val filter = config.filterMedia
|
itemsToDelete.mapTo(pathsToDelete) { it.path }
|
||||||
val showHidden = config.shouldShowHidden
|
|
||||||
fileDirItems.filter { it.isDirectory }.forEach {
|
|
||||||
val files = File(it.path).listFiles()
|
|
||||||
files?.filter {
|
|
||||||
it.absolutePath.isMediaFile() && (showHidden || !it.name.startsWith('.')) &&
|
|
||||||
((it.isImageFast() && filter and TYPE_IMAGES != 0) ||
|
|
||||||
(it.isVideoFast() && filter and TYPE_VIDEOS != 0) ||
|
|
||||||
(it.isGif() && filter and TYPE_GIFS != 0) ||
|
|
||||||
(it.isRawFast() && filter and TYPE_RAWS != 0) ||
|
|
||||||
(it.isSvg() && filter and TYPE_SVGS != 0))
|
|
||||||
}?.mapTo(pathsToDelete) { it.absolutePath }
|
|
||||||
}
|
|
||||||
|
|
||||||
movePathsInRecycleBin(pathsToDelete, mMediumDao) {
|
movePathsInRecycleBin(pathsToDelete, mMediumDao) {
|
||||||
if (it) {
|
if (it) {
|
||||||
deleteFilteredFolders(fileDirItems, folders)
|
deleteFilteredFileDirItems(itemsToDelete, folders)
|
||||||
} else {
|
} else {
|
||||||
toast(R.string.unknown_error_occurred)
|
toast(R.string.unknown_error_occurred)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
deleteFilteredFolders(fileDirItems, folders)
|
deleteFilteredFileDirItems(itemsToDelete, folders)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteFilteredFolders(fileDirItems: ArrayList<FileDirItem>, folders: ArrayList<File>) {
|
private fun deleteFilteredFileDirItems(fileDirItems: ArrayList<FileDirItem>, folders: ArrayList<File>) {
|
||||||
deleteFolders(fileDirItems) {
|
deleteFiles(fileDirItems) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
refreshItems()
|
refreshItems()
|
||||||
}
|
}
|
||||||
|
@ -617,6 +623,18 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
mZoomListener = null
|
mZoomListener = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun toggleRecycleBin(show: Boolean) {
|
||||||
|
config.showRecycleBinAtFolders = show
|
||||||
|
invalidateOptionsMenu()
|
||||||
|
Thread {
|
||||||
|
var dirs = getCurrentlyDisplayedDirs()
|
||||||
|
if (!show) {
|
||||||
|
dirs = dirs.filter { it.path != RECYCLE_BIN } as ArrayList<Directory>
|
||||||
|
}
|
||||||
|
gotDirectories(dirs)
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
||||||
private fun createNewFolder() {
|
private fun createNewFolder() {
|
||||||
FilePickerDialog(this, internalStoragePath, false, config.shouldShowHidden, false, true) {
|
FilePickerDialog(this, internalStoragePath, false, config.shouldShowHidden, false, true) {
|
||||||
CreateNewFolderDialog(this, it) {
|
CreateNewFolderDialog(this, it) {
|
||||||
|
@ -681,7 +699,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
var resultUri: Uri? = null
|
var resultUri: Uri? = null
|
||||||
if (mIsThirdPartyIntent) {
|
if (mIsThirdPartyIntent) {
|
||||||
when {
|
when {
|
||||||
intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> {
|
intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true && intent.flags and Intent.FLAG_GRANT_WRITE_URI_PERMISSION != 0 -> {
|
||||||
resultUri = fillExtraOutput(resultData)
|
resultUri = fillExtraOutput(resultData)
|
||||||
}
|
}
|
||||||
resultData.extras?.containsKey(PICKED_PATHS) == true -> fillPickedPaths(resultData, resultIntent)
|
resultData.extras?.containsKey(PICKED_PATHS) == true -> fillPickedPaths(resultData, resultIntent)
|
||||||
|
@ -803,6 +821,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
val tempFolderPath = config.tempFolderPath
|
val tempFolderPath = config.tempFolderPath
|
||||||
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
|
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
|
||||||
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0
|
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0
|
||||||
|
val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0
|
||||||
val favoritePaths = getFavoritePaths()
|
val favoritePaths = getFavoritePaths()
|
||||||
val dirPathsToRemove = ArrayList<String>()
|
val dirPathsToRemove = ArrayList<String>()
|
||||||
|
|
||||||
|
@ -812,14 +831,14 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val curMedia = mediaFetcher.getFilesFrom(directory.path, getImagesOnly, getVideosOnly, getProperDateTaken, favoritePaths, false)
|
val curMedia = mediaFetcher.getFilesFrom(directory.path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false)
|
||||||
val newDir = if (curMedia.isEmpty()) {
|
val newDir = if (curMedia.isEmpty()) {
|
||||||
if (directory.path != tempFolderPath) {
|
if (directory.path != tempFolderPath) {
|
||||||
dirPathsToRemove.add(directory.path)
|
dirPathsToRemove.add(directory.path)
|
||||||
}
|
}
|
||||||
directory
|
directory
|
||||||
} else {
|
} else {
|
||||||
createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending)
|
createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
// we are looping through the already displayed folders looking for changes, do not do anything if nothing changed
|
// we are looping through the already displayed folders looking for changes, do not do anything if nothing changed
|
||||||
|
@ -885,7 +904,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val newMedia = mediaFetcher.getFilesFrom(folder, getImagesOnly, getVideosOnly, getProperDateTaken, favoritePaths, false)
|
val newMedia = mediaFetcher.getFilesFrom(folder, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false)
|
||||||
if (newMedia.isEmpty()) {
|
if (newMedia.isEmpty()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -899,12 +918,15 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, isSortingAscending)
|
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize)
|
||||||
dirs.add(newDir)
|
dirs.add(newDir)
|
||||||
setupAdapter(dirs)
|
setupAdapter(dirs)
|
||||||
mDirectoryDao.insert(newDir)
|
try {
|
||||||
if (folder != RECYCLE_BIN) {
|
mDirectoryDao.insert(newDir)
|
||||||
mMediumDao.insertAll(newMedia)
|
if (folder != RECYCLE_BIN) {
|
||||||
|
mMediumDao.insertAll(newMedia)
|
||||||
|
}
|
||||||
|
} catch (ignored: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -939,14 +961,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
|
private fun createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
|
||||||
includedFolders: MutableSet<String>, isSortingAscending: Boolean): Directory {
|
includedFolders: MutableSet<String>, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory {
|
||||||
var thumbnail = curMedia.firstOrNull { getDoesFilePathExist(it.path) }?.path ?: ""
|
var thumbnail = curMedia.firstOrNull { File(it.path).exists() }?.path ?: ""
|
||||||
if (thumbnail.startsWith(OTG_PATH)) {
|
|
||||||
thumbnail = thumbnail.getOTGPublicPath(applicationContext)
|
|
||||||
}
|
|
||||||
|
|
||||||
albumCovers.forEach {
|
albumCovers.forEach {
|
||||||
if (it.path == path && getDoesFilePathExist(it.tmb)) {
|
if (it.path == path && File(it.tmb).exists()) {
|
||||||
thumbnail = it.tmb
|
thumbnail = it.tmb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -956,7 +974,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
val dirName = checkAppendingHidden(path, hiddenString, includedFolders)
|
val dirName = checkAppendingHidden(path, hiddenString, includedFolders)
|
||||||
val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified)
|
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 dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken)
|
||||||
val size = curMedia.sumByLong { it.size }
|
val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L
|
||||||
val mediaTypes = curMedia.getDirMediaTypes()
|
val mediaTypes = curMedia.getDirMediaTypes()
|
||||||
return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes)
|
return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes)
|
||||||
}
|
}
|
||||||
|
@ -1030,10 +1048,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
private fun checkInvalidDirectories(dirs: ArrayList<Directory>) {
|
private fun checkInvalidDirectories(dirs: ArrayList<Directory>) {
|
||||||
val invalidDirs = ArrayList<Directory>()
|
val invalidDirs = ArrayList<Directory>()
|
||||||
dirs.filter { !it.areFavorites() && !it.isRecycleBin() }.forEach {
|
dirs.filter { !it.areFavorites() && !it.isRecycleBin() }.forEach {
|
||||||
if (!getDoesFilePathExist(it.path)) {
|
if (!File(it.path).exists()) {
|
||||||
invalidDirs.add(it)
|
invalidDirs.add(it)
|
||||||
} else if (it.path != config.tempFolderPath) {
|
} else if (it.path != config.tempFolderPath) {
|
||||||
val children = if (it.path.startsWith(OTG_PATH)) getOTGFolderChildrenNames(it.path) else File(it.path).list()?.asList()
|
val children = File(it.path).list()?.asList()
|
||||||
val hasMediaFile = children?.any { it?.isMediaFile() == true } ?: false
|
val hasMediaFile = children?.any { it?.isMediaFile() == true } ?: false
|
||||||
if (!hasMediaFile) {
|
if (!hasMediaFile) {
|
||||||
invalidDirs.add(it)
|
invalidDirs.add(it)
|
||||||
|
@ -1066,7 +1084,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
|
|
||||||
private fun getCurrentlyDisplayedDirs() = getRecyclerAdapter()?.dirs ?: ArrayList()
|
private fun getCurrentlyDisplayedDirs() = getRecyclerAdapter()?.dirs ?: ArrayList()
|
||||||
|
|
||||||
private fun getBubbleTextItem(index: Int) = getRecyclerAdapter()?.dirs?.getOrNull(index)?.getBubbleText(config.directorySorting) ?: ""
|
private fun getBubbleTextItem(index: Int) = getRecyclerAdapter()?.dirs?.getOrNull(index)?.getBubbleText(config.directorySorting, this)
|
||||||
|
?: ""
|
||||||
|
|
||||||
private fun setupLatestMediaId() {
|
private fun setupLatestMediaId() {
|
||||||
Thread {
|
Thread {
|
||||||
|
|
|
@ -23,9 +23,9 @@ import com.bumptech.glide.request.target.SimpleTarget
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||||
import com.simplemobiletools.commons.helpers.REQUEST_EDIT_IMAGE
|
import com.simplemobiletools.commons.helpers.REQUEST_EDIT_IMAGE
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_RANDOM
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
|
@ -108,6 +108,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
|
|
||||||
if (mShowAll) {
|
if (mShowAll) {
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(false)
|
supportActionBar?.setDisplayHomeAsUpEnabled(false)
|
||||||
|
registerFileUpdateListener()
|
||||||
}
|
}
|
||||||
|
|
||||||
media_empty_text.setOnClickListener {
|
media_empty_text.setOnClickListener {
|
||||||
|
@ -153,10 +154,13 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble
|
media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble
|
||||||
media_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble
|
media_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble
|
||||||
media_refresh_layout.isEnabled = config.enablePullToRefresh
|
media_refresh_layout.isEnabled = config.enablePullToRefresh
|
||||||
tryLoadGallery()
|
|
||||||
invalidateOptionsMenu()
|
invalidateOptionsMenu()
|
||||||
media_empty_text_label.setTextColor(config.textColor)
|
media_empty_text_label.setTextColor(config.textColor)
|
||||||
media_empty_text.setTextColor(getAdjustedPrimaryColor())
|
media_empty_text.setTextColor(getAdjustedPrimaryColor())
|
||||||
|
|
||||||
|
if (mMedia.isEmpty() || config.getFileSorting(mPath) and SORT_BY_RANDOM == 0) {
|
||||||
|
tryLoadGallery()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
@ -190,6 +194,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
if (config.showAll && !isChangingConfigurations) {
|
if (config.showAll && !isChangingConfigurations) {
|
||||||
config.temporarilyShowHidden = false
|
config.temporarilyShowHidden = false
|
||||||
config.tempSkipDeleteConfirmation = false
|
config.tempSkipDeleteConfirmation = false
|
||||||
|
unregisterFileUpdateListener()
|
||||||
GalleryDatabase.destroyInstance()
|
GalleryDatabase.destroyInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,8 +344,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
val dirName = when {
|
val dirName = when {
|
||||||
mPath == FAVORITES -> getString(R.string.favorites)
|
mPath == FAVORITES -> getString(R.string.favorites)
|
||||||
mPath == RECYCLE_BIN -> getString(R.string.recycle_bin)
|
mPath == RECYCLE_BIN -> getString(R.string.recycle_bin)
|
||||||
mPath == OTG_PATH -> getString(R.string.usb)
|
mPath == config.OTGPath -> getString(R.string.usb)
|
||||||
mPath.startsWith(OTG_PATH) -> mPath.trimEnd('/').substringAfterLast('/')
|
|
||||||
else -> getHumanizedFilename(mPath)
|
else -> getHumanizedFilename(mPath)
|
||||||
}
|
}
|
||||||
updateActionBarTitle(if (mShowAll) resources.getString(R.string.all_folders) else dirName)
|
updateActionBarTitle(if (mShowAll) resources.getString(R.string.all_folders) else dirName)
|
||||||
|
@ -415,7 +419,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkLastMediaChanged() {
|
private fun checkLastMediaChanged() {
|
||||||
if (isDestroyed) {
|
if (isDestroyed || config.getFileSorting(mPath) and SORT_BY_RANDOM != 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,7 +551,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
|
||||||
|
|
||||||
private fun deleteDirectoryIfEmpty() {
|
private fun deleteDirectoryIfEmpty() {
|
||||||
val fileDirItem = FileDirItem(mPath, mPath.getFilenameFromPath(), true)
|
val fileDirItem = FileDirItem(mPath, mPath.getFilenameFromPath(), true)
|
||||||
if (config.deleteEmptyFolders && !fileDirItem.isDownloadsFolder() && fileDirItem.isDirectory && fileDirItem.getProperFileCount(applicationContext, true) == 0) {
|
if (config.deleteEmptyFolders && !fileDirItem.isDownloadsFolder() && fileDirItem.isDirectory && fileDirItem.getProperFileCount(true) == 0) {
|
||||||
tryDeleteFileDirItem(fileDirItem, true, true)
|
tryDeleteFileDirItem(fileDirItem, true, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.IS_FROM_GALLERY
|
import com.simplemobiletools.commons.helpers.IS_FROM_GALLERY
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||||
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
|
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
|
||||||
|
import com.simplemobiletools.commons.helpers.SIDELOADING_TRUE
|
||||||
import com.simplemobiletools.gallery.pro.BuildConfig
|
import com.simplemobiletools.gallery.pro.BuildConfig
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
import com.simplemobiletools.gallery.pro.extensions.*
|
import com.simplemobiletools.gallery.pro.extensions.*
|
||||||
|
@ -40,6 +41,11 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.fragment_holder)
|
setContentView(R.layout.fragment_holder)
|
||||||
|
|
||||||
|
if (config.appSideloadingStatus == SIDELOADING_TRUE) {
|
||||||
|
showSideloadingDialog()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
handlePermission(PERMISSION_WRITE_STORAGE) {
|
||||||
if (it) {
|
if (it) {
|
||||||
checkIntent(savedInstanceState)
|
checkIntent(savedInstanceState)
|
||||||
|
@ -68,6 +74,18 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
|
||||||
|
|
||||||
private fun checkIntent(savedInstanceState: Bundle? = null) {
|
private fun checkIntent(savedInstanceState: Bundle? = null) {
|
||||||
mUri = intent.data ?: return
|
mUri = intent.data ?: return
|
||||||
|
val uri = mUri.toString()
|
||||||
|
if (uri.startsWith("content:/") && uri.contains("/storage/")) {
|
||||||
|
val guessedPath = uri.substring(uri.indexOf("/storage/"))
|
||||||
|
if (File(guessedPath).exists()) {
|
||||||
|
val extras = intent.extras ?: Bundle()
|
||||||
|
extras.apply {
|
||||||
|
putString(REAL_FILE_PATH, guessedPath)
|
||||||
|
intent.putExtras(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var filename = getFilenameFromUri(mUri!!)
|
var filename = getFilenameFromUri(mUri!!)
|
||||||
mIsFromGallery = intent.getBooleanExtra(IS_FROM_GALLERY, false)
|
mIsFromGallery = intent.getBooleanExtra(IS_FROM_GALLERY, false)
|
||||||
if (mIsFromGallery && filename.isVideoFast() && config.openVideosOnSeparateScreen) {
|
if (mIsFromGallery && filename.isVideoFast() && config.openVideosOnSeparateScreen) {
|
||||||
|
@ -76,7 +94,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intent.extras?.containsKey(REAL_FILE_PATH) == true) {
|
if (intent.extras?.containsKey(REAL_FILE_PATH) == true) {
|
||||||
val realPath = intent.extras.getString(REAL_FILE_PATH)
|
val realPath = intent.extras!!.getString(REAL_FILE_PATH)
|
||||||
if (realPath != null) {
|
if (realPath != null) {
|
||||||
if (realPath.getFilenameFromPath().contains('.') || filename.contains('.')) {
|
if (realPath.getFilenameFromPath().contains('.') || filename.contains('.')) {
|
||||||
sendViewPagerIntent(realPath)
|
sendViewPagerIntent(realPath)
|
||||||
|
@ -133,6 +151,12 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
|
||||||
fragment_holder.background = ColorDrawable(Color.BLACK)
|
fragment_holder.background = ColorDrawable(Color.BLACK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.maxBrightness) {
|
||||||
|
val attributes = window.attributes
|
||||||
|
attributes.screenBrightness = 1f
|
||||||
|
window.attributes = attributes
|
||||||
|
}
|
||||||
|
|
||||||
window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
|
window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
|
||||||
val isFullscreen = visibility and View.SYSTEM_UI_FLAG_FULLSCREEN != 0
|
val isFullscreen = visibility and View.SYSTEM_UI_FLAG_FULLSCREEN != 0
|
||||||
mFragment?.fullscreenToggled(isFullscreen)
|
mFragment?.fullscreenToggled(isFullscreen)
|
||||||
|
@ -245,7 +269,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
|
||||||
|
|
||||||
private fun initBottomActionButtons() {
|
private fun initBottomActionButtons() {
|
||||||
arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map,
|
arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map,
|
||||||
bottom_toggle_file_visibility, bottom_rename, bottom_copy).forEach {
|
bottom_toggle_file_visibility, bottom_rename, bottom_copy, bottom_move).forEach {
|
||||||
it.beGone()
|
it.beGone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,7 @@ package com.simplemobiletools.gallery.pro.activities
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.*
|
||||||
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|
||||||
import com.simplemobiletools.commons.dialogs.SecurityDialog
|
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.*
|
import com.simplemobiletools.commons.helpers.*
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
|
@ -38,11 +35,12 @@ class SettingsActivity : SimpleActivity() {
|
||||||
private fun setupSettingItems() {
|
private fun setupSettingItems() {
|
||||||
setupCustomizeColors()
|
setupCustomizeColors()
|
||||||
setupUseEnglish()
|
setupUseEnglish()
|
||||||
|
setupChangeDateTimeFormat()
|
||||||
|
setupFileLoadingPriority()
|
||||||
setupManageIncludedFolders()
|
setupManageIncludedFolders()
|
||||||
setupManageExcludedFolders()
|
setupManageExcludedFolders()
|
||||||
setupManageHiddenFolders()
|
setupManageHiddenFolders()
|
||||||
setupShowHiddenItems()
|
setupShowHiddenItems()
|
||||||
setupDoExtraCheck()
|
|
||||||
setupAutoplayVideos()
|
setupAutoplayVideos()
|
||||||
setupRememberLastVideo()
|
setupRememberLastVideo()
|
||||||
setupLoopVideos()
|
setupLoopVideos()
|
||||||
|
@ -61,6 +59,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
setupAllowPhotoGestures()
|
setupAllowPhotoGestures()
|
||||||
setupAllowVideoGestures()
|
setupAllowVideoGestures()
|
||||||
setupAllowDownGesture()
|
setupAllowDownGesture()
|
||||||
|
setupAllowRotatingWithGestures()
|
||||||
setupShowNotch()
|
setupShowNotch()
|
||||||
setupBottomActions()
|
setupBottomActions()
|
||||||
setupThumbnailVideoDuration()
|
setupThumbnailVideoDuration()
|
||||||
|
@ -112,6 +111,33 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupChangeDateTimeFormat() {
|
||||||
|
settings_change_date_time_format_holder.setOnClickListener {
|
||||||
|
ChangeDateTimeFormatDialog(this) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupFileLoadingPriority() {
|
||||||
|
settings_file_loading_priority.text = getFileLoadingPriorityText()
|
||||||
|
settings_file_loading_priority_holder.setOnClickListener {
|
||||||
|
val items = arrayListOf(
|
||||||
|
RadioItem(PRIORITY_SPEED, getString(R.string.speed)),
|
||||||
|
RadioItem(PRIORITY_COMPROMISE, getString(R.string.compromise)),
|
||||||
|
RadioItem(PRIORITY_VALIDITY, getString(R.string.avoid_showing_invalid_files)))
|
||||||
|
|
||||||
|
RadioGroupDialog(this@SettingsActivity, items, config.fileLoadingPriority) {
|
||||||
|
config.fileLoadingPriority = it as Int
|
||||||
|
settings_file_loading_priority.text = getFileLoadingPriorityText()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getFileLoadingPriorityText() = getString(when (config.fileLoadingPriority) {
|
||||||
|
PRIORITY_SPEED -> R.string.speed
|
||||||
|
PRIORITY_COMPROMISE -> R.string.compromise
|
||||||
|
else -> R.string.avoid_showing_invalid_files
|
||||||
|
})
|
||||||
|
|
||||||
private fun setupManageIncludedFolders() {
|
private fun setupManageIncludedFolders() {
|
||||||
settings_manage_included_folders_holder.setOnClickListener {
|
settings_manage_included_folders_holder.setOnClickListener {
|
||||||
startActivity(Intent(this, IncludedFoldersActivity::class.java))
|
startActivity(Intent(this, IncludedFoldersActivity::class.java))
|
||||||
|
@ -150,14 +176,6 @@ class SettingsActivity : SimpleActivity() {
|
||||||
config.showHiddenMedia = settings_show_hidden_items.isChecked
|
config.showHiddenMedia = settings_show_hidden_items.isChecked
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupDoExtraCheck() {
|
|
||||||
settings_do_extra_check.isChecked = config.doExtraCheck
|
|
||||||
settings_do_extra_check_holder.setOnClickListener {
|
|
||||||
settings_do_extra_check.toggle()
|
|
||||||
config.doExtraCheck = settings_do_extra_check.isChecked
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupAutoplayVideos() {
|
private fun setupAutoplayVideos() {
|
||||||
settings_autoplay_videos.isChecked = config.autoplayVideos
|
settings_autoplay_videos.isChecked = config.autoplayVideos
|
||||||
settings_autoplay_videos_holder.setOnClickListener {
|
settings_autoplay_videos_holder.setOnClickListener {
|
||||||
|
@ -349,6 +367,14 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupAllowRotatingWithGestures() {
|
||||||
|
settings_allow_rotating_with_gestures.isChecked = config.allowRotatingWithGestures
|
||||||
|
settings_allow_rotating_with_gestures_holder.setOnClickListener {
|
||||||
|
settings_allow_rotating_with_gestures.toggle()
|
||||||
|
config.allowRotatingWithGestures = settings_allow_rotating_with_gestures.isChecked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupShowNotch() {
|
private fun setupShowNotch() {
|
||||||
settings_show_notch_holder.beVisibleIf(isPiePlus())
|
settings_show_notch_holder.beVisibleIf(isPiePlus())
|
||||||
settings_show_notch.isChecked = config.showNotch
|
settings_show_notch.isChecked = config.showNotch
|
||||||
|
@ -401,6 +427,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateDeepZoomToggleButtons() {
|
private fun updateDeepZoomToggleButtons() {
|
||||||
|
settings_allow_rotating_with_gestures_holder.beVisibleIf(config.allowZoomingImages)
|
||||||
settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages)
|
settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages)
|
||||||
settings_allow_one_to_one_zoom_holder.beVisibleIf(config.allowZoomingImages)
|
settings_allow_one_to_one_zoom_holder.beVisibleIf(config.allowZoomingImages)
|
||||||
}
|
}
|
||||||
|
@ -575,10 +602,14 @@ class SettingsActivity : SimpleActivity() {
|
||||||
put(APP_ICON_COLOR, config.appIconColor)
|
put(APP_ICON_COLOR, config.appIconColor)
|
||||||
put(USE_ENGLISH, config.useEnglish)
|
put(USE_ENGLISH, config.useEnglish)
|
||||||
put(WAS_USE_ENGLISH_TOGGLED, config.wasUseEnglishToggled)
|
put(WAS_USE_ENGLISH_TOGGLED, config.wasUseEnglishToggled)
|
||||||
|
put(WIDGET_BG_COLOR, config.widgetBgColor)
|
||||||
|
put(WIDGET_TEXT_COLOR, config.widgetTextColor)
|
||||||
|
put(DATE_FORMAT, config.dateFormat)
|
||||||
|
put(USE_24_HOUR_FORMAT, config.use24HourFormat)
|
||||||
put(INCLUDED_FOLDERS, TextUtils.join(",", config.includedFolders))
|
put(INCLUDED_FOLDERS, TextUtils.join(",", config.includedFolders))
|
||||||
put(EXCLUDED_FOLDERS, TextUtils.join(",", config.excludedFolders))
|
put(EXCLUDED_FOLDERS, TextUtils.join(",", config.excludedFolders))
|
||||||
put(SHOW_HIDDEN_MEDIA, config.showHiddenMedia)
|
put(SHOW_HIDDEN_MEDIA, config.showHiddenMedia)
|
||||||
put(DO_EXTRA_CHECK, config.doExtraCheck)
|
put(FILE_LOADING_PRIORITY, config.fileLoadingPriority)
|
||||||
put(AUTOPLAY_VIDEOS, config.autoplayVideos)
|
put(AUTOPLAY_VIDEOS, config.autoplayVideos)
|
||||||
put(REMEMBER_LAST_VIDEO_POSITION, config.rememberLastVideoPosition)
|
put(REMEMBER_LAST_VIDEO_POSITION, config.rememberLastVideoPosition)
|
||||||
put(LAST_VIDEO_PATH, config.lastVideoPath)
|
put(LAST_VIDEO_PATH, config.lastVideoPath)
|
||||||
|
@ -598,6 +629,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
put(ALLOW_INSTANT_CHANGE, config.allowInstantChange)
|
put(ALLOW_INSTANT_CHANGE, config.allowInstantChange)
|
||||||
put(ALLOW_PHOTO_GESTURES, config.allowPhotoGestures)
|
put(ALLOW_PHOTO_GESTURES, config.allowPhotoGestures)
|
||||||
put(ALLOW_DOWN_GESTURE, config.allowDownGesture)
|
put(ALLOW_DOWN_GESTURE, config.allowDownGesture)
|
||||||
|
put(ALLOW_ROTATING_WITH_GESTURES, config.allowRotatingWithGestures)
|
||||||
put(SHOW_NOTCH, config.showNotch)
|
put(SHOW_NOTCH, config.showNotch)
|
||||||
put(SCREEN_ROTATION, config.screenRotation)
|
put(SCREEN_ROTATION, config.screenRotation)
|
||||||
put(ALLOW_ZOOMING_IMAGES, config.allowZoomingImages)
|
put(ALLOW_ZOOMING_IMAGES, config.allowZoomingImages)
|
||||||
|
@ -625,8 +657,6 @@ class SettingsActivity : SimpleActivity() {
|
||||||
put(MEDIA_COLUMN_CNT, config.mediaColumnCnt)
|
put(MEDIA_COLUMN_CNT, config.mediaColumnCnt)
|
||||||
put(SHOW_ALL, config.showAll)
|
put(SHOW_ALL, config.showAll)
|
||||||
put(SHOW_WIDGET_FOLDER_NAME, config.showWidgetFolderName)
|
put(SHOW_WIDGET_FOLDER_NAME, config.showWidgetFolderName)
|
||||||
put(WIDGET_BG_COLOR, config.widgetBgColor)
|
|
||||||
put(WIDGET_TEXT_COLOR, config.widgetTextColor)
|
|
||||||
put(VIEW_TYPE_FILES, config.viewTypeFiles)
|
put(VIEW_TYPE_FILES, config.viewTypeFiles)
|
||||||
put(VIEW_TYPE_FOLDERS, config.viewTypeFolders)
|
put(VIEW_TYPE_FOLDERS, config.viewTypeFolders)
|
||||||
put(SLIDESHOW_INTERVAL, config.slideshowInterval)
|
put(SLIDESHOW_INTERVAL, config.slideshowInterval)
|
||||||
|
@ -695,10 +725,14 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
USE_ENGLISH -> config.useEnglish = value.toBoolean()
|
USE_ENGLISH -> config.useEnglish = value.toBoolean()
|
||||||
WAS_USE_ENGLISH_TOGGLED -> config.wasUseEnglishToggled = value.toBoolean()
|
WAS_USE_ENGLISH_TOGGLED -> config.wasUseEnglishToggled = value.toBoolean()
|
||||||
|
WIDGET_BG_COLOR -> config.widgetBgColor = value.toInt()
|
||||||
|
WIDGET_TEXT_COLOR -> config.widgetTextColor = value.toInt()
|
||||||
|
DATE_FORMAT -> config.dateFormat = value.toString()
|
||||||
|
USE_24_HOUR_FORMAT -> config.use24HourFormat = value.toBoolean()
|
||||||
INCLUDED_FOLDERS -> config.addIncludedFolders(value.toStringSet())
|
INCLUDED_FOLDERS -> config.addIncludedFolders(value.toStringSet())
|
||||||
EXCLUDED_FOLDERS -> config.addExcludedFolders(value.toStringSet())
|
EXCLUDED_FOLDERS -> config.addExcludedFolders(value.toStringSet())
|
||||||
SHOW_HIDDEN_MEDIA -> config.showHiddenMedia = value.toBoolean()
|
SHOW_HIDDEN_MEDIA -> config.showHiddenMedia = value.toBoolean()
|
||||||
DO_EXTRA_CHECK -> config.doExtraCheck = value.toBoolean()
|
FILE_LOADING_PRIORITY -> config.fileLoadingPriority = value.toInt()
|
||||||
AUTOPLAY_VIDEOS -> config.autoplayVideos = value.toBoolean()
|
AUTOPLAY_VIDEOS -> config.autoplayVideos = value.toBoolean()
|
||||||
REMEMBER_LAST_VIDEO_POSITION -> config.rememberLastVideoPosition = value.toBoolean()
|
REMEMBER_LAST_VIDEO_POSITION -> config.rememberLastVideoPosition = value.toBoolean()
|
||||||
LAST_VIDEO_PATH -> config.lastVideoPath = value.toString()
|
LAST_VIDEO_PATH -> config.lastVideoPath = value.toString()
|
||||||
|
@ -718,6 +752,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
ALLOW_INSTANT_CHANGE -> config.allowInstantChange = value.toBoolean()
|
ALLOW_INSTANT_CHANGE -> config.allowInstantChange = value.toBoolean()
|
||||||
ALLOW_PHOTO_GESTURES -> config.allowPhotoGestures = value.toBoolean()
|
ALLOW_PHOTO_GESTURES -> config.allowPhotoGestures = value.toBoolean()
|
||||||
ALLOW_DOWN_GESTURE -> config.allowDownGesture = value.toBoolean()
|
ALLOW_DOWN_GESTURE -> config.allowDownGesture = value.toBoolean()
|
||||||
|
ALLOW_ROTATING_WITH_GESTURES -> config.allowRotatingWithGestures = value.toBoolean()
|
||||||
SHOW_NOTCH -> config.showNotch = value.toBoolean()
|
SHOW_NOTCH -> config.showNotch = value.toBoolean()
|
||||||
SCREEN_ROTATION -> config.screenRotation = value.toInt()
|
SCREEN_ROTATION -> config.screenRotation = value.toInt()
|
||||||
ALLOW_ZOOMING_IMAGES -> config.allowZoomingImages = value.toBoolean()
|
ALLOW_ZOOMING_IMAGES -> config.allowZoomingImages = value.toBoolean()
|
||||||
|
@ -745,8 +780,6 @@ class SettingsActivity : SimpleActivity() {
|
||||||
MEDIA_COLUMN_CNT -> config.mediaColumnCnt = value.toInt()
|
MEDIA_COLUMN_CNT -> config.mediaColumnCnt = value.toInt()
|
||||||
SHOW_ALL -> config.showAll = value.toBoolean()
|
SHOW_ALL -> config.showAll = value.toBoolean()
|
||||||
SHOW_WIDGET_FOLDER_NAME -> config.showWidgetFolderName = value.toBoolean()
|
SHOW_WIDGET_FOLDER_NAME -> config.showWidgetFolderName = value.toBoolean()
|
||||||
WIDGET_BG_COLOR -> config.widgetBgColor = value.toInt()
|
|
||||||
WIDGET_TEXT_COLOR -> config.widgetTextColor = value.toInt()
|
|
||||||
VIEW_TYPE_FILES -> config.viewTypeFiles = value.toInt()
|
VIEW_TYPE_FILES -> config.viewTypeFiles = value.toInt()
|
||||||
VIEW_TYPE_FOLDERS -> config.viewTypeFolders = value.toInt()
|
VIEW_TYPE_FOLDERS -> config.viewTypeFolders = value.toInt()
|
||||||
SLIDESHOW_INTERVAL -> config.slideshowInterval = value.toInt()
|
SLIDESHOW_INTERVAL -> config.slideshowInterval = value.toInt()
|
||||||
|
|
|
@ -1,13 +1,28 @@
|
||||||
package com.simplemobiletools.gallery.pro.activities
|
package com.simplemobiletools.gallery.pro.activities
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.database.ContentObserver
|
||||||
|
import android.net.Uri
|
||||||
|
import android.provider.MediaStore
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
|
import com.simplemobiletools.commons.extensions.getRealPathFromURI
|
||||||
import com.simplemobiletools.commons.helpers.isPiePlus
|
import com.simplemobiletools.commons.helpers.isPiePlus
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
|
import com.simplemobiletools.gallery.pro.extensions.addPathToDB
|
||||||
import com.simplemobiletools.gallery.pro.extensions.config
|
import com.simplemobiletools.gallery.pro.extensions.config
|
||||||
|
|
||||||
open class SimpleActivity : BaseSimpleActivity() {
|
open class SimpleActivity : BaseSimpleActivity() {
|
||||||
|
val observer = object : ContentObserver(null) {
|
||||||
|
override fun onChange(selfChange: Boolean, uri: Uri) {
|
||||||
|
super.onChange(selfChange, uri)
|
||||||
|
val path = getRealPathFromURI(uri)
|
||||||
|
if (path != null) {
|
||||||
|
addPathToDB(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun getAppIconIDs() = arrayListOf(
|
override fun getAppIconIDs() = arrayListOf(
|
||||||
R.mipmap.ic_launcher_red,
|
R.mipmap.ic_launcher_red,
|
||||||
R.mipmap.ic_launcher_pink,
|
R.mipmap.ic_launcher_pink,
|
||||||
|
@ -46,4 +61,19 @@ open class SimpleActivity : BaseSimpleActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun registerFileUpdateListener() {
|
||||||
|
try {
|
||||||
|
contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, observer)
|
||||||
|
contentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, observer)
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun unregisterFileUpdateListener() {
|
||||||
|
try {
|
||||||
|
contentResolver.unregisterContentObserver(observer)
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import android.content.Intent
|
||||||
import com.simplemobiletools.commons.activities.BaseSplashActivity
|
import com.simplemobiletools.commons.activities.BaseSplashActivity
|
||||||
|
|
||||||
class SplashActivity : BaseSplashActivity() {
|
class SplashActivity : BaseSplashActivity() {
|
||||||
override fun getAppPackageName() = "-1"
|
override fun getAppPackageName() = packageName
|
||||||
|
|
||||||
override fun initActivity() {
|
override fun initActivity() {
|
||||||
startActivity(Intent(this, MainActivity::class.java))
|
startActivity(Intent(this, MainActivity::class.java))
|
||||||
|
|
|
@ -153,6 +153,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0
|
findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0
|
||||||
findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0
|
findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0
|
||||||
findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0
|
findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0
|
||||||
|
findItem(R.id.menu_move_to).isVisible = visibleBottomActions and BOTTOM_ACTION_MOVE == 0
|
||||||
findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0
|
findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0
|
||||||
findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
|
findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
|
||||||
findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
|
findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
|
||||||
|
@ -243,7 +244,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getDoesFilePathExist(mPath)) {
|
if (!File(mPath).exists()) {
|
||||||
finish()
|
finish()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -267,9 +268,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
isShowingRecycleBin -> RECYCLE_BIN
|
isShowingRecycleBin -> RECYCLE_BIN
|
||||||
else -> mPath.getParentPath()
|
else -> mPath.getParentPath()
|
||||||
}
|
}
|
||||||
if (mDirectory.startsWith(OTG_PATH.trimEnd('/'))) {
|
|
||||||
mDirectory += "/"
|
|
||||||
}
|
|
||||||
supportActionBar?.title = mPath.getFilenameFromPath()
|
supportActionBar?.title = mPath.getFilenameFromPath()
|
||||||
|
|
||||||
view_pager.onGlobalLayout {
|
view_pager.onGlobalLayout {
|
||||||
|
@ -587,11 +585,12 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
private fun saveImageAs() {
|
private fun saveImageAs() {
|
||||||
val currPath = getCurrentPath()
|
val currPath = getCurrentPath()
|
||||||
SaveAsDialog(this, currPath, false) {
|
SaveAsDialog(this, currPath, false) {
|
||||||
|
val newPath = it
|
||||||
handleSAFDialog(it) {
|
handleSAFDialog(it) {
|
||||||
toast(R.string.saving)
|
toast(R.string.saving)
|
||||||
Thread {
|
Thread {
|
||||||
val photoFragment = getCurrentPhotoFragment() ?: return@Thread
|
val photoFragment = getCurrentPhotoFragment() ?: return@Thread
|
||||||
saveRotatedImageToFile(currPath, it, photoFragment.mCurrentRotationDegrees, true) {
|
saveRotatedImageToFile(currPath, newPath, photoFragment.mCurrentRotationDegrees, true) {
|
||||||
toast(R.string.file_saved)
|
toast(R.string.file_saved)
|
||||||
getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0
|
getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0
|
||||||
invalidateOptionsMenu()
|
invalidateOptionsMenu()
|
||||||
|
@ -779,6 +778,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
bottom_copy.setOnClickListener {
|
bottom_copy.setOnClickListener {
|
||||||
copyMoveTo(true)
|
copyMoveTo(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bottom_move.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_MOVE != 0)
|
||||||
|
bottom_move.setOnClickListener {
|
||||||
|
moveFileTo()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateBottomActionIcons(medium: Medium?) {
|
private fun updateBottomActionIcons(medium: Medium?) {
|
||||||
|
@ -867,7 +871,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
|
|
||||||
private fun deleteConfirmed() {
|
private fun deleteConfirmed() {
|
||||||
val path = getCurrentMedia().getOrNull(mPos)?.path ?: return
|
val path = getCurrentMedia().getOrNull(mPos)?.path ?: return
|
||||||
if (getIsPathDirectory(path) || !path.isMediaFile()) {
|
if (File(path).isDirectory || !path.isMediaFile()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -959,8 +963,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteDirectoryIfEmpty() {
|
private fun deleteDirectoryIfEmpty() {
|
||||||
val fileDirItem = FileDirItem(mDirectory, mDirectory.getFilenameFromPath(), getIsPathDirectory(mDirectory))
|
val fileDirItem = FileDirItem(mDirectory, mDirectory.getFilenameFromPath(), File(mDirectory).isDirectory)
|
||||||
if (config.deleteEmptyFolders && !fileDirItem.isDownloadsFolder() && fileDirItem.isDirectory && fileDirItem.getProperFileCount(applicationContext, true) == 0) {
|
if (config.deleteEmptyFolders && !fileDirItem.isDownloadsFolder() && fileDirItem.isDirectory && fileDirItem.getProperFileCount(true) == 0) {
|
||||||
tryDeleteFileDirItem(fileDirItem, true, true)
|
tryDeleteFileDirItem(fileDirItem, true, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,12 +66,7 @@ class WidgetConfigureActivity : SimpleActivity() {
|
||||||
|
|
||||||
private fun initVariables() {
|
private fun initVariables() {
|
||||||
mBgColor = config.widgetBgColor
|
mBgColor = config.widgetBgColor
|
||||||
if (mBgColor == 1) {
|
mBgAlpha = Color.alpha(mBgColor) / 255f
|
||||||
mBgColor = Color.BLACK
|
|
||||||
mBgAlpha = .2f
|
|
||||||
} else {
|
|
||||||
mBgAlpha = Color.alpha(mBgColor) / 255f
|
|
||||||
}
|
|
||||||
|
|
||||||
mBgColorWithoutTransparency = Color.rgb(Color.red(mBgColor), Color.green(mBgColor), Color.blue(mBgColor))
|
mBgColorWithoutTransparency = Color.rgb(Color.red(mBgColor), Color.green(mBgColor), Color.blue(mBgColor))
|
||||||
config_bg_seekbar.apply {
|
config_bg_seekbar.apply {
|
||||||
|
|
|
@ -12,7 +12,6 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RenameItemDialog
|
import com.simplemobiletools.commons.dialogs.RenameItemDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
|
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.commons.views.FastScroller
|
import com.simplemobiletools.commons.views.FastScroller
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
|
@ -321,20 +320,16 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
|
||||||
val paths = ArrayList<String>()
|
val paths = ArrayList<String>()
|
||||||
val showHidden = activity.config.shouldShowHidden
|
val showHidden = activity.config.shouldShowHidden
|
||||||
getSelectedPaths().forEach {
|
getSelectedPaths().forEach {
|
||||||
if (it.startsWith(OTG_PATH)) {
|
val filter = config.filterMedia
|
||||||
paths.addAll(getOTGFilePaths(it, showHidden))
|
File(it).listFiles()?.filter {
|
||||||
} else if (it != FAVORITES) {
|
!File(it.absolutePath).isDirectory &&
|
||||||
val filter = config.filterMedia
|
it.absolutePath.isMediaFile() && (showHidden || !it.name.startsWith('.')) &&
|
||||||
File(it).listFiles()?.filter {
|
((it.isImageFast() && filter and TYPE_IMAGES != 0) ||
|
||||||
!activity.getIsPathDirectory(it.absolutePath) &&
|
(it.isVideoFast() && filter and TYPE_VIDEOS != 0) ||
|
||||||
it.absolutePath.isMediaFile() && (showHidden || !it.name.startsWith('.')) &&
|
(it.isGif() && filter and TYPE_GIFS != 0) ||
|
||||||
((it.isImageFast() && filter and TYPE_IMAGES != 0) ||
|
(it.isRawFast() && filter and TYPE_RAWS != 0) ||
|
||||||
(it.isVideoFast() && filter and TYPE_VIDEOS != 0) ||
|
(it.isSvg() && filter and TYPE_SVGS != 0))
|
||||||
(it.isGif() && filter and TYPE_GIFS != 0) ||
|
}?.mapTo(paths) { it.absolutePath }
|
||||||
(it.isRawFast() && filter and TYPE_RAWS != 0) ||
|
|
||||||
(it.isSvg() && filter and TYPE_SVGS != 0))
|
|
||||||
}?.mapTo(paths) { it.absolutePath }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val fileDirItems = paths.map { FileDirItem(it, it.getFilenameFromPath()) } as ArrayList<FileDirItem>
|
val fileDirItems = paths.map { FileDirItem(it, it.getFilenameFromPath()) } as ArrayList<FileDirItem>
|
||||||
|
@ -345,25 +340,6 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getOTGFilePaths(path: String, showHidden: Boolean): ArrayList<String> {
|
|
||||||
val paths = ArrayList<String>()
|
|
||||||
val filter = config.filterMedia
|
|
||||||
activity.getOTGFolderChildren(path)?.filter { it.name != null }?.forEach {
|
|
||||||
if (!it.isDirectory &&
|
|
||||||
it.name!!.isMediaFile() && (showHidden || !it.name!!.startsWith('.')) &&
|
|
||||||
((it.name!!.isImageFast() && filter and TYPE_IMAGES != 0) ||
|
|
||||||
(it.name!!.isVideoFast() && filter and TYPE_VIDEOS != 0) ||
|
|
||||||
(it.name!!.isGif() && filter and TYPE_GIFS != 0) ||
|
|
||||||
(it.name!!.isRawFast() && filter and TYPE_RAWS != 0) ||
|
|
||||||
(it.name!!.isSvg() && filter and TYPE_SVGS != 0))
|
|
||||||
) {
|
|
||||||
val relativePath = it.uri.path.substringAfterLast("${activity.config.OTGPartition}:")
|
|
||||||
paths.add("$OTG_PATH$relativePath")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return paths
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
when {
|
when {
|
||||||
config.isDeletePasswordProtectionOn -> activity.handleDeletePasswordProtection {
|
config.isDeletePasswordProtectionOn -> activity.handleDeletePasswordProtection {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RenameItemDialog
|
import com.simplemobiletools.commons.dialogs.RenameItemDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
|
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.commons.views.FastScroller
|
import com.simplemobiletools.commons.views.FastScroller
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
|
@ -374,7 +373,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val SAFPath = getSelectedPaths().firstOrNull { activity.isPathOnSD(it) } ?: getFirstSelectedItemPath() ?: return
|
val SAFPath = getSelectedPaths().firstOrNull { activity.needsStupidWritePermissions(it) } ?: getFirstSelectedItemPath() ?: return
|
||||||
activity.handleSAFDialog(SAFPath) {
|
activity.handleSAFDialog(SAFPath) {
|
||||||
val fileDirItems = ArrayList<FileDirItem>(selectedKeys.size)
|
val fileDirItems = ArrayList<FileDirItem>(selectedKeys.size)
|
||||||
val removeMedia = ArrayList<Medium>(selectedKeys.size)
|
val removeMedia = ArrayList<Medium>(selectedKeys.size)
|
||||||
|
@ -435,7 +434,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
||||||
}, INSTANT_LOAD_DURATION)
|
}, INSTANT_LOAD_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getItemBubbleText(position: Int, sorting: Int) = (media[position] as? Medium)?.getBubbleText(sorting)
|
fun getItemBubbleText(position: Int, sorting: Int) = (media[position] as? Medium)?.getBubbleText(sorting, activity)
|
||||||
|
|
||||||
private fun setupThumbnail(view: View, medium: Medium) {
|
private fun setupThumbnail(view: View, medium: Medium) {
|
||||||
val isSelected = selectedKeys.contains(medium.path.hashCode())
|
val isSelected = selectedKeys.contains(medium.path.hashCode())
|
||||||
|
@ -456,11 +455,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
||||||
medium_check?.background?.applyColorFilter(primaryColor)
|
medium_check?.background?.applyColorFilter(primaryColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
var path = medium.path
|
val path = medium.path
|
||||||
if (hasOTGConnected && path.startsWith(OTG_PATH)) {
|
|
||||||
path = path.getOTGPublicPath(context)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (loadImageInstantly) {
|
if (loadImageInstantly) {
|
||||||
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, rotatedImagePaths)
|
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails, rotatedImagePaths)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3,12 +3,10 @@ package com.simplemobiletools.gallery.pro.asynctasks
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN
|
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
|
||||||
import com.simplemobiletools.gallery.pro.extensions.config
|
import com.simplemobiletools.gallery.pro.extensions.config
|
||||||
import com.simplemobiletools.gallery.pro.extensions.getFavoritePaths
|
import com.simplemobiletools.gallery.pro.extensions.getFavoritePaths
|
||||||
import com.simplemobiletools.gallery.pro.helpers.FAVORITES
|
import com.simplemobiletools.gallery.pro.helpers.*
|
||||||
import com.simplemobiletools.gallery.pro.helpers.MediaFetcher
|
|
||||||
import com.simplemobiletools.gallery.pro.helpers.RECYCLE_BIN
|
|
||||||
import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL
|
|
||||||
import com.simplemobiletools.gallery.pro.models.Medium
|
import com.simplemobiletools.gallery.pro.models.Medium
|
||||||
import com.simplemobiletools.gallery.pro.models.ThumbnailItem
|
import com.simplemobiletools.gallery.pro.models.ThumbnailItem
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -20,21 +18,22 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickImage
|
||||||
|
|
||||||
override fun doInBackground(vararg params: Void): ArrayList<ThumbnailItem> {
|
override fun doInBackground(vararg params: Void): ArrayList<ThumbnailItem> {
|
||||||
val pathToUse = if (showAll) SHOW_ALL else mPath
|
val pathToUse = if (showAll) SHOW_ALL else mPath
|
||||||
val getProperDateTaken = context.config.getFileSorting(pathToUse) and SORT_BY_DATE_TAKEN != 0
|
val getProperDateTaken = context.config.getFileSorting(pathToUse) and SORT_BY_DATE_TAKEN != 0 || context.config.getFolderGrouping(pathToUse) and GROUP_BY_DATE_TAKEN != 0
|
||||||
|
val getProperFileSize = context.config.getFileSorting(pathToUse) and SORT_BY_SIZE != 0
|
||||||
val favoritePaths = context.getFavoritePaths()
|
val favoritePaths = context.getFavoritePaths()
|
||||||
val getVideoDurations = context.config.showThumbnailVideoDuration
|
val getVideoDurations = context.config.showThumbnailVideoDuration
|
||||||
val media = if (showAll) {
|
val media = if (showAll) {
|
||||||
val foldersToScan = mediaFetcher.getFoldersToScan().filter { it != RECYCLE_BIN && it != FAVORITES }
|
val foldersToScan = mediaFetcher.getFoldersToScan().filter { it != RECYCLE_BIN && it != FAVORITES }
|
||||||
val media = ArrayList<Medium>()
|
val media = ArrayList<Medium>()
|
||||||
foldersToScan.forEach {
|
foldersToScan.forEach {
|
||||||
val newMedia = mediaFetcher.getFilesFrom(it, isPickImage, isPickVideo, getProperDateTaken, favoritePaths, getVideoDurations, false)
|
val newMedia = mediaFetcher.getFilesFrom(it, isPickImage, isPickVideo, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations, false)
|
||||||
media.addAll(newMedia)
|
media.addAll(newMedia)
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaFetcher.sortMedia(media, context.config.getFileSorting(SHOW_ALL))
|
mediaFetcher.sortMedia(media, context.config.getFileSorting(SHOW_ALL))
|
||||||
media
|
media
|
||||||
} else {
|
} else {
|
||||||
mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, getProperDateTaken, favoritePaths, getVideoDurations)
|
mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations)
|
||||||
}
|
}
|
||||||
return mediaFetcher.groupMedia(media, pathToUse)
|
return mediaFetcher.groupMedia(media, pathToUse)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
|
||||||
view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply {
|
view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply {
|
||||||
use_for_this_folder_divider.beVisibleIf(showFolderCheckbox)
|
use_for_this_folder_divider.beVisibleIf(showFolderCheckbox)
|
||||||
sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox)
|
sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox)
|
||||||
|
sorting_dialog_bottom_note.beVisibleIf(!isDirectorySorting)
|
||||||
sorting_dialog_use_for_this_folder.isChecked = config.hasCustomSorting(pathToUse)
|
sorting_dialog_use_for_this_folder.isChecked = config.hasCustomSorting(pathToUse)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ class ManageBottomActionsDialog(val activity: BaseSimpleActivity, val callback:
|
||||||
manage_bottom_actions_rename.isChecked = actions and BOTTOM_ACTION_RENAME != 0
|
manage_bottom_actions_rename.isChecked = actions and BOTTOM_ACTION_RENAME != 0
|
||||||
manage_bottom_actions_set_as.isChecked = actions and BOTTOM_ACTION_SET_AS != 0
|
manage_bottom_actions_set_as.isChecked = actions and BOTTOM_ACTION_SET_AS != 0
|
||||||
manage_bottom_actions_copy.isChecked = actions and BOTTOM_ACTION_COPY != 0
|
manage_bottom_actions_copy.isChecked = actions and BOTTOM_ACTION_COPY != 0
|
||||||
|
manage_bottom_actions_move.isChecked = actions and BOTTOM_ACTION_MOVE != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
AlertDialog.Builder(activity)
|
AlertDialog.Builder(activity)
|
||||||
|
@ -66,6 +67,8 @@ class ManageBottomActionsDialog(val activity: BaseSimpleActivity, val callback:
|
||||||
result += BOTTOM_ACTION_SET_AS
|
result += BOTTOM_ACTION_SET_AS
|
||||||
if (manage_bottom_actions_copy.isChecked)
|
if (manage_bottom_actions_copy.isChecked)
|
||||||
result += BOTTOM_ACTION_COPY
|
result += BOTTOM_ACTION_COPY
|
||||||
|
if (manage_bottom_actions_move.isChecked)
|
||||||
|
result += BOTTOM_ACTION_MOVE
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.config.visibleBottomActions = result
|
activity.config.visibleBottomActions = result
|
||||||
|
|
|
@ -124,12 +124,12 @@ class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: Stri
|
||||||
if (scrollHorizontally) {
|
if (scrollHorizontally) {
|
||||||
directories_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
directories_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
||||||
directories_horizontal_fastscroller.setViews(directories_grid) {
|
directories_horizontal_fastscroller.setViews(directories_grid) {
|
||||||
directories_horizontal_fastscroller.updateBubbleText(dirs[it].getBubbleText(sorting))
|
directories_horizontal_fastscroller.updateBubbleText(dirs[it].getBubbleText(sorting, activity))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
directories_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
directories_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
||||||
directories_vertical_fastscroller.setViews(directories_grid) {
|
directories_vertical_fastscroller.setViews(directories_grid) {
|
||||||
directories_vertical_fastscroller.updateBubbleText(dirs[it].getBubbleText(sorting))
|
directories_vertical_fastscroller.updateBubbleText(dirs[it].getBubbleText(sorting, activity))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,12 +86,12 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c
|
||||||
if (scrollHorizontally) {
|
if (scrollHorizontally) {
|
||||||
media_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
media_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
||||||
media_horizontal_fastscroller.setViews(media_grid) {
|
media_horizontal_fastscroller.setViews(media_grid) {
|
||||||
media_horizontal_fastscroller.updateBubbleText((media[it] as? Medium)?.getBubbleText(sorting) ?: "")
|
media_horizontal_fastscroller.updateBubbleText((media[it] as? Medium)?.getBubbleText(sorting, activity) ?: "")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
media_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
media_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble
|
||||||
media_vertical_fastscroller.setViews(media_grid) {
|
media_vertical_fastscroller.setViews(media_grid) {
|
||||||
media_vertical_fastscroller.updateBubbleText((media[it] as? Medium)?.getBubbleText(sorting) ?: "")
|
media_vertical_fastscroller.updateBubbleText((media[it] as? Medium)?.getBubbleText(sorting, activity) ?: "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
import kotlinx.android.synthetic.main.dialog_save_as.view.*
|
import kotlinx.android.synthetic.main.dialog_save_as.view.*
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appendFilename: Boolean, val callback: (savePath: String) -> Unit) {
|
class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appendFilename: Boolean, val callback: (savePath: String) -> Unit) {
|
||||||
|
|
||||||
|
@ -66,7 +67,7 @@ class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appen
|
||||||
return@setOnClickListener
|
return@setOnClickListener
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activity.getDoesFilePathExist(newPath)) {
|
if (File(newPath).exists()) {
|
||||||
val title = String.format(activity.getString(R.string.file_already_exists_overwrite), newFilename)
|
val title = String.format(activity.getString(R.string.file_already_exists_overwrite), newFilename)
|
||||||
ConfirmationDialog(activity, title) {
|
ConfirmationDialog(activity, title) {
|
||||||
callback(newPath)
|
callback(newPath)
|
||||||
|
|
|
@ -60,7 +60,8 @@ fun Activity.openPath(path: String, forceChooser: Boolean) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.openEditor(path: String, forceChooser: Boolean = false) {
|
fun Activity.openEditor(path: String, forceChooser: Boolean = false) {
|
||||||
openEditorIntent(path, forceChooser, BuildConfig.APPLICATION_ID)
|
val newPath = path.removePrefix("file://")
|
||||||
|
openEditorIntent(newPath, forceChooser, BuildConfig.APPLICATION_ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.launchCamera() {
|
fun Activity.launchCamera() {
|
||||||
|
@ -406,7 +407,7 @@ fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String,
|
||||||
saveFile(tmpPath, bitmap, it as FileOutputStream, newDegrees)
|
saveFile(tmpPath, bitmap, it as FileOutputStream, newDegrees)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDoesFilePathExist(newPath)) {
|
if (File(newPath).exists()) {
|
||||||
tryDeleteFileDirItem(FileDirItem(newPath, newPath.getFilenameFromPath()), false, true)
|
tryDeleteFileDirItem(FileDirItem(newPath, newPath.getFilenameFromPath()), false, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -374,16 +374,10 @@ fun Context.getFolderNameFromPath(path: String): String {
|
||||||
return when (path) {
|
return when (path) {
|
||||||
internalStoragePath -> getString(R.string.internal)
|
internalStoragePath -> getString(R.string.internal)
|
||||||
sdCardPath -> getString(R.string.sd_card)
|
sdCardPath -> getString(R.string.sd_card)
|
||||||
OTG_PATH -> getString(R.string.usb)
|
otgPath -> getString(R.string.usb)
|
||||||
FAVORITES -> getString(R.string.favorites)
|
FAVORITES -> getString(R.string.favorites)
|
||||||
RECYCLE_BIN -> getString(R.string.recycle_bin)
|
RECYCLE_BIN -> getString(R.string.recycle_bin)
|
||||||
else -> {
|
else -> path.getFilenameFromPath()
|
||||||
if (path.startsWith(OTG_PATH)) {
|
|
||||||
path.trimEnd('/').substringAfterLast('/')
|
|
||||||
} else {
|
|
||||||
path.getFilenameFromPath()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +425,7 @@ fun Context.addTempFolderIfNeeded(dirs: ArrayList<Directory>): ArrayList<Directo
|
||||||
fun Context.getPathLocation(path: String): Int {
|
fun Context.getPathLocation(path: String): Int {
|
||||||
return when {
|
return when {
|
||||||
isPathOnSD(path) -> LOCATION_SD
|
isPathOnSD(path) -> LOCATION_SD
|
||||||
path.startsWith(OTG_PATH) -> LOCATION_OTG
|
isPathOnOTG(path) -> LOCATION_OTG
|
||||||
else -> LOCAITON_INTERNAL
|
else -> LOCAITON_INTERNAL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -571,7 +565,7 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag
|
||||||
callback(grouped.clone() as ArrayList<ThumbnailItem>)
|
callback(grouped.clone() as ArrayList<ThumbnailItem>)
|
||||||
|
|
||||||
val mediaToDelete = ArrayList<Medium>()
|
val mediaToDelete = ArrayList<Medium>()
|
||||||
media.filter { !getDoesFilePathExist(it.path) }.forEach {
|
media.filter { !File(it.path).exists() }.forEach {
|
||||||
if (it.path.startsWith(recycleBinPath)) {
|
if (it.path.startsWith(recycleBinPath)) {
|
||||||
deleteDBPath(mediumDao, it.path)
|
deleteDBPath(mediumDao, it.path)
|
||||||
} else {
|
} else {
|
||||||
|
@ -579,13 +573,18 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mediumDao.deleteMedia(*mediaToDelete.toTypedArray())
|
try {
|
||||||
|
if (mediaToDelete.isNotEmpty()) {
|
||||||
|
mediumDao.deleteMedia(*mediaToDelete.toTypedArray())
|
||||||
|
}
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.removeInvalidDBDirectories(dirs: ArrayList<Directory>? = null, directoryDao: DirectoryDao = galleryDB.DirectoryDao()) {
|
fun Context.removeInvalidDBDirectories(dirs: ArrayList<Directory>? = null, directoryDao: DirectoryDao = galleryDB.DirectoryDao()) {
|
||||||
val dirsToCheck = dirs ?: directoryDao.getAll()
|
val dirsToCheck = dirs ?: directoryDao.getAll()
|
||||||
dirsToCheck.filter { !it.areFavorites() && !it.isRecycleBin() && !getDoesFilePathExist(it.path) && it.path != config.tempFolderPath }.forEach {
|
dirsToCheck.filter { !it.areFavorites() && !it.isRecycleBin() && !File(it.path).exists() && it.path != config.tempFolderPath }.forEach {
|
||||||
directoryDao.deleteDirPath(it.path)
|
directoryDao.deleteDirPath(it.path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -593,22 +592,32 @@ fun Context.removeInvalidDBDirectories(dirs: ArrayList<Directory>? = null, direc
|
||||||
fun Context.updateDBMediaPath(oldPath: String, newPath: String) {
|
fun Context.updateDBMediaPath(oldPath: String, newPath: String) {
|
||||||
val newFilename = newPath.getFilenameFromPath()
|
val newFilename = newPath.getFilenameFromPath()
|
||||||
val newParentPath = newPath.getParentPath()
|
val newParentPath = newPath.getParentPath()
|
||||||
galleryDB.MediumDao().updateMedium(oldPath, newParentPath, newFilename, newPath)
|
try {
|
||||||
|
galleryDB.MediumDao().updateMedium(oldPath, newParentPath, newFilename, newPath)
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.updateDBDirectory(directory: Directory, directoryDao: DirectoryDao) {
|
fun Context.updateDBDirectory(directory: Directory, directoryDao: DirectoryDao) {
|
||||||
directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types)
|
directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.getOTGFolderChildren(path: String) = getDocumentFile(path)?.listFiles()
|
fun Context.getFavoritePaths(): ArrayList<String> {
|
||||||
|
return try {
|
||||||
fun Context.getOTGFolderChildrenNames(path: String) = getOTGFolderChildren(path)?.map { it.name }?.toMutableList()
|
galleryDB.MediumDao().getFavoritePaths() as ArrayList<String>
|
||||||
|
} catch (e: Exception) {
|
||||||
fun Context.getFavoritePaths() = galleryDB.MediumDao().getFavoritePaths() as ArrayList<String>
|
ArrayList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// remove the "recycle_bin" from the file path prefix, replace it with real bin path /data/user...
|
// remove the "recycle_bin" from the file path prefix, replace it with real bin path /data/user...
|
||||||
fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList<Medium> {
|
fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList<Medium> {
|
||||||
val media = mediumDao.getDeletedMedia() as ArrayList<Medium>
|
val media = try {
|
||||||
|
mediumDao.getDeletedMedia() as ArrayList<Medium>
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
ArrayList<Medium>()
|
||||||
|
}
|
||||||
|
|
||||||
media.forEach {
|
media.forEach {
|
||||||
it.path = File(recycleBinPath, it.path.removePrefix(RECYCLE_BIN)).toString()
|
it.path = File(recycleBinPath, it.path.removePrefix(RECYCLE_BIN)).toString()
|
||||||
}
|
}
|
||||||
|
@ -616,7 +625,10 @@ fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList<Medium> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.deleteDBPath(mediumDao: MediumDao, path: String) {
|
fun Context.deleteDBPath(mediumDao: MediumDao, path: String) {
|
||||||
mediumDao.deleteMediumPath(path.replaceFirst(recycleBinPath, RECYCLE_BIN))
|
try {
|
||||||
|
mediumDao.deleteMediumPath(path.replaceFirst(recycleBinPath, RECYCLE_BIN))
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.updateWidgets() {
|
fun Context.updateWidgets() {
|
||||||
|
@ -686,3 +698,19 @@ fun Context.parseFileChannel(path: String, fc: FileChannel, level: Int, start: L
|
||||||
} catch (ignored: Exception) {
|
} catch (ignored: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.addPathToDB(path: String) {
|
||||||
|
Thread {
|
||||||
|
val type = when {
|
||||||
|
path.isVideoFast() -> TYPE_VIDEOS
|
||||||
|
path.isGif() -> TYPE_GIFS
|
||||||
|
path.isRawFast() -> TYPE_RAWS
|
||||||
|
path.isSvg() -> TYPE_SVGS
|
||||||
|
else -> TYPE_IMAGES
|
||||||
|
}
|
||||||
|
|
||||||
|
val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(),
|
||||||
|
File(path).length(), type, 0, false, 0L)
|
||||||
|
galleryDB.MediumDao().insert(medium)
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.simplemobiletools.gallery.pro.extensions
|
||||||
|
|
||||||
import android.media.MediaMetadataRetriever
|
import android.media.MediaMetadataRetriever
|
||||||
import com.bumptech.glide.signature.ObjectKey
|
import com.bumptech.glide.signature.ObjectKey
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
import com.simplemobiletools.gallery.pro.helpers.NOMEDIA
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -18,14 +18,19 @@ fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedP
|
||||||
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) }
|
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) }
|
||||||
|
|
||||||
fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
|
fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
|
||||||
|
if (isEmpty()) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
val file = File(this)
|
val file = File(this)
|
||||||
return if (isEmpty()) {
|
if (!showHidden && file.isHidden) {
|
||||||
false
|
return false
|
||||||
} else if (!showHidden && file.isHidden) {
|
|
||||||
false
|
|
||||||
} else if (includedPaths.contains(this)) {
|
} else if (includedPaths.contains(this)) {
|
||||||
true
|
return true
|
||||||
} else if (!showHidden && file.containsNoMedia()) {
|
}
|
||||||
|
|
||||||
|
val containsNoMedia = if (showHidden) false else File(this, NOMEDIA).exists()
|
||||||
|
return if (!showHidden && containsNoMedia) {
|
||||||
false
|
false
|
||||||
} else if (excludedPaths.contains(this)) {
|
} else if (excludedPaths.contains(this)) {
|
||||||
false
|
false
|
||||||
|
@ -34,7 +39,7 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
|
||||||
} else if (isThisOrParentExcluded(excludedPaths)) {
|
} else if (isThisOrParentExcluded(excludedPaths)) {
|
||||||
false
|
false
|
||||||
} else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) {
|
} else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) {
|
||||||
var containsNoMediaOrDot = file.containsNoMedia() || contains("/.")
|
var containsNoMediaOrDot = containsNoMedia || contains("/.")
|
||||||
if (!containsNoMediaOrDot) {
|
if (!containsNoMediaOrDot) {
|
||||||
containsNoMediaOrDot = file.doesThisOrParentHaveNoMedia()
|
containsNoMediaOrDot = file.doesThisOrParentHaveNoMedia()
|
||||||
}
|
}
|
||||||
|
@ -47,7 +52,7 @@ fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPath
|
||||||
// recognize /sdcard/DCIM as the same folder as /storage/emulated/0/DCIM
|
// recognize /sdcard/DCIM as the same folder as /storage/emulated/0/DCIM
|
||||||
fun String.getDistinctPath(): String {
|
fun String.getDistinctPath(): String {
|
||||||
return try {
|
return try {
|
||||||
if (startsWith(OTG_PATH)) toLowerCase() else File(this).canonicalPath.toLowerCase()
|
File(this).canonicalPath.toLowerCase()
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
toLowerCase()
|
toLowerCase()
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import com.bumptech.glide.load.DataSource
|
||||||
import com.bumptech.glide.load.DecodeFormat
|
import com.bumptech.glide.load.DecodeFormat
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
|
import com.bumptech.glide.load.resource.bitmap.Rotate
|
||||||
import com.bumptech.glide.request.RequestListener
|
import com.bumptech.glide.request.RequestListener
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
||||||
|
@ -34,12 +35,14 @@ import com.davemorrissey.labs.subscaleview.ImageRegionDecoder
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity
|
import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity
|
||||||
import com.simplemobiletools.gallery.pro.activities.PhotoActivity
|
import com.simplemobiletools.gallery.pro.activities.PhotoActivity
|
||||||
import com.simplemobiletools.gallery.pro.extensions.*
|
import com.simplemobiletools.gallery.pro.extensions.*
|
||||||
import com.simplemobiletools.gallery.pro.helpers.*
|
import com.simplemobiletools.gallery.pro.helpers.MEDIUM
|
||||||
|
import com.simplemobiletools.gallery.pro.helpers.PATH
|
||||||
|
import com.simplemobiletools.gallery.pro.helpers.PicassoDecoder
|
||||||
|
import com.simplemobiletools.gallery.pro.helpers.PicassoRegionDecoder
|
||||||
import com.simplemobiletools.gallery.pro.models.Medium
|
import com.simplemobiletools.gallery.pro.models.Medium
|
||||||
import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter
|
import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter
|
||||||
import com.squareup.picasso.Callback
|
import com.squareup.picasso.Callback
|
||||||
|
@ -326,11 +329,11 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
|
|
||||||
private fun loadGif() {
|
private fun loadGif() {
|
||||||
try {
|
try {
|
||||||
val pathToLoad = getPathToLoad(mMedium)
|
val path = mMedium.path
|
||||||
val source = if (pathToLoad.startsWith("content://") || pathToLoad.startsWith("file://")) {
|
val source = if (path.startsWith("content://") || path.startsWith("file://")) {
|
||||||
InputSource.UriSource(context!!.contentResolver, Uri.parse(pathToLoad))
|
InputSource.UriSource(context!!.contentResolver, Uri.parse(path))
|
||||||
} else {
|
} else {
|
||||||
InputSource.FileSource(pathToLoad)
|
InputSource.FileSource(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
mView.apply {
|
mView.apply {
|
||||||
|
@ -361,12 +364,12 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
.fitCenter()
|
.fitCenter()
|
||||||
|
|
||||||
if (mCurrentRotationDegrees != 0) {
|
if (mCurrentRotationDegrees != 0) {
|
||||||
options.transform(GlideRotateTransformation(mCurrentRotationDegrees))
|
options.transform(Rotate(mCurrentRotationDegrees))
|
||||||
options.diskCacheStrategy(DiskCacheStrategy.NONE)
|
options.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
Glide.with(context!!)
|
Glide.with(context!!)
|
||||||
.load(getPathToLoad(mMedium))
|
.load(mMedium.path)
|
||||||
.apply(options)
|
.apply(options)
|
||||||
.listener(object : RequestListener<Drawable> {
|
.listener(object : RequestListener<Drawable> {
|
||||||
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
|
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
|
||||||
|
@ -377,6 +380,7 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
|
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
|
||||||
|
mView.gestures_view.controller.settings.isZoomEnabled = mCurrentRotationDegrees != 0 || context?.config?.allowZoomingImages == false
|
||||||
if (mIsFragmentVisible && addZoomableView) {
|
if (mIsFragmentVisible && addZoomableView) {
|
||||||
scheduleZoomableView()
|
scheduleZoomableView()
|
||||||
}
|
}
|
||||||
|
@ -434,15 +438,16 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
|
|
||||||
private fun addZoomableView() {
|
private fun addZoomableView() {
|
||||||
val rotation = degreesForRotation(mImageOrientation)
|
val rotation = degreesForRotation(mImageOrientation)
|
||||||
val path = getPathToLoad(mMedium)
|
|
||||||
mIsSubsamplingVisible = true
|
mIsSubsamplingVisible = true
|
||||||
|
val config = context!!.config
|
||||||
|
val showHighestQuality = config.showHighestQuality
|
||||||
|
|
||||||
val bitmapDecoder = object : DecoderFactory<ImageDecoder> {
|
val bitmapDecoder = object : DecoderFactory<ImageDecoder> {
|
||||||
override fun make() = PicassoDecoder(path, Picasso.get(), rotation)
|
override fun make() = PicassoDecoder(mMedium.path, Picasso.get(), rotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
val regionDecoder = object : DecoderFactory<ImageRegionDecoder> {
|
val regionDecoder = object : DecoderFactory<ImageRegionDecoder> {
|
||||||
override fun make() = PicassoRegionDecoder()
|
override fun make() = PicassoRegionDecoder(showHighestQuality)
|
||||||
}
|
}
|
||||||
|
|
||||||
var newOrientation = (rotation + mCurrentRotationDegrees) % 360
|
var newOrientation = (rotation + mCurrentRotationDegrees) % 360
|
||||||
|
@ -450,18 +455,18 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
newOrientation += 360
|
newOrientation += 360
|
||||||
}
|
}
|
||||||
|
|
||||||
val config = context!!.config
|
|
||||||
mView.subsampling_view.apply {
|
mView.subsampling_view.apply {
|
||||||
setMaxTileSize(if (config.showHighestQuality) Integer.MAX_VALUE else 4096)
|
setMaxTileSize(if (showHighestQuality) Integer.MAX_VALUE else 4096)
|
||||||
setMinimumTileDpi(if (config.showHighestQuality) -1 else getMinTileDpi())
|
setMinimumTileDpi(if (showHighestQuality) -1 else getMinTileDpi())
|
||||||
background = ColorDrawable(Color.TRANSPARENT)
|
background = ColorDrawable(Color.TRANSPARENT)
|
||||||
bitmapDecoderFactory = bitmapDecoder
|
bitmapDecoderFactory = bitmapDecoder
|
||||||
regionDecoderFactory = regionDecoder
|
regionDecoderFactory = regionDecoder
|
||||||
maxScale = 10f
|
maxScale = 10f
|
||||||
beVisible()
|
beVisible()
|
||||||
|
rotationEnabled = config.allowRotatingWithGestures
|
||||||
isOneToOneZoomEnabled = config.allowOneToOneZoom
|
isOneToOneZoomEnabled = config.allowOneToOneZoom
|
||||||
orientation = newOrientation
|
orientation = newOrientation
|
||||||
setImage(path)
|
setImage(mMedium.path)
|
||||||
onImageEventListener = object : SubsamplingScaleImageView.OnImageEventListener {
|
onImageEventListener = object : SubsamplingScaleImageView.OnImageEventListener {
|
||||||
override fun onReady() {
|
override fun onReady() {
|
||||||
background = ColorDrawable(if (config.blackBackground) Color.BLACK else config.backgroundColor)
|
background = ColorDrawable(if (config.blackBackground) Color.BLACK else config.backgroundColor)
|
||||||
|
@ -514,6 +519,9 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
mView.panorama_outline.beVisibleIf(mIsPanorama)
|
mView.panorama_outline.beVisibleIf(mIsPanorama)
|
||||||
|
if (mIsFullscreen) {
|
||||||
|
mView.panorama_outline.alpha = 0f
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getImageOrientation(): Int {
|
private fun getImageOrientation(): Int {
|
||||||
|
@ -521,12 +529,20 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
var orient = defaultOrientation
|
var orient = defaultOrientation
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val pathToLoad = getPathToLoad(mMedium)
|
val path = mMedium.path
|
||||||
val exif = android.media.ExifInterface(pathToLoad)
|
orient = if (path.startsWith("content:/")) {
|
||||||
orient = exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, defaultOrientation)
|
val inputStream = context!!.contentResolver.openInputStream(Uri.parse(path))
|
||||||
|
val exif = ExifInterface()
|
||||||
|
exif.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
|
||||||
|
val tag = exif.getTag(ExifInterface.TAG_ORIENTATION)
|
||||||
|
tag?.getValueAsInt(defaultOrientation) ?: defaultOrientation
|
||||||
|
} else {
|
||||||
|
val exif = android.media.ExifInterface(path)
|
||||||
|
exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, defaultOrientation)
|
||||||
|
}
|
||||||
|
|
||||||
if (orient == defaultOrientation || mMedium.path.startsWith(OTG_PATH)) {
|
if (orient == defaultOrientation || context!!.isPathOnOTG(mMedium.path)) {
|
||||||
val uri = if (pathToLoad.startsWith("content:/")) Uri.parse(pathToLoad) else Uri.fromFile(File(pathToLoad))
|
val uri = if (path.startsWith("content:/")) Uri.parse(path) else Uri.fromFile(File(path))
|
||||||
val inputStream = context!!.contentResolver.openInputStream(uri)
|
val inputStream = context!!.contentResolver.openInputStream(uri)
|
||||||
val exif2 = ExifInterface()
|
val exif2 = ExifInterface()
|
||||||
exif2.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
|
exif2.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
|
||||||
|
@ -610,14 +626,20 @@ class PhotoFragment : ViewPagerFragment() {
|
||||||
|
|
||||||
override fun fullscreenToggled(isFullscreen: Boolean) {
|
override fun fullscreenToggled(isFullscreen: Boolean) {
|
||||||
this.mIsFullscreen = isFullscreen
|
this.mIsFullscreen = isFullscreen
|
||||||
mView.photo_details.apply {
|
mView.apply {
|
||||||
if (mStoredShowExtendedDetails && isVisible()) {
|
photo_details.apply {
|
||||||
animate().y(getExtendedDetailsY(height))
|
if (mStoredShowExtendedDetails && isVisible()) {
|
||||||
|
animate().y(getExtendedDetailsY(height))
|
||||||
|
|
||||||
if (mStoredHideExtendedDetails) {
|
if (mStoredHideExtendedDetails) {
|
||||||
animate().alpha(if (isFullscreen) 0f else 1f).start()
|
animate().alpha(if (isFullscreen) 0f else 1f).start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mIsPanorama) {
|
||||||
|
panorama_outline.animate().alpha(if (isFullscreen) 0f else 1f).start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.provider.MediaStore
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
|
||||||
import com.simplemobiletools.gallery.pro.extensions.config
|
import com.simplemobiletools.gallery.pro.extensions.config
|
||||||
import com.simplemobiletools.gallery.pro.helpers.*
|
import com.simplemobiletools.gallery.pro.helpers.*
|
||||||
import com.simplemobiletools.gallery.pro.models.Medium
|
import com.simplemobiletools.gallery.pro.models.Medium
|
||||||
|
@ -13,11 +12,11 @@ import java.io.File
|
||||||
abstract class ViewPagerFragment : Fragment() {
|
abstract class ViewPagerFragment : Fragment() {
|
||||||
var listener: FragmentListener? = null
|
var listener: FragmentListener? = null
|
||||||
|
|
||||||
protected var mTouchDownTime = 0L
|
private var mTouchDownTime = 0L
|
||||||
protected var mTouchDownX = 0f
|
private var mTouchDownX = 0f
|
||||||
protected var mTouchDownY = 0f
|
private var mTouchDownY = 0f
|
||||||
protected var mCloseDownThreshold = 100f
|
private var mCloseDownThreshold = 100f
|
||||||
protected var mIgnoreCloseDown = false
|
private var mIgnoreCloseDown = false
|
||||||
|
|
||||||
abstract fun fullscreenToggled(isFullscreen: Boolean)
|
abstract fun fullscreenToggled(isFullscreen: Boolean)
|
||||||
|
|
||||||
|
@ -64,7 +63,7 @@ abstract class ViewPagerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (detailsFlag and EXT_DATE_TAKEN != 0) {
|
if (detailsFlag and EXT_DATE_TAKEN != 0) {
|
||||||
path.getExifDateTaken(exif).let { if (it.isNotEmpty()) details.appendln(it) }
|
path.getExifDateTaken(exif, context!!).let { if (it.isNotEmpty()) details.appendln(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (detailsFlag and EXT_CAMERA_MODEL != 0) {
|
if (detailsFlag and EXT_CAMERA_MODEL != 0) {
|
||||||
|
@ -77,8 +76,6 @@ abstract class ViewPagerFragment : Fragment() {
|
||||||
return details.toString().trim()
|
return details.toString().trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPathToLoad(medium: Medium) = if (medium.path.startsWith(OTG_PATH)) medium.path.getOTGPublicPath(context!!) else medium.path
|
|
||||||
|
|
||||||
private fun getFileLastModified(file: File): String {
|
private fun getFileLastModified(file: File): String {
|
||||||
val projection = arrayOf(MediaStore.Images.Media.DATE_MODIFIED)
|
val projection = arrayOf(MediaStore.Images.Media.DATE_MODIFIED)
|
||||||
val uri = MediaStore.Files.getContentUri("external")
|
val uri = MediaStore.Files.getContentUri("external")
|
||||||
|
@ -88,9 +85,9 @@ abstract class ViewPagerFragment : Fragment() {
|
||||||
cursor?.use {
|
cursor?.use {
|
||||||
return if (cursor.moveToFirst()) {
|
return if (cursor.moveToFirst()) {
|
||||||
val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L
|
val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L
|
||||||
dateModified.formatDate()
|
dateModified.formatDate(context!!)
|
||||||
} else {
|
} else {
|
||||||
file.lastModified().formatDate()
|
file.lastModified().formatDate(context!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
|
|
|
@ -182,6 +182,10 @@ class Config(context: Context) : BaseConfig(context) {
|
||||||
get() = prefs.getInt(SCREEN_ROTATION, ROTATE_BY_SYSTEM_SETTING)
|
get() = prefs.getInt(SCREEN_ROTATION, ROTATE_BY_SYSTEM_SETTING)
|
||||||
set(screenRotation) = prefs.edit().putInt(SCREEN_ROTATION, screenRotation).apply()
|
set(screenRotation) = prefs.edit().putInt(SCREEN_ROTATION, screenRotation).apply()
|
||||||
|
|
||||||
|
var fileLoadingPriority: Int
|
||||||
|
get() = prefs.getInt(FILE_LOADING_PRIORITY, PRIORITY_COMPROMISE)
|
||||||
|
set(fileLoadingPriority) = prefs.edit().putInt(FILE_LOADING_PRIORITY, fileLoadingPriority).apply()
|
||||||
|
|
||||||
var loopVideos: Boolean
|
var loopVideos: Boolean
|
||||||
get() = prefs.getBoolean(LOOP_VIDEOS, false)
|
get() = prefs.getBoolean(LOOP_VIDEOS, false)
|
||||||
set(loop) = prefs.edit().putBoolean(LOOP_VIDEOS, loop).apply()
|
set(loop) = prefs.edit().putBoolean(LOOP_VIDEOS, loop).apply()
|
||||||
|
@ -335,10 +339,6 @@ class Config(context: Context) : BaseConfig(context) {
|
||||||
get() = prefs.getInt(EXTENDED_DETAILS, EXT_RESOLUTION or EXT_LAST_MODIFIED or EXT_EXIF_PROPERTIES)
|
get() = prefs.getInt(EXTENDED_DETAILS, EXT_RESOLUTION or EXT_LAST_MODIFIED or EXT_EXIF_PROPERTIES)
|
||||||
set(extendedDetails) = prefs.edit().putInt(EXTENDED_DETAILS, extendedDetails).apply()
|
set(extendedDetails) = prefs.edit().putInt(EXTENDED_DETAILS, extendedDetails).apply()
|
||||||
|
|
||||||
var doExtraCheck: Boolean
|
|
||||||
get() = prefs.getBoolean(DO_EXTRA_CHECK, false)
|
|
||||||
set(doExtraCheck) = prefs.edit().putBoolean(DO_EXTRA_CHECK, doExtraCheck).apply()
|
|
||||||
|
|
||||||
var wasNewAppShown: Boolean
|
var wasNewAppShown: Boolean
|
||||||
get() = prefs.getBoolean(WAS_NEW_APP_SHOWN, false)
|
get() = prefs.getBoolean(WAS_NEW_APP_SHOWN, false)
|
||||||
set(wasNewAppShown) = prefs.edit().putBoolean(WAS_NEW_APP_SHOWN, wasNewAppShown).apply()
|
set(wasNewAppShown) = prefs.edit().putBoolean(WAS_NEW_APP_SHOWN, wasNewAppShown).apply()
|
||||||
|
@ -456,6 +456,10 @@ class Config(context: Context) : BaseConfig(context) {
|
||||||
get() = prefs.getBoolean(ALLOW_ONE_TO_ONE_ZOOM, false)
|
get() = prefs.getBoolean(ALLOW_ONE_TO_ONE_ZOOM, false)
|
||||||
set(allowOneToOneZoom) = prefs.edit().putBoolean(ALLOW_ONE_TO_ONE_ZOOM, allowOneToOneZoom).apply()
|
set(allowOneToOneZoom) = prefs.edit().putBoolean(ALLOW_ONE_TO_ONE_ZOOM, allowOneToOneZoom).apply()
|
||||||
|
|
||||||
|
var allowRotatingWithGestures: Boolean
|
||||||
|
get() = prefs.getBoolean(ALLOW_ROTATING_WITH_GESTURES, true)
|
||||||
|
set(allowRotatingWithGestures) = prefs.edit().putBoolean(ALLOW_ROTATING_WITH_GESTURES, allowRotatingWithGestures).apply()
|
||||||
|
|
||||||
var lastEditorDrawColor: Int
|
var lastEditorDrawColor: Int
|
||||||
get() = prefs.getInt(LAST_EDITOR_DRAW_COLOR, primaryColor)
|
get() = prefs.getInt(LAST_EDITOR_DRAW_COLOR, primaryColor)
|
||||||
set(lastEditorDrawColor) = prefs.edit().putInt(LAST_EDITOR_DRAW_COLOR, lastEditorDrawColor).apply()
|
set(lastEditorDrawColor) = prefs.edit().putInt(LAST_EDITOR_DRAW_COLOR, lastEditorDrawColor).apply()
|
||||||
|
|
|
@ -48,10 +48,9 @@ const val SHOW_EXTENDED_DETAILS = "show_extended_details"
|
||||||
const val EXTENDED_DETAILS = "extended_details"
|
const val EXTENDED_DETAILS = "extended_details"
|
||||||
const val HIDE_EXTENDED_DETAILS = "hide_extended_details"
|
const val HIDE_EXTENDED_DETAILS = "hide_extended_details"
|
||||||
const val ALLOW_INSTANT_CHANGE = "allow_instant_change"
|
const val ALLOW_INSTANT_CHANGE = "allow_instant_change"
|
||||||
const val DO_EXTRA_CHECK = "do_extra_check"
|
|
||||||
const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock"
|
const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock"
|
||||||
const val LAST_FILEPICKER_PATH = "last_filepicker_path"
|
const val LAST_FILEPICKER_PATH = "last_filepicker_path"
|
||||||
const val WAS_OTG_HANDLED = "was_otg_handled"
|
const val WAS_OTG_HANDLED = "was_otg_handled_2"
|
||||||
const val TEMP_SKIP_DELETE_CONFIRMATION = "temp_skip_delete_confirmation"
|
const val TEMP_SKIP_DELETE_CONFIRMATION = "temp_skip_delete_confirmation"
|
||||||
const val BOTTOM_ACTIONS = "bottom_actions"
|
const val BOTTOM_ACTIONS = "bottom_actions"
|
||||||
const val LAST_VIDEO_PATH = "last_video_path"
|
const val LAST_VIDEO_PATH = "last_video_path"
|
||||||
|
@ -75,9 +74,11 @@ const val LAST_EDITOR_CROP_OTHER_ASPECT_RATIO_Y = "last_editor_crop_other_aspect
|
||||||
const val GROUP_DIRECT_SUBFOLDERS = "group_direct_subfolders"
|
const val GROUP_DIRECT_SUBFOLDERS = "group_direct_subfolders"
|
||||||
const val SHOW_WIDGET_FOLDER_NAME = "show_widget_folder_name"
|
const val SHOW_WIDGET_FOLDER_NAME = "show_widget_folder_name"
|
||||||
const val ALLOW_ONE_TO_ONE_ZOOM = "allow_one_to_one_zoom"
|
const val ALLOW_ONE_TO_ONE_ZOOM = "allow_one_to_one_zoom"
|
||||||
|
const val ALLOW_ROTATING_WITH_GESTURES = "allow_rotating_with_gestures"
|
||||||
const val LAST_EDITOR_DRAW_COLOR = "last_editor_draw_color"
|
const val LAST_EDITOR_DRAW_COLOR = "last_editor_draw_color"
|
||||||
const val LAST_EDITOR_BRUSH_SIZE = "last_editor_brush_size"
|
const val LAST_EDITOR_BRUSH_SIZE = "last_editor_brush_size"
|
||||||
const val SHOW_NOTCH = "show_notch"
|
const val SHOW_NOTCH = "show_notch"
|
||||||
|
const val FILE_LOADING_PRIORITY = "file_loading_priority"
|
||||||
|
|
||||||
// slideshow
|
// slideshow
|
||||||
const val SLIDESHOW_INTERVAL = "slideshow_interval"
|
const val SLIDESHOW_INTERVAL = "slideshow_interval"
|
||||||
|
@ -125,6 +126,11 @@ const val ROTATE_BY_SYSTEM_SETTING = 0
|
||||||
const val ROTATE_BY_DEVICE_ROTATION = 1
|
const val ROTATE_BY_DEVICE_ROTATION = 1
|
||||||
const val ROTATE_BY_ASPECT_RATIO = 2
|
const val ROTATE_BY_ASPECT_RATIO = 2
|
||||||
|
|
||||||
|
// file loading priority
|
||||||
|
const val PRIORITY_SPEED = 0
|
||||||
|
const val PRIORITY_COMPROMISE = 1
|
||||||
|
const val PRIORITY_VALIDITY = 2
|
||||||
|
|
||||||
// view types
|
// view types
|
||||||
const val VIEW_TYPE_GRID = 1
|
const val VIEW_TYPE_GRID = 1
|
||||||
const val VIEW_TYPE_LIST = 2
|
const val VIEW_TYPE_LIST = 2
|
||||||
|
@ -175,6 +181,7 @@ const val BOTTOM_ACTION_TOGGLE_VISIBILITY = 512
|
||||||
const val BOTTOM_ACTION_RENAME = 1024
|
const val BOTTOM_ACTION_RENAME = 1024
|
||||||
const val BOTTOM_ACTION_SET_AS = 2048
|
const val BOTTOM_ACTION_SET_AS = 2048
|
||||||
const val BOTTOM_ACTION_COPY = 4096
|
const val BOTTOM_ACTION_COPY = 4096
|
||||||
|
const val BOTTOM_ACTION_MOVE = 8192
|
||||||
|
|
||||||
const val DEFAULT_BOTTOM_ACTIONS = BOTTOM_ACTION_TOGGLE_FAVORITE or BOTTOM_ACTION_EDIT or BOTTOM_ACTION_SHARE or BOTTOM_ACTION_DELETE
|
const val DEFAULT_BOTTOM_ACTIONS = BOTTOM_ACTION_TOGGLE_FAVORITE or BOTTOM_ACTION_EDIT or BOTTOM_ACTION_SHARE or BOTTOM_ACTION_DELETE
|
||||||
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
package com.simplemobiletools.gallery.pro.helpers
|
|
||||||
|
|
||||||
import android.graphics.Bitmap
|
|
||||||
import android.graphics.Matrix
|
|
||||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
|
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
|
||||||
import java.security.MessageDigest
|
|
||||||
|
|
||||||
class GlideRotateTransformation(val rotateRotationAngle: Int) : BitmapTransformation() {
|
|
||||||
override fun transform(pool: BitmapPool, bitmap: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
|
|
||||||
if (rotateRotationAngle % 360 == 0) {
|
|
||||||
return bitmap
|
|
||||||
}
|
|
||||||
|
|
||||||
val matrix = Matrix()
|
|
||||||
matrix.postRotate(rotateRotationAngle.toFloat())
|
|
||||||
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun updateDiskCacheKey(messageDigest: MessageDigest) {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,7 +2,6 @@ package com.simplemobiletools.gallery.pro.helpers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
import android.net.Uri
|
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
|
@ -18,23 +17,16 @@ import java.util.*
|
||||||
class MediaFetcher(val context: Context) {
|
class MediaFetcher(val context: Context) {
|
||||||
var shouldStop = false
|
var shouldStop = false
|
||||||
|
|
||||||
fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, favoritePaths: ArrayList<String>,
|
fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperFileSize: Boolean,
|
||||||
getVideoDurations: Boolean, sortMedia: Boolean = true): ArrayList<Medium> {
|
favoritePaths: ArrayList<String>, getVideoDurations: Boolean, sortMedia: Boolean = true): ArrayList<Medium> {
|
||||||
val filterMedia = context.config.filterMedia
|
val filterMedia = context.config.filterMedia
|
||||||
if (filterMedia == 0) {
|
if (filterMedia == 0) {
|
||||||
return ArrayList()
|
return ArrayList()
|
||||||
}
|
}
|
||||||
|
|
||||||
val curMedia = ArrayList<Medium>()
|
val curMedia = ArrayList<Medium>()
|
||||||
if (curPath.startsWith(OTG_PATH, true)) {
|
val newMedia = getMediaInFolder(curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, getProperFileSize, favoritePaths, getVideoDurations)
|
||||||
if (context.hasOTGConnected()) {
|
curMedia.addAll(newMedia)
|
||||||
val newMedia = getMediaOnOTG(curPath, isPickImage, isPickVideo, filterMedia, favoritePaths, getVideoDurations)
|
|
||||||
curMedia.addAll(newMedia)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val newMedia = getMediaInFolder(curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, favoritePaths, getVideoDurations)
|
|
||||||
curMedia.addAll(newMedia)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sortMedia) {
|
if (sortMedia) {
|
||||||
sortMedia(curMedia, context.config.getFileSorting(curPath))
|
sortMedia(curMedia, context.config.getFileSorting(curPath))
|
||||||
|
@ -128,14 +120,14 @@ class MediaFetcher(val context: Context) {
|
||||||
val foldersToIgnore = arrayListOf("/storage/emulated/legacy")
|
val foldersToIgnore = arrayListOf("/storage/emulated/legacy")
|
||||||
val config = context.config
|
val config = context.config
|
||||||
val includedFolders = config.includedFolders
|
val includedFolders = config.includedFolders
|
||||||
var foldersToScan = config.everShownFolders.filter { it == FAVORITES || it == RECYCLE_BIN || context.getDoesFilePathExist(it) }.toMutableList() as ArrayList
|
var foldersToScan = config.everShownFolders.filter { it == FAVORITES || it == RECYCLE_BIN || File(it).exists() }.toMutableList() as ArrayList
|
||||||
|
|
||||||
cursor.use {
|
cursor.use {
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
val path = cursor.getStringValue(MediaStore.Images.Media.DATA).trim()
|
val path = cursor.getStringValue(MediaStore.Images.Media.DATA)
|
||||||
val parentPath = File(path).parent?.trimEnd('/') ?: continue
|
val parentPath = File(path).parent?.trimEnd('/') ?: continue
|
||||||
if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath.toLowerCase())) {
|
if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) {
|
||||||
foldersToScan.add(parentPath)
|
foldersToScan.add(parentPath)
|
||||||
}
|
}
|
||||||
} while (cursor.moveToNext())
|
} while (cursor.moveToNext())
|
||||||
|
@ -154,37 +146,30 @@ class MediaFetcher(val context: Context) {
|
||||||
|
|
||||||
private fun addFolder(curFolders: ArrayList<String>, folder: String) {
|
private fun addFolder(curFolders: ArrayList<String>, folder: String) {
|
||||||
curFolders.add(folder)
|
curFolders.add(folder)
|
||||||
if (folder.startsWith(OTG_PATH)) {
|
val files = File(folder).listFiles() ?: return
|
||||||
val files = context.getOTGFolderChildren(folder) ?: return
|
for (file in files) {
|
||||||
for (file in files) {
|
if (file.isDirectory) {
|
||||||
if (file.isDirectory) {
|
addFolder(curFolders, file.absolutePath)
|
||||||
val relativePath = file.uri.path.substringAfterLast("${context.config.OTGPartition}:")
|
|
||||||
addFolder(curFolders, "$OTG_PATH$relativePath")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val files = File(folder).listFiles() ?: return
|
|
||||||
for (file in files) {
|
|
||||||
if (file.isDirectory) {
|
|
||||||
addFolder(curFolders, file.absolutePath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getMediaInFolder(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean,
|
private fun getMediaInFolder(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean,
|
||||||
favoritePaths: ArrayList<String>, getVideoDurations: Boolean): ArrayList<Medium> {
|
getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean): ArrayList<Medium> {
|
||||||
val media = ArrayList<Medium>()
|
val media = ArrayList<Medium>()
|
||||||
|
|
||||||
val deletedMedia = if (folder == RECYCLE_BIN) {
|
val isRecycleBin = folder == RECYCLE_BIN
|
||||||
|
val deletedMedia = if (isRecycleBin) {
|
||||||
context.getUpdatedDeletedMedia(context.galleryDB.MediumDao())
|
context.getUpdatedDeletedMedia(context.galleryDB.MediumDao())
|
||||||
} else {
|
} else {
|
||||||
ArrayList()
|
ArrayList()
|
||||||
}
|
}
|
||||||
|
|
||||||
val doExtraCheck = context.config.doExtraCheck
|
val config = context.config
|
||||||
val showHidden = context.config.shouldShowHidden
|
val checkProperFileSize = getProperFileSize || config.fileLoadingPriority == PRIORITY_COMPROMISE
|
||||||
val dateTakens = if (getProperDateTaken && folder != FAVORITES && folder != RECYCLE_BIN) getFolderDateTakens(folder) else HashMap()
|
val checkFileExistence = config.fileLoadingPriority == PRIORITY_VALIDITY
|
||||||
|
val showHidden = config.shouldShowHidden
|
||||||
|
val dateTakens = if (getProperDateTaken && folder != FAVORITES && !isRecycleBin) getFolderDateTakens(folder) else HashMap()
|
||||||
|
|
||||||
val files = when (folder) {
|
val files = when (folder) {
|
||||||
FAVORITES -> favoritePaths.filter { showHidden || !it.contains("/.") }.map { File(it) }.toTypedArray()
|
FAVORITES -> favoritePaths.filter { showHidden || !it.contains("/.") }.map { File(it) }.toTypedArray()
|
||||||
|
@ -226,11 +211,16 @@ class MediaFetcher(val context: Context) {
|
||||||
if (!showHidden && filename.startsWith('.'))
|
if (!showHidden && filename.startsWith('.'))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
val size = file.length()
|
val size = if (checkProperFileSize || checkFileExistence) file.length() else 1L
|
||||||
if (size <= 0L || (doExtraCheck && !file.exists()))
|
if ((checkProperFileSize || checkFileExistence) && size <= 0L) {
|
||||||
continue
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if (folder == RECYCLE_BIN) {
|
if (checkFileExistence && !file.exists()) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isRecycleBin) {
|
||||||
deletedMedia.firstOrNull { it.path == path }?.apply {
|
deletedMedia.firstOrNull { it.path == path }?.apply {
|
||||||
media.add(this)
|
media.add(this)
|
||||||
}
|
}
|
||||||
|
@ -259,71 +249,6 @@ class MediaFetcher(val context: Context) {
|
||||||
return media
|
return media
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getMediaOnOTG(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, favoritePaths: ArrayList<String>,
|
|
||||||
getVideoDurations: Boolean): ArrayList<Medium> {
|
|
||||||
val media = ArrayList<Medium>()
|
|
||||||
val files = context.getDocumentFile(folder)?.listFiles() ?: return media
|
|
||||||
val doExtraCheck = context.config.doExtraCheck
|
|
||||||
val showHidden = context.config.shouldShowHidden
|
|
||||||
|
|
||||||
for (file in files) {
|
|
||||||
if (shouldStop) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
val filename = file.name ?: continue
|
|
||||||
val isImage = filename.isImageFast()
|
|
||||||
val isVideo = if (isImage) false else filename.isVideoFast()
|
|
||||||
val isGif = if (isImage || isVideo) false else filename.isGif()
|
|
||||||
val isRaw = if (isImage || isVideo || isGif) false else filename.isRawFast()
|
|
||||||
val isSvg = if (isImage || isVideo || isGif || isRaw) false else filename.isSvg()
|
|
||||||
|
|
||||||
if (!isImage && !isVideo && !isGif && !isRaw && !isSvg)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (isVideo && (isPickImage || filterMedia and TYPE_VIDEOS == 0))
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (isImage && (isPickVideo || filterMedia and TYPE_IMAGES == 0))
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (isGif && filterMedia and TYPE_GIFS == 0)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (isRaw && filterMedia and TYPE_RAWS == 0)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (isSvg && filterMedia and TYPE_SVGS == 0)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (!showHidden && filename.startsWith('.'))
|
|
||||||
continue
|
|
||||||
|
|
||||||
val size = file.length()
|
|
||||||
if (size <= 0L || (doExtraCheck && !file.exists()))
|
|
||||||
continue
|
|
||||||
|
|
||||||
val dateTaken = file.lastModified()
|
|
||||||
val dateModified = file.lastModified()
|
|
||||||
|
|
||||||
val type = when {
|
|
||||||
isVideo -> TYPE_VIDEOS
|
|
||||||
isGif -> TYPE_GIFS
|
|
||||||
isRaw -> TYPE_RAWS
|
|
||||||
isSvg -> TYPE_SVGS
|
|
||||||
else -> TYPE_IMAGES
|
|
||||||
}
|
|
||||||
|
|
||||||
val path = Uri.decode(file.uri.toString().replaceFirst("${context.config.OTGTreeUri}/document/${context.config.OTGPartition}%3A", OTG_PATH))
|
|
||||||
val videoDuration = if (getVideoDurations) path.getVideoDuration() else 0
|
|
||||||
val isFavorite = favoritePaths.contains(path)
|
|
||||||
val medium = Medium(null, filename, path, folder, dateModified, dateTaken, size, type, videoDuration, isFavorite, 0L)
|
|
||||||
media.add(medium)
|
|
||||||
}
|
|
||||||
|
|
||||||
return media
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getFolderDateTakens(folder: String): HashMap<String, Long> {
|
private fun getFolderDateTakens(folder: String): HashMap<String, Long> {
|
||||||
val projection = arrayOf(
|
val projection = arrayOf(
|
||||||
MediaStore.Images.Media.DISPLAY_NAME,
|
MediaStore.Images.Media.DISPLAY_NAME,
|
||||||
|
@ -399,7 +324,16 @@ class MediaFetcher(val context: Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
val sortDescending = currentGrouping and GROUP_DESCENDING != 0
|
val sortDescending = currentGrouping and GROUP_DESCENDING != 0
|
||||||
val sorted = mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it } else compareBy { it })
|
val sorted = if (currentGrouping and GROUP_BY_DATE_TAKEN != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED != 0) {
|
||||||
|
mediumGroups.toSortedMap(if (sortDescending) compareByDescending {
|
||||||
|
it.toLongOrNull() ?: 0L
|
||||||
|
} else {
|
||||||
|
compareBy { it.toLongOrNull() ?: 0L }
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it } else compareBy { it })
|
||||||
|
}
|
||||||
|
|
||||||
mediumGroups.clear()
|
mediumGroups.clear()
|
||||||
for ((key, value) in sorted) {
|
for ((key, value) in sorted) {
|
||||||
mediumGroups[key] = value
|
mediumGroups[key] = value
|
||||||
|
@ -438,7 +372,7 @@ class MediaFetcher(val context: Context) {
|
||||||
return if (timestamp.areDigitsOnly()) {
|
return if (timestamp.areDigitsOnly()) {
|
||||||
val cal = Calendar.getInstance(Locale.ENGLISH)
|
val cal = Calendar.getInstance(Locale.ENGLISH)
|
||||||
cal.timeInMillis = timestamp.toLong()
|
cal.timeInMillis = timestamp.toLong()
|
||||||
return DateFormat.format("dd MMM yyyy", cal).toString()
|
DateFormat.format("dd MMM yyyy", cal).toString()
|
||||||
} else {
|
} else {
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.graphics.*
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.davemorrissey.labs.subscaleview.ImageRegionDecoder
|
import com.davemorrissey.labs.subscaleview.ImageRegionDecoder
|
||||||
|
|
||||||
class PicassoRegionDecoder : ImageRegionDecoder {
|
class PicassoRegionDecoder(val showHighestQuality: Boolean) : ImageRegionDecoder {
|
||||||
private var decoder: BitmapRegionDecoder? = null
|
private var decoder: BitmapRegionDecoder? = null
|
||||||
private val decoderLock = Any()
|
private val decoderLock = Any()
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class PicassoRegionDecoder : ImageRegionDecoder {
|
||||||
synchronized(decoderLock) {
|
synchronized(decoderLock) {
|
||||||
val options = BitmapFactory.Options()
|
val options = BitmapFactory.Options()
|
||||||
options.inSampleSize = sampleSize
|
options.inSampleSize = sampleSize
|
||||||
options.inPreferredConfig = Bitmap.Config.RGB_565
|
options.inPreferredConfig = if (showHighestQuality) Bitmap.Config.ARGB_8888 else Bitmap.Config.RGB_565
|
||||||
val bitmap = decoder!!.decodeRegion(rect, options)
|
val bitmap = decoder!!.decodeRegion(rect, options)
|
||||||
return bitmap ?: throw RuntimeException("Region decoder returned null bitmap - image format may not be supported")
|
return bitmap ?: throw RuntimeException("Region decoder returned null bitmap - image format may not be supported")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.simplemobiletools.gallery.pro.models
|
package com.simplemobiletools.gallery.pro.models
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import com.simplemobiletools.commons.extensions.formatDate
|
import com.simplemobiletools.commons.extensions.formatDate
|
||||||
import com.simplemobiletools.commons.extensions.formatSize
|
import com.simplemobiletools.commons.extensions.formatSize
|
||||||
|
@ -29,12 +30,12 @@ data class Directory(
|
||||||
|
|
||||||
constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, 0, 0)
|
constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, 0, 0)
|
||||||
|
|
||||||
fun getBubbleText(sorting: Int) = when {
|
fun getBubbleText(sorting: Int, context: Context) = when {
|
||||||
sorting and SORT_BY_NAME != 0 -> name
|
sorting and SORT_BY_NAME != 0 -> name
|
||||||
sorting and SORT_BY_PATH != 0 -> path
|
sorting and SORT_BY_PATH != 0 -> path
|
||||||
sorting and SORT_BY_SIZE != 0 -> size.formatSize()
|
sorting and SORT_BY_SIZE != 0 -> size.formatSize()
|
||||||
sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate()
|
sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate(context)
|
||||||
else -> taken.formatDate()
|
else -> taken.formatDate(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun areFavorites() = path == FAVORITES
|
fun areFavorites() = path == FAVORITES
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.simplemobiletools.gallery.pro.models
|
package com.simplemobiletools.gallery.pro.models
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.Index
|
import androidx.room.Index
|
||||||
|
@ -45,12 +46,12 @@ data class Medium(
|
||||||
|
|
||||||
fun isHidden() = name.startsWith('.')
|
fun isHidden() = name.startsWith('.')
|
||||||
|
|
||||||
fun getBubbleText(sorting: Int) = when {
|
fun getBubbleText(sorting: Int, context: Context) = when {
|
||||||
sorting and SORT_BY_NAME != 0 -> name
|
sorting and SORT_BY_NAME != 0 -> name
|
||||||
sorting and SORT_BY_PATH != 0 -> path
|
sorting and SORT_BY_PATH != 0 -> path
|
||||||
sorting and SORT_BY_SIZE != 0 -> size.formatSize()
|
sorting and SORT_BY_SIZE != 0 -> size.formatSize()
|
||||||
sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate()
|
sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate(context)
|
||||||
else -> taken.formatDate()
|
else -> taken.formatDate(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getGroupingKey(groupBy: Int): String {
|
fun getGroupingKey(groupBy: Int): String {
|
||||||
|
|
|
@ -3,29 +3,12 @@ package com.simplemobiletools.gallery.pro.receivers
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.simplemobiletools.commons.extensions.*
|
|
||||||
import com.simplemobiletools.commons.helpers.REFRESH_PATH
|
import com.simplemobiletools.commons.helpers.REFRESH_PATH
|
||||||
import com.simplemobiletools.gallery.pro.extensions.galleryDB
|
import com.simplemobiletools.gallery.pro.extensions.addPathToDB
|
||||||
import com.simplemobiletools.gallery.pro.helpers.*
|
|
||||||
import com.simplemobiletools.gallery.pro.models.Medium
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
class RefreshMediaReceiver : BroadcastReceiver() {
|
class RefreshMediaReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
val path = intent.getStringExtra(REFRESH_PATH) ?: return
|
val path = intent.getStringExtra(REFRESH_PATH) ?: return
|
||||||
|
context.addPathToDB(path)
|
||||||
Thread {
|
|
||||||
val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(),
|
|
||||||
File(path).length(), getFileType(path), 0, false, 0L)
|
|
||||||
context.galleryDB.MediumDao().insert(medium)
|
|
||||||
}.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getFileType(path: String) = when {
|
|
||||||
path.isVideoFast() -> TYPE_VIDEOS
|
|
||||||
path.isGif() -> TYPE_GIFS
|
|
||||||
path.isRawFast() -> TYPE_RAWS
|
|
||||||
path.isSvg() -> TYPE_SVGS
|
|
||||||
else -> TYPE_IMAGES
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,63 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_change_date_time_format_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_change_date_time_format"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:text="@string/change_date_and_time_format"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_file_loading_priority_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_file_loading_priority_label"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toStartOf="@+id/settings_file_loading_priority"
|
||||||
|
android:layout_toLeftOf="@+id/settings_file_loading_priority"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/medium_margin"
|
||||||
|
android:text="@string/file_loading_priority"/>
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_file_loading_priority"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_marginEnd="@dimen/small_margin"
|
||||||
|
android:layout_marginRight="@dimen/small_margin"
|
||||||
|
android:background="@null"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/visibility_divider"
|
android:id="@+id/visibility_divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -166,30 +223,6 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/settings_do_extra_check_holder"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
|
||||||
android:paddingRight="@dimen/normal_margin"
|
|
||||||
android:paddingBottom="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
|
||||||
android:id="@+id/settings_do_extra_check"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="@null"
|
|
||||||
android:clickable="false"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:text="@string/do_extra_check"
|
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/videos_divider"
|
android:id="@+id/videos_divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -795,6 +828,30 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_allow_rotating_with_gestures_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
|
android:id="@+id/settings_allow_rotating_with_gestures"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@null"
|
||||||
|
android:clickable="false"
|
||||||
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:text="@string/allow_rotating_gestures"
|
||||||
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/settings_show_highest_quality_holder"
|
android:id="@+id/settings_show_highest_quality_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -148,8 +148,19 @@
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_copy"
|
android:src="@drawable/ic_copy"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="@+id/bottom_move"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/bottom_set_as"/>
|
app:layout_constraintStart_toEndOf="@+id/bottom_set_as"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/bottom_move"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:padding="@dimen/medium_margin"
|
||||||
|
android:src="@drawable/ic_move"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/bottom_copy"/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
|
@ -109,5 +109,14 @@
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/use_for_this_folder"/>
|
android:text="@string/use_for_this_folder"/>
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/grouping_dialog_bottom_note"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="@dimen/small_margin"
|
||||||
|
android:paddingEnd="@dimen/medium_margin"
|
||||||
|
android:text="@string/grouping_and_sorting"
|
||||||
|
android:textSize="@dimen/smaller_text_size"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
|
@ -109,5 +109,14 @@
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/use_for_this_folder"/>
|
android:text="@string/use_for_this_folder"/>
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/sorting_dialog_bottom_note"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="@dimen/small_margin"
|
||||||
|
android:paddingEnd="@dimen/medium_margin"
|
||||||
|
android:text="@string/grouping_and_sorting"
|
||||||
|
android:textSize="@dimen/smaller_text_size"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
|
@ -118,5 +118,13 @@
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/copy"/>
|
android:text="@string/copy"/>
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
|
android:id="@+id/manage_bottom_actions_move"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
|
android:text="@string/move"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
|
@ -38,6 +38,14 @@
|
||||||
android:id="@+id/stop_showing_hidden"
|
android:id="@+id/stop_showing_hidden"
|
||||||
android:title="@string/stop_showing_hidden"
|
android:title="@string/stop_showing_hidden"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/show_the_recycle_bin"
|
||||||
|
android:title="@string/show_the_recycle_bin"
|
||||||
|
app:showAsAction="never"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/hide_the_recycle_bin"
|
||||||
|
android:title="@string/hide_the_recycle_bin"
|
||||||
|
app:showAsAction="never"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/create_new_folder"
|
android:id="@+id/create_new_folder"
|
||||||
android:title="@string/create_new_folder"
|
android:title="@string/create_new_folder"
|
||||||
|
|
|
@ -136,6 +136,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -167,7 +168,6 @@
|
||||||
<string name="allow_instant_change">السماح بتغيير الوسائط على الفور من خلال النقر على جوانب الشاشة</string>
|
<string name="allow_instant_change">السماح بتغيير الوسائط على الفور من خلال النقر على جوانب الشاشة</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">إخفاء التفاصيل الموسعة عند إخفاء شريط الحالة</string>
|
<string name="hide_extended_details">إخفاء التفاصيل الموسعة عند إخفاء شريط الحالة</string>
|
||||||
<string name="do_extra_check">قم بإجراء فحص إضافي لتجنب إظهار الملفات التالفة</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -178,6 +178,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">المصغرات</string>
|
<string name="thumbnails">المصغرات</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string>
|
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Hide extended details when status bar is hidden</string>
|
<string name="hide_extended_details">Hide extended details when status bar is hidden</string>
|
||||||
<string name="do_extra_check">Do an extra check to avoid showing invalid files</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Thumbnails</string>
|
<string name="thumbnails">Thumbnails</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data de presa</string>
|
<string name="by_date_taken">Data de presa</string>
|
||||||
<string name="by_file_type">Tipus de fitxer</string>
|
<string name="by_file_type">Tipus de fitxer</string>
|
||||||
<string name="by_extension">Extensió</string>
|
<string name="by_extension">Extensió</string>
|
||||||
|
<string name="grouping_and_sorting">Tingueu en compte que l\'agrupació i la classificació són 2 camps independents</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Carpeta que es mostra a l\'estri:</string>
|
<string name="folder_on_widget">Carpeta que es mostra a l\'estri:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Permet canviar els mitjans de manera instantània fent clic als costats de la pantalla</string>
|
<string name="allow_instant_change">Permet canviar els mitjans de manera instantània fent clic als costats de la pantalla</string>
|
||||||
<string name="allow_deep_zooming_images">Permet imatges de zoom profund</string>
|
<string name="allow_deep_zooming_images">Permet imatges de zoom profund</string>
|
||||||
<string name="hide_extended_details">Amaga els detalls estesos quan la barra d\'estat està amagada</string>
|
<string name="hide_extended_details">Amaga els detalls estesos quan la barra d\'estat està amagada</string>
|
||||||
<string name="do_extra_check">Fer una verificació addicional per evitar que es mostrin fitxers no vàlids</string>
|
|
||||||
<string name="show_at_bottom">Mostra alguns botons d\'acció a la part inferior de la pantalla</string>
|
<string name="show_at_bottom">Mostra alguns botons d\'acció a la part inferior de la pantalla</string>
|
||||||
<string name="show_recycle_bin">Mostra la paperera de reciclatge a la pantalla de carpetes</string>
|
<string name="show_recycle_bin">Mostra la paperera de reciclatge a la pantalla de carpetes</string>
|
||||||
<string name="deep_zoomable_images">Imatges ampliades a mida</string>
|
<string name="deep_zoomable_images">Imatges ampliades a mida</string>
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Permet 1:1 zoom amb dos tocs dobles</string>
|
<string name="allow_one_to_one_zoom">Permet 1:1 zoom amb dos tocs dobles</string>
|
||||||
<string name="open_videos_on_separate_screen">Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals</string>
|
<string name="open_videos_on_separate_screen">Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals</string>
|
||||||
<string name="show_notch">Mostra una osca si està disponible</string>
|
<string name="show_notch">Mostra una osca si està disponible</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Permet girar imatges amb gestos</string>
|
||||||
|
<string name="file_loading_priority">Prioritat de càrrega d\'arxius</string>
|
||||||
|
<string name="speed">Velocitat</string>
|
||||||
|
<string name="compromise">Compromès</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Eviteu mostrar fitxers no vàlids</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatures</string>
|
<string name="thumbnails">Miniatures</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data pořízení</string>
|
<string name="by_date_taken">Data pořízení</string>
|
||||||
<string name="by_file_type">Typu souboru</string>
|
<string name="by_file_type">Typu souboru</string>
|
||||||
<string name="by_extension">Přípony</string>
|
<string name="by_extension">Přípony</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Složka zobrazená na widgetu:</string>
|
<string name="folder_on_widget">Složka zobrazená na widgetu:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Povolit okamžité přepínání médií kliknutím na okraj obrazovky</string>
|
<string name="allow_instant_change">Povolit okamžité přepínání médií kliknutím na okraj obrazovky</string>
|
||||||
<string name="allow_deep_zooming_images">Povolit hluboké přibližování obrázků</string>
|
<string name="allow_deep_zooming_images">Povolit hluboké přibližování obrázků</string>
|
||||||
<string name="hide_extended_details">Skrýt rozšířené vlastnosti pokud je skrytá stavová lišta</string>
|
<string name="hide_extended_details">Skrýt rozšířené vlastnosti pokud je skrytá stavová lišta</string>
|
||||||
<string name="do_extra_check">Předejít zobrazování neplatných souborů dodatečnou kontrolou</string>
|
|
||||||
<string name="show_at_bottom">Zobrazit některé akční tlačítka na spodní straně obrazovky</string>
|
<string name="show_at_bottom">Zobrazit některé akční tlačítka na spodní straně obrazovky</string>
|
||||||
<string name="show_recycle_bin">Zobrazit odpadkový koš na obrazovce se složkami</string>
|
<string name="show_recycle_bin">Zobrazit odpadkový koš na obrazovce se složkami</string>
|
||||||
<string name="deep_zoomable_images">Hluboce priblížitelné obrázky</string>
|
<string name="deep_zoomable_images">Hluboce priblížitelné obrázky</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Náhledy</string>
|
<string name="thumbnails">Náhledy</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Dato taget</string>
|
<string name="by_date_taken">Dato taget</string>
|
||||||
<string name="by_file_type">Filtype</string>
|
<string name="by_file_type">Filtype</string>
|
||||||
<string name="by_extension">Filudvidelse</string>
|
<string name="by_extension">Filudvidelse</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mappe vist på widget:</string>
|
<string name="folder_on_widget">Mappe vist på widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Tillad skift af medie ved klik på skærmens sider</string>
|
<string name="allow_instant_change">Tillad skift af medie ved klik på skærmens sider</string>
|
||||||
<string name="allow_deep_zooming_images">Tillad dyb zooming af billeder</string>
|
<string name="allow_deep_zooming_images">Tillad dyb zooming af billeder</string>
|
||||||
<string name="hide_extended_details">Skjul udvidede oplysninger når statuslinjen er skjult</string>
|
<string name="hide_extended_details">Skjul udvidede oplysninger når statuslinjen er skjult</string>
|
||||||
<string name="do_extra_check">Tjek en ekstra gang for at undgå visning af ugyldige filer</string>
|
|
||||||
<string name="show_at_bottom">Vis handlingsknapper i bunden af skærmen</string>
|
<string name="show_at_bottom">Vis handlingsknapper i bunden af skærmen</string>
|
||||||
<string name="show_recycle_bin">Vis papirkurven ved mappevisning</string>
|
<string name="show_recycle_bin">Vis papirkurven ved mappevisning</string>
|
||||||
<string name="deep_zoomable_images">Dybt zoombare billeder</string>
|
<string name="deep_zoomable_images">Dybt zoombare billeder</string>
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string>
|
<string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string>
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Vis en notch hvis tilgængelig</string>
|
<string name="show_notch">Vis en notch hvis tilgængelig</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Tillad roterende billeder med bevægelser</string>
|
||||||
|
<string name="file_loading_priority">Filindlæsnings prioritet</string>
|
||||||
|
<string name="speed">Hastighed</string>
|
||||||
|
<string name="compromise">Kompromis</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Undgå at vise ugyldige filer</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniaturer</string>
|
<string name="thumbnails">Miniaturer</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Aufnahmedatum</string>
|
<string name="by_date_taken">Aufnahmedatum</string>
|
||||||
<string name="by_file_type">Dateityp (Bilder/Videos)</string>
|
<string name="by_file_type">Dateityp (Bilder/Videos)</string>
|
||||||
<string name="by_extension">Dateierweiterung</string>
|
<string name="by_extension">Dateierweiterung</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Ordner, der auf dem Widget angezeigt wird:</string>
|
<string name="folder_on_widget">Ordner, der auf dem Widget angezeigt wird:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Beim Tippen auf eine Bildschirmseite sofort zwischen Medien wechseln</string>
|
<string name="allow_instant_change">Beim Tippen auf eine Bildschirmseite sofort zwischen Medien wechseln</string>
|
||||||
<string name="allow_deep_zooming_images">Starkes Zoomen zulassen</string>
|
<string name="allow_deep_zooming_images">Starkes Zoomen zulassen</string>
|
||||||
<string name="hide_extended_details">Dateieigenschaften im Vollbild nicht anzeigen, wenn die Systemleiste versteckt ist</string>
|
<string name="hide_extended_details">Dateieigenschaften im Vollbild nicht anzeigen, wenn die Systemleiste versteckt ist</string>
|
||||||
<string name="do_extra_check">Zusätzliche Überprüfung, um ungültige Dateien nicht anzuzeigen</string>
|
|
||||||
<string name="show_at_bottom">Ausgewählte Funktionen am unteren Bildschirmrand anzeigen</string>
|
<string name="show_at_bottom">Ausgewählte Funktionen am unteren Bildschirmrand anzeigen</string>
|
||||||
<string name="show_recycle_bin">Papierkorb auf dem Ordnerbildschirm anzeigen</string>
|
<string name="show_recycle_bin">Papierkorb auf dem Ordnerbildschirm anzeigen</string>
|
||||||
<string name="deep_zoomable_images">Stark vergrösserbare Bilder</string>
|
<string name="deep_zoomable_images">Stark vergrösserbare Bilder</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Thumbnails</string>
|
<string name="thumbnails">Thumbnails</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Ημερομ. λήψης</string>
|
<string name="by_date_taken">Ημερομ. λήψης</string>
|
||||||
<string name="by_file_type">Τύπο αρχείου</string>
|
<string name="by_file_type">Τύπο αρχείου</string>
|
||||||
<string name="by_extension">Επέκταση</string>
|
<string name="by_extension">Επέκταση</string>
|
||||||
|
<string name="grouping_and_sorting">Σημειώστε ότι ομαδοποίηση και ταξινόμηση είναι 2 ανεξάρτητα πεδία</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Εμφάνιση φακέλου στο widget:</string>
|
<string name="folder_on_widget">Εμφάνιση φακέλου στο widget:</string>
|
||||||
|
@ -163,17 +164,20 @@
|
||||||
<string name="allow_instant_change">Να επιτρέπεται η άμεση αλλαγή των μέσων με το άγγιγμα στις άκρες της οθόνης</string>
|
<string name="allow_instant_change">Να επιτρέπεται η άμεση αλλαγή των μέσων με το άγγιγμα στις άκρες της οθόνης</string>
|
||||||
<string name="allow_deep_zooming_images">Επιτρέπει βαθύ ζουμ στις εικόνες</string>
|
<string name="allow_deep_zooming_images">Επιτρέπει βαθύ ζουμ στις εικόνες</string>
|
||||||
<string name="hide_extended_details">Απόκρυψη λεπτομερειών όταν η μπάρα κατάστασης είναι κρυμμένη</string>
|
<string name="hide_extended_details">Απόκρυψη λεπτομερειών όταν η μπάρα κατάστασης είναι κρυμμένη</string>
|
||||||
<string name="do_extra_check">Επιπλέον έλεγχος για την αποφυγή εμφάνισης λανθασμένων αρχείων</string>
|
|
||||||
<string name="show_at_bottom">Εμφάνιση μερικών κουμπιών λειτουργιών στο κάτω μέρος της οθόνης</string>
|
<string name="show_at_bottom">Εμφάνιση μερικών κουμπιών λειτουργιών στο κάτω μέρος της οθόνης</string>
|
||||||
<string name="show_recycle_bin">Εμφάνιση του κάδου ανακύκλωσης στην οθόνη φακέλων</string>
|
<string name="show_recycle_bin">Εμφάνιση του κάδου ανακύκλωσης στην οθόνη φακέλων</string>
|
||||||
<string name="deep_zoomable_images">Βαθιά μεγέθυνση εικόνων</string>
|
<string name="deep_zoomable_images">Βαθιά μεγέθυνση εικόνων</string>
|
||||||
<string name="show_highest_quality">Εμφάνιση εικόνων με την υψηλότερη δυνατή ποιότητα</string>
|
<string name="show_highest_quality">Εμφάνιση εικόνων με την υψηλότερη δυνατή ποιότητα</string>
|
||||||
<string name="show_recycle_bin_last">Εμφάνιση του Κάδου ως τελευταίο στοιχείο στην κύρια οθόνη</string>
|
<string name="show_recycle_bin_last">Εμφάνιση του Κάδου ως τελευταίο στοιχείο στην κύρια οθόνη</string>
|
||||||
<string name="allow_down_gesture">Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω</string>
|
<string name="allow_down_gesture">Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω</string>
|
||||||
<string name="allow_one_to_one_zoom">Allow 1:1 μεγένθυση με δύο διπλά χτυπήματα</string>
|
<string name="allow_one_to_one_zoom">Επιτρέπει μεγέθυνση 1:1 με δύο διπλά χτυπήματα</string>
|
||||||
<string name="open_videos_on_separate_screen">Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες</string>
|
<string name="open_videos_on_separate_screen">Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες</string>
|
||||||
<string name="show_notch">Εμφάνιση μιας εγκοπής αν διατίθεται</string>
|
<string name="show_notch">Εμφάνιση μιας εγκοπής αν διατίθεται</string>
|
||||||
<string name="allow_rotating_gestures">Επιτρέπει την περιστροφή εικόνων με χειρονομίες</string>
|
<string name="allow_rotating_gestures">Επιτρέπει την περιστροφή εικόνων με χειρονομίες</string>
|
||||||
|
<string name="file_loading_priority">Προτεραιότητα φόρτωσης αρχείου</string>
|
||||||
|
<string name="speed">Ταχύτητα</string>
|
||||||
|
<string name="compromise">Συμβιβασμός</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Αποφυγή εμφάνισης μη έγκυρων αρχείων</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Εικονίδια</string>
|
<string name="thumbnails">Εικονίδια</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data de toma</string>
|
<string name="by_date_taken">Data de toma</string>
|
||||||
<string name="by_file_type">Tipo de fichero</string>
|
<string name="by_file_type">Tipo de fichero</string>
|
||||||
<string name="by_extension">Extensión</string>
|
<string name="by_extension">Extensión</string>
|
||||||
|
<string name="grouping_and_sorting">Tenga en cuenta que la agrupación y la clasificación son 2 campos independientes</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Carpeta mostrada en el widget:</string>
|
<string name="folder_on_widget">Carpeta mostrada en el widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Permitir el cambio instantáneo de medios haciendo clic en los lados de la pantalla</string>
|
<string name="allow_instant_change">Permitir el cambio instantáneo de medios haciendo clic en los lados de la pantalla</string>
|
||||||
<string name="allow_deep_zooming_images">Permitir zoom profundo</string>
|
<string name="allow_deep_zooming_images">Permitir zoom profundo</string>
|
||||||
<string name="hide_extended_details">Ocultar detalles ampliados cuando la barra de estado está oculta</string>
|
<string name="hide_extended_details">Ocultar detalles ampliados cuando la barra de estado está oculta</string>
|
||||||
<string name="do_extra_check">Hacer una comprobación adicional para evitar mostrar archivos inválidos</string>
|
|
||||||
<string name="show_at_bottom">Mostrar algunos botones de acción en la parte inferior de la pantalla</string>
|
<string name="show_at_bottom">Mostrar algunos botones de acción en la parte inferior de la pantalla</string>
|
||||||
<string name="show_recycle_bin">Mostrar la papelera de reciclaje en la pantalla de carpetas</string>
|
<string name="show_recycle_bin">Mostrar la papelera de reciclaje en la pantalla de carpetas</string>
|
||||||
<string name="deep_zoomable_images">Imágenes ampliables con zoom</string>
|
<string name="deep_zoomable_images">Imágenes ampliables con zoom</string>
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Permitir zoom 1:1 con dos toques dobles</string>
|
<string name="allow_one_to_one_zoom">Permitir zoom 1:1 con dos toques dobles</string>
|
||||||
<string name="open_videos_on_separate_screen">Siempre abre videos en una pantalla separada con nuevos gestos horizontales</string>
|
<string name="open_videos_on_separate_screen">Siempre abre videos en una pantalla separada con nuevos gestos horizontales</string>
|
||||||
<string name="show_notch">Mostrar una muesca si está disponible</string>
|
<string name="show_notch">Mostrar una muesca si está disponible</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Permite girar con gestos</string>
|
||||||
|
<string name="file_loading_priority">Prioridad de carga de archivos</string>
|
||||||
|
<string name="speed">Velocidad</string>
|
||||||
|
<string name="compromise">Compromiso</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Evita mostrar archivos inválidos</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniaturas</string>
|
<string name="thumbnails">Miniaturas</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Salli median selaaminen ruudun reunoja koskettamalla</string>
|
<string name="allow_instant_change">Salli median selaaminen ruudun reunoja koskettamalla</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Piilota yksityiskohtaiset tiedot kun tilapalkki on piilotettu</string>
|
<string name="hide_extended_details">Piilota yksityiskohtaiset tiedot kun tilapalkki on piilotettu</string>
|
||||||
<string name="do_extra_check">Tee ylimääräinen tarkistus rikkinäisten tiedostojen varalta</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Esikatselukuvat</string>
|
<string name="thumbnails">Esikatselukuvat</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date de prise de vue</string>
|
<string name="by_date_taken">Date de prise de vue</string>
|
||||||
<string name="by_file_type">Type de fichier</string>
|
<string name="by_file_type">Type de fichier</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Dossier affiché sur le widget :</string>
|
<string name="folder_on_widget">Dossier affiché sur le widget :</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Changement instantané de média en appuyant sur les côtés de l\'écran</string>
|
<string name="allow_instant_change">Changement instantané de média en appuyant sur les côtés de l\'écran</string>
|
||||||
<string name="allow_deep_zooming_images">Utiliser le zoom maximal des images</string>
|
<string name="allow_deep_zooming_images">Utiliser le zoom maximal des images</string>
|
||||||
<string name="hide_extended_details">Ne pas afficher les informations supplémentaires si la barre d\'état est masquée</string>
|
<string name="hide_extended_details">Ne pas afficher les informations supplémentaires si la barre d\'état est masquée</string>
|
||||||
<string name="do_extra_check">Éviter l\'affichage de fichiers non conformes</string>
|
|
||||||
<string name="show_at_bottom">Afficher les boutons d\'action</string>
|
<string name="show_at_bottom">Afficher les boutons d\'action</string>
|
||||||
<string name="show_recycle_bin">Afficher la corbeille en vue \"Dossier\"</string>
|
<string name="show_recycle_bin">Afficher la corbeille en vue \"Dossier\"</string>
|
||||||
<string name="deep_zoomable_images">Niveau de zoom maximal des images</string>
|
<string name="deep_zoomable_images">Niveau de zoom maximal des images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Ouvrez toujours les vidéos sur un écran séparé avec de nouveaux gestes horizontaux.</string>
|
<string name="open_videos_on_separate_screen">Ouvrez toujours les vidéos sur un écran séparé avec de nouveaux gestes horizontaux.</string>
|
||||||
<string name="show_notch">Afficher un cran si disponible</string>
|
<string name="show_notch">Afficher un cran si disponible</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatures</string>
|
<string name="thumbnails">Miniatures</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data de captura</string>
|
<string name="by_date_taken">Data de captura</string>
|
||||||
<string name="by_file_type">Tipo de ficheior</string>
|
<string name="by_file_type">Tipo de ficheior</string>
|
||||||
<string name="by_extension">Extensión</string>
|
<string name="by_extension">Extensión</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Permitir o cambio instantáneo de medios pulsando nos lados da pantalla</string>
|
<string name="allow_instant_change">Permitir o cambio instantáneo de medios pulsando nos lados da pantalla</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Agochar detalles extendidos cando a barra de estado está oculta</string>
|
<string name="hide_extended_details">Agochar detalles extendidos cando a barra de estado está oculta</string>
|
||||||
<string name="do_extra_check">Facer unha comprobación extra para evitar mostrar ficheiros non válidos</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Iconas</string>
|
<string name="thumbnails">Iconas</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Datum snimanja</string>
|
<string name="by_date_taken">Datum snimanja</string>
|
||||||
<string name="by_file_type">Tip datoteke</string>
|
<string name="by_file_type">Tip datoteke</string>
|
||||||
<string name="by_extension">Vrsta datoteke</string>
|
<string name="by_extension">Vrsta datoteke</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mapa prikazana na widgetu:</string>
|
<string name="folder_on_widget">Mapa prikazana na widgetu:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Dopusti trenutačno mijenjanje medija dodirom na stranice zaslona</string>
|
<string name="allow_instant_change">Dopusti trenutačno mijenjanje medija dodirom na stranice zaslona</string>
|
||||||
<string name="allow_deep_zooming_images">Omogućite duboko zumiranje slika</string>
|
<string name="allow_deep_zooming_images">Omogućite duboko zumiranje slika</string>
|
||||||
<string name="hide_extended_details">Sakrij proširene pojedinosti kada je traka statusa skrivena</string>
|
<string name="hide_extended_details">Sakrij proširene pojedinosti kada je traka statusa skrivena</string>
|
||||||
<string name="do_extra_check">Napravite dodatnu provjeru da biste izbjegli prikazivanje nevažećih datoteka</string>
|
|
||||||
<string name="show_at_bottom">Prikaži neke gumbe za radnju pri dnu zaslona</string>
|
<string name="show_at_bottom">Prikaži neke gumbe za radnju pri dnu zaslona</string>
|
||||||
<string name="show_recycle_bin">Prikažite koš za smeće na zaslonu mapa</string>
|
<string name="show_recycle_bin">Prikažite koš za smeće na zaslonu mapa</string>
|
||||||
<string name="deep_zoomable_images">Duboko zumirane slike</string>
|
<string name="deep_zoomable_images">Duboko zumirane slike</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Sličice</string>
|
<string name="thumbnails">Sličice</string>
|
||||||
|
|
|
@ -133,6 +133,7 @@
|
||||||
<string name="by_date_taken">Dátum</string>
|
<string name="by_date_taken">Dátum</string>
|
||||||
<string name="by_file_type">Fájl típus</string>
|
<string name="by_file_type">Fájl típus</string>
|
||||||
<string name="by_extension">Kiterjesztés</string>
|
<string name="by_extension">Kiterjesztés</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mappa mutatása a widgeten:</string>
|
<string name="folder_on_widget">Mappa mutatása a widgeten:</string>
|
||||||
|
@ -164,7 +165,6 @@
|
||||||
<string name="allow_instant_change">Engedélyezi a azonnali média váltást a képernyő oldalára kattintva</string>
|
<string name="allow_instant_change">Engedélyezi a azonnali média váltást a képernyő oldalára kattintva</string>
|
||||||
<string name="allow_deep_zooming_images">Engedélyezi a képek mély nagyítását</string>
|
<string name="allow_deep_zooming_images">Engedélyezi a képek mély nagyítását</string>
|
||||||
<string name="hide_extended_details">Bővített részletek elrejtése az állapotsor rejtett állapotában</string>
|
<string name="hide_extended_details">Bővített részletek elrejtése az állapotsor rejtett állapotában</string>
|
||||||
<string name="do_extra_check">Végezzen extra ellenőrzést, hogy elkerülje az érvénytelen fájlok mutatását</string>
|
|
||||||
<string name="show_at_bottom">Mutassa a művelet gombokat a képernyő alján</string>
|
<string name="show_at_bottom">Mutassa a művelet gombokat a képernyő alján</string>
|
||||||
<string name="show_recycle_bin">Mutassa a Lomtárat a mappák képernyőjén</string>
|
<string name="show_recycle_bin">Mutassa a Lomtárat a mappák képernyőjén</string>
|
||||||
<string name="deep_zoomable_images">Mély nagyítású képek</string>
|
<string name="deep_zoomable_images">Mély nagyítású képek</string>
|
||||||
|
@ -175,6 +175,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal</string>
|
<string name="open_videos_on_separate_screen">Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal</string>
|
||||||
<string name="show_notch">Notch mutatása, ha elérhető</string>
|
<string name="show_notch">Notch mutatása, ha elérhető</string>
|
||||||
<string name="allow_rotating_gestures">Engedélyezi a kép forgatását gesztusokkal</string>
|
<string name="allow_rotating_gestures">Engedélyezi a kép forgatását gesztusokkal</string>
|
||||||
|
<string name="file_loading_priority">Fájl betöltés prioritása</string>
|
||||||
|
<string name="speed">Gyors</string>
|
||||||
|
<string name="compromise">Kiegyensúlyozott</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Kerülje az érvénytelen fájlok mutatását</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatűrök</string>
|
<string name="thumbnails">Miniatűrök</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Tanggal diambil</string>
|
<string name="by_date_taken">Tanggal diambil</string>
|
||||||
<string name="by_file_type">Jenis file</string>
|
<string name="by_file_type">Jenis file</string>
|
||||||
<string name="by_extension">Ekstensi</string>
|
<string name="by_extension">Ekstensi</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Izinkan mengganti media dengan mengklik sisi layar</string>
|
<string name="allow_instant_change">Izinkan mengganti media dengan mengklik sisi layar</string>
|
||||||
<string name="allow_deep_zooming_images">Izinkan zoom gambar lebih dalam</string>
|
<string name="allow_deep_zooming_images">Izinkan zoom gambar lebih dalam</string>
|
||||||
<string name="hide_extended_details">Sembunyikan detail tambahan ketika status bar disembunyikan</string>
|
<string name="hide_extended_details">Sembunyikan detail tambahan ketika status bar disembunyikan</string>
|
||||||
<string name="do_extra_check">Lakukan pemeriksaan ulang untuk menghindari file yang tidak valid</string>
|
|
||||||
<string name="show_at_bottom">Tampilkan beberapa tombol tindakan dibawah layar</string>
|
<string name="show_at_bottom">Tampilkan beberapa tombol tindakan dibawah layar</string>
|
||||||
<string name="show_recycle_bin">Tampilkan Sampah di layar folder</string>
|
<string name="show_recycle_bin">Tampilkan Sampah di layar folder</string>
|
||||||
<string name="deep_zoomable_images">Zoom gambar mendalam</string>
|
<string name="deep_zoomable_images">Zoom gambar mendalam</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Thumbnail</string>
|
<string name="thumbnails">Thumbnail</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data creazione</string>
|
<string name="by_date_taken">Data creazione</string>
|
||||||
<string name="by_file_type">Tipo di file</string>
|
<string name="by_file_type">Tipo di file</string>
|
||||||
<string name="by_extension">Estensione</string>
|
<string name="by_extension">Estensione</string>
|
||||||
|
<string name="grouping_and_sorting">Notare che il raggruppamento e l\'ordinamento sono due campi indipendenti</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Cartella mostrata nel widget:</string>
|
<string name="folder_on_widget">Cartella mostrata nel widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Cambia media istantaneamente toccando sui lati dello schermo</string>
|
<string name="allow_instant_change">Cambia media istantaneamente toccando sui lati dello schermo</string>
|
||||||
<string name="allow_deep_zooming_images">Permetti zoom immagini profondo</string>
|
<string name="allow_deep_zooming_images">Permetti zoom immagini profondo</string>
|
||||||
<string name="hide_extended_details">Nascondi i dettagli estesi quando la barra di stato è nascosta</string>
|
<string name="hide_extended_details">Nascondi i dettagli estesi quando la barra di stato è nascosta</string>
|
||||||
<string name="do_extra_check">Fai un controllo ulteriore per evitare di mostrare file non validi</string>
|
|
||||||
<string name="show_at_bottom">Mostra alcuni pulsanti azione in fondo allo schermo</string>
|
<string name="show_at_bottom">Mostra alcuni pulsanti azione in fondo allo schermo</string>
|
||||||
<string name="show_recycle_bin">Mostra il cestino nella schermata delle cartelle</string>
|
<string name="show_recycle_bin">Mostra il cestino nella schermata delle cartelle</string>
|
||||||
<string name="deep_zoomable_images">Immagini ingrandibili a fondo</string>
|
<string name="deep_zoomable_images">Immagini ingrandibili a fondo</string>
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Permetti l\'ingrandimento 1:1 con un doppio tasto</string>
|
<string name="allow_one_to_one_zoom">Permetti l\'ingrandimento 1:1 con un doppio tasto</string>
|
||||||
<string name="open_videos_on_separate_screen">Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali</string>
|
<string name="open_videos_on_separate_screen">Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali</string>
|
||||||
<string name="show_notch">Mostra un notch se disponibile</string>
|
<string name="show_notch">Mostra un notch se disponibile</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Permetti la rotazione delle immagini con i gesti</string>
|
||||||
|
<string name="file_loading_priority">Priorità di caricamento file</string>
|
||||||
|
<string name="speed">Veloce</string>
|
||||||
|
<string name="compromise">Compromesso</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Evita di mostrare file non validi</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Anteprime</string>
|
<string name="thumbnails">Anteprime</string>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<string name="fix_date_taken">撮影日の値を修正</string>
|
<string name="fix_date_taken">撮影日の値を修正</string>
|
||||||
<string name="fixing">修正中…</string>
|
<string name="fixing">修正中…</string>
|
||||||
<string name="dates_fixed_successfully">撮影日が正常に修正されました</string>
|
<string name="dates_fixed_successfully">撮影日が正常に修正されました</string>
|
||||||
<string name="share_resized">Share a resized version</string>
|
<string name="share_resized">リサイズした画像を共有</string>
|
||||||
|
|
||||||
<!-- Filter -->
|
<!-- Filter -->
|
||||||
<string name="filter_media">表示する形式</string>
|
<string name="filter_media">表示する形式</string>
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
<string name="videos">ビデオ</string>
|
<string name="videos">ビデオ</string>
|
||||||
<string name="gifs">GIF</string>
|
<string name="gifs">GIF</string>
|
||||||
<string name="raw_images">RAW</string>
|
<string name="raw_images">RAW</string>
|
||||||
<string name="svgs">SVGs</string>
|
<string name="svgs">SVG</string>
|
||||||
<string name="no_media_with_filters">条件に該当するメディアがありません。</string>
|
<string name="no_media_with_filters">条件に該当するメディアがありません。</string>
|
||||||
<string name="change_filters_underlined"><u>絞り込み条件を変更</u></string>
|
<string name="change_filters_underlined"><u>絞り込み条件を変更</u></string>
|
||||||
|
|
||||||
|
@ -88,8 +88,8 @@
|
||||||
<string name="flip">反転</string>
|
<string name="flip">反転</string>
|
||||||
<string name="flip_horizontally">水平方向に反転</string>
|
<string name="flip_horizontally">水平方向に反転</string>
|
||||||
<string name="flip_vertically">垂直方向に反転</string>
|
<string name="flip_vertically">垂直方向に反転</string>
|
||||||
<string name="free_aspect_ratio">Free</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
|
<string name="free_aspect_ratio">任意</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
|
||||||
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
|
<string name="other_aspect_ratio">その他</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
|
||||||
|
|
||||||
<!-- Set wallpaper -->
|
<!-- Set wallpaper -->
|
||||||
<string name="simple_wallpaper">シンプル壁紙</string>
|
<string name="simple_wallpaper">シンプル壁紙</string>
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
<string name="loop_slideshow">スライドショーをリピート再生する</string>
|
<string name="loop_slideshow">スライドショーをリピート再生する</string>
|
||||||
<string name="slideshow_ended">スライドショーが終了しました</string>
|
<string name="slideshow_ended">スライドショーが終了しました</string>
|
||||||
<string name="no_media_for_slideshow">スライドショーに表示するメディアがありません</string>
|
<string name="no_media_for_slideshow">スライドショーに表示するメディアがありません</string>
|
||||||
<string name="use_crossfade_animation">Use crossfade animations</string>
|
<string name="use_crossfade_animation">クロスフェードアニメーションを使用する</string>
|
||||||
|
|
||||||
<!-- View types -->
|
<!-- View types -->
|
||||||
<string name="change_view_type">表示形式の変更</string>
|
<string name="change_view_type">表示形式の変更</string>
|
||||||
|
@ -132,25 +132,26 @@
|
||||||
<string name="by_date_taken">撮影日時</string>
|
<string name="by_date_taken">撮影日時</string>
|
||||||
<string name="by_file_type">ファイル形式</string>
|
<string name="by_file_type">ファイル形式</string>
|
||||||
<string name="by_extension">拡張子</string>
|
<string name="by_extension">拡張子</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">ウィジェットに表示するフォルダ:</string>
|
||||||
<string name="show_folder_name">Show folder name</string>
|
<string name="show_folder_name">フォルダ名を表示</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="autoplay_videos">ビデオを自動再生</string>
|
<string name="autoplay_videos">ビデオを自動再生</string>
|
||||||
<string name="remember_last_video_position">Remember last video playback position</string>
|
<string name="remember_last_video_position">動画の最後の再生位置を記憶する</string>
|
||||||
<string name="toggle_filename">ファイル名の表示を切り替え</string>
|
<string name="toggle_filename">ファイル名の表示を切り替え</string>
|
||||||
<string name="loop_videos">ビデオを繰り返し再生</string>
|
<string name="loop_videos">ビデオを繰り返し再生</string>
|
||||||
<string name="animate_gifs">アニメーションGIFを動かす</string>
|
<string name="animate_gifs">アニメーションGIFを動かす</string>
|
||||||
<string name="max_brightness">再生時には明るさを最大にする</string>
|
<string name="max_brightness">再生時には明るさを最大にする</string>
|
||||||
<string name="crop_thumbnails">サムネイルを正方形に切り取る</string>
|
<string name="crop_thumbnails">サムネイルを正方形に切り取る</string>
|
||||||
<string name="show_thumbnail_video_duration">Show video durations</string>
|
<string name="show_thumbnail_video_duration">動画の長さを表示</string>
|
||||||
<string name="screen_rotation_by">フルスクリーン再生の表示切り替え</string>
|
<string name="screen_rotation_by">フルスクリーン再生の表示切り替え</string>
|
||||||
<string name="screen_rotation_system_setting">システム設定に従う</string>
|
<string name="screen_rotation_system_setting">システム設定に従う</string>
|
||||||
<string name="screen_rotation_device_rotation">端末の向きに従う</string>
|
<string name="screen_rotation_device_rotation">端末の向きに従う</string>
|
||||||
<string name="screen_rotation_aspect_ratio">メディアの縦横比に従う</string>
|
<string name="screen_rotation_aspect_ratio">メディアの縦横比に従う</string>
|
||||||
<string name="black_background_at_fullscreen">メディア表示の背景色を黒にする</string>
|
<string name="black_background_at_fullscreen">全画面表示では背景色を黒にする</string>
|
||||||
<string name="scroll_thumbnails_horizontally">サムネイル画面を横方向にスクロール</string>
|
<string name="scroll_thumbnails_horizontally">サムネイル画面を横方向にスクロール</string>
|
||||||
<string name="hide_system_ui_at_fullscreen">全画面ではシステムUIを非表示</string>
|
<string name="hide_system_ui_at_fullscreen">全画面ではシステムUIを非表示</string>
|
||||||
<string name="delete_empty_folders">空になったフォルダは削除する</string>
|
<string name="delete_empty_folders">空になったフォルダは削除する</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">端を押してメディアをスライド</string>
|
<string name="allow_instant_change">端を押してメディアをスライド</string>
|
||||||
<string name="allow_deep_zooming_images">深いズームを許可</string>
|
<string name="allow_deep_zooming_images">深いズームを許可</string>
|
||||||
<string name="hide_extended_details">ステータスバーが非表示の時は詳細を隠す</string>
|
<string name="hide_extended_details">ステータスバーが非表示の時は詳細を隠す</string>
|
||||||
<string name="do_extra_check">無効なファイルは見せない</string>
|
|
||||||
<string name="show_at_bottom">画面の下にはアクションを表示</string>
|
<string name="show_at_bottom">画面の下にはアクションを表示</string>
|
||||||
<string name="show_recycle_bin">フォルダ画面にごみ箱を表示</string>
|
<string name="show_recycle_bin">フォルダ画面にごみ箱を表示</string>
|
||||||
<string name="deep_zoomable_images">画像のズームを深くする</string>
|
<string name="deep_zoomable_images">画像のズームを深くする</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">サムネイル設定</string>
|
<string name="thumbnails">サムネイル設定</string>
|
||||||
|
@ -218,33 +222,33 @@
|
||||||
|
|
||||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||||
<!-- Short description has to have less than 80 chars -->
|
<!-- Short description has to have less than 80 chars -->
|
||||||
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string>
|
<string name="app_short_description">広告なしでプライバシーを尊重する、ファイル管理用オフラインギャラリー。</string>
|
||||||
<string name="app_long_description">
|
<string name="app_long_description">
|
||||||
A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos.
|
SVG、RAW、パノラマ写真、ビデオなど、さまざまな種類の画像やビデオを表示できる高度にカスタマイズ可能なギャラリー。
|
||||||
|
|
||||||
It is open source, contains no ads or unnecessary permissions.
|
オープンソースで、広告も、不要な許可も含まれていません。
|
||||||
|
|
||||||
Let\'s list some of its features worth mentioning:
|
価値ある機能のいくつかをリストにしましょう:
|
||||||
1. Search
|
1.検索
|
||||||
2. Slideshow
|
2スライドショー
|
||||||
3. Notch support
|
3.ノッチをサポート
|
||||||
4. Pinning folders to the top
|
4.フォルダを一番上に固定
|
||||||
5. Filtering media files by type
|
5.メディアの種類によるフィルタリング
|
||||||
6. Recycle bin for easy file recovery
|
6.簡単にファイルを復元できるゴミ箱
|
||||||
7. Fullscreen view orientation locking
|
7.全面表示ロック適応
|
||||||
8. Marking favorite files for easy access
|
8.お気に入りファイルのマークで簡単アクセス
|
||||||
9. Quick fullscreen media closing with down gesture
|
9.ダウン・ジェスチャーですばやくフルスクリーンメディアを閉じる
|
||||||
10. An editor for modifying images and applying filters
|
10.フィルタを適用できる画像修正エディタ
|
||||||
11. Password protection for protecting hidden items or the whole app
|
11.隠しアイテムやアプリ全体を保護するためのパスワード
|
||||||
12. Changing the thumbnail column count with gestures or menu buttons
|
12.ジェスチャーまたはメニューボタンでサムネイルの並び方を変更
|
||||||
13. Customizable bottom actions at the fullscreen view for quick access
|
13.すばやいアクセスが可能な全面表示でカスタマイズ可能な操作ボタン
|
||||||
14. Showing extended details over fullscreen media with desired file properties
|
14.メディアファイルプロパティの詳細をフルスクリーンに表示
|
||||||
15. Several different ways of sorting or grouping items, both ascending and descending
|
15.昇順と降順の両方で、アイテムをソートまたはグループ化するための異なる方法
|
||||||
16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery)
|
16.フォルダの非表示(他のアプリにも影響)、フォルダの除外(Simple Galleryのみに影響)
|
||||||
|
|
||||||
The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted.
|
隠れアイテムの表示、アプリ全体のロック、またはファイルの削除保護には指紋認証許可が必要です。
|
||||||
|
|
||||||
This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
|
このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">측면 클릭으로 미디어 즉시변경</string>
|
<string name="allow_instant_change">측면 클릭으로 미디어 즉시변경</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">상태 표시 줄이 숨겨져있을 때 확장 된 세부 정보 숨김</string>
|
<string name="hide_extended_details">상태 표시 줄이 숨겨져있을 때 확장 된 세부 정보 숨김</string>
|
||||||
<string name="do_extra_check">잘못된 파일 표시를 방지하기 위해 추가 검사 수행</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">섬네일</string>
|
<string name="thumbnails">섬네일</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Leiskite akimirksniu keisti mediją spustelėdami ekrano šonuose</string>
|
<string name="allow_instant_change">Leiskite akimirksniu keisti mediją spustelėdami ekrano šonuose</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Slėpti išsamią informaciją, kai būsenos juosta yra paslėpta</string>
|
<string name="hide_extended_details">Slėpti išsamią informaciją, kai būsenos juosta yra paslėpta</string>
|
||||||
<string name="do_extra_check">Atlikti papildomą patikrinimą, kad nebūtų rodomos sugadintos bylos</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatiūros</string>
|
<string name="thumbnails">Miniatiūros</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Dato tatt</string>
|
<string name="by_date_taken">Dato tatt</string>
|
||||||
<string name="by_file_type">Filtype</string>
|
<string name="by_file_type">Filtype</string>
|
||||||
<string name="by_extension">Endelse</string>
|
<string name="by_extension">Endelse</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mappe vist på modulen:</string>
|
<string name="folder_on_widget">Mappe vist på modulen:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Tillat å skifte media øyeblikkelig ved å trykke på kanten av skjermen</string>
|
<string name="allow_instant_change">Tillat å skifte media øyeblikkelig ved å trykke på kanten av skjermen</string>
|
||||||
<string name="allow_deep_zooming_images">Tillat dyp bildezooming</string>
|
<string name="allow_deep_zooming_images">Tillat dyp bildezooming</string>
|
||||||
<string name="hide_extended_details">Skjul utvidede detaljer når statuslinjen er skjult</string>
|
<string name="hide_extended_details">Skjul utvidede detaljer når statuslinjen er skjult</string>
|
||||||
<string name="do_extra_check">Gjør en ekstra sjekk for å unngå visning av ugyldige filer</string>
|
|
||||||
<string name="show_at_bottom">Vis noen handlingsknapper nederst på skjermen</string>
|
<string name="show_at_bottom">Vis noen handlingsknapper nederst på skjermen</string>
|
||||||
<string name="show_recycle_bin">Vis papirkurven på mappeskjermen</string>
|
<string name="show_recycle_bin">Vis papirkurven på mappeskjermen</string>
|
||||||
<string name="deep_zoomable_images">Dyp zoombare bilder</string>
|
<string name="deep_zoomable_images">Dyp zoombare bilder</string>
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Tillat å zoome 1:1 med to dobbeltrykk</string>
|
<string name="allow_one_to_one_zoom">Tillat å zoome 1:1 med to dobbeltrykk</string>
|
||||||
<string name="open_videos_on_separate_screen">Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser</string>
|
<string name="open_videos_on_separate_screen">Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser</string>
|
||||||
<string name="show_notch">Vis flik hvis tilgjengelig</string>
|
<string name="show_notch">Vis flik hvis tilgjengelig</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Tillat rotering av bilder med fingerbevegelser</string>
|
||||||
|
<string name="file_loading_priority">Fillastingsprioritet</string>
|
||||||
|
<string name="speed">Hastighet</string>
|
||||||
|
<string name="compromise">Kompromiss</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Unngå visning av ugyldige filer</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Minibilder</string>
|
<string name="thumbnails">Minibilder</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Datum opname</string>
|
<string name="by_date_taken">Datum opname</string>
|
||||||
<string name="by_file_type">Bestandstype</string>
|
<string name="by_file_type">Bestandstype</string>
|
||||||
<string name="by_extension">Extensie</string>
|
<string name="by_extension">Extensie</string>
|
||||||
|
<string name="grouping_and_sorting">Groeperen en sorteren zijn twee aparte opties</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Map tonen in de widget:</string>
|
<string name="folder_on_widget">Map tonen in de widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Direct naar vorige/volgende door op de zijkanten van het scherm te tikken</string>
|
<string name="allow_instant_change">Direct naar vorige/volgende door op de zijkanten van het scherm te tikken</string>
|
||||||
<string name="allow_deep_zooming_images">Verder inzoomen mogelijk maken</string>
|
<string name="allow_deep_zooming_images">Verder inzoomen mogelijk maken</string>
|
||||||
<string name="hide_extended_details">Uitgebreide informatie niet tonen als de statusbalk is verborgen</string>
|
<string name="hide_extended_details">Uitgebreide informatie niet tonen als de statusbalk is verborgen</string>
|
||||||
<string name="do_extra_check">Ongeldige bestanden verbergen</string>
|
|
||||||
<string name="show_at_bottom">Enkele actieknoppen onder aan het scherm tonen</string>
|
<string name="show_at_bottom">Enkele actieknoppen onder aan het scherm tonen</string>
|
||||||
<string name="show_recycle_bin">Prullenbak weergeven in de mapweergave</string>
|
<string name="show_recycle_bin">Prullenbak weergeven in de mapweergave</string>
|
||||||
<string name="deep_zoomable_images">Afbeeldingen ver inzoomen</string>
|
<string name="deep_zoomable_images">Afbeeldingen ver inzoomen</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Video\'s altijd in apart scherm met horizontale veeggebaren openen</string>
|
<string name="open_videos_on_separate_screen">Video\'s altijd in apart scherm met horizontale veeggebaren openen</string>
|
||||||
<string name="show_notch">Inkeping scherm tonen indien aanwezig</string>
|
<string name="show_notch">Inkeping scherm tonen indien aanwezig</string>
|
||||||
<string name="allow_rotating_gestures">Afbeeldingen met veeggebaren draaien</string>
|
<string name="allow_rotating_gestures">Afbeeldingen met veeggebaren draaien</string>
|
||||||
|
<string name="file_loading_priority">Prioriteit bij inladen bestanden</string>
|
||||||
|
<string name="speed">Snelheid</string>
|
||||||
|
<string name="compromise">Compromis</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Ongeldige bestanden verbergen</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatuurvoorbeelden</string>
|
<string name="thumbnails">Miniatuurvoorbeelden</string>
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
<string name="excluded_activity_placeholder">Wykluczenie folderów ukryje je tylko w niniejszej aplikacji, w innych aplikacjach będą one wciąż widoczne.\n\nJeśli chcesz je ukryć także w innych aplikacjach, użyj funkcji ukrywania.</string>
|
<string name="excluded_activity_placeholder">Wykluczenie folderów ukryje je tylko w niniejszej aplikacji, w innych aplikacjach będą one wciąż widoczne.\n\nJeśli chcesz je ukryć także w innych aplikacjach, użyj funkcji ukrywania.</string>
|
||||||
<string name="remove_all">Usuń wszystko</string>
|
<string name="remove_all">Usuń wszystko</string>
|
||||||
<string name="remove_all_description">Usunąć wszystkie foldery z listy wykluczonych? Foldery nie zostaną fizycznie usunięte.</string>
|
<string name="remove_all_description">Usunąć wszystkie foldery z listy wykluczonych? Foldery nie zostaną fizycznie usunięte.</string>
|
||||||
<string name="hidden_folders">Ukryte foldery</string>
|
<string name="hidden_folders">Ukryte foldery</string>
|
||||||
<string name="manage_hidden_folders">Zarządzaj ukrytymi folderami</string>
|
<string name="manage_hidden_folders">Zarządzaj ukrytymi folderami</string>
|
||||||
<string name="hidden_folders_placeholder">Zdaje się, że nie masz żadnych folderów z plikiem \'.nomedia\'.</string>
|
<string name="hidden_folders_placeholder">Zdaje się, że nie masz żadnych folderów z plikiem \'.nomedia\'.</string>
|
||||||
|
|
||||||
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Daty utworzenia</string>
|
<string name="by_date_taken">Daty utworzenia</string>
|
||||||
<string name="by_file_type">Typu</string>
|
<string name="by_file_type">Typu</string>
|
||||||
<string name="by_extension">Rozszerzenia</string>
|
<string name="by_extension">Rozszerzenia</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder wyświetlany na widżecie:</string>
|
<string name="folder_on_widget">Folder wyświetlany na widżecie:</string>
|
||||||
|
@ -162,8 +163,9 @@
|
||||||
<string name="one_finger_zoom">Zezwalaj na powiększanie jednym palcem w widoku pełnoekranowym</string>
|
<string name="one_finger_zoom">Zezwalaj na powiększanie jednym palcem w widoku pełnoekranowym</string>
|
||||||
<string name="allow_instant_change">Zezwalaj na natychmiastową zmianę multimediów po kliknięciu boków ekranu</string>
|
<string name="allow_instant_change">Zezwalaj na natychmiastową zmianę multimediów po kliknięciu boków ekranu</string>
|
||||||
<string name="allow_deep_zooming_images">Zezwalaj na duże powiększanie obrazów</string>
|
<string name="allow_deep_zooming_images">Zezwalaj na duże powiększanie obrazów</string>
|
||||||
<string name="hide_extended_details">Ukrywaj dodatkowe szczegóły, gdy pasek stanu jest ukryty</string>
|
<string name="hide_extended_details">Ukrywaj dodatkowe szczegóły, gdy pasek stanu jest ukryty</string><![CDATA[
|
||||||
<string name="do_extra_check">Dodatkowe sprawdzenie w celu uniknięcia pokazywania niewłaściwych plików</string>
|
|
||||||
|
]]>
|
||||||
<string name="show_at_bottom">Pokazuj niektóre przyciski akcji na dole ekranu</string>
|
<string name="show_at_bottom">Pokazuj niektóre przyciski akcji na dole ekranu</string>
|
||||||
<string name="show_recycle_bin">Pokazuj kosz w widoku folderów</string>
|
<string name="show_recycle_bin">Pokazuj kosz w widoku folderów</string>
|
||||||
<string name="deep_zoomable_images">Duże powiększanie obrazów</string>
|
<string name="deep_zoomable_images">Duże powiększanie obrazów</string>
|
||||||
|
@ -173,7 +175,11 @@
|
||||||
<string name="allow_one_to_one_zoom">Zezwalaj na powiększanie 1:1 dwoma podwójnymi dotknięciami</string>
|
<string name="allow_one_to_one_zoom">Zezwalaj na powiększanie 1:1 dwoma podwójnymi dotknięciami</string>
|
||||||
<string name="open_videos_on_separate_screen">Zawsze otwieraj filmy na osobnym ekranie z nowymi poziomymi gestami</string>
|
<string name="open_videos_on_separate_screen">Zawsze otwieraj filmy na osobnym ekranie z nowymi poziomymi gestami</string>
|
||||||
<string name="show_notch">Pokazuj wcięcie (jeśli dostępne)</string>
|
<string name="show_notch">Pokazuj wcięcie (jeśli dostępne)</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Zezwalaj na obracanie obrazów gestami</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatury</string>
|
<string name="thumbnails">Miniatury</string>
|
||||||
|
@ -194,7 +200,7 @@
|
||||||
<string name="faq_3_title">Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze?</string>
|
<string name="faq_3_title">Jak sprawić, aby album(y) zawsze pojawiał(y) się na górze?</string>
|
||||||
<string name="faq_3_text">Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji.</string>
|
<string name="faq_3_text">Przytrzymaj album(y) i wybierz ikonę przypięcia w pasku akcji.</string>
|
||||||
<string name="faq_4_title">Jak mogę przwijać filmy?</string>
|
<string name="faq_4_title">Jak mogę przwijać filmy?</string>
|
||||||
<string name="faq_4_text">You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward.</string>
|
<string name="faq_4_text">Na dwa sposoby: albo przeciągając poziomo palcem po filmie, albo klikając obecny (przewinięcie do tyłu) lub całkowity czas trwania (do przodu).</string>
|
||||||
<string name="faq_5_title">Jaka jest różnica między ukryciem, a wykluczeniem folderu?</string>
|
<string name="faq_5_title">Jaka jest różnica między ukryciem, a wykluczeniem folderu?</string>
|
||||||
<string name="faq_5_text">Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików.</string>
|
<string name="faq_5_text">Wykluczenie działa tylko w obrębie niniejszej aplikacji (wszędzie indziej pliki są normalnie widoczne), ukrywanie - w obrębie całego systemu (nie widać ich nigdzie), dodawany jest wtedy do folderu pusty plik \'.nomedia\', który możesz usunąć w dowolnym menedżerze plików.</string>
|
||||||
<string name="faq_6_title">Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy?</string>
|
<string name="faq_6_title">Dlaczego pokazują mi się foldery z okładkami do piosenek i tym podobne rzeczy?</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Permitir alternância instantânia de mídia clicando nas laterais da tela</string>
|
<string name="allow_instant_change">Permitir alternância instantânia de mídia clicando nas laterais da tela</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Ocultar detalhes extendidos quando a barra de status estiver oculta</string>
|
<string name="hide_extended_details">Ocultar detalhes extendidos quando a barra de status estiver oculta</string>
|
||||||
<string name="do_extra_check">Realizar verificação extra para evitar mostrar arquivos inválidos</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniaturas</string>
|
<string name="thumbnails">Miniaturas</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Data de obtenção</string>
|
<string name="by_date_taken">Data de obtenção</string>
|
||||||
<string name="by_file_type">Tipo de ficheiro</string>
|
<string name="by_file_type">Tipo de ficheiro</string>
|
||||||
<string name="by_extension">Extensão</string>
|
<string name="by_extension">Extensão</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Pasta mostrada no widget:</string>
|
<string name="folder_on_widget">Pasta mostrada no widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Permitir troca imediata de ficheiro ao tocar nas margens do ecrã</string>
|
<string name="allow_instant_change">Permitir troca imediata de ficheiro ao tocar nas margens do ecrã</string>
|
||||||
<string name="allow_deep_zooming_images">Permitir ampliação profunda de imagens</string>
|
<string name="allow_deep_zooming_images">Permitir ampliação profunda de imagens</string>
|
||||||
<string name="hide_extended_details">Ocultar detalhes extra se a barra de estado estiver oculta</string>
|
<string name="hide_extended_details">Ocultar detalhes extra se a barra de estado estiver oculta</string>
|
||||||
<string name="do_extra_check">Dupla verificação para evitar mostrar os ficheiros inválidos</string>
|
|
||||||
<string name="show_at_bottom">Mostrar alguns botões de ação na base do ecrã</string>
|
<string name="show_at_bottom">Mostrar alguns botões de ação na base do ecrã</string>
|
||||||
<string name="show_recycle_bin">Mostrar reciclagem no ecrã de pastas</string>
|
<string name="show_recycle_bin">Mostrar reciclagem no ecrã de pastas</string>
|
||||||
<string name="deep_zoomable_images">Ampliação de imagens</string>
|
<string name="deep_zoomable_images">Ampliação de imagens</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Abrir vídeos em ecrã distinto com os novos toques horizontais</string>
|
<string name="open_videos_on_separate_screen">Abrir vídeos em ecrã distinto com os novos toques horizontais</string>
|
||||||
<string name="show_notch">Mostrar \"notch\", se disponível</string>
|
<string name="show_notch">Mostrar \"notch\", se disponível</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniaturas</string>
|
<string name="thumbnails">Miniaturas</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Дата съёмки</string>
|
<string name="by_date_taken">Дата съёмки</string>
|
||||||
<string name="by_file_type">Тип файла</string>
|
<string name="by_file_type">Тип файла</string>
|
||||||
<string name="by_extension">Расширение</string>
|
<string name="by_extension">Расширение</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Папка, отображаемая в виджете:</string>
|
<string name="folder_on_widget">Папка, отображаемая в виджете:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Переключение медиафайлов нажатием по краю экрана</string>
|
<string name="allow_instant_change">Переключение медиафайлов нажатием по краю экрана</string>
|
||||||
<string name="allow_deep_zooming_images">Включить полное масштабирование</string>
|
<string name="allow_deep_zooming_images">Включить полное масштабирование</string>
|
||||||
<string name="hide_extended_details">Скрывать сведения о файле при скрытой строке состояния</string>
|
<string name="hide_extended_details">Скрывать сведения о файле при скрытой строке состояния</string>
|
||||||
<string name="do_extra_check">Дополнительная проверка, чтобы избежать показа неподдерживаемых файлов</string>
|
|
||||||
<string name="show_at_bottom">Показывать кнопки действий в нижней части экрана</string>
|
<string name="show_at_bottom">Показывать кнопки действий в нижней части экрана</string>
|
||||||
<string name="show_recycle_bin">Показывать корзину вместе с папками</string>
|
<string name="show_recycle_bin">Показывать корзину вместе с папками</string>
|
||||||
<string name="deep_zoomable_images">Масштабирование изображения</string>
|
<string name="deep_zoomable_images">Масштабирование изображения</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами</string>
|
<string name="open_videos_on_separate_screen">Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами</string>
|
||||||
<string name="show_notch">Показывать метку при наличии</string>
|
<string name="show_notch">Показывать метку при наличии</string>
|
||||||
<string name="allow_rotating_gestures">Поворачивать изображения жестами</string>
|
<string name="allow_rotating_gestures">Поворачивать изображения жестами</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Миниатюры</string>
|
<string name="thumbnails">Миниатюры</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Dátumu vytvorenia</string>
|
<string name="by_date_taken">Dátumu vytvorenia</string>
|
||||||
<string name="by_file_type">Typu súboru</string>
|
<string name="by_file_type">Typu súboru</string>
|
||||||
<string name="by_extension">Prípony</string>
|
<string name="by_extension">Prípony</string>
|
||||||
|
<string name="grouping_and_sorting">Prosím vedzte, že radenie a zoskupovanie súborov sú 2 nezávislé hodnoty</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Priečinok zobrazený vo widgete:</string>
|
<string name="folder_on_widget">Priečinok zobrazený vo widgete:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Povoliť instantné prepínanie médií kliknutím na okraj obrazovky</string>
|
<string name="allow_instant_change">Povoliť instantné prepínanie médií kliknutím na okraj obrazovky</string>
|
||||||
<string name="allow_deep_zooming_images">Povoliť hlboké približovanie obrázkov</string>
|
<string name="allow_deep_zooming_images">Povoliť hlboké približovanie obrázkov</string>
|
||||||
<string name="hide_extended_details">Skryť rozšírené vlastnosti ak je skrytá stavová lišta</string>
|
<string name="hide_extended_details">Skryť rozšírené vlastnosti ak je skrytá stavová lišta</string>
|
||||||
<string name="do_extra_check">Predísť zobrazovaniu neplatných súborov dodatočnou kontrolou</string>
|
|
||||||
<string name="show_at_bottom">Zobraziť niektoré akčné tlačidlá na spodku obrazovky</string>
|
<string name="show_at_bottom">Zobraziť niektoré akčné tlačidlá na spodku obrazovky</string>
|
||||||
<string name="show_recycle_bin">Zobraziť odpadkový kôš na obrazovke s priečinkami</string>
|
<string name="show_recycle_bin">Zobraziť odpadkový kôš na obrazovke s priečinkami</string>
|
||||||
<string name="deep_zoomable_images">Hlboko priblížiteľné obrázky</string>
|
<string name="deep_zoomable_images">Hlboko priblížiteľné obrázky</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami</string>
|
<string name="open_videos_on_separate_screen">Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami</string>
|
||||||
<string name="show_notch">Zobraziť výrez obrazovky, ak je dostupný</string>
|
<string name="show_notch">Zobraziť výrez obrazovky, ak je dostupný</string>
|
||||||
<string name="allow_rotating_gestures">Povoliť otáčanie obrázkov gestami</string>
|
<string name="allow_rotating_gestures">Povoliť otáčanie obrázkov gestami</string>
|
||||||
|
<string name="file_loading_priority">Priorita pri načítavaní súborov</string>
|
||||||
|
<string name="speed">Rýchlosť</string>
|
||||||
|
<string name="compromise">Kompromis</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Nezobrazovať neplatné súbory</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Náhľady</string>
|
<string name="thumbnails">Náhľady</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Posneto</string>
|
<string name="by_date_taken">Posneto</string>
|
||||||
<string name="by_file_type">Tip datoteke</string>
|
<string name="by_file_type">Tip datoteke</string>
|
||||||
<string name="by_extension">Končnica</string>
|
<string name="by_extension">Končnica</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mapa uporabljena na pripomočku:</string>
|
<string name="folder_on_widget">Mapa uporabljena na pripomočku:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Dovoli takojšnje spremembe medija s klikanjem na robove zaslona</string>
|
<string name="allow_instant_change">Dovoli takojšnje spremembe medija s klikanjem na robove zaslona</string>
|
||||||
<string name="allow_deep_zooming_images">Dovoli globoko povečavo slik</string>
|
<string name="allow_deep_zooming_images">Dovoli globoko povečavo slik</string>
|
||||||
<string name="hide_extended_details">Skrij razširjene podrobnosti, ko je statusna vrstica skrita</string>
|
<string name="hide_extended_details">Skrij razširjene podrobnosti, ko je statusna vrstica skrita</string>
|
||||||
<string name="do_extra_check">Dvojna kontrola za izogibanje prikazovanja napačnih datotek</string>
|
|
||||||
<string name="show_at_bottom">Prikaži določene akcijske gumbe na dnu zaslona</string>
|
<string name="show_at_bottom">Prikaži določene akcijske gumbe na dnu zaslona</string>
|
||||||
<string name="show_recycle_bin">Prikaži Koš na zaslonih map</string>
|
<string name="show_recycle_bin">Prikaži Koš na zaslonih map</string>
|
||||||
<string name="deep_zoomable_images">Globoko povečljive slike</string>
|
<string name="deep_zoomable_images">Globoko povečljive slike</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami</string>
|
<string name="open_videos_on_separate_screen">Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Sličice</string>
|
<string name="thumbnails">Sličice</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Fotodatum</string>
|
<string name="by_date_taken">Fotodatum</string>
|
||||||
<string name="by_file_type">Filtyp</string>
|
<string name="by_file_type">Filtyp</string>
|
||||||
<string name="by_extension">Filnamnstillägg</string>
|
<string name="by_extension">Filnamnstillägg</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Mapp som visas i widgeten:</string>
|
<string name="folder_on_widget">Mapp som visas i widgeten:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Tillåt snabbyte av media genom tryckning på skärmens kanter</string>
|
<string name="allow_instant_change">Tillåt snabbyte av media genom tryckning på skärmens kanter</string>
|
||||||
<string name="allow_deep_zooming_images">Tillåt djupzoomning av bilder</string>
|
<string name="allow_deep_zooming_images">Tillåt djupzoomning av bilder</string>
|
||||||
<string name="hide_extended_details">Dölj utökad information när statusfältet är dolt</string>
|
<string name="hide_extended_details">Dölj utökad information när statusfältet är dolt</string>
|
||||||
<string name="do_extra_check">Gör en extra kontroll för att hindra ogiltiga filer från att visas</string>
|
|
||||||
<string name="show_at_bottom">Visa några åtgärdsknappar längst ned på skärmen</string>
|
<string name="show_at_bottom">Visa några åtgärdsknappar längst ned på skärmen</string>
|
||||||
<string name="show_recycle_bin">Visa Papperskorgen i mappvyn</string>
|
<string name="show_recycle_bin">Visa Papperskorgen i mappvyn</string>
|
||||||
<string name="deep_zoomable_images">Djupt zoombara bilder</string>
|
<string name="deep_zoomable_images">Djupt zoombara bilder</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Miniatyrer</string>
|
<string name="thumbnails">Miniatyrer</string>
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
<dimen name="medium_tmb_size">120dp</dimen>
|
<dimen name="medium_tmb_size">120dp</dimen>
|
||||||
<dimen name="sd_card_icon_size">30dp</dimen>
|
<dimen name="sd_card_icon_size">30dp</dimen>
|
||||||
<dimen name="selection_check_size">38dp</dimen>
|
<dimen name="selection_check_size">38dp</dimen>
|
||||||
<dimen name="tmb_shadow_height">60dp</dimen>
|
<dimen name="tmb_shadow_height">70dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<string name="fix_date_taken">Çekilen tarih değerini düzelt</string>
|
<string name="fix_date_taken">Çekilen tarih değerini düzelt</string>
|
||||||
<string name="fixing">Düzeltiliyor…</string>
|
<string name="fixing">Düzeltiliyor…</string>
|
||||||
<string name="dates_fixed_successfully">Tarihler başarıyla düzeltildi</string>
|
<string name="dates_fixed_successfully">Tarihler başarıyla düzeltildi</string>
|
||||||
<string name="share_resized">Share a resized version</string>
|
<string name="share_resized">Yeniden boyutlandırılmış sürümü paylaş</string>
|
||||||
|
|
||||||
<!-- Filter -->
|
<!-- Filter -->
|
||||||
<string name="filter_media">Medyayı filtrele</string>
|
<string name="filter_media">Medyayı filtrele</string>
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
<string name="flip_horizontally">Yatay olarak çevir</string>
|
<string name="flip_horizontally">Yatay olarak çevir</string>
|
||||||
<string name="flip_vertically">Dikey olarak çevir</string>
|
<string name="flip_vertically">Dikey olarak çevir</string>
|
||||||
<string name="free_aspect_ratio">Serbest</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
|
<string name="free_aspect_ratio">Serbest</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
|
||||||
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
|
<string name="other_aspect_ratio">Diğer</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
|
||||||
|
|
||||||
<!-- Set wallpaper -->
|
<!-- Set wallpaper -->
|
||||||
<string name="simple_wallpaper">Basit Duvar Kağıdı</string>
|
<string name="simple_wallpaper">Basit Duvar Kağıdı</string>
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
<string name="loop_slideshow">Slayt gösterisini tekrarla</string>
|
<string name="loop_slideshow">Slayt gösterisini tekrarla</string>
|
||||||
<string name="slideshow_ended">Slayt gösterisi sona erdi</string>
|
<string name="slideshow_ended">Slayt gösterisi sona erdi</string>
|
||||||
<string name="no_media_for_slideshow">Slayt gösterisi için medya bulunamadı</string>
|
<string name="no_media_for_slideshow">Slayt gösterisi için medya bulunamadı</string>
|
||||||
<string name="use_crossfade_animation">Use crossfade animations</string>
|
<string name="use_crossfade_animation">Çapraz geçiş animasyonlarını kullan</string>
|
||||||
|
|
||||||
<!-- View types -->
|
<!-- View types -->
|
||||||
<string name="change_view_type">Görünüm türünü değiştir</string>
|
<string name="change_view_type">Görünüm türünü değiştir</string>
|
||||||
|
@ -132,10 +132,11 @@
|
||||||
<string name="by_date_taken">Çekildiği tarih</string>
|
<string name="by_date_taken">Çekildiği tarih</string>
|
||||||
<string name="by_file_type">Dosya türü</string>
|
<string name="by_file_type">Dosya türü</string>
|
||||||
<string name="by_extension">Uzantı</string>
|
<string name="by_extension">Uzantı</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Widget\'ta gösterilen klasör:</string>
|
||||||
<string name="show_folder_name">Show folder name</string>
|
<string name="show_folder_name">Klasör adını göster</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="autoplay_videos">Videoları otomatik oynat</string>
|
<string name="autoplay_videos">Videoları otomatik oynat</string>
|
||||||
|
@ -145,7 +146,7 @@
|
||||||
<string name="animate_gifs">Küçük resimlerdeki GIF\'leri hareketlendir</string>
|
<string name="animate_gifs">Küçük resimlerdeki GIF\'leri hareketlendir</string>
|
||||||
<string name="max_brightness">Tam ekran medya görüntülerken maksimum parlaklık</string>
|
<string name="max_brightness">Tam ekran medya görüntülerken maksimum parlaklık</string>
|
||||||
<string name="crop_thumbnails">Küçük resimleri karelere kırp</string>
|
<string name="crop_thumbnails">Küçük resimleri karelere kırp</string>
|
||||||
<string name="show_thumbnail_video_duration">Show video durations</string>
|
<string name="show_thumbnail_video_duration">Video sürelerini göster</string>
|
||||||
<string name="screen_rotation_by">Tam ekran medyayı döndür</string>
|
<string name="screen_rotation_by">Tam ekran medyayı döndür</string>
|
||||||
<string name="screen_rotation_system_setting">Sistem ayarları</string>
|
<string name="screen_rotation_system_setting">Sistem ayarları</string>
|
||||||
<string name="screen_rotation_device_rotation">Cihaz yönü</string>
|
<string name="screen_rotation_device_rotation">Cihaz yönü</string>
|
||||||
|
@ -163,17 +164,20 @@
|
||||||
<string name="allow_instant_change">Ekran kenarlarına tıklayarak anında medya değiştirmeye izin ver</string>
|
<string name="allow_instant_change">Ekran kenarlarına tıklayarak anında medya değiştirmeye izin ver</string>
|
||||||
<string name="allow_deep_zooming_images">Derin yakınlaştırma resimlerine izin ver</string>
|
<string name="allow_deep_zooming_images">Derin yakınlaştırma resimlerine izin ver</string>
|
||||||
<string name="hide_extended_details">Durum çubuğu gizlendiğinde genişletilmiş ayrıntıları gizle</string>
|
<string name="hide_extended_details">Durum çubuğu gizlendiğinde genişletilmiş ayrıntıları gizle</string>
|
||||||
<string name="do_extra_check">Geçersiz dosyaları göstermemek için ekstra kontrol yap</string>
|
|
||||||
<string name="show_at_bottom">Ekranın alt kısmındaki bazı eylem düğmelerini göster</string>
|
<string name="show_at_bottom">Ekranın alt kısmındaki bazı eylem düğmelerini göster</string>
|
||||||
<string name="show_recycle_bin">Geri dönüşüm kutusu\'nu klasörler ekranında gösterme</string>
|
<string name="show_recycle_bin">Geri dönüşüm kutusu\'nu klasörler ekranında gösterme</string>
|
||||||
<string name="deep_zoomable_images">Derin yakınlaştırılabilir resimler</string>
|
<string name="deep_zoomable_images">Derin yakınlaştırılabilir resimler</string>
|
||||||
<string name="show_highest_quality">Resimleri mümkün olan en yüksek kalitede göster</string>
|
<string name="show_highest_quality">Resimleri mümkün olan en yüksek kalitede göster</string>
|
||||||
<string name="show_recycle_bin_last">Geri dönüşüm kutusu\'nu ana ekranda son öğe olarak göster</string>
|
<string name="show_recycle_bin_last">Geri dönüşüm kutusu\'nu ana ekranda son öğe olarak göster</string>
|
||||||
<string name="allow_down_gesture">Tam ekran görünümünü aşağı hareketi ile kapatmaya izin ver</string>
|
<string name="allow_down_gesture">Tam ekran görünümünü aşağı hareketi ile kapatmaya izin ver</string>
|
||||||
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
|
<string name="allow_one_to_one_zoom">İki çift dokunuşla 1:1 yakınlaştırmaya izin ver</string>
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Videoları yeni yatay hareketlerle daima ayrı bir ekranda aç</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Varsa bir çentik göster</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Hareketlerle resimlerin döndürülmesine izin ver</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Küçük resimler</string>
|
<string name="thumbnails">Küçük resimler</string>
|
||||||
|
@ -195,7 +199,7 @@
|
||||||
<string name="faq_3_title">Bir albümün her zaman en üstte görünmesini nasıl sağlayabilirim?</string>
|
<string name="faq_3_title">Bir albümün her zaman en üstte görünmesini nasıl sağlayabilirim?</string>
|
||||||
<string name="faq_3_text">İstediğiniz albüme uzunca basabilir ve eylem menüsündeki Sabitle simgesini seçebilirsiniz. Birden çok klasörü de sabitleyebilirsiniz, sabitlenmiş öğeler varsayılan sıralama yöntemine göre sıralanır.</string>
|
<string name="faq_3_text">İstediğiniz albüme uzunca basabilir ve eylem menüsündeki Sabitle simgesini seçebilirsiniz. Birden çok klasörü de sabitleyebilirsiniz, sabitlenmiş öğeler varsayılan sıralama yöntemine göre sıralanır.</string>
|
||||||
<string name="faq_4_title">Videoları nasıl hızlıca ileri sarabilirim?</string>
|
<string name="faq_4_title">Videoları nasıl hızlıca ileri sarabilirim?</string>
|
||||||
<string name="faq_4_text">You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar, that will move the video either backward, or forward.</string>
|
<string name="faq_4_text">Parmağınızı video oynatıcı üzerinde yatay olarak sürükleyebilir veya videoyu ileri veya geri hareket ettirecek arama çubuğunun yanındaki geçerli veya maksimum süre metinlerine tıklayabilirsiniz.</string>
|
||||||
<string name="faq_5_title">Klasörün gizlenmesi ve hariç tutulması arasındaki fark nedir?</string>
|
<string name="faq_5_title">Klasörün gizlenmesi ve hariç tutulması arasındaki fark nedir?</string>
|
||||||
<string name="faq_5_text">Hariç tut, klasörü yalnızca Basit Galeri\'de görüntülemeyi engellerken, Gizle sistem genelinde çalışır ve klasörü diğer galerilerden de gizler. Verilen klasörde boş bir \".nomedia\" dosyası oluşturarak çalışır, daha sonra herhangi bir dosya yöneticisi ile kaldırabilirsiniz.</string>
|
<string name="faq_5_text">Hariç tut, klasörü yalnızca Basit Galeri\'de görüntülemeyi engellerken, Gizle sistem genelinde çalışır ve klasörü diğer galerilerden de gizler. Verilen klasörde boş bir \".nomedia\" dosyası oluşturarak çalışır, daha sonra herhangi bir dosya yöneticisi ile kaldırabilirsiniz.</string>
|
||||||
<string name="faq_6_title">Neden albüm resimlerini içeren klasörler görünüyor?</string>
|
<string name="faq_6_title">Neden albüm resimlerini içeren klasörler görünüyor?</string>
|
||||||
|
@ -218,7 +222,7 @@
|
||||||
|
|
||||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||||
<!-- Short description has to have less than 80 chars -->
|
<!-- Short description has to have less than 80 chars -->
|
||||||
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string>
|
<string name="app_short_description">Dosyalarınızı reklamsız yöneten, gizliliğinizi önemseyen bir çevrimdışı galeri.</string>
|
||||||
<string name="app_long_description">
|
<string name="app_long_description">
|
||||||
SVG\'ler, RAW\'lar, panoramik fotoğraflar ve videolar dahil olmak üzere birçok farklı resim ve video türünü gösterebilen son derece özelleştirilebilir bir galeri.
|
SVG\'ler, RAW\'lar, panoramik fotoğraflar ve videolar dahil olmak üzere birçok farklı resim ve video türünü gösterebilen son derece özelleştirilebilir bir galeri.
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">датою зйомки</string>
|
<string name="by_date_taken">датою зйомки</string>
|
||||||
<string name="by_file_type">типом файлу</string>
|
<string name="by_file_type">типом файлу</string>
|
||||||
<string name="by_extension">розширенням</string>
|
<string name="by_extension">розширенням</string>
|
||||||
|
<string name="grouping_and_sorting">Зверніть увагу, що групування і сортування - це два окремих поля</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Тека, що відображається на віджеті:</string>
|
<string name="folder_on_widget">Тека, що відображається на віджеті:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Дозволити миттєво змінювати медіафайл натисканням на сторони екрану</string>
|
<string name="allow_instant_change">Дозволити миттєво змінювати медіафайл натисканням на сторони екрану</string>
|
||||||
<string name="allow_deep_zooming_images">Дозволити глибоке масштабування зображень</string>
|
<string name="allow_deep_zooming_images">Дозволити глибоке масштабування зображень</string>
|
||||||
<string name="hide_extended_details">Приховати розширені подробиці, коли рядок стану прихований</string>
|
<string name="hide_extended_details">Приховати розширені подробиці, коли рядок стану прихований</string>
|
||||||
<string name="do_extra_check">Робити додаткову перевірку для запобігання відображенню недійсних файлів</string>
|
|
||||||
<string name="show_at_bottom">Показати деякі кнопки дій внизу екрану</string>
|
<string name="show_at_bottom">Показати деякі кнопки дій внизу екрану</string>
|
||||||
<string name="show_recycle_bin">Показувати \"Кошик\" на головному екрані</string>
|
<string name="show_recycle_bin">Показувати \"Кошик\" на головному екрані</string>
|
||||||
<string name="deep_zoomable_images">Глибокомасштабовані зображення</string>
|
<string name="deep_zoomable_images">Глибокомасштабовані зображення</string>
|
||||||
|
@ -172,8 +172,12 @@
|
||||||
<string name="allow_down_gesture">Дозволити закриття повноекранного перегляду свайпом згори вниз</string>
|
<string name="allow_down_gesture">Дозволити закриття повноекранного перегляду свайпом згори вниз</string>
|
||||||
<string name="allow_one_to_one_zoom">Дозволити масштабування до 1:1 подвійним тапом</string>
|
<string name="allow_one_to_one_zoom">Дозволити масштабування до 1:1 подвійним тапом</string>
|
||||||
<string name="open_videos_on_separate_screen">Завжди відкривати відео на окремому екрані з новими горизонтальними жестами</string>
|
<string name="open_videos_on_separate_screen">Завжди відкривати відео на окремому екрані з новими горизонтальними жестами</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Показувати мітку, якщо доступна</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Дозволити обертання зображень жестами</string>
|
||||||
|
<string name="file_loading_priority">Пріоритет завантаження файлів</string>
|
||||||
|
<string name="speed">Швидкість</string>
|
||||||
|
<string name="compromise">Компроміс</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Запобігати показу пошкоджених файлів</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Ескізи</string>
|
<string name="thumbnails">Ескізи</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">拍摄时间</string>
|
<string name="by_date_taken">拍摄时间</string>
|
||||||
<string name="by_file_type">文件类型</string>
|
<string name="by_file_type">文件类型</string>
|
||||||
<string name="by_extension">扩展</string>
|
<string name="by_extension">扩展</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">要在小部件上显示的文件夹:</string>
|
<string name="folder_on_widget">要在小部件上显示的文件夹:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">通过单击屏幕边缘来切换媒体</string>
|
<string name="allow_instant_change">通过单击屏幕边缘来切换媒体</string>
|
||||||
<string name="allow_deep_zooming_images">允许深度放大图像</string>
|
<string name="allow_deep_zooming_images">允许深度放大图像</string>
|
||||||
<string name="hide_extended_details">当状态栏隐藏时隐藏扩展详情</string>
|
<string name="hide_extended_details">当状态栏隐藏时隐藏扩展详情</string>
|
||||||
<string name="do_extra_check">额外检查以避免显示无效的文件</string>
|
|
||||||
<string name="show_at_bottom">显示底栏</string>
|
<string name="show_at_bottom">显示底栏</string>
|
||||||
<string name="show_recycle_bin">在文件夹界面显示回收站</string>
|
<string name="show_recycle_bin">在文件夹界面显示回收站</string>
|
||||||
<string name="deep_zoomable_images">深度放大图像</string>
|
<string name="deep_zoomable_images">深度放大图像</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">使用新的水平手势在独立页面播放视频</string>
|
<string name="open_videos_on_separate_screen">使用新的水平手势在独立页面播放视频</string>
|
||||||
<string name="show_notch">显示留海(如果可用)</string>
|
<string name="show_notch">显示留海(如果可用)</string>
|
||||||
<string name="allow_rotating_gestures">允许使用手势旋转图像</string>
|
<string name="allow_rotating_gestures">允许使用手势旋转图像</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">缩略图</string>
|
<string name="thumbnails">缩略图</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">拍照日期</string>
|
<string name="by_date_taken">拍照日期</string>
|
||||||
<string name="by_file_type">檔案類型</string>
|
<string name="by_file_type">檔案類型</string>
|
||||||
<string name="by_extension">副檔名</string>
|
<string name="by_extension">副檔名</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">在小工具顯示資料夾:</string>
|
<string name="folder_on_widget">在小工具顯示資料夾:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">允許點擊螢幕邊緣來快速切換媒體檔案</string>
|
<string name="allow_instant_change">允許點擊螢幕邊緣來快速切換媒體檔案</string>
|
||||||
<string name="allow_deep_zooming_images">允許深度縮放圖片</string>
|
<string name="allow_deep_zooming_images">允許深度縮放圖片</string>
|
||||||
<string name="hide_extended_details">狀態欄隱藏時,同時隱藏詳細資訊</string>
|
<string name="hide_extended_details">狀態欄隱藏時,同時隱藏詳細資訊</string>
|
||||||
<string name="do_extra_check">進行額外檢查,避免顯示無效的檔案</string>
|
|
||||||
<string name="show_at_bottom">在螢幕底部顯示一些操作按鈕</string>
|
<string name="show_at_bottom">在螢幕底部顯示一些操作按鈕</string>
|
||||||
<string name="show_recycle_bin">在資料夾畫面顯示回收桶</string>
|
<string name="show_recycle_bin">在資料夾畫面顯示回收桶</string>
|
||||||
<string name="deep_zoomable_images">可深度縮放的圖片</string>
|
<string name="deep_zoomable_images">可深度縮放的圖片</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string>
|
<string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string>
|
||||||
<string name="show_notch">如果可以,顯示瀏海螢幕</string>
|
<string name="show_notch">如果可以,顯示瀏海螢幕</string>
|
||||||
<string name="allow_rotating_gestures">允許用手勢來旋轉圖片</string>
|
<string name="allow_rotating_gestures">允許用手勢來旋轉圖片</string>
|
||||||
|
<string name="file_loading_priority">檔案讀取優先權</string>
|
||||||
|
<string name="speed">速度</string>
|
||||||
|
<string name="compromise">折衷</string>
|
||||||
|
<string name="avoid_showing_invalid_files">避免顯示無效的檔案</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">縮圖</string>
|
<string name="thumbnails">縮圖</string>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<dimen name="play_outline_icon_size">22dp</dimen>
|
<dimen name="play_outline_icon_size">22dp</dimen>
|
||||||
<dimen name="selection_check_size">26dp</dimen>
|
<dimen name="selection_check_size">26dp</dimen>
|
||||||
<dimen name="play_outline_size_big">96dp</dimen>
|
<dimen name="play_outline_size_big">96dp</dimen>
|
||||||
<dimen name="tmb_shadow_height">60dp</dimen>
|
<dimen name="tmb_shadow_height">70dp</dimen>
|
||||||
<dimen name="media_side_slider_width">60dp</dimen>
|
<dimen name="media_side_slider_width">60dp</dimen>
|
||||||
<dimen name="video_player_play_pause_size">60dp</dimen>
|
<dimen name="video_player_play_pause_size">60dp</dimen>
|
||||||
<dimen name="instant_change_bar_width">50dp</dimen>
|
<dimen name="instant_change_bar_width">50dp</dimen>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
<string name="by_date_taken">Date taken</string>
|
<string name="by_date_taken">Date taken</string>
|
||||||
<string name="by_file_type">File type</string>
|
<string name="by_file_type">File type</string>
|
||||||
<string name="by_extension">Extension</string>
|
<string name="by_extension">Extension</string>
|
||||||
|
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
|
||||||
|
|
||||||
<!-- Widgets -->
|
<!-- Widgets -->
|
||||||
<string name="folder_on_widget">Folder shown on the widget:</string>
|
<string name="folder_on_widget">Folder shown on the widget:</string>
|
||||||
|
@ -163,7 +164,6 @@
|
||||||
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string>
|
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string>
|
||||||
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
<string name="allow_deep_zooming_images">Allow deep zooming images</string>
|
||||||
<string name="hide_extended_details">Hide extended details when status bar is hidden</string>
|
<string name="hide_extended_details">Hide extended details when status bar is hidden</string>
|
||||||
<string name="do_extra_check">Do an extra check to avoid showing invalid files</string>
|
|
||||||
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
<string name="show_at_bottom">Show some action buttons at the bottom of the screen</string>
|
||||||
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
<string name="show_recycle_bin">Show the Recycle Bin at the folders screen</string>
|
||||||
<string name="deep_zoomable_images">Deep zoomable images</string>
|
<string name="deep_zoomable_images">Deep zoomable images</string>
|
||||||
|
@ -174,6 +174,10 @@
|
||||||
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
|
||||||
<string name="show_notch">Show a notch if available</string>
|
<string name="show_notch">Show a notch if available</string>
|
||||||
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
|
||||||
|
<string name="file_loading_priority">File loading priority</string>
|
||||||
|
<string name="speed">Speed</string>
|
||||||
|
<string name="compromise">Compromise</string>
|
||||||
|
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
|
||||||
|
|
||||||
<!-- Setting sections -->
|
<!-- Setting sections -->
|
||||||
<string name="thumbnails">Thumbnails</string>
|
<string name="thumbnails">Thumbnails</string>
|
||||||
|
|
|
@ -9,7 +9,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.3.1'
|
classpath 'com.android.tools.build:gradle:3.3.2'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 45 KiB |
Binary file not shown.
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 514 KiB |
Binary file not shown.
Before Width: | Height: | Size: 584 KiB After Width: | Height: | Size: 910 KiB |
Loading…
Reference in a new issue