Merge pull request #53 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2019-05-27 11:47:56 +03:00 committed by GitHub
commit 3264045aab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
96 changed files with 1351 additions and 601 deletions

View file

@ -1,6 +1,64 @@
Changelog
==========
Version 6.7.6 *(2019-05-26)*
----------------------------
* Improved batch renaming, allow using date time patterns in it
* Fixed empty folder deleting after deleting its content
* Improved new file cache updating in the background
* Improved the placeholder text in case no files are found
* Keep last_modified field at deleting and restoring files from the bin
* Increase the max image duration at slideshows
* Highlight the warning at deleting a folder
* Other stability, translation and performance improvements
Version 6.7.5 *(2019-05-15)*
----------------------------
* Hotfixing a glitch with opening third party intents
Version 6.7.4 *(2019-05-15)*
----------------------------
* Speeded up video deleting from fullscreen view
* Hotfixed some crashes
Version 6.7.3 *(2019-05-14)*
----------------------------
* Fixed folder sorting if used together with subfolder grouping
* Fixed some copy/move related progressbar issues
* Added many performance and stability improvements
Version 6.7.2 *(2019-05-09)*
----------------------------
* Allow creating file or folder shortcuts only from Android 8+
Version 6.7.1 *(2019-05-08)*
----------------------------
* Allow creating file or folder shortcuts on home screen on Android 7+
* Allow creating new folders on the file thumbnails screen too
* Added a checkbox at sorting by name/path to sort numbers by their actual numeric value
* Improve grouping direct subfolders, do not ignore parent folders without media files
* Show the Open Camera button at the menu on the main screen, instead of the Sort by button
* Other translation and stability improvements
Version 6.7.0 *(2019-05-02)*
----------------------------
* Moved the video duration field at the top right corner of thumbnails, if enabled
* Fixed some fullscreen image related glitches
* Misc translation and stability improvements
Version 6.6.4 *(2019-04-09)*
----------------------------
* Reverting to the previous way of sorting items by name/path
* Some stability and translation improvements
Version 6.6.3 *(2019-04-02)*
----------------------------

View file

@ -15,8 +15,8 @@ android {
applicationId "com.simplemobiletools.gallery.pro"
minSdkVersion 21
targetSdkVersion 28
versionCode 241
versionName "6.6.3"
versionCode 250
versionName "6.7.6"
multiDexEnabled true
setProperty("archivesBaseName", "gallery")
}
@ -61,12 +61,12 @@ android {
}
dependencies {
implementation 'com.simplemobiletools:commons:5.11.0'
implementation 'com.simplemobiletools:commons:5.13.1'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'it.sephiroth.android.exif:library:1.0.1'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17-SNAPSHOT'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6'
implementation 'com.google.vr:sdk-panowidget:1.180.0'
implementation 'com.google.vr:sdk-videowidget:1.180.0'
@ -74,8 +74,8 @@ dependencies {
implementation 'info.androidhive:imagefilters:1.0.7'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.caverock:androidsvg-aar:1.3'
implementation 'com.github.tibbi:gestureviews:cb7c2c191a'
implementation 'com.github.tibbi:subsampling-scale-image-view:7e4202eaee'
implementation 'com.github.tibbi:gestureviews:1506ec6156'
implementation 'com.github.tibbi:subsampling-scale-image-view:1df78cdfff'
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'

View file

@ -3,9 +3,7 @@ package com.simplemobiletools.gallery.pro.activities
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.scanPathRecursively
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.adapters.ManageFoldersAdapter
@ -50,13 +48,8 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
}
private fun addFolder() {
FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) {
config.lastFilepickerPath = it
config.addIncludedFolder(it)
showAddIncludedFolderDialog {
updateFolders()
Thread {
scanPathRecursively(it)
}.start()
}
}
}

View file

@ -39,7 +39,6 @@ import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao
import com.simplemobiletools.gallery.pro.interfaces.DirectoryOperationsListener
import com.simplemobiletools.gallery.pro.interfaces.MediumDao
import com.simplemobiletools.gallery.pro.jobs.NewPhotoFetcher
import com.simplemobiletools.gallery.pro.models.AlbumCover
import com.simplemobiletools.gallery.pro.models.Directory
import com.simplemobiletools.gallery.pro.models.Medium
import kotlinx.android.synthetic.main.activity_main.*
@ -118,10 +117,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
storeStateVariables()
checkWhatsNewDialog()
directories_empty_text.setOnClickListener {
showFilterMediaDialog()
}
mIsPasswordProtectionPending = config.isAppPasswordProtectionOn
setupLatestMediaId()
@ -149,6 +144,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
}
}
if (!config.wasSortingByNumericValueAdded) {
config.wasSortingByNumericValueAdded = true
config.sorting = config.sorting or SORT_USE_NUMERIC_VALUE
}
updateWidgets()
registerFileUpdateListener()
}
@ -999,26 +999,26 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private fun checkPlaceholderVisibility(dirs: ArrayList<Directory>) {
directories_empty_text_label.beVisibleIf(dirs.isEmpty() && mLoadedInitialPhotos)
directories_empty_text.beVisibleIf(dirs.isEmpty() && mLoadedInitialPhotos)
directories_grid.beVisibleIf(directories_empty_text_label.isGone())
}
private fun createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
includedFolders: MutableSet<String>, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory {
var thumbnail = curMedia.firstOrNull { File(it.path).exists() }?.path ?: ""
albumCovers.forEach {
if (it.path == path && File(it.tmb).exists()) {
thumbnail = it.tmb
if (dirs.isEmpty() && config.filterMedia == TYPE_DEFAULT_FILTER) {
directories_empty_text_label.text = getString(R.string.no_media_add_included)
directories_empty_text.text = getString(R.string.add_folder)
directories_empty_text.underlineText()
directories_empty_text.setOnClickListener {
showAddIncludedFolderDialog {
refreshItems()
}
}
} else {
directories_empty_text_label.text = getString(R.string.no_media_with_filters)
directories_empty_text.text = getString(R.string.change_filters_underlined)
directories_empty_text.setOnClickListener {
showFilterMediaDialog()
}
}
val firstItem = curMedia.first()
val lastItem = curMedia.last()
val dirName = checkAppendingHidden(path, hiddenString, includedFolders)
val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified)
val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken)
val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L
val mediaTypes = curMedia.getDirMediaTypes()
return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes)
directories_grid.beVisibleIf(directories_empty_text_label.isGone())
}
private fun setupAdapter(dirs: ArrayList<Directory>, textToSearch: String = "") {
@ -1109,9 +1109,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
}
if (config.useRecycleBin) {
val binFolder = dirs.firstOrNull { it.path == RECYCLE_BIN }
if (binFolder != null && mMediumDao.getDeletedMedia().isEmpty()) {
invalidDirs.add(binFolder)
try {
val binFolder = dirs.firstOrNull { it.path == RECYCLE_BIN }
if (binFolder != null && mMediumDao.getDeletedMedia().isEmpty()) {
invalidDirs.add(binFolder)
}
} catch (ignored: Exception) {
}
}
@ -1119,7 +1122,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
dirs.removeAll(invalidDirs)
setupAdapter(dirs)
invalidDirs.forEach {
mDirectoryDao.deleteDirPath(it.path)
try {
mDirectoryDao.deleteDirPath(it.path)
} catch (ignored: Exception) {
}
}
}
}

View file

@ -22,6 +22,7 @@ import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.REQUEST_EDIT_IMAGE
@ -220,6 +221,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
findItem(R.id.folder_view).isVisible = mShowAll
findItem(R.id.open_camera).isVisible = mShowAll
findItem(R.id.about).isVisible = mShowAll
findItem(R.id.create_new_folder).isVisible = !mShowAll && mPath != RECYCLE_BIN && mPath != FAVORITES
findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden
findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden
@ -249,6 +251,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
R.id.hide_folder -> tryHideFolder()
R.id.unhide_folder -> unhideFolder()
R.id.exclude_folder -> tryExcludeFolder()
R.id.create_new_folder -> createNewFolder()
R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden()
R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden()
R.id.increase_column_count -> increaseColumnCount()
@ -625,6 +628,12 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
}.start()
}
private fun createNewFolder() {
CreateNewFolderDialog(this, mPath) {
config.tempFolderPath = it
}
}
private fun tryToggleTemporarilyShowHidden() {
if (config.temporarilyShowHidden) {
toggleTemporarilyShowHidden(false)

View file

@ -6,11 +6,15 @@ import android.net.Uri
import android.provider.MediaStore
import android.view.WindowManager
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.getParentPath
import com.simplemobiletools.commons.extensions.getRealPathFromURI
import com.simplemobiletools.commons.extensions.scanPathRecursively
import com.simplemobiletools.commons.helpers.isPiePlus
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.extensions.addPathToDB
import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.extensions.updateDirectoryPath
open class SimpleActivity : BaseSimpleActivity() {
val observer = object : ContentObserver(null) {
@ -18,6 +22,7 @@ open class SimpleActivity : BaseSimpleActivity() {
super.onChange(selfChange, uri)
val path = getRealPathFromURI(uri)
if (path != null) {
updateDirectoryPath(path.getParentPath())
addPathToDB(path)
}
}
@ -76,4 +81,15 @@ open class SimpleActivity : BaseSimpleActivity() {
} catch (ignored: Exception) {
}
}
protected fun showAddIncludedFolderDialog(callback: () -> Unit) {
FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) {
config.lastFilepickerPath = it
config.addIncludedFolder(it)
callback()
Thread {
scanPathRecursively(it)
}.start()
}
}
}

View file

@ -2,13 +2,17 @@ package com.simplemobiletools.gallery.pro.activities
import android.animation.Animator
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.content.res.Configuration
import android.database.Cursor
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Icon
import android.media.ExifInterface
import android.net.Uri
import android.os.Bundle
@ -66,6 +70,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private var mMediaFiles = ArrayList<Medium>()
private var mFavoritePaths = ArrayList<String>()
private var mIgnoredPaths = ArrayList<String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -157,9 +162,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0
findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0
findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0
findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin()
findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin()
findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath)
findItem(R.id.menu_create_shortcut).isVisible = isOreoPlus()
findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0
findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon())
findItem(R.id.menu_rotate).setShowAsAction(
@ -204,6 +210,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
R.id.menu_save_as -> saveImageAs()
R.id.menu_create_shortcut -> createShortcut()
R.id.menu_settings -> launchSettings()
else -> return super.onOptionsItemSelected(item)
}
@ -359,8 +366,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private fun updatePagerItems(media: MutableList<Medium>) {
val pagerAdapter = MyPagerAdapter(this, supportFragmentManager, media)
if (!isDestroyed) {
pagerAdapter.shouldInitFragment = mPos < 5
view_pager.apply {
adapter = pagerAdapter
pagerAdapter.shouldInitFragment = true
currentItem = mPos
removeOnPageChangeListener(this@ViewPagerActivity)
addOnPageChangeListener(this@ViewPagerActivity)
@ -600,6 +609,29 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
}
}
@SuppressLint("NewApi")
private fun createShortcut() {
val manager = getSystemService(ShortcutManager::class.java)
if (manager.isRequestPinShortcutSupported) {
val medium = getCurrentMedium() ?: return
val path = medium.path
val drawable = resources.getDrawable(R.drawable.shortcut_image).mutate()
getShortcutImage(path, drawable) {
val intent = Intent(this, PhotoVideoActivity::class.java)
intent.action = Intent.ACTION_VIEW
intent.data = Uri.fromFile(File(path))
val shortcut = ShortcutInfo.Builder(this, path)
.setShortLabel(medium.name)
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
manager.requestPinShortcut(shortcut, null)
}
}
}
private fun getCurrentPhotoFragment() = getCurrentFragment() as? PhotoFragment
private fun isShowHiddenFlagNeeded(): Boolean {
@ -704,13 +736,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
}
private fun initBottomActionButtons() {
val currentMedium = getCurrentMedium()
val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0
bottom_favorite.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE != 0)
bottom_favorite.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE != 0 && currentMedium?.getIsInRecycleBin() == false)
bottom_favorite.setOnClickListener {
toggleFavorite()
}
bottom_edit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && getCurrentMedium()?.isSVG() == false)
bottom_edit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && currentMedium?.isSVG() == false)
bottom_edit.setOnClickListener {
openEditor(getCurrentPath())
}
@ -742,7 +775,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
else -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
mIsOrientationLocked = requestedOrientation != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
updateBottomActionIcons(getCurrentMedium())
updateBottomActionIcons(currentMedium)
}
bottom_slideshow.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_SLIDESHOW != 0)
@ -757,14 +790,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
bottom_toggle_file_visibility.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY != 0)
bottom_toggle_file_visibility.setOnClickListener {
getCurrentMedium()?.apply {
currentMedium?.apply {
toggleFileVisibility(!isHidden()) {
updateBottomActionIcons(getCurrentMedium())
updateBottomActionIcons(currentMedium)
}
}
}
bottom_rename.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RENAME != 0 && getCurrentMedium()?.getIsInRecycleBin() == false)
bottom_rename.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RENAME != 0 && currentMedium?.getIsInRecycleBin() == false)
bottom_rename.setOnClickListener {
renameFile()
}
@ -877,19 +910,37 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
val fileDirItem = FileDirItem(path, path.getFilenameFromPath())
if (config.useRecycleBin && !getCurrentMedium()!!.getIsInRecycleBin()) {
mIgnoredPaths.add(fileDirItem.path)
val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList<ThumbnailItem>
runOnUiThread {
gotMedia(media)
}
movePathsInRecycleBin(arrayListOf(path)) {
if (it) {
tryDeleteFileDirItem(fileDirItem, false, false) {
refreshViewPager()
mIgnoredPaths.remove(fileDirItem.path)
deleteDirectoryIfEmpty()
}
} else {
toast(R.string.unknown_error_occurred)
}
}
} else {
tryDeleteFileDirItem(fileDirItem, false, true) {
refreshViewPager()
}
handleDeletion(fileDirItem)
}
}
private fun handleDeletion(fileDirItem: FileDirItem) {
mIgnoredPaths.add(fileDirItem.path)
val media = mMediaFiles.filter { !mIgnoredPaths.contains(it.path) } as ArrayList<ThumbnailItem>
runOnUiThread {
gotMedia(media)
}
tryDeleteFileDirItem(fileDirItem, false, true) {
mIgnoredPaths.remove(fileDirItem.path)
deleteDirectoryIfEmpty()
}
}
@ -932,7 +983,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
}
private fun gotMedia(thumbnailItems: ArrayList<ThumbnailItem>) {
val media = thumbnailItems.asSequence().filter { it is Medium }.map { it as Medium }.toMutableList() as ArrayList<Medium>
val media = thumbnailItems.asSequence().filter { it is Medium && !mIgnoredPaths.contains(it.path) }.map { it as Medium }.toMutableList() as ArrayList<Medium>
if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) {
return
}
@ -976,8 +1027,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
var flipSides = false
try {
val pathToLoad = getCurrentPath()
val exif = android.media.ExifInterface(pathToLoad)
val orientation = exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, -1)
val exif = ExifInterface(pathToLoad)
val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1)
flipSides = orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270
} catch (e: Exception) {
}

View file

@ -1,5 +1,10 @@
package com.simplemobiletools.gallery.pro.adapters
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.view.Menu
import android.view.View
import android.view.ViewGroup
@ -12,10 +17,13 @@ import com.simplemobiletools.commons.dialogs.PropertiesDialog
import com.simplemobiletools.commons.dialogs.RenameItemDialog
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.FastScroller
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.activities.MediaActivity
import com.simplemobiletools.gallery.pro.dialogs.ConfirmDeleteFolderDialog
import com.simplemobiletools.gallery.pro.dialogs.ExcludeFolderDialog
import com.simplemobiletools.gallery.pro.dialogs.PickMediumDialog
import com.simplemobiletools.gallery.pro.extensions.*
@ -75,6 +83,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
findItem(R.id.cab_empty_recycle_bin).isVisible = isOneItemSelected && selectedPaths.first() == RECYCLE_BIN
findItem(R.id.cab_empty_disable_recycle_bin).isVisible = isOneItemSelected && selectedPaths.first() == RECYCLE_BIN
findItem(R.id.cab_create_shortcut).isVisible = isOreoPlus() && isOneItemSelected
checkHideBtnVisibility(this, selectedPaths)
checkPinBtnVisibility(this, selectedPaths)
}
@ -98,6 +108,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
R.id.cab_copy_to -> copyMoveTo(true)
R.id.cab_move_to -> moveFilesTo()
R.id.cab_select_all -> selectAll()
R.id.cab_create_shortcut -> createShortcut()
R.id.cab_delete -> askConfirmDelete()
R.id.cab_select_photo -> changeAlbumCover(false)
R.id.cab_use_default -> changeAlbumCover(true)
@ -340,6 +351,30 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
}
}
@SuppressLint("NewApi")
private fun createShortcut() {
val manager = activity.getSystemService(ShortcutManager::class.java)
if (manager.isRequestPinShortcutSupported) {
val dir = getFirstSelectedItem() ?: return
val path = dir.path
val drawable = resources.getDrawable(R.drawable.shortcut_image).mutate()
val coverThumbnail = config.parseAlbumCovers().firstOrNull { it.tmb == dir.path }?.tmb ?: dir.tmb
activity.getShortcutImage(coverThumbnail, drawable) {
val intent = Intent(activity, MediaActivity::class.java)
intent.action = Intent.ACTION_VIEW
intent.putExtra(DIRECTORY, path)
val shortcut = ShortcutInfo.Builder(activity, path)
.setShortLabel(dir.name)
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
manager.requestPinShortcut(shortcut, null)
}
}
}
private fun askConfirmDelete() {
when {
config.isDeletePasswordProtectionOn -> activity.handleDeletePasswordProtection {
@ -349,7 +384,11 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
else -> {
val itemsCnt = selectedKeys.size
val items = if (itemsCnt == 1) {
"\"${getSelectedPaths().first().getFilenameFromPath()}\""
var folder = getSelectedPaths().first().getFilenameFromPath()
if (folder == RECYCLE_BIN) {
folder = activity.getString(R.string.recycle_bin)
}
"\"$folder\""
} else {
resources.getQuantityString(R.plurals.delete_items, itemsCnt, itemsCnt)
}
@ -361,10 +400,9 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
R.string.move_to_recycle_bin_confirmation
}
var question = String.format(resources.getString(baseString), items)
val question = String.format(resources.getString(baseString), items)
val warning = resources.getQuantityString(R.plurals.delete_warning, itemsCnt, itemsCnt)
question += "\n\n$warning"
ConfirmationDialog(activity, question) {
ConfirmDeleteFolderDialog(activity, question, warning) {
deleteFolders()
}
}
@ -483,7 +521,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
private fun setupView(view: View, directory: Directory) {
val isSelected = selectedKeys.contains(directory.path.hashCode())
view.apply {
dir_name.text = if (groupDirectSubfolders) "${directory.name} (${directory.subfoldersCount})" else directory.name
dir_name.text = if (groupDirectSubfolders && directory.subfoldersCount > 1) "${directory.name} (${directory.subfoldersCount})" else directory.name
dir_path?.text = "${directory.path.substringBeforeLast("/")}/"
photo_cnt.text = directory.subfoldersMediaCount.toString()
val thumbnailType = when {
@ -501,7 +539,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
activity.loadImage(thumbnailType, directory.tmb, dir_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
dir_pin.beVisibleIf(pinnedFolders.contains(directory.path))
dir_location.beVisibleIf(directory.location != LOCAITON_INTERNAL)
dir_location.beVisibleIf(directory.location != LOCATION_INTERNAL)
if (dir_location.isVisible()) {
dir_location.setImageResource(if (directory.location == LOCATION_SD) R.drawable.ic_sd_card else R.drawable.ic_usb)
}

View file

@ -11,7 +11,7 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.PropertiesDialog
import com.simplemobiletools.commons.dialogs.RenameItemDialog
import com.simplemobiletools.commons.dialogs.RenameItemsDialog
import com.simplemobiletools.commons.dialogs.RenameItemsPatternDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.FastScroller
@ -109,8 +109,12 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
val isOneItemSelected = isOneItemSelected()
val selectedPaths = selectedItems.map { it.path } as ArrayList<String>
val isInRecycleBin = selectedItems.firstOrNull()?.getIsInRecycleBin() == true
menu.apply {
findItem(R.id.cab_rename).isVisible = selectedItems.firstOrNull()?.getIsInRecycleBin() == false
findItem(R.id.cab_rename).isVisible = !isInRecycleBin
findItem(R.id.cab_add_to_favorites).isVisible = !isInRecycleBin
findItem(R.id.cab_fix_date_taken).isVisible = !isInRecycleBin
findItem(R.id.cab_move_to).isVisible = !isInRecycleBin
findItem(R.id.cab_open_with).isVisible = isOneItemSelected
findItem(R.id.cab_confirm_selection).isVisible = isAGetIntent && allowMultiplePicks && selectedKeys.isNotEmpty()
findItem(R.id.cab_restore_recycle_bin_files).isVisible = selectedPaths.all { it.startsWith(activity.recycleBinPath) }
@ -178,8 +182,8 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
}
private fun checkFavoriteBtnVisibility(menu: Menu, selectedItems: ArrayList<Medium>) {
menu.findItem(R.id.cab_add_to_favorites).isVisible = selectedItems.any { !it.isFavorite }
menu.findItem(R.id.cab_remove_from_favorites).isVisible = selectedItems.any { it.isFavorite }
menu.findItem(R.id.cab_add_to_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { !it.isFavorite }
menu.findItem(R.id.cab_remove_from_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { it.isFavorite }
}
private fun confirmSelection() {
@ -211,7 +215,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
}.start()
}
} else {
RenameItemsDialog(activity, getSelectedPaths()) {
RenameItemsPatternDialog(activity, getSelectedPaths()) {
enableInstantLoad()
listener?.refreshItems()
finishActMode()
@ -331,7 +335,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
private fun fixDateTaken() {
Thread {
activity.fixDateTaken(getSelectedPaths()) {
activity.fixDateTaken(getSelectedPaths(), true) {
listener?.refreshItems()
finishActMode()
}

View file

@ -12,16 +12,20 @@ import com.simplemobiletools.gallery.pro.fragments.PhotoFragment
import com.simplemobiletools.gallery.pro.fragments.VideoFragment
import com.simplemobiletools.gallery.pro.fragments.ViewPagerFragment
import com.simplemobiletools.gallery.pro.helpers.MEDIUM
import com.simplemobiletools.gallery.pro.helpers.SHOULD_INIT_FRAGMENT
import com.simplemobiletools.gallery.pro.models.Medium
class MyPagerAdapter(val activity: ViewPagerActivity, fm: FragmentManager, val media: MutableList<Medium>) : FragmentStatePagerAdapter(fm) {
private val fragments = HashMap<Int, ViewPagerFragment>()
var shouldInitFragment = true
override fun getCount() = media.size
override fun getItem(position: Int): Fragment {
val medium = media[position]
val bundle = Bundle()
bundle.putSerializable(MEDIUM, medium)
bundle.putBoolean(SHOULD_INIT_FRAGMENT, shouldInitFragment)
val fragment = if (medium.isVideo()) {
VideoFragment()
} else {

View file

@ -5,6 +5,7 @@ import android.view.View
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.isVisible
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.gallery.pro.R
@ -12,7 +13,7 @@ import com.simplemobiletools.gallery.pro.extensions.config
import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL
import kotlinx.android.synthetic.main.dialog_change_sorting.view.*
class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorting: Boolean, showFolderCheckbox: Boolean,
class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorting: Boolean, val showFolderCheckbox: Boolean,
val path: String = "", val callback: () -> Unit) :
DialogInterface.OnClickListener {
private var currSorting = 0
@ -21,11 +22,16 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
private var view: View
init {
currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse)
view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply {
use_for_this_folder_divider.beVisibleIf(showFolderCheckbox)
use_for_this_folder_divider.beVisibleIf(showFolderCheckbox || (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0))
sorting_dialog_numeric_sorting.beVisibleIf(showFolderCheckbox && (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0))
sorting_dialog_numeric_sorting.isChecked = currSorting and SORT_USE_NUMERIC_VALUE != 0
sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox)
sorting_dialog_bottom_note.beVisibleIf(!isDirectorySorting)
sorting_dialog_use_for_this_folder.isChecked = config.hasCustomSorting(pathToUse)
sorting_dialog_bottom_note.beVisibleIf(!isDirectorySorting)
}
AlertDialog.Builder(activity)
@ -35,13 +41,17 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
activity.setupDialogStuff(view, this, R.string.sort_by)
}
currSorting = if (isDirectorySorting) config.directorySorting else config.getFileSorting(pathToUse)
setupSortRadio()
setupOrderRadio()
}
private fun setupSortRadio() {
val sortingRadio = view.sorting_dialog_radio_sorting
sortingRadio.setOnCheckedChangeListener { group, checkedId ->
val isSortingByNameOrPath = checkedId == sortingRadio.sorting_dialog_radio_name.id || checkedId == sortingRadio.sorting_dialog_radio_path.id
view.sorting_dialog_numeric_sorting.beVisibleIf(isSortingByNameOrPath)
view.use_for_this_folder_divider.beVisibleIf(view.sorting_dialog_numeric_sorting.isVisible() || view.sorting_dialog_use_for_this_folder.isVisible())
}
val sortBtn = when {
currSorting and SORT_BY_PATH != 0 -> sortingRadio.sorting_dialog_radio_path
@ -79,6 +89,10 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti
sorting = sorting or SORT_DESCENDING
}
if (view.sorting_dialog_numeric_sorting.isChecked) {
sorting = sorting or SORT_USE_NUMERIC_VALUE
}
if (isDirectorySorting) {
config.directorySorting = sorting
} else {

View file

@ -0,0 +1,31 @@
package com.simplemobiletools.gallery.pro.dialogs
import android.app.Activity
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.gallery.pro.R
import kotlinx.android.synthetic.main.dialog_confirm_delete_folder.view.*
class ConfirmDeleteFolderDialog(activity: Activity, message: String, warningMessage: String, val callback: () -> Unit) {
var dialog: AlertDialog
init {
val view = activity.layoutInflater.inflate(R.layout.dialog_confirm_delete_folder, null)
view.message.text = message
view.message_warning.text = warningMessage
val builder = AlertDialog.Builder(activity)
.setPositiveButton(R.string.yes) { dialog, which -> dialogConfirmed() }
builder.setNegativeButton(R.string.no, null)
dialog = builder.create().apply {
activity.setupDialogStuff(view, this)
}
}
private fun dialogConfirmed() {
dialog.dismiss()
callback()
}
}

View file

@ -7,6 +7,8 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Matrix
import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable
import android.media.ExifInterface
import android.os.Build
import android.provider.MediaStore
@ -14,6 +16,9 @@ import android.util.DisplayMetrics
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.bumptech.glide.load.DecodeFormat
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.request.RequestOptions
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.*
@ -226,10 +231,15 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList<String>, mediumDao
paths.forEach {
val file = File(it)
val internalFile = File(recycleBinPath, it)
val lastModified = file.lastModified()
try {
if (file.copyRecursively(internalFile, true)) {
mediumDao.updateDeleted("$RECYCLE_BIN$it", System.currentTimeMillis(), it)
pathsCnt--
if (config.keepLastModified) {
internalFile.setLastModified(lastModified)
}
}
} catch (e: Exception) {
showErrorToast(e)
@ -250,17 +260,22 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList<String>, mediumDa
paths.forEach {
val source = it
val destination = it.removePrefix(recycleBinPath)
val lastModified = File(source).lastModified()
var inputStream: InputStream? = null
var out: OutputStream? = null
try {
out = getFileOutputStreamSync(destination, source.getMimeType())
inputStream = getFileInputStreamSync(source)!!
inputStream = getFileInputStreamSync(source)
inputStream.copyTo(out!!)
if (File(source).length() == File(destination).length()) {
mediumDao.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN$destination")
}
newPaths.add(destination)
if (config.keepLastModified) {
File(destination).setLastModified(lastModified)
}
} catch (e: Exception) {
showErrorToast(e)
} finally {
@ -273,7 +288,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList<String>, mediumDa
callback()
}
fixDateTaken(newPaths)
fixDateTaken(newPaths, false)
}.start()
}
@ -323,9 +338,12 @@ fun Activity.hasNavBar(): Boolean {
return (realDisplayMetrics.widthPixels - displayMetrics.widthPixels > 0) || (realDisplayMetrics.heightPixels - displayMetrics.heightPixels > 0)
}
fun Activity.fixDateTaken(paths: ArrayList<String>, callback: (() -> Unit)? = null) {
fun Activity.fixDateTaken(paths: ArrayList<String>, showToasts: Boolean, callback: (() -> Unit)? = null) {
val BATCH_SIZE = 50
toast(R.string.fixing)
if (showToasts) {
toast(R.string.fixing)
}
try {
var didUpdateFile = false
val operations = ArrayList<ContentProviderOperation>()
@ -366,13 +384,18 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, callback: (() -> Unit)? = nu
didUpdateFile = false
}
toast(if (didUpdateFile) R.string.dates_fixed_successfully else R.string.unknown_error_occurred)
runOnUiThread {
if (showToasts) {
toast(if (didUpdateFile) R.string.dates_fixed_successfully else R.string.unknown_error_occurred)
}
callback?.invoke()
}
}
} catch (e: Exception) {
showErrorToast(e)
if (showToasts) {
showErrorToast(e)
}
}
}
@ -478,7 +501,7 @@ fun BaseSimpleActivity.copyFile(source: String, destination: String) {
try {
out = getFileOutputStreamSync(destination, source.getMimeType())
inputStream = getFileInputStreamSync(source)
inputStream?.copyTo(out!!)
inputStream.copyTo(out!!)
} finally {
inputStream?.close()
out?.close()
@ -491,3 +514,30 @@ fun saveFile(path: String, bitmap: Bitmap, out: FileOutputStream, degrees: Int)
val bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
bmp.compress(path.getCompressionFormat(), 90, out)
}
fun Activity.getShortcutImage(tmb: String, drawable: Drawable, callback: () -> Unit) {
Thread {
val options = RequestOptions()
.format(DecodeFormat.PREFER_ARGB_8888)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
val size = resources.getDimension(R.dimen.shortcut_size).toInt()
val builder = Glide.with(this)
.asDrawable()
.load(tmb)
.apply(options)
.centerCrop()
.into(size, size)
try {
(drawable as LayerDrawable).setDrawableByLayerId(R.id.shortcut_image, builder.get())
} catch (e: Exception) {
}
runOnUiThread {
callback()
}
}.start()
}

View file

@ -6,7 +6,6 @@ import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.database.Cursor
import android.database.sqlite.SQLiteException
import android.graphics.Point
import android.graphics.drawable.PictureDrawable
import android.media.AudioManager
@ -14,6 +13,7 @@ import android.provider.MediaStore
import android.view.WindowManager
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.Priority
import com.bumptech.glide.load.DecodeFormat
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
@ -28,6 +28,7 @@ import com.simplemobiletools.gallery.pro.helpers.*
import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao
import com.simplemobiletools.gallery.pro.interfaces.MediumDao
import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao
import com.simplemobiletools.gallery.pro.models.AlbumCover
import com.simplemobiletools.gallery.pro.models.Directory
import com.simplemobiletools.gallery.pro.models.Medium
import com.simplemobiletools.gallery.pro.models.ThumbnailItem
@ -166,8 +167,21 @@ fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Direct
o1 as Directory
o2 as Directory
var result = when {
sorting and SORT_BY_NAME != 0 -> o1.name.toLowerCase().compareTo(o2.name.toLowerCase())
sorting and SORT_BY_PATH != 0 -> o1.path.toLowerCase().compareTo(o2.path.toLowerCase())
sorting and SORT_BY_NAME != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase())
} else {
o1.name.toLowerCase().compareTo(o2.name.toLowerCase())
}
}
sorting and SORT_BY_PATH != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase())
} else {
o1.path.toLowerCase().compareTo(o2.path.toLowerCase())
}
}
sorting and SORT_BY_PATH != 0 -> AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase())
sorting and SORT_BY_SIZE != 0 -> o1.size.compareTo(o2.size)
sorting and SORT_BY_DATE_MODIFIED != 0 -> o1.modified.compareTo(o2.modified)
else -> o1.taken.compareTo(o2.taken)
@ -189,9 +203,7 @@ fun Context.getDirsToShow(dirs: ArrayList<Directory>, allDirs: ArrayList<Directo
it.subfoldersMediaCount = it.mediaCnt
}
val dirFolders = dirs.map { it.path }.sorted().toMutableSet() as HashSet<String>
val foldersToShow = getDirectParentSubfolders(dirFolders, currentPathPrefix)
val parentDirs = dirs.filter { foldersToShow.contains(it.path) } as ArrayList<Directory>
val parentDirs = getDirectParentSubfolders(dirs, currentPathPrefix)
updateSubfolderCounts(dirs, parentDirs)
// show the current folder as an available option too, not just subfolders
@ -203,39 +215,83 @@ fun Context.getDirsToShow(dirs: ArrayList<Directory>, allDirs: ArrayList<Directo
}
}
parentDirs
getSortedDirectories(parentDirs)
} else {
dirs.forEach { it.subfoldersMediaCount = it.mediaCnt }
dirs
}
}
fun Context.getDirectParentSubfolders(folders: HashSet<String>, currentPathPrefix: String): HashSet<String> {
val internalPath = internalStoragePath
val sdPath = sdCardPath
fun Context.getDirectParentSubfolders(dirs: ArrayList<Directory>, currentPathPrefix: String): ArrayList<Directory> {
val folders = dirs.map { it.path }.sorted().toMutableSet() as HashSet<String>
val currentPaths = LinkedHashSet<String>()
val foldersWithoutMediaFiles = ArrayList<String>()
var newDirId = 1000L
folders.forEach {
val path = it
if (path != RECYCLE_BIN && path != FAVORITES && !path.equals(internalPath, true) && !path.equals(sdPath, true)) {
if (currentPathPrefix.isNotEmpty()) {
if (path == currentPathPrefix || File(path).parent.equals(currentPathPrefix, true)) {
currentPaths.add(path)
}
} else if (folders.any { !it.equals(path, true) && (File(path).parent.equals(it, true) || File(it).parent.equals(File(path).parent, true)) }) {
// if we have folders like
// /storage/emulated/0/Pictures/Images and
// /storage/emulated/0/Pictures/Screenshots,
// but /storage/emulated/0/Pictures is empty, show Images and Screenshots as separate folders, do not group them at /Pictures
val parent = File(path).parent
if (folders.contains(parent)) {
currentPaths.add(parent)
} else {
currentPaths.add(path)
}
} else {
currentPaths.add(path)
for (path in folders) {
if (path == RECYCLE_BIN || path == FAVORITES) {
continue
}
if (currentPathPrefix.isNotEmpty()) {
if (!path.startsWith(currentPathPrefix, true)) {
continue
}
if (!File(path).parent.equals(currentPathPrefix, true)) {
continue
}
}
if (currentPathPrefix.isNotEmpty() && path == currentPathPrefix || File(path).parent.equals(currentPathPrefix, true)) {
currentPaths.add(path)
} else if (folders.any { !it.equals(path, true) && (File(path).parent.equals(it, true) || File(it).parent.equals(File(path).parent, true)) }) {
// if we have folders like
// /storage/emulated/0/Pictures/Images and
// /storage/emulated/0/Pictures/Screenshots,
// but /storage/emulated/0/Pictures is empty, still Pictures with the first folders thumbnails and proper other info
val parent = File(path).parent
if (!folders.contains(parent) && dirs.none { it.path == parent }) {
currentPaths.add(parent)
val isSortingAscending = config.sorting and SORT_DESCENDING == 0
val subDirs = dirs.filter { File(it.path).parent.equals(File(path).parent, true) } as ArrayList<Directory>
if (subDirs.isNotEmpty()) {
val lastModified = if (isSortingAscending) {
subDirs.minBy { it.modified }?.modified
} else {
subDirs.maxBy { it.modified }?.modified
} ?: 0
val dateTaken = if (isSortingAscending) {
subDirs.minBy { it.taken }?.taken
} else {
subDirs.maxBy { it.taken }?.taken
} ?: 0
var mediaTypes = 0
subDirs.forEach {
mediaTypes = mediaTypes or it.types
}
val directory = Directory(newDirId++,
parent,
subDirs.first().tmb,
getFolderNameFromPath(parent),
subDirs.sumBy { it.mediaCnt },
lastModified,
dateTaken,
subDirs.sumByLong { it.size },
getPathLocation(parent),
mediaTypes)
directory.containsMediaFilesDirectly = false
dirs.add(directory)
currentPaths.add(parent)
foldersWithoutMediaFiles.add(parent)
}
}
} else {
currentPaths.add(path)
}
}
@ -243,7 +299,7 @@ fun Context.getDirectParentSubfolders(folders: HashSet<String>, currentPathPrefi
currentPaths.forEach {
val path = it
currentPaths.forEach {
if (!it.equals(path) && File(it).parent?.equals(path) == true) {
if (!foldersWithoutMediaFiles.contains(it) && !it.equals(path, true) && File(it).parent?.equals(path, true) == true) {
areDirectSubfoldersAvailable = true
}
}
@ -258,15 +314,17 @@ fun Context.getDirectParentSubfolders(folders: HashSet<String>, currentPathPrefi
}
if (folders.size == currentPaths.size) {
return currentPaths
return dirs.filter { currentPaths.contains(it.path) } as ArrayList<Directory>
}
folders.clear()
folders.addAll(currentPaths)
val dirsToShow = dirs.filter { folders.contains(it.path) } as ArrayList<Directory>
return if (areDirectSubfoldersAvailable) {
getDirectParentSubfolders(folders, currentPathPrefix)
getDirectParentSubfolders(dirsToShow, currentPathPrefix)
} else {
folders
dirsToShow
}
}
@ -287,7 +345,10 @@ fun Context.updateSubfolderCounts(children: ArrayList<Directory>, parentDirs: Ar
// make sure we count only the proper direct subfolders, grouped the same way as on the main screen
parentDirs.firstOrNull { it.path == longestSharedPath }?.apply {
if (path.equals(child.path, true) || path.equals(File(child.path).parent, true) || children.any { it.path.equals(File(child.path).parent, true) }) {
subfoldersCount++
if (child.containsMediaFilesDirectly) {
subfoldersCount++
}
if (path != child.path) {
subfoldersMediaCount += child.mediaCnt
}
@ -412,21 +473,23 @@ fun Context.loadImage(type: Int, path: String, target: MySquareImageView, horizo
}
fun Context.addTempFolderIfNeeded(dirs: ArrayList<Directory>): ArrayList<Directory> {
val directories = ArrayList<Directory>()
val tempFolderPath = config.tempFolderPath
if (tempFolderPath.isNotEmpty()) {
return if (tempFolderPath.isNotEmpty()) {
val directories = ArrayList<Directory>()
val newFolder = Directory(null, tempFolderPath, "", tempFolderPath.getFilenameFromPath(), 0, 0, 0, 0L, getPathLocation(tempFolderPath), 0)
directories.add(newFolder)
directories.addAll(dirs)
directories
} else {
dirs
}
directories.addAll(dirs)
return directories
}
fun Context.getPathLocation(path: String): Int {
return when {
isPathOnSD(path) -> LOCATION_SD
isPathOnOTG(path) -> LOCATION_OTG
else -> LOCAITON_INTERNAL
else -> LOCATION_INTERNAL
}
}
@ -435,6 +498,7 @@ fun Context.loadPng(path: String, target: MySquareImageView, cropThumbnails: Boo
.signature(path.getFileSignature())
.skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.priority(Priority.LOW)
.format(DecodeFormat.PREFER_ARGB_8888)
val builder = Glide.with(applicationContext)
@ -449,6 +513,7 @@ fun Context.loadJpg(path: String, target: MySquareImageView, cropThumbnails: Boo
val options = RequestOptions()
.signature(path.getFileSignature())
.skipMemoryCache(skipMemoryCacheAtPaths?.contains(path) == true)
.priority(Priority.LOW)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
val builder = Glide.with(applicationContext)
@ -477,7 +542,7 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly:
Thread {
val directories = try {
directoryDao.getAll() as ArrayList<Directory>
} catch (e: SQLiteException) {
} catch (e: Exception) {
ArrayList<Directory>()
}
@ -722,3 +787,39 @@ fun Context.addPathToDB(path: String) {
}
}.start()
}
fun Context.createDirectoryFromMedia(path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String,
includedFolders: MutableSet<String>, isSortingAscending: Boolean, getProperFileSize: Boolean): Directory {
var thumbnail = curMedia.firstOrNull { File(it.path).exists() }?.path ?: ""
albumCovers.forEach {
if (it.path == path && File(it.tmb).exists()) {
thumbnail = it.tmb
}
}
val defaultMedium = Medium(0, "", "", "", 0L, 0L, 0L, 0, 0, false, 0L)
val firstItem = curMedia.firstOrNull() ?: defaultMedium
val lastItem = curMedia.lastOrNull() ?: defaultMedium
val dirName = checkAppendingHidden(path, hiddenString, includedFolders)
val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified)
val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken)
val size = if (getProperFileSize) curMedia.sumByLong { it.size } else 0L
val mediaTypes = curMedia.getDirMediaTypes()
return Directory(null, path, thumbnail, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes)
}
fun Context.updateDirectoryPath(path: String) {
val mediaFetcher = MediaFetcher(applicationContext)
val getImagesOnly = false
val getVideosOnly = false
val hiddenString = getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0
val getProperFileSize = config.directorySorting and SORT_BY_SIZE != 0
val favoritePaths = getFavoritePaths()
val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false)
val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize)
updateDBDirectory(directory, galleryDB.DirectoryDao())
}

View file

@ -21,6 +21,7 @@ import android.view.ViewGroup
import com.alexvasilkov.gestures.GestureController
import com.alexvasilkov.gestures.State
import com.bumptech.glide.Glide
import com.bumptech.glide.Priority
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.DecodeFormat
import com.bumptech.glide.load.engine.DiskCacheStrategy
@ -39,10 +40,7 @@ import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity
import com.simplemobiletools.gallery.pro.activities.PhotoActivity
import com.simplemobiletools.gallery.pro.extensions.*
import com.simplemobiletools.gallery.pro.helpers.MEDIUM
import com.simplemobiletools.gallery.pro.helpers.PATH
import com.simplemobiletools.gallery.pro.helpers.PicassoDecoder
import com.simplemobiletools.gallery.pro.helpers.PicassoRegionDecoder
import com.simplemobiletools.gallery.pro.helpers.*
import com.simplemobiletools.gallery.pro.models.Medium
import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter
import com.squareup.picasso.Callback
@ -89,7 +87,14 @@ class PhotoFragment : ViewPagerFragment() {
private lateinit var mMedium: Medium
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
mView = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup).apply {
mView = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup)
if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) {
return mView
}
mMedium = arguments!!.getSerializable(MEDIUM) as Medium
mView.apply {
subsampling_view.setOnClickListener { photoClicked() }
gestures_view.setOnClickListener { photoClicked() }
gif_view.setOnClickListener { photoClicked() }
@ -146,7 +151,6 @@ class PhotoFragment : ViewPagerFragment() {
mIsFragmentVisible = true
}
mMedium = arguments!!.getSerializable(MEDIUM) as Medium
if (mMedium.path.startsWith("content://") && !mMedium.path.startsWith("content://mms/")) {
val originalPath = mMedium.path
mMedium.path = context!!.getRealPathFromURI(Uri.parse(originalPath)) ?: mMedium.path
@ -226,6 +230,13 @@ class PhotoFragment : ViewPagerFragment() {
super.onDestroyView()
if (activity?.isDestroyed == false) {
mView.subsampling_view.recycle()
try {
if (context != null) {
Glide.with(context!!).clear(mView.gestures_view)
}
} catch (ignored: Exception) {
}
}
mLoadZoomableViewHandler.removeCallbacksAndMessages(null)
@ -243,11 +254,13 @@ class PhotoFragment : ViewPagerFragment() {
// avoid GIFs being skewed, played in wrong aspect ratio
if (mMedium.isGIF()) {
mView.onGlobalLayout {
measureScreen()
Handler().postDelayed({
mView.gif_view_frame.controller.resetState()
loadGif()
}, 50)
if (activity != null) {
measureScreen()
Handler().postDelayed({
mView.gif_view_frame.controller.resetState()
loadGif()
}, 50)
}
}
} else {
hideZoomableView()
@ -286,7 +299,7 @@ class PhotoFragment : ViewPagerFragment() {
private fun measureScreen() {
val metrics = DisplayMetrics()
activity!!.windowManager.defaultDisplay.getRealMetrics(metrics)
activity?.windowManager?.defaultDisplay?.getRealMetrics(metrics)
mScreenWidth = metrics.widthPixels
mScreenHeight = metrics.heightPixels
}
@ -357,9 +370,11 @@ class PhotoFragment : ViewPagerFragment() {
}
private fun loadBitmap(addZoomableView: Boolean = true) {
val priority = if (mIsFragmentVisible) Priority.IMMEDIATE else Priority.NORMAL
val options = RequestOptions()
.signature(mMedium.path.getFileSignature())
.format(DecodeFormat.PREFER_ARGB_8888)
.priority(priority)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.fitCenter()
@ -538,7 +553,7 @@ class PhotoFragment : ViewPagerFragment() {
tag?.getValueAsInt(defaultOrientation) ?: defaultOrientation
} else {
val exif = android.media.ExifInterface(path)
exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, defaultOrientation)
exif.getAttributeInt(TAG_ORIENTATION, defaultOrientation)
}
if (orient == defaultOrientation || context!!.isPathOnOTG(mMedium.path)) {

View file

@ -28,10 +28,7 @@ import com.simplemobiletools.gallery.pro.R
import com.simplemobiletools.gallery.pro.activities.PanoramaVideoActivity
import com.simplemobiletools.gallery.pro.activities.VideoActivity
import com.simplemobiletools.gallery.pro.extensions.*
import com.simplemobiletools.gallery.pro.helpers.Config
import com.simplemobiletools.gallery.pro.helpers.MEDIUM
import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH
import com.simplemobiletools.gallery.pro.helpers.PATH
import com.simplemobiletools.gallery.pro.helpers.*
import com.simplemobiletools.gallery.pro.models.Medium
import com.simplemobiletools.gallery.pro.views.MediaSideScroll
import kotlinx.android.synthetic.main.bottom_video_time_holder.view.*
@ -77,6 +74,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
private lateinit var mSeekBar: SeekBar
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mMedium = arguments!!.getSerializable(MEDIUM) as Medium
mConfig = context!!.config
mView = inflater.inflate(R.layout.pager_video_item, container, false).apply {
instant_prev_item.setOnClickListener { listener?.goToPrevItem() }
@ -125,8 +123,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S
}
}
if (!arguments!!.getBoolean(SHOULD_INIT_FRAGMENT, true)) {
return mView
}
storeStateVariables()
mMedium = arguments!!.getSerializable(MEDIUM) as Medium
Glide.with(context!!).load(mMedium.path).into(mView.video_preview)
// setMenuVisibility is not called at VideoActivity (third party intent)

View file

@ -203,7 +203,7 @@ class Config(context: Context) : BaseConfig(context) {
set(blackBackground) = prefs.edit().putBoolean(BLACK_BACKGROUND, blackBackground).apply()
var filterMedia: Int
get() = prefs.getInt(FILTER_MEDIA, TYPE_IMAGES or TYPE_VIDEOS or TYPE_GIFS or TYPE_RAWS or TYPE_SVGS)
get() = prefs.getInt(FILTER_MEDIA, TYPE_DEFAULT_FILTER)
set(filterMedia) = prefs.edit().putInt(FILTER_MEDIA, filterMedia).apply()
var dirColumnCnt: Int

View file

@ -119,6 +119,7 @@ const val GET_ANY_INTENT = "get_any_intent"
const val SET_WALLPAPER_INTENT = "set_wallpaper_intent"
const val IS_VIEW_INTENT = "is_view_intent"
const val PICKED_PATHS = "picked_paths"
const val SHOULD_INIT_FRAGMENT = "should_init_fragment"
// rotations
const val ROTATE_BY_SYSTEM_SETTING = 0
@ -153,8 +154,9 @@ const val TYPE_VIDEOS = 2
const val TYPE_GIFS = 4
const val TYPE_RAWS = 8
const val TYPE_SVGS = 16
const val TYPE_DEFAULT_FILTER = TYPE_IMAGES or TYPE_VIDEOS or TYPE_GIFS or TYPE_RAWS or TYPE_SVGS
const val LOCAITON_INTERNAL = 1
const val LOCATION_INTERNAL = 1
const val LOCATION_SD = 2
const val LOCATION_OTG = 3

View file

@ -126,7 +126,7 @@ class MediaFetcher(val context: Context) {
if (cursor.moveToFirst()) {
do {
val path = cursor.getStringValue(MediaStore.Images.Media.DATA)
val parentPath = File(path).parent?.trimEnd('/') ?: continue
val parentPath = File(path).parent ?: continue
if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) {
foldersToScan.add(parentPath)
}
@ -287,8 +287,20 @@ class MediaFetcher(val context: Context) {
o1 as Medium
o2 as Medium
var result = when {
sorting and SORT_BY_NAME != 0 -> o1.name.toLowerCase().compareTo(o2.name.toLowerCase())
sorting and SORT_BY_PATH != 0 -> o1.path.toLowerCase().compareTo(o2.path.toLowerCase())
sorting and SORT_BY_NAME != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.name.toLowerCase(), o2.name.toLowerCase())
} else {
o1.name.toLowerCase().compareTo(o2.name.toLowerCase())
}
}
sorting and SORT_BY_PATH != 0 -> {
if (sorting and SORT_USE_NUMERIC_VALUE != 0) {
AlphanumericComparator().compare(o1.path.toLowerCase(), o2.path.toLowerCase())
} else {
o1.path.toLowerCase().compareTo(o2.path.toLowerCase())
}
}
sorting and SORT_BY_SIZE != 0 -> o1.size.compareTo(o2.size)
sorting and SORT_BY_DATE_MODIFIED != 0 -> o1.modified.compareTo(o2.modified)
else -> o1.taken.compareTo(o2.taken)

View file

@ -12,8 +12,10 @@ import android.net.Uri
import android.os.Build
import android.os.Handler
import android.provider.MediaStore
import com.simplemobiletools.commons.extensions.getParentPath
import com.simplemobiletools.commons.extensions.getStringValue
import com.simplemobiletools.gallery.pro.extensions.addPathToDB
import com.simplemobiletools.gallery.pro.extensions.updateDirectoryPath
// based on https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#addTriggerContentUri(android.app.job.JobInfo.TriggerContentUri)
@TargetApi(Build.VERSION_CODES.N)
@ -54,6 +56,7 @@ class NewPhotoFetcher : JobService() {
override fun onStartJob(params: JobParameters): Boolean {
mRunningParams = params
val affectedFolderPaths = HashSet<String>()
if (params.triggeredContentAuthorities != null && params.triggeredContentUris != null) {
val ids = arrayListOf<String>()
for (uri in params.triggeredContentUris!!) {
@ -80,6 +83,7 @@ class NewPhotoFetcher : JobService() {
cursor = contentResolver.query(it, projection, selection.toString(), null, null)
while (cursor!!.moveToNext()) {
val path = cursor!!.getStringValue(MediaStore.Images.ImageColumns.DATA)
affectedFolderPaths.add(path.getParentPath())
addPathToDB(path)
}
}
@ -90,6 +94,12 @@ class NewPhotoFetcher : JobService() {
}
}
Thread {
affectedFolderPaths.forEach {
updateDirectoryPath(it)
}
}.start()
mHandler.post(mWorker)
return true
}

View file

@ -26,7 +26,8 @@ data class Directory(
// used with "Group direct subfolders" enabled
@Ignore var subfoldersCount: Int = 0,
@Ignore var subfoldersMediaCount: Int = 0) {
@Ignore var subfoldersMediaCount: Int = 0,
@Ignore var containsMediaFilesDirectly: Boolean = true) {
constructor() : this(null, "", "", "", 0, 0L, 0L, 0L, 0, 0, 0, 0)

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/shortcut_image"
android:drawable="@mipmap/ic_launcher"/>
</layer-list>

View file

@ -48,9 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingStart="@dimen/normal_margin"
android:paddingLeft="@dimen/normal_margin"
android:visibility="gone">
<include layout="@layout/fastscroller_handle_vertical"/>
@ -62,7 +60,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingTop="@dimen/normal_margin"
android:visibility="gone">

View file

@ -48,9 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingStart="@dimen/normal_margin"
android:paddingLeft="@dimen/normal_margin"
android:visibility="gone">
<include layout="@layout/fastscroller_handle_vertical"/>
@ -62,7 +60,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingTop="@dimen/normal_margin"
android:visibility="gone">

View file

@ -23,7 +23,7 @@
android:id="@+id/cardboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:padding="@dimen/activity_margin"
android:src="@drawable/ic_cardboard"/>
@ -32,7 +32,7 @@
android:id="@+id/explore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:padding="@dimen/activity_margin"
android:src="@drawable/ic_explore"/>

View file

@ -17,7 +17,7 @@
android:id="@+id/explore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:padding="@dimen/activity_margin"
android:src="@drawable/ic_explore"/>
@ -26,7 +26,7 @@
android:id="@+id/cardboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:padding="@dimen/activity_margin"
android:src="@drawable/ic_cardboard"/>

View file

@ -29,7 +29,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/customize_colors"/>
</RelativeLayout>
@ -52,7 +51,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/use_english_language"
app:switchPadding="@dimen/medium_margin"/>
@ -75,7 +73,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/change_date_and_time_format"/>
</RelativeLayout>
@ -97,7 +94,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/settings_file_loading_priority"
android:layout_toLeftOf="@+id/settings_file_loading_priority"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/file_loading_priority"/>
@ -107,9 +103,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@null"
android:clickable="false"/>
@ -127,7 +121,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/visibility"
android:textAllCaps="true"
@ -150,7 +143,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/manage_included_folders"/>
</RelativeLayout>
@ -172,7 +164,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/manage_excluded_folders"/>
</RelativeLayout>
@ -194,7 +185,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/manage_hidden_folders"/>
</RelativeLayout>
@ -217,7 +207,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_hidden_items"
app:switchPadding="@dimen/medium_margin"/>
@ -235,7 +224,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/videos"
android:textAllCaps="true"
@ -259,7 +247,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/autoplay_videos"
app:switchPadding="@dimen/medium_margin"/>
@ -283,7 +270,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/remember_last_video_position"
app:switchPadding="@dimen/medium_margin"/>
@ -307,7 +293,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/loop_videos"
app:switchPadding="@dimen/medium_margin"/>
@ -331,7 +316,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/open_videos_on_separate_screen"
app:switchPadding="@dimen/medium_margin"/>
@ -355,7 +339,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_video_gestures"
app:switchPadding="@dimen/medium_margin"/>
@ -373,7 +356,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/thumbnails"
android:textAllCaps="true"
@ -397,7 +379,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/animate_gifs"
app:switchPadding="@dimen/medium_margin"/>
@ -421,7 +402,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/crop_thumbnails"
app:switchPadding="@dimen/medium_margin"/>
@ -445,7 +425,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_thumbnail_video_duration"
app:switchPadding="@dimen/medium_margin"/>
@ -469,7 +448,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_media_count"
app:switchPadding="@dimen/medium_margin"/>
@ -487,7 +465,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/scrolling"
android:textAllCaps="true"
@ -511,7 +488,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_info_bubble"
app:switchPadding="@dimen/medium_margin"/>
@ -535,7 +511,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/scroll_thumbnails_horizontally"
app:switchPadding="@dimen/medium_margin"/>
@ -559,7 +534,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/enable_pull_to_refresh"
app:switchPadding="@dimen/medium_margin"/>
@ -577,7 +551,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/fullscreen_media"
android:textAllCaps="true"
@ -601,7 +574,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/max_brightness"
app:switchPadding="@dimen/medium_margin"/>
@ -625,7 +597,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/black_background_at_fullscreen"
app:switchPadding="@dimen/medium_margin"/>
@ -649,7 +620,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/hide_system_ui_at_fullscreen"
app:switchPadding="@dimen/medium_margin"/>
@ -673,7 +643,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_instant_change"
app:switchPadding="@dimen/medium_margin"/>
@ -697,7 +666,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_photo_gestures"
app:switchPadding="@dimen/medium_margin"/>
@ -721,7 +689,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_down_gesture"
app:switchPadding="@dimen/medium_margin"/>
@ -745,7 +712,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_notch"
app:switchPadding="@dimen/medium_margin"/>
@ -768,7 +734,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/settings_screen_rotation"
android:layout_toLeftOf="@+id/settings_screen_rotation"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/screen_rotation_by"/>
@ -778,9 +743,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@null"
android:clickable="false"/>
@ -798,7 +761,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/deep_zoomable_images"
android:textAllCaps="true"
@ -822,7 +784,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_deep_zooming_images"
app:switchPadding="@dimen/medium_margin"/>
@ -846,7 +807,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_rotating_gestures"
app:switchPadding="@dimen/medium_margin"/>
@ -870,7 +830,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_highest_quality"
app:switchPadding="@dimen/medium_margin"/>
@ -894,7 +853,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/allow_one_to_one_zoom"
app:switchPadding="@dimen/medium_margin"/>
@ -912,7 +870,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/extended_details"
android:textAllCaps="true"
@ -936,7 +893,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_extended_details"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
@ -959,7 +915,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/hide_extended_details"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
@ -981,7 +936,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/manage_extended_details"/>
</RelativeLayout>
@ -998,7 +952,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/security"
android:textAllCaps="true"
@ -1022,7 +975,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/password_protect_hidden_items"
app:switchPadding="@dimen/medium_margin"/>
@ -1046,7 +998,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/password_protect_whole_app"
app:switchPadding="@dimen/medium_margin"/>
@ -1070,7 +1021,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/password_protect_file_deletion"
app:switchPadding="@dimen/medium_margin"/>
@ -1088,7 +1038,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/file_operations"
android:textAllCaps="true"
@ -1112,7 +1061,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/delete_empty_folders"
app:switchPadding="@dimen/medium_margin"/>
@ -1136,7 +1084,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/keep_last_modified"
app:switchPadding="@dimen/medium_margin"/>
@ -1160,7 +1107,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/skip_delete_confirmation"
app:switchPadding="@dimen/medium_margin"/>
@ -1178,7 +1124,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/bottom_actions"
android:textAllCaps="true"
@ -1202,7 +1147,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_at_bottom"
app:switchPadding="@dimen/medium_margin"/>
@ -1225,7 +1169,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/manage_bottom_actions"/>
</RelativeLayout>
@ -1242,7 +1185,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/recycle_bin"
android:textAllCaps="true"
@ -1266,7 +1208,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/move_items_into_recycle_bin"
app:switchPadding="@dimen/medium_margin"/>
@ -1290,7 +1231,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_recycle_bin"
app:switchPadding="@dimen/medium_margin"/>
@ -1314,7 +1254,6 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_recycle_bin_last"
app:switchPadding="@dimen/medium_margin"/>
@ -1337,7 +1276,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/settings_empty_recycle_bin_size"
android:layout_toLeftOf="@+id/settings_empty_recycle_bin_size"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/empty_recycle_bin"/>
@ -1347,9 +1285,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@null"
android:clickable="false"/>
@ -1367,7 +1303,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/bigger_margin"
android:layout_marginLeft="@dimen/bigger_margin"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/migrating"
android:textAllCaps="true"
@ -1390,7 +1325,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/export_settings"/>
</RelativeLayout>
@ -1412,7 +1346,6 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/import_settings"/>
</RelativeLayout>

View file

@ -23,8 +23,7 @@
android:id="@+id/video_volume_controller"
android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"/>
android:layout_alignParentEnd="true"/>
<com.simplemobiletools.gallery.pro.views.MediaSideScroll
android:id="@+id/video_brightness_controller"

View file

@ -20,9 +20,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:paddingLeft="@dimen/activity_margin"
android:paddingStart="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingRight="@dimen/medium_margin"
android:paddingEnd="@dimen/medium_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
@ -43,7 +43,7 @@
android:layout_below="@+id/folder_picker_show_folder_name_holder"
android:layout_marginTop="@dimen/small_margin"
android:layout_marginBottom="@dimen/normal_margin"
android:paddingLeft="@dimen/activity_margin"
android:paddingStart="@dimen/activity_margin"
android:text="@string/folder_on_widget"/>
<com.simplemobiletools.commons.views.MyTextView
@ -51,7 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/folder_picker_label"
android:layout_marginLeft="@dimen/activity_margin"
android:layout_marginStart="@dimen/activity_margin"
android:background="@drawable/button_background"
android:padding="@dimen/normal_margin"
tools:text="@string/internal"/>
@ -100,7 +100,6 @@
android:layout_alignTop="@+id/config_bg_color"
android:layout_alignBottom="@+id/config_bg_color"
android:layout_toEndOf="@+id/config_bg_color"
android:layout_toRightOf="@+id/config_bg_color"
android:background="@android:color/white">
<SeekBar
@ -123,7 +122,6 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/widget_colorpicker_size"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:fontFamily="sans-serif-light"
android:paddingLeft="@dimen/activity_margin"

View file

@ -16,9 +16,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_star_off"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_edit"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"/>
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_edit"
@ -27,9 +30,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_edit"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_share"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_favorite"/>
app:layout_constraintStart_toEndOf="@+id/bottom_favorite"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_share"
@ -38,9 +44,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_share"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_delete"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_edit"/>
app:layout_constraintStart_toEndOf="@+id/bottom_edit"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_delete"
@ -49,9 +58,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_rotate"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_share"/>
app:layout_constraintStart_toEndOf="@+id/bottom_share"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_rotate"
@ -60,9 +72,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_rotate_right"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_properties"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_delete"/>
app:layout_constraintStart_toEndOf="@+id/bottom_delete"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_properties"
@ -71,9 +86,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_properties"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_change_orientation"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_rotate"/>
app:layout_constraintStart_toEndOf="@+id/bottom_rotate"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_change_orientation"
@ -82,9 +100,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_orientation_auto"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_slideshow"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_properties"/>
app:layout_constraintStart_toEndOf="@+id/bottom_properties"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_slideshow"
@ -93,9 +114,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_slideshow"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_show_on_map"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_change_orientation"/>
app:layout_constraintStart_toEndOf="@+id/bottom_change_orientation"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_show_on_map"
@ -104,9 +128,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_place"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_toggle_file_visibility"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_slideshow"/>
app:layout_constraintStart_toEndOf="@+id/bottom_slideshow"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_toggle_file_visibility"
@ -115,9 +142,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_hide"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_rename"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_show_on_map"/>
app:layout_constraintStart_toEndOf="@+id/bottom_show_on_map"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_rename"
@ -126,9 +156,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_rename_new"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/bottom_set_as"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_toggle_file_visibility"/>
app:layout_constraintStart_toEndOf="@+id/bottom_toggle_file_visibility"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_set_as"
@ -137,9 +170,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_set_as"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/bottom_copy"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_rename"/>
app:layout_constraintStart_toEndOf="@+id/bottom_rename"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_copy"
@ -148,9 +184,12 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_copy"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/bottom_move"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_set_as"/>
app:layout_constraintStart_toEndOf="@+id/bottom_set_as"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
android:id="@+id/bottom_move"
@ -159,8 +198,11 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_move"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_copy"/>
app:layout_constraintStart_toEndOf="@+id/bottom_copy"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -17,9 +17,12 @@
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textSize="@dimen/big_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio_one_one"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"/>
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<TextView
android:id="@+id/bottom_aspect_ratio_one_one"
@ -30,9 +33,12 @@
android:text="1:1"
android:textColor="@android:color/white"
android:textSize="@dimen/big_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio_four_three"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_free"/>
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_free"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<TextView
android:id="@+id/bottom_aspect_ratio_four_three"
@ -43,9 +49,12 @@
android:text="4:3"
android:textColor="@android:color/white"
android:textSize="@dimen/big_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio_sixteen_nine"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_one_one"/>
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_one_one"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<TextView
android:id="@+id/bottom_aspect_ratio_sixteen_nine"
@ -56,9 +65,12 @@
android:text="16:9"
android:textColor="@android:color/white"
android:textSize="@dimen/big_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bottom_aspect_ratio_other"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_four_three"/>
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_four_three"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
<TextView
android:id="@+id/bottom_aspect_ratio_other"
@ -70,8 +82,11 @@
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textSize="@dimen/big_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_sixteen_nine"/>
app:layout_constraintStart_toEndOf="@+id/bottom_aspect_ratio_sixteen_nine"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -24,7 +24,7 @@
android:id="@+id/bottom_draw_color_clickable"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginRight="@dimen/small_margin"
android:layout_marginEnd="@dimen/small_margin"
android:background="?attr/selectableItemBackgroundBorderless"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/bottom_draw_undo"
@ -34,7 +34,7 @@
android:id="@+id/bottom_draw_color"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginRight="@dimen/small_margin"
android:layout_marginEnd="@dimen/small_margin"
android:clickable="false"
android:padding="@dimen/small_margin"
android:src="@drawable/circle_background"
@ -46,7 +46,7 @@
android:id="@+id/bottom_draw_undo"
android:layout_width="@dimen/bottom_editor_color_picker_size"
android:layout_height="@dimen/bottom_editor_color_picker_size"
android:layout_marginRight="@dimen/normal_margin"
android:layout_marginEnd="@dimen/normal_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="false"
android:padding="@dimen/medium_margin"

View file

@ -50,7 +50,6 @@
android:layout_alignTop="@+id/video_seekbar"
android:layout_alignBottom="@+id/video_seekbar"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="center_vertical"
android:paddingLeft="@dimen/activity_margin"
@ -64,9 +63,7 @@
android:layout_height="wrap_content"
android:layout_below="@+id/video_toggle_play_pause"
android:layout_toStartOf="@+id/video_duration"
android:layout_toLeftOf="@+id/video_duration"
android:layout_toEndOf="@+id/video_curr_time"
android:layout_toRightOf="@+id/video_curr_time"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"/>
@ -78,7 +75,6 @@
android:layout_alignTop="@+id/video_seekbar"
android:layout_alignBottom="@+id/video_seekbar"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="center_vertical"
android:paddingLeft="@dimen/activity_margin"

View file

@ -101,6 +101,14 @@
android:id="@+id/use_for_this_folder_divider"
layout="@layout/divider"/>
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/sorting_dialog_numeric_sorting"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:text="@string/sort_numeric_parts"/>
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/sorting_dialog_use_for_this_folder"
android:layout_width="match_parent"

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_confirm_delete_folder_holder"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/big_margin"
android:paddingTop="@dimen/big_margin"
android:paddingRight="@dimen/big_margin"
android:textSize="@dimen/bigger_text_size"/>
<TextView
android:id="@+id/message_warning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/message"
android:paddingLeft="@dimen/big_margin"
android:paddingTop="@dimen/big_margin"
android:paddingRight="@dimen/big_margin"
android:paddingBottom="@dimen/activity_margin"
android:textColor="@color/md_red_700"
android:textSize="@dimen/bigger_text_size"/>
</RelativeLayout>

View file

@ -33,8 +33,8 @@
android:layout_height="wrap_content"
android:layout_alignTop="@+id/aspect_ratio_width"
android:layout_alignBottom="@+id/aspect_ratio_width"
android:layout_toLeftOf="@+id/aspect_ratio_height"
android:layout_toRightOf="@+id/aspect_ratio_width"
android:layout_toStartOf="@+id/aspect_ratio_height"
android:layout_toEndOf="@+id/aspect_ratio_width"
android:gravity="center"
android:text=":"
android:textStyle="bold"/>
@ -44,8 +44,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginLeft="50dp"
android:layout_toRightOf="@+id/aspect_ratio_width_label"
android:layout_toEndOf="@+id/aspect_ratio_width_label"
android:text="@string/height"/>
<com.simplemobiletools.commons.views.MyEditText
@ -54,7 +53,6 @@
android:layout_height="wrap_content"
android:layout_below="@+id/aspect_ratio_width_label"
android:layout_alignStart="@+id/aspect_ratio_height_label"
android:layout_alignLeft="@+id/aspect_ratio_height_label"
android:inputType="number"
android:maxLength="6"
android:maxLines="1"

View file

@ -7,8 +7,6 @@
android:layout_height="match_parent">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/directories_grid_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -27,9 +25,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingStart="@dimen/normal_margin"
android:paddingLeft="@dimen/normal_margin">
android:paddingStart="@dimen/normal_margin">
<include layout="@layout/fastscroller_handle_vertical"/>
@ -40,7 +36,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingTop="@dimen/normal_margin">

View file

@ -19,9 +19,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingStart="@dimen/normal_margin"
android:paddingLeft="@dimen/normal_margin">
android:paddingStart="@dimen/normal_margin">
<include layout="@layout/fastscroller_handle_vertical"/>
@ -32,7 +30,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingTop="@dimen/normal_margin">

View file

@ -27,7 +27,7 @@
android:id="@+id/other_aspect_ratio_2_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="2:1"
@ -37,18 +37,17 @@
android:id="@+id/other_aspect_ratio_3_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="3:2"
android:textSize="@dimen/bigger_text_size"/>
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/other_aspect_ratio_4_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="4:3"
@ -58,7 +57,7 @@
android:id="@+id/other_aspect_ratio_5_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="5:3"
@ -68,7 +67,7 @@
android:id="@+id/other_aspect_ratio_16_9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="16:9"
@ -78,7 +77,7 @@
android:id="@+id/other_aspect_ratio_19_9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="19:9"
@ -88,7 +87,7 @@
android:id="@+id/other_aspect_ratio_custom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/custom"
@ -107,7 +106,7 @@
android:id="@+id/other_aspect_ratio_1_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="1:2"
@ -117,7 +116,7 @@
android:id="@+id/other_aspect_ratio_2_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="2:3"
@ -128,7 +127,7 @@
android:id="@+id/other_aspect_ratio_3_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="3:4"
@ -138,7 +137,7 @@
android:id="@+id/other_aspect_ratio_3_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="3:5"
@ -148,7 +147,7 @@
android:id="@+id/other_aspect_ratio_9_16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="9:16"
@ -158,7 +157,7 @@
android:id="@+id/other_aspect_ratio_9_19"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="9:19"

View file

@ -32,8 +32,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginLeft="50dp"
android:layout_toRightOf="@+id/image_width_label"
android:layout_toEndOf="@+id/image_width_label"
android:text="@string/height"/>
<com.simplemobiletools.commons.views.MyEditText
@ -42,7 +41,6 @@
android:layout_height="wrap_content"
android:layout_below="@+id/image_width_label"
android:layout_alignStart="@+id/image_height_label"
android:layout_alignLeft="@+id/image_height_label"
android:inputType="number"
android:maxLength="6"
android:maxLines="1"

View file

@ -18,10 +18,10 @@
android:id="@+id/save_as_path"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin"
android:layout_marginStart="@dimen/activity_margin"
android:layout_marginBottom="@dimen/activity_margin"
android:paddingTop="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"/>
android:paddingEnd="@dimen/small_margin"/>
<com.simplemobiletools.commons.views.MyEditText
android:id="@+id/save_as_name"

View file

@ -17,7 +17,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:text="@string/interval"/>
@ -27,12 +26,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:ems="5"
android:gravity="right"
android:gravity="end"
android:imeOptions="actionDone"
android:inputType="number"
android:maxLength="2"
android:maxLength="5"
android:textCursorDrawable="@null"
android:textSize="@dimen/normal_text_size"/>
@ -43,7 +41,6 @@
android:layout_below="@+id/interval_label"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin">
@ -64,7 +61,6 @@
android:layout_below="@+id/include_videos_holder"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin">
@ -85,7 +81,6 @@
android:layout_below="@+id/include_gifs_holder"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin">
@ -106,7 +101,6 @@
android:layout_below="@+id/random_order_holder"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:visibility="gone">
@ -128,7 +122,6 @@
android:layout_below="@+id/use_fade_holder"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin">
@ -149,7 +142,6 @@
android:layout_below="@+id/move_backwards_holder"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin">

View file

@ -17,10 +17,9 @@
android:id="@+id/dir_check"
android:layout_width="@dimen/selection_check_size"
android:layout_height="@dimen/selection_check_size"
android:layout_alignRight="@+id/dir_shadow_holder"
android:layout_alignEnd="@+id/dir_shadow_holder"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_background"
android:padding="@dimen/tiny_margin"
@ -32,7 +31,6 @@
android:layout_width="@dimen/selection_check_size"
android:layout_height="@dimen/selection_check_size"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_black_background"
@ -44,8 +42,8 @@
android:id="@+id/dir_shadow_holder"
android:layout_width="match_parent"
android:layout_height="@dimen/tmb_shadow_height"
android:layout_alignLeft="@+id/dir_bottom_holder"
android:layout_alignRight="@+id/dir_bottom_holder"
android:layout_alignStart="@+id/dir_bottom_holder"
android:layout_alignEnd="@+id/dir_bottom_holder"
android:layout_alignParentBottom="true"
android:background="@drawable/gradient_background"/>
@ -53,8 +51,8 @@
android:id="@+id/dir_bottom_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/dir_thumbnail"
android:layout_alignRight="@+id/dir_thumbnail"
android:layout_alignStart="@+id/dir_thumbnail"
android:layout_alignEnd="@+id/dir_thumbnail"
android:layout_alignParentBottom="true"
android:gravity="bottom"
android:orientation="vertical"
@ -70,6 +68,8 @@
android:ellipsize="end"
android:maxLines="2"
android:paddingBottom="@dimen/small_margin"
android:shadowColor="@color/default_background_color"
android:shadowRadius="4"
android:textColor="@android:color/white"
android:textSize="@dimen/normal_text_size"/>
@ -86,11 +86,10 @@
android:id="@+id/dir_location"
android:layout_width="@dimen/sd_card_icon_size"
android:layout_height="@dimen/sd_card_icon_size"
android:layout_alignRight="@+id/dir_bottom_holder"
android:layout_alignEnd="@+id/dir_bottom_holder"
android:layout_alignParentBottom="true"
android:alpha="0.8"
android:paddingEnd="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:paddingBottom="@dimen/small_margin"
android:src="@drawable/ic_sd_card"
android:visibility="gone"/>

View file

@ -6,7 +6,7 @@
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/small_margin">
<com.simplemobiletools.gallery.pro.views.MySquareImageView
@ -20,7 +20,6 @@
android:layout_height="@dimen/selection_check_size"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_background"
android:padding="@dimen/tiny_margin"
@ -31,7 +30,7 @@
android:id="@+id/dir_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/dir_thumbnail"
android:layout_toEndOf="@+id/dir_thumbnail"
android:ellipsize="end"
android:maxLines="1"
android:paddingLeft="6dp"
@ -44,12 +43,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/dir_name"
android:layout_alignLeft="@+id/dir_name"
android:layout_marginRight="@dimen/activity_margin"
android:layout_alignStart="@+id/dir_name"
android:layout_marginEnd="@dimen/activity_margin"
android:alpha="0.4"
android:ellipsize="end"
android:maxLines="1"
android:paddingLeft="6dp"
android:paddingStart="6dp"
android:textColor="@android:color/white"
android:textSize="@dimen/smaller_text_size"/>
@ -58,7 +57,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/dir_name"
android:layout_toRightOf="@+id/dir_name"
android:layout_toEndOf="@+id/dir_name"
android:alpha="0.4"
android:textColor="@android:color/white"
android:textSize="@dimen/smaller_text_size"/>
@ -68,9 +67,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/small_margin"
android:layout_marginEnd="@dimen/small_margin"
android:gravity="end"
android:orientation="horizontal"
android:paddingBottom="@dimen/tiny_margin">
@ -98,7 +96,7 @@
android:layout_height="1dp"
android:layout_alignBottom="@+id/dir_thumbnail"
android:layout_marginTop="2dp"
android:layout_toRightOf="@+id/dir_thumbnail"
android:layout_toEndOf="@+id/dir_thumbnail"
android:background="@drawable/divider"/>
</RelativeLayout>

View file

@ -45,7 +45,7 @@
android:id="@+id/photo_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@color/gradient_grey_start"
@ -59,8 +59,7 @@
android:id="@+id/photo_brightness_controller"
android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"/>
android:layout_alignParentStart="true"/>
<TextView
android:id="@+id/slide_info"
@ -88,7 +87,6 @@
android:id="@+id/instant_next_item"
android:layout_width="@dimen/instant_change_bar_width"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"/>
android:layout_alignParentEnd="true"/>
</RelativeLayout>

View file

@ -28,8 +28,7 @@
android:id="@+id/video_volume_controller"
android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"/>
android:layout_alignParentEnd="true"/>
<com.simplemobiletools.gallery.pro.views.MediaSideScroll
android:id="@+id/video_brightness_controller"
@ -45,8 +44,7 @@
android:id="@+id/instant_next_item"
android:layout_width="@dimen/instant_change_bar_width"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"/>
android:layout_alignParentEnd="true"/>
<ImageView
android:id="@+id/video_play_outline"
@ -69,7 +67,7 @@
android:id="@+id/video_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="@dimen/small_margin"
android:layout_marginRight="@dimen/small_margin"
android:background="@color/gradient_grey_start"

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/media_item_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -13,26 +14,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/medium_check"
android:layout_width="@dimen/selection_check_size"
android:layout_height="@dimen/selection_check_size"
android:layout_alignRight="@+id/medium_name"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_background"
android:padding="@dimen/tiny_margin"
android:src="@drawable/ic_check"
android:visibility="gone"/>
<ImageView
android:id="@+id/play_outline"
android:layout_width="@dimen/selection_check_size"
android:layout_height="@dimen/selection_check_size"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_margin="@dimen/small_margin"
android:src="@drawable/img_play_outline"
@ -42,25 +28,39 @@
android:id="@+id/video_duration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:background="@drawable/gradient_background"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:gravity="right"
android:gravity="end"
android:maxLines="1"
android:paddingLeft="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:paddingBottom="@dimen/small_margin"
android:shadowColor="@color/default_background_color"
android:shadowRadius="4"
android:textColor="@android:color/white"
android:textSize="@dimen/normal_text_size"
android:visibility="gone"
tools:text="02:34"/>
<ImageView
android:id="@+id/medium_check"
android:layout_width="@dimen/selection_check_size"
android:layout_height="@dimen/selection_check_size"
android:layout_alignEnd="@+id/medium_name"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_background"
android:padding="@dimen/tiny_margin"
android:src="@drawable/ic_check"
android:visibility="gone"/>
<TextView
android:id="@+id/medium_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/medium_thumbnail"
android:layout_alignRight="@+id/medium_thumbnail"
android:layout_alignStart="@+id/medium_thumbnail"
android:layout_alignEnd="@+id/medium_thumbnail"
android:layout_alignParentBottom="true"
android:background="@drawable/gradient_background"
android:ellipsize="end"
@ -69,7 +69,10 @@
android:paddingLeft="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:paddingBottom="@dimen/small_margin"
android:shadowColor="@color/default_background_color"
android:shadowRadius="4"
android:textColor="@android:color/white"
android:textSize="@dimen/smaller_text_size"/>
android:textSize="@dimen/smaller_text_size"
tools:text="My photo"/>
</RelativeLayout>

View file

@ -7,7 +7,7 @@
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:paddingLeft="@dimen/small_margin"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/small_margin">
<com.simplemobiletools.gallery.pro.views.MySquareImageView
@ -21,7 +21,6 @@
android:layout_height="@dimen/selection_check_size"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/circle_background"
android:padding="@dimen/tiny_margin"
@ -34,22 +33,23 @@
android:layout_height="match_parent"
android:layout_alignTop="@+id/medium_thumbnail"
android:layout_alignBottom="@+id/medium_thumbnail"
android:layout_toRightOf="@+id/medium_thumbnail"
android:layout_toEndOf="@+id/medium_thumbnail"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="3"
android:paddingLeft="6dp"
android:paddingRight="@dimen/normal_margin"
android:paddingStart="6dp"
android:paddingEnd="@dimen/normal_margin"
android:textColor="@android:color/white"
android:textSize="@dimen/bigger_text_size"/>
android:textSize="@dimen/bigger_text_size"
tools:text="My photo"/>
<ImageView
android:id="@+id/play_outline"
android:layout_width="@dimen/play_outline_icon_size"
android:layout_height="@dimen/play_outline_icon_size"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/small_margin"
android:layout_marginEnd="@dimen/small_margin"
android:paddingBottom="6dp"
android:src="@drawable/img_play_outline_empty"
android:visibility="gone"/>
@ -60,7 +60,7 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="6dp"
android:layout_toLeftOf="@+id/play_outline"
android:layout_toStartOf="@+id/play_outline"
android:paddingLeft="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:paddingBottom="@dimen/small_margin"
@ -74,7 +74,7 @@
android:layout_height="1dp"
android:layout_alignBottom="@+id/medium_thumbnail"
android:layout_marginTop="2dp"
android:layout_toRightOf="@+id/medium_thumbnail"
android:layout_toEndOf="@+id/medium_thumbnail"
android:background="@drawable/divider"/>
</RelativeLayout>

View file

@ -48,19 +48,15 @@
android:id="@+id/cab_exclude"
android:title="@string/exclude"
app:showAsAction="never"/>
<item
android:id="@+id/cab_copy_to"
android:title="@string/copy_to"
app:showAsAction="never"/>
<item
android:id="@+id/cab_move_to"
android:title="@string/move_to"
app:showAsAction="never"/>
<item
android:id="@+id/cab_select_all"
android:icon="@drawable/ic_select_all"
android:title="@string/select_all"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/cab_create_shortcut"
android:title="@string/create_shortcut"
app:showAsAction="never"/>
<item
android:id="@+id/cab_change_cover_image"
android:title="@string/change_cover_image"
@ -74,4 +70,12 @@
android:title="@string/use_default"/>
</menu>
</item>
<item
android:id="@+id/cab_copy_to"
android:title="@string/copy_to"
app:showAsAction="never"/>
<item
android:id="@+id/cab_move_to"
android:title="@string/move_to"
app:showAsAction="never"/>
</menu>

View file

@ -7,16 +7,16 @@
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom"/>
<item
android:id="@+id/sort"
android:icon="@drawable/ic_sort"
android:title="@string/sort_by"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/open_camera"
android:icon="@drawable/ic_camera"
android:title="@string/open_camera"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/sort"
android:icon="@drawable/ic_sort"
android:title="@string/sort_by"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/filter"
android:icon="@drawable/ic_filter"

View file

@ -63,6 +63,10 @@
android:id="@+id/exclude_folder"
android:title="@string/exclude"
app:showAsAction="never"/>
<item
android:id="@+id/create_new_folder"
android:title="@string/create_new_folder"
app:showAsAction="never"/>
<item
android:id="@+id/temporarily_show_hidden"
android:title="@string/temporarily_show_hidden"

View file

@ -110,6 +110,10 @@
android:icon="@drawable/ic_rename_new"
android:title="@string/rename"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_create_shortcut"
android:title="@string/create_shortcut"
app:showAsAction="never"/>
<item
android:id="@+id/menu_show_on_map"
android:title="@string/show_on_map"

View file

@ -65,6 +65,7 @@
<string name="manage_included_folders">إدارة المجلدات المضمنة</string>
<string name="add_folder">اضافة مجلد</string>
<string name="included_activity_placeholder">إذا كان لديك بعض المجلدات التي تحتوي على الملتيميديا ، ولكن لم يتم التعرف عليها من قبل التطبيق، يمكنك إضافتها يدويا هنا.\n
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
\n
لن تؤدي إضافة بعض العناصر هنا إلى استبعاد أي مجلد آخر.</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Manage included folders</string>
<string name="add_folder">Add folder</string>
<string name="included_activity_placeholder">If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Resize</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Gestionar carpetes incloses</string>
<string name="add_folder">Agregar carpeta</string>
<string name="included_activity_placeholder">Si tens alguna carpeta que contingui multimèdia però no ha estat reconeguda per la aplicació, pots agregar-les manualment aquí.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionar</string>

View file

@ -31,8 +31,8 @@
<string name="fix_date_taken">Opravit datum vytvoření</string>
<string name="fixing">Opravuji…</string>
<string name="dates_fixed_successfully">Datumy byly úspěšně opraveny</string>
<string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="share_resized">Sdílet verzi se změněnou velikostí</string>
<string name="upgraded_from_free">Zdravím,\n\nzdá se, že jse přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji!</string>
<!-- Filter -->
<string name="filter_media">Filtr médií</string>
@ -50,7 +50,7 @@
<string name="excluded_folders">Vyloučené složky</string>
<string name="manage_excluded_folders">Spravovat vyloučené složky</string>
<string name="exclude_folder_description">Tato funkce vyloučí výběr včetně podsložek jen z Jednoduché galerie. V nastavení můžete spravovat vyloučené složky.</string>
<string name="exclude_folder_parent">Chcete vyloučit rodičovskou složku?</string>
<string name="exclude_folder_parent">Chcete vyloučit nadřazenou složku?</string>
<string name="excluded_activity_placeholder">Vyloučené složky budou spolu s podsložkami vyloučeny jen z Jednoduché Galerie, ostatní aplikace je nadále uvidí.\n\nPokud je chcete skrýt i před ostatními aplikacemi, použijte funkci Skrýt.</string>
<string name="remove_all">Odstranit všechny</string>
<string name="remove_all_description">Odstranit všechny složky ze seznamu vyloučených? Tato operace neodstraní obsah složek.</string>
@ -63,6 +63,7 @@
<string name="manage_included_folders">Spravovat přidané složky</string>
<string name="add_folder">Přidat složku</string>
<string name="included_activity_placeholder">Pokud máte nějaké složky obsahující média, ale nebyly aplikací nalezeny, můžete je zde přidat ručně.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Změnit velikost</string>
@ -90,7 +91,7 @@
<string name="flip_horizontally">Překlopit vodorovně</string>
<string name="flip_vertically">Překlopit svisle</string>
<string name="free_aspect_ratio">Volný</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">Jiný</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">Jednoduchá tapeta</string>
@ -107,17 +108,17 @@
<!-- Slideshow -->
<string name="slideshow">Prezentace</string>
<string name="interval">Interval (sekundy):</string>
<string name="interval">Interval (vteřin):</string>
<string name="include_photos">Zahrnout fotografie</string>
<string name="include_videos">Zahrnout videa</string>
<string name="include_gifs">Zahrnout GIFy</string>
<string name="random_order">Náhodné pořadí</string>
<string name="use_fade">Použít miznoucí animace</string>
<string name="use_fade">Použít animaci slábnutí</string>
<string name="move_backwards">Jít opačným směrem</string>
<string name="loop_slideshow">Smyčková prezentace</string>
<string name="loop_slideshow">Opakovat prezentaci ve smyčce</string>
<string name="slideshow_ended">Prezentace skončila</string>
<string name="no_media_for_slideshow">Nebyla nalezena žádná média pro prezentaci</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Použít animaci prolnutí</string>
<!-- View types -->
<string name="change_view_type">Změnit typ zobrazení</string>
@ -127,28 +128,28 @@
<!-- Grouping at media thumbnails -->
<string name="group_by">Seskupit podle</string>
<string name="do_not_group_files">Soubory neseskupovat</string>
<string name="do_not_group_files">Neseskupovat soubory</string>
<string name="by_folder">Složky</string>
<string name="by_last_modified">Data poslední úpravy</string>
<string name="by_date_taken">Data pořízení</string>
<string name="by_file_type">Typu souboru</string>
<string name="by_extension">Přípony</string>
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
<string name="grouping_and_sorting">Mějte prosím na paměti, že seskupování a řazení jsou 2 nezávislé hodnoty</string>
<!-- Widgets -->
<string name="folder_on_widget">Složka zobrazená na widgetu:</string>
<string name="show_folder_name">Zobrazit název složky</string>
<!-- Settings -->
<string name="autoplay_videos">Automaticky přehrávat videa</string>
<string name="autoplay_videos">Přehrávat videa automaticky</string>
<string name="remember_last_video_position">Zapamatovat pozici posledního přehraného videa</string>
<string name="toggle_filename">Přepnout viditelnost názvů souborů</string>
<string name="loop_videos">Přehrávat videa ve smyčce</string>
<string name="animate_gifs">Animovat náhledy souborů GIF</string>
<string name="max_brightness">Nastavit jas obrazovky na max při zobrazení médií</string>
<string name="max_brightness">Maximální jas obrazovky při zobrazení médií</string>
<string name="crop_thumbnails">Oříznout náhledy na čtverce</string>
<string name="show_thumbnail_video_duration">Zobrazit dobu trvání videí</string>
<string name="screen_rotation_by">Otočit média podle</string>
<string name="screen_rotation_by">Otáčet média na celé obrazovce podle</string>
<string name="screen_rotation_system_setting">Systémového nastavení</string>
<string name="screen_rotation_device_rotation">Otočení zařízení</string>
<string name="screen_rotation_aspect_ratio">Poměru stran</string>
@ -162,23 +163,23 @@
<string name="show_extended_details">Zobrazit rozšířené vlastnosti přes celoobrazovkové média</string>
<string name="manage_extended_details">Spravovat rozšířené vlastnosti</string>
<string name="one_finger_zoom">Povolit přibližování jedním prstem v celoobrazovkovém režimu</string>
<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í ťuknutím na okraj obrazovky</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="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 ve spodní části obrazovky</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="show_highest_quality">Zobrazit obrázky v nejlepší možné kvalitě</string>
<string name="show_recycle_bin_last">Zobrazit odpadkový koš jako poslední položku na hlavní obrazovce</string>
<string name="allow_down_gesture">Povolit zavírání celoobrazovkového režimu tažením prstu dolů</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</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="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>
<string name="allow_one_to_one_zoom">Povolit přiblížení 1:1 dvojitým poklepáním</string>
<string name="open_videos_on_separate_screen">Vždy otevírat videa na vlastní obrazovce s novými vodorovnými gesty</string>
<string name="show_notch">Zobrazit výřez obrazovky pokud je dostupný</string>
<string name="allow_rotating_gestures">Povolit otáčení obrázků gesty</string>
<string name="file_loading_priority">Priorita načítání obrázků</string>
<string name="speed">Rychlost</string>
<string name="compromise">Kompromis</string>
<string name="avoid_showing_invalid_files">Vyvarovat se zobrazení neplatných souborů</string>
<!-- Setting sections -->
<string name="thumbnails">Náhledy</string>
@ -192,87 +193,87 @@
<string name="toggle_file_visibility">Přepnutí viditelnosti souboru</string>
<!-- FAQ -->
<string name="faq_1_title">Jak můžu udělat Jednoduchou Galerii výchozí galerií zařízení?</string>
<string name="faq_1_text">Nejdřív musíte najít v nastavení zařízení sekci Aplikace, současnou výchozí galerii, zvolit tlačítko s textem ve smyslu \"Nastavení výchozího otevírání\" a následně \"Vymazat výchozí nastavení\".
Pokud potom zkusíte otevřít obrázek nebo video, zobrazí se seznam aplikací, kde můžete zvolit Jednoduchou Galerii a nastavit ji jako výchozí.</string>
<string name="faq_1_title">Jak nastavím Jednoduchou Galerii jako výchozí galerii?</string>
<string name="faq_1_text">Nejdříve musíte najít v nastavení zařízení, v sekci Aplikace, současnou výchozí galerii, zvolit tlačítko s textem ve smyslu \"Nastavení výchozího otevírání\" a následně \"Vymazat výchozí nastavení\".
Pokud poté zkusíte otevřít obrázek nebo video, zobrazí se seznam aplikací, kde můžete zvolit Jednoduchou Galerii a nastavit ji jako výchozí.</string>
<string name="faq_2_title">Uzamknul jsem aplikaci heslem, ale zapomněl jsem ho. Co můžu udělat?</string>
<string name="faq_2_text">Můžete to vyriešǐť 2 způsoby. Můžete aplikaci buď přeinstalovat nebo ji najít v nastavení zařízení a zvolit \"Vymazat data\". Vymaže to pouze nastavení, nikoli soubory.</string>
<string name="faq_3_title">Jak můžu dosáhnout, aby bylo dané album stále zobrazeno první?</string>
<string name="faq_3_text">Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to jej připne na vrch. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení.</string>
<string name="faq_4_title">Jak můžu rychle posunout videa?</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_2_text">Můžete to vyriešǐť 2 způsoby. Můžete aplikaci buď přeinstalovat nebo ji najít v nastavení zařízení a zvolit \"Vymazat data\". Vymažou se pouze nastavení aplikace, nikoliv soubory.</string>
<string name="faq_3_title">Jak mohu dosáhnout, aby bylo dané album stále zobrazeno jako první?</string>
<string name="faq_3_text">Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to ji připne na vrch. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení.</string>
<string name="faq_4_title">Jak mohu video posunout vpřed?</string>
<string name="faq_4_text">Můžete toho dosáhnout buď tažením prstu vodorovně přes okno přehrávače nebo ťuknutím na text aktuální či celkové délky videa, které najdete po bocích indikátoru aktuální pozice. To posune video buď zpět nebo vpřed.</string>
<string name="faq_5_title">Jaký je rozdíl mezi Skrytím a Vyloučením složky?</string>
<string name="faq_5_text">Zatímco vyloučení předejde zobrazení složky pouze vrámci Jednoduché Galerie, skrytí ho ukryje vrámci celého systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného \".nomedia\" souboru v daném adresáři, který můžete vymazat i nějakým správcem souborů.</string>
<string name="faq_5_text">Zatímco vyloučení zamezí zobrazení složky pouze vrámci Jednoduché Galerie, skrytí ji ukryje vrámci celého systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného souboru \".nomedia\" v daném adresáři, který můžete vymazat i libovolným správcem souborů.</string>
<string name="faq_6_title">Proč se mi zobrazují složky s obaly hudebních alb, nebo nálepkami?</string>
<string name="faq_6_text">Může se stát, že se vám zobrazí také neobvyklé složky. Můžete je ale jednoduše skrýt pomocí jejich zvolení dlouhým podržením a zvolením Vyloučit. Pokud na následujícím dialogu zvolíte vyloučení rodičovské složky, pravděpodobně budou vyloučeny i ostatní podobné složky.</string>
<string name="faq_7_title">Složka s fotkami se mi nezobrazuje, co můžu udělat?</string>
<string name="faq_7_text">Může to mít několik důvodů, řešení je ale jednoduché. Jděte do Nastavení -> Spravovat přidané složky, zvolte Plus a zvolte požadovanou složku.</string>
<string name="faq_6_text">Může se stát, že se vám zobrazí také neobvyklé složky. Můžete je ale jednoduše skrýt jejich vybráním pomocí dlouhého podržení a zvolením Vyloučit. Pokud na následujícím dialogu zvolíte vyloučení nadřazené složky, pravděpodobně budou vyloučeny i ostatní podobné složky.</string>
<string name="faq_7_title">Složka s fotografiemi se mi nezobrazuje nebo ve složce nevidím všechny soubory. Co s tím?</string>
<string name="faq_7_text">Může to mít více důvodů, řešení je ale jednoduché. Jděte do Nastavení -> Spravovat přidané složky, zvolte Plus a zvolte požadovanou složku.</string>
<string name="faq_8_title">Co v případě, že chci mít zobrazeno pouze několik složek?</string>
<string name="faq_8_text">Přidání složky mezi Přidané složky automaticky nevyloučí ostatní. Můžete ale jít do Nastavení -> Spravovat vyloučené složky a zvolit Kořenovou složku \"/\", následně přidat požadované složky v Nastavení -> Spravovat přidané složky.
To způsobí, že budou zobrazeny pouze vyžádané složky, protože vyloučení i přidání fungují rekurzivně a pokud je složka vyloučena i přidaná, bude viditelná.</string>
<string name="faq_10_title">Můžu s touto aplikací oříznout obrázky?</string>
<string name="faq_10_text">Ano, oříznutí je možné v editoru potažením rohů obrázků. Do editoru se můžete dostat buď dlouhým podržením náhledu obrázku a zvolením menu položky Upravit nebo zvolením Upravit při celoobrazovkovém režimu.</string>
<string name="faq_11_title">Můžu nějakým způsobem seskupit náhledy souborů?</string>
<string name="faq_10_title">Dá se s touto aplikací oříznout obrázek?</string>
<string name="faq_10_text">Ano, oříznutí je možné v editoru, potažením rohů obrázku. Do editoru se můžete dostat buď dlouhým podržením náhledu obrázku a zvolením menu položky Upravit nebo zvolením Upravit při celoobrazovkovém režimu.</string>
<string name="faq_11_title">Mohu nějakým způsobem seskupit náhledy souborů?</string>
<string name="faq_11_text">Ano, použitím funkce \"Seskupit podle\" v menu obrazovky s náhledy. Seskupení je možné na základě různých kritérií včetně data vytvoření. Pokud použijete funkci \"Zobrazit obsah všech složek\", můžete je seskupit také podle složek.</string>
<string name="faq_12_title">Řazení podle data vytvoření nefunguje správně, jak to můžu opravit?</string>
<string name="faq_12_text">Je to pravděpodobně způsobeno kopírováním souborů. Můžete to opravit označením jednotlivých náhledů souborů a zvolit \"Opravit datum vytvoření\".</string>
<string name="faq_13_title">Na obrázcích vidím nějaké barevné pásy. Jak můžu zlepšit kvalitu obrázků?</string>
<string name="faq_12_title">Řazení podle data vytvoření nefunguje správně, jak to mohu opravit?</string>
<string name="faq_12_text">Je to pravděpodobně způsobeno kopírováním souborů. Můžete to opravit označením jednotlivých náhledů souborů a zvolit \"Opravit datum vytvoření\".</string>
<string name="faq_13_title">Na obrázcích vidím nějaké barevné pásy. Jak mohu zlepšit kvalitu obrázků?</string>
<string name="faq_13_text">Současné řešení funguje správně v drtivé většině případů, pokud ale chcete zobrazit obrázky v lepší kvalitě, můžete povolit možnost \"Zobrazit obrázky v nejlepší možné kvalitě\" v nastavení aplikace v sekcí \"Hluboko priblížitelné obrázky\".</string>
<string name="faq_14_title">Skryl jsem soubor/složku, jak to můžu odkrýt?</string>
<string name="faq_14_text">Můžete buď použít menu tlačítko \"Dočasně zobrazit skryté položky\" na hlavní obrazovce, nebo v nastavení aplikace zapnout možnost \"Zobrazit skryté položky\", tím se skryté položky zobrazí. Pokud je chcete odkrýt, stačí je dlouho podržet a zvolit možnost \"Odkrýt\". Složky jsou skrývané přidáním souboru \".nomedia\", ten můžete vymazat i libovolným správcem souborů.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_14_title">Skryl jsem soubor/složku, jak jej mohu odkrýt?</string>
<string name="faq_14_text">Můžete buď použít menu tlačítko \"Dočasně zobrazit skryté položky\" na hlavní obrazovce, nebo v nastavení aplikace zapnout možnost \"Zobrazit skryté položky\", tím se skryté položky zobrazí. Pokud je chcete odkrýt trvale, stačí je dlouho podržet a zvolit možnost \"Odkrýt\". Složky jsou skrývané přidáním souboru \".nomedia\", ten můžete vymazat i libovolným správcem souborů.</string>
<string name="faq_15_title">Proč aplikace zabírá tolik místa?</string>
<string name="faq_15_text">Vyrovnávací paměť aplikace může zabírat až 250MB, zabezpečuje to rychlejší nahrávání obrázků. Pokud aplikace zabírá místa více, bude to pravděpodobně způsobeno soubory v odpadkovém koši. Dané soubory se započítávajé do velikosti aplikace. Koš můžete vyprázdnit buď jeho otevřením a smazáním všech souborů, nebo z nastavení aplikace. Položky v koši jsou automaticky mazány po 30 dnech.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<string name="app_title">Jednoduchá Galerie Pro: Organizér a editor fotografií</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Offline gallery without ads. Organize, edit, recover and protect photos &amp; videos</string>
<string name="app_short_description">Offline galerie bez reklam. Organizujte, upravujte a chraňte své fotografie a videa</string>
<string name="app_long_description">
Simple Gallery Pro is a highly customizable offline gallery. Organize &amp; edit your photos, recover deleted files with the recycle bin, protect &amp; hide files and view a huge variety of different photo &amp; video formats including RAW, SVG and much more.
Jednoduchá Galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších.
The app contains no ads and unnecessary permissions. As the app doesnt require internet access either, your privacy is protected.
Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že ani nevyžaduje připojení k internetu je vaše soukromí maximálně chráněno.
-------------------------------------------------
<b>SIMPLE GALLERY PRO FEATURES</b>
<b>JEDNODUCHÁ GALERIE PRO FUNKCE</b>
-------------------------------------------------
• Offline gallery with no ads or popups
Simple gallery photo editor crop, rotate, resize, draw, filters &amp; more
• No internet access needed, giving you more privacy and security
• No unnecessary permissions required
Quickly search images, videos &amp; files
• Open &amp; view many different photo and video types (RAW, SVG, panoramic etc)
A variety of intuitive gestures to easily edit &amp; organize files
Lots of ways to filter, group &amp; sort files
Customize the appearance of Simple Gallery Pro
Available in 32 languages
Mark files as favorites for quick access
Protect your photos &amp; videos with a pattern, pin or fingerprint
Use pin, pattern &amp; fingerprint to protect the app launch or specific functions too
Recover deleted photos &amp; videos from the recycle bin
Toggle visibility of files to hide photos &amp; videos
Create a customizable slideshow of your files
View detailed information of your files (resolution, EXIF values etc)
Simple Gallery Pro is open source
… and much much more!
• Offline galerie bez reklam a vyskakujících oken
Foto editor ořezávejte, otáčejte, měňte velikost, kreslete, používejte filtry a více
• Nevyžaduje přístup k internetu - více soukromí a bezpečí
• Nepožaduje žádná nepotřebná oprávnění navíc
Rychle prohledávejte obrázky a videa
• Otevírejte mnoho rozličných formátů fotografií a videí (RAW, SVG, GIF, panorama, atd)
Množství intuitivních gest pro jednoduchou úpravu a organizaci souborů
Mnoho různých způsobů filtrování, seskupování a řazení souborů
Změňte si vzhled Jednoduché galerie pro
Dostupná ve 32 jazycích
Označte si oblíbené soubory pro rychlý přístup
Chraňte své fotografie a videa pomocí pinu, vzoru nebo otiskem prstu
Použijte pin, vzor a otisk prstu pro zabezpečení spuštění aplikace, nebo i některých funkcí
Obnovte smazané fotografie a videa z odpadkového koše
Přepněte viditelnost souborů pro skrytí obrázků a videí
Vytvořte si ze svých souborů prezentaci
Zobrazte si detailní informace o svých souborech (rozlišení, hodnoty EXIF, atd)
Jednoduchá galerie Pro má otevřený zdrojový kód
… a mnoho dalších!
<b>PHOTO GALLERY EDITOR</b>
Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If youre feeling a little more creative you can add filters and draw on your pictures!
<b>EDITOR OBRÁZKŮ</b>
Jednoduchá Galerie Pro umožňuje snadnou úpravu obrázků. Ořezávejte, překlápějte, otáčejte či měňte jejich velikost. Pokud se cítíte kreativně, můžete také aplikovat filtry nebo do obrázku kreslit!
<b>SUPPORT FOR MANY FILE TYPES</b>
Unlike some other gallery viewers &amp; photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more.
<b>PODPORA MNOHA TYPŮ SOUBORŮ</b>
Na rozdíl od některých galerií podporuje Jednoduchá Galerie Pro velké množství různých druhů souborů včetně JPEG, PNG, MP4, MKV, RAW, SVG, panoramatických fotografií a videí.
<b>HIGHLY CUSTOMIZABLE GALLERY MANAGER</b>
From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, were also available in 32 languages!
<b>Vysoce upravitelný správce galerie</b>
Od vzhledu až po funkční tlačítka na spodní liště, Jednoduchá Galerie Pro je plně nastavitelná a bude fungovat přesně jak si budete přát. Žádná jiná galerie nenabízí takovou flexibilitu! A díky otevřenému kódu je naše aplikace dostupná ve 32 jazycích!
<b>RECOVER DELETED PHOTOS &amp; VIDEOS</b>
Accidentally deleted a precious photo or video? Dont worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos &amp; videos easily.
<b>OBNOVTE SMAZANÉ FOTOGRAFIE A VIDEA</b>
Smazali jste nechtěně důležitou fotografii nebo video? Žádný strach! Jednoduchá Galerie Pro pro podobné případy nabízí funkci odpadkového koše, odkud smazané fotografie a videa snadno obnovíte.
<b>PROTECT &amp; HIDE PHOTOS, VIDEOS &amp; FILES</b>
Using pin, pattern or your devices fingerprint scanner you can protect and hide photos, videos &amp; entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you cant delete a file without a fingerprint scan, helping to protect your files from accidental deletion.
<b>CHRAŇTE A SKRÝVEJTE SVÉ FOTOGRAFIE A VIDEA</b>
Použitím pinu, vzoru nebo otisku prstu snadno své fotografie, videa či celá alba ochráníte nebo skryjete. Můžete ochránit i spuštění samotné aplikace, nebo některé její funkce. Například můžete zabránit náhodnému smazání souboru bez potvrzení otiskem prstu.
<b>Check out the full suite of Simple Tools here:</b>
<b>Prohlédněte si celou sadu Jednoduchých aplikací na:</b>
https://www.simplemobiletools.com
<b>Facebook:</b>

View file

@ -17,7 +17,7 @@
<string name="unknown_location">Ukendt placering</string>
<string name="increase_column_count">Flere kolonner</string>
<string name="reduce_column_count">Færre kolonner</string>
<string name="change_cover_image">Skift cover billede</string>
<string name="change_cover_image">Skift cover-billede</string>
<string name="select_photo">Vælg billede</string>
<string name="use_default">Brug standard</string>
<string name="volume">Lydstyrke</string>
@ -28,24 +28,24 @@
<string name="force_portrait">Tving portræt</string>
<string name="force_landscape">Tving landskab</string>
<string name="use_default_orientation">Brug standard orientering</string>
<string name="fix_date_taken">Fiks Dato Taget værdi</string>
<string name="fix_date_taken">Fiks eksponeringsdato</string>
<string name="fixing">Fikser…</string>
<string name="dates_fixed_successfully">Datoer fikset med succes</string>
<string name="share_resized">Del en skaleret version</string>
<string name="upgraded_from_free">Hey,\n\ndet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \'Opgrader til Pro\' knap i toppen af appen\'s indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte dine app indstillinger.\n\nTak!</string>
<string name="upgraded_from_free">Hej\n\nDet ser ud til at du har opgraderet fra den gamle, gratis app. Du kan afinstallere den gamle version, som har en \"Opgrader til Pro\"-knap i toppen af appens indstillinger.\n\nDu vil blot få papirkurvens elementer slettet, favoritter vil blive umarkeret og du vil også skulle genopsætte din apps indstillinger.\n\nTak!</string>
<!-- Filter -->
<string name="filter_media">Filtrér medier</string>
<string name="filter_media">Filtrer medier</string>
<string name="images">Billeder</string>
<string name="videos">Videoer</string>
<string name="gifs">GIF\'er</string>
<string name="raw_images">RAW billeder</string>
<string name="raw_images">RAW-billeder</string>
<string name="svgs">SVG\'er</string>
<string name="no_media_with_filters">Der blev ikke fundet nogen filer med det valgte filter.</string>
<string name="change_filters_underlined"><u>Skift filter</u></string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Denne funktion skjuler mappen og dens eventueller undermapper ved at oprette en \'.nomedia\'-fil i den. Du kan se dem ved at klikke på \'Vis skjulte\' i indstillingerne. Fortsæt?</string>
<string name="hide_folder_description">Denne funktion skjuler mappen og dens eventuelle undermapper ved at oprette en \".nomedia\"-fil i den. Du kan se dem ved at klikke på \"Vis skjulte\" i indstillingerne. Fortsæt?</string>
<string name="exclude">Ekskluder</string>
<string name="excluded_folders">Ekskluderede mapper</string>
<string name="manage_excluded_folders">Administrer ekskluderede mapper</string>
@ -63,10 +63,11 @@
<string name="manage_included_folders">Administrer inkluderede mapper</string>
<string name="add_folder">Tilføj mappe</string>
<string name="included_activity_placeholder">Hvis du har mapper med mediefiler som appen ikke har fundet, kan du manuelt tilføje dem her.\n\nDet vil ikke ekskludere andre mapper.</string>
<string name="no_media_add_included">Ingen mediefiler er fundet. Dette kan løses ved manuelt at tilføje mapper som indeholder mediefiler.</string>
<!-- Resizing -->
<string name="resize">Skalér</string>
<string name="resize_and_save">Skalér valgte elementer og gem</string>
<string name="resize">Skaler</string>
<string name="resize_and_save">Skaler valgte elementer og gem</string>
<string name="width">Bredde</string>
<string name="height">Højde</string>
<string name="keep_aspect_ratio">Bevar billedforhold</string>
@ -75,7 +76,7 @@
<!-- Editor -->
<string name="editor">Editor</string>
<string name="save">Gem</string>
<string name="rotate">Rotér</string>
<string name="rotate">Roter</string>
<string name="path">Sti</string>
<string name="invalid_image_path">Ugyldig sti til billede</string>
<string name="image_editing_failed">Redigering af billede mislykkedes</string>
@ -83,9 +84,9 @@
<string name="no_editor_found">Der blev ikke fundet en editor til billedbehandling</string>
<string name="unknown_file_location">Ukendt filplacering</string>
<string name="error_saving_file">Kunne ikke overskrive kildefilen</string>
<string name="rotate_left">Rotér mod venstre</string>
<string name="rotate_right">Rotér mod højre</string>
<string name="rotate_one_eighty">Rotér 180º</string>
<string name="rotate_left">Roter mod venstre</string>
<string name="rotate_right">Roter mod højre</string>
<string name="rotate_one_eighty">Roter 180º</string>
<string name="flip">Spejlvend</string>
<string name="flip_horizontally">Spejlvend vandret</string>
<string name="flip_vertically">Spejlvend lodret</string>
@ -117,7 +118,7 @@
<string name="loop_slideshow">Endeløs kørsel</string>
<string name="slideshow_ended">Slideshowet endte</string>
<string name="no_media_for_slideshow">Der blev ikke funket nogen mediefiler til slideshowet</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Anvend crossfade-animationer</string>
<!-- View types -->
<string name="change_view_type">Skift visning</string>
@ -130,9 +131,9 @@
<string name="do_not_group_files">Gruppér ikke filer</string>
<string name="by_folder">Mappe</string>
<string name="by_last_modified">Sidst ændret</string>
<string name="by_date_taken">Dato taget</string>
<string name="by_date_taken">Eksponeringsdato</string>
<string name="by_file_type">Filtype</string>
<string name="by_extension">Filudvidelse</string>
<string name="by_extension">Filendelse</string>
<string name="grouping_and_sorting">Vær opmærksom på at gruppering og sortering er to individuelle felter</string>
<!-- Widgets -->
@ -144,11 +145,11 @@
<string name="remember_last_video_position">Husk sidste position ved videoafspilning</string>
<string name="toggle_filename">Skift filnavnets synlighed</string>
<string name="loop_videos">Kør videoer i sløjfe</string>
<string name="animate_gifs">Animér GIF\'er i miniaturer</string>
<string name="animate_gifs">Animer GIF\'er i miniaturer</string>
<string name="max_brightness">Maksimal lysstyrke ved fuldskærmsvisning af medier</string>
<string name="crop_thumbnails">Beskær miniaturer til kvadrater</string>
<string name="show_thumbnail_video_duration">Vis varighed på video</string>
<string name="screen_rotation_by">Rotér fuldskærmsmedier efter</string>
<string name="screen_rotation_by">Roter fuldskærmsmedier efter</string>
<string name="screen_rotation_system_setting">Systemindstilling</string>
<string name="screen_rotation_device_rotation">Enhedens orientering</string>
<string name="screen_rotation_aspect_ratio">Billedformat</string>
@ -173,9 +174,9 @@
<string name="allow_down_gesture">Luk fuldskærmsvisning ved at swipe ned</string>
<string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string>
<string name="open_videos_on_separate_screen">Åbn altid videoer på en separat skærm med nye vandrette bevægelser</string>
<string name="show_notch">Vis en notch hvis tilgængelig</string>
<string name="allow_rotating_gestures">Tillad roterende billeder med bevægelser</string>
<string name="file_loading_priority">Filindlæsnings prioritet</string>
<string name="show_notch">Vis \"notch\" hvis tilgængelig</string>
<string name="allow_rotating_gestures">Tillad rotering af billeder med bevægelser</string>
<string name="file_loading_priority">Prioritering af filindlæsning</string>
<string name="speed">Hastighed</string>
<string name="compromise">Kompromis</string>
<string name="avoid_showing_invalid_files">Undgå at vise ugyldige filer</string>
@ -192,87 +193,87 @@
<string name="toggle_file_visibility">Synlighed</string>
<!-- FAQ -->
<string name="faq_1_title">Hvordan kan jeg lave Simple Gallery til standard-galleriet på min enhed?</string>
<string name="faq_1_text">Først skal du finde det nuværende standard galleri, i Apps sektionen af din enheds indstillinger. Kig efter en knap som hedder noget i stil med \"Åbn som standard\", klik på denne og vælg \"Ryd standarder\".
Næste gang du forsøger at åbne et billede eller en video, bør du se en app-vælger, hvor du kan vælge Simple Gallery og gøre den til standard app\'en.</string>
<string name="faq_2_title">Jeg har låst app\'en med en adgangskode, men jeg har glemt den. Hvad kan jeg gøre?</string>
<string name="faq_2_text">Du kan løse dette på to måder. Du kan enten geninstallere app\'en, eller finde app\'en i indstillingerne på din enhed og vælge \"Ryd data\". Dette vil nulstille alle dine indstillinger, det vil ikke slette nogle mediefiler.</string>
<string name="faq_1_title">Hvordan kan jeg gøre Simple Gallery til min enheds standardgalleri?</string>
<string name="faq_1_text">Først skal du finde det nuværende standardgalleri, i Apps-sektionen af din enheds indstillinger. Kig efter en knap som hedder noget i stil med \"Åbn som standard\", klik på denne og vælg \"Ryd standarder\".
Næste gang du forsøger at åbne et billede eller en video, bør du se en app-vælger, hvor du kan vælge Simple Gallery og gøre den til standardapp.</string>
<string name="faq_2_title">Jeg har låst appen med en adgangskode, men jeg har glemt den. Hvad kan jeg gøre?</string>
<string name="faq_2_text">Du har to muligheder. Du kan enten geninstallere appen, eller finde den i indstillingerne på din enhed og vælge \"Ryd data\". Dette vil nulstille alle dine indstillinger, det vil ikke slette nogen mediefiler.</string>
<string name="faq_3_title">Hvordan kan jeg altid få et bestemt album vist i toppen?</string>
<string name="faq_3_text">Du kan holde fingeren nede på det ønskede album, og vælge tegnstift-ikonet i menuen, dette vil fastgøre den til toppen. Du kan fastgøre flere mapper også. Fastgjorte elementer vil blive sorteret efter standard sorterings-metoden.</string>
<string name="faq_3_text">Du kan holde fingeren nede på det ønskede album, og vælge tegnestift-ikonet i menuen, dette vil fastgøre den til toppen. Du kan fastgøre flere mapper også. Fastgjorte elementer vil blive sorteret efter standard sorterings-metoden.</string>
<string name="faq_4_title">Hvordan kan jeg spole fremad i videoer?</string>
<string name="faq_4_text">Du kan enten trække din finger horisontalt over videoafspilleren, eller klikke på den nuværende eller maksimum varighed teksterne, nær søgefeltet. Det vil enten spole videoen tilbage eller fremad.</string>
<string name="faq_4_text">Du kan enten trække din finger vandret over videoafspilleren, eller klikke på den nuværende eller maksimum varighedsteksterne, nær søgefeltet. Det vil enten spole videoen tilbage eller fremad.</string>
<string name="faq_5_title">Hvad er forskellen på at skjule og ekskludere en mappe?</string>
<string name="faq_5_text">Eksludering forhindrer visning af mappen i blot Simple Gallery, mens Skjul viser systemvist og skjuler mappen fra andre gallerier også. Det fungerer ved at oprette entom \".nomedia\" fil i den givne mappe, hvilket du også kan slette med enhver filhåndterings-app.</string>
<string name="faq_6_title">Hvorfor dukker mapper med musik omslag eller klistermærker op?</string>
<string name="faq_5_text">Eksludering forhindrer kun visning af mappen i Simple Gallery, mens Skjul virker på systemniveau og skjuler mappen fra andre gallerier også. Det fungerer ved at oprette en tom \".nomedia\"-fil i den givne mappe, som du kan slette med enhver filhåndterings-app.</string>
<string name="faq_6_title">Hvorfor dukker mapper med musikomslag eller klistermærker op?</string>
<string name="faq_6_text">Det kan ske at du vil se nogle udsædvanlige albummmer. Du kan nemt ekskludere disse, ved at holde fingeren nede på disse og vælge Ekskluder. I den næste dialogboks kan du vælge den ovenliggende mappe, da andre relaterede albummer så sandsynligvis også vil blive forhindret i at blive vist.</string>
<string name="faq_7_title">En mappe med billeder dukker ikke op, eller den viser ikke alle elementer. Hvad kan jeg gøre?</string>
<string name="faq_7_text">Der kan være flere grunde, men en løsning er nem. Bare gå til Indstillinger -> Administrer inkluderede mapper, vælg plusset og naviger til mappen.</string>
<string name="faq_7_text">Der kan være flere grunde, men en løsning er nem. Gå til Indstillinger -> Administrer inkluderede mapper, vælg plusset og naviger til mappen.</string>
<string name="faq_8_title">Hvad hvis jeg kun ønsker få et par bestemte mapper vist?</string>
<string name="faq_8_text">At tilføje en mappe ved de Inkluderede mapper, ekskluderer ikke automatisk alt. Det du kan gøre, er at gå til Indstillinger -> Adminsterer ekskluderede mapper, eksludere rodmappen \"/\", og så tilføje de ønskede mapper under Indstillinger -> Administrer inkluderede mapper.
Det vil gøre kun de valgte mapper synlige, da både ekskludering og inkludering er reskursivt, og hvis en mappe både er ekskluderet og inkluderet, vil den blive vist.</string>
Det vil kun gøre de valgte mapper synlige, da både ekskludering og inkludering virker reskursivt, og hvis en mappe både er ekskluderet og inkluderet, vil den blive vist.</string>
<string name="faq_10_title">Kan jeg beskære billeder med denne app?</string>
<string name="faq_10_text">Ja, du kan beskære billeder i editoren, ved at trække i billedets kanter. Du kan gå til editoren, ved enten at holde fingeren nede på et miniaturebillede og vælge Rediger, eller vælge Rediger fra fuldskærmsvisningen.</string>
<string name="faq_11_title">Kan jeg på en eller anden måde gruppere miniaturebilleder til mediefiler?</string>
<string name="faq_11_text">Sagtens, bare brug menupunktet \"Gruppér efter\", mens du ser miniaturebillederne. Du kan gruppere flere efter flere kriterier, inklusiv Dato Taget. Hvis du bruger funktionen \"Vis indholdet af alle mapper\", kan du også gruppere dem efter mapper.</string>
<string name="faq_12_title">Sortering efter Dato Taget ser ikke ud til at fungere. Hvordan kan jeg fikse dette?</string>
<string name="faq_12_text">Det skyldes højst sandsynligt at filerne er kopieret fra et andet sted. Du kan fikse det, ved at vælge filens miniature, og vælge \"Fiks Dato Taget værdi\".</string>
<string name="faq_13_title">Jeg ser noget color banding på billederne. Hvordan kan jeg forbedre kvaliteten?</string>
<string name="faq_13_text">Den nuværende løsning til visning af billeder virker fint i langt de fleste tilfælde, men hvis du vil have en endnu bedre billedkvalitet, kan du aktivere \"Vis billeder i den højst mulige kvalitet\" i app\'ens indstillinger, i sektionen \"Dybt zoombare billeder\".</string>
<string name="faq_11_text">Sagtens, brug menupunktet \"Gruppér efter\", mens du ser miniaturebillederne. Du kan gruppere flere efter flere kriterier, inklusiv eksponeringsdato. Hvis du bruger funktionen \"Vis indholdet af alle mapper\", kan du også gruppere dem efter mapper.</string>
<string name="faq_12_title">Sortering efter eksponeringsdato ser ikke ud til at fungere. Hvordan kan jeg fikse det?</string>
<string name="faq_12_text">Det skyldes højst sandsynligt at filerne er kopieret fra et andet sted. Du kan fikse det ved at vælge filens miniature, og vælge \"Fiks eksponeringsdato\".</string>
<string name="faq_13_title">Jeg ser noget \"color banding\" på billederne. Hvordan kan jeg forbedre kvaliteten?</string>
<string name="faq_13_text">Den nuværende løsning til visning af billeder virker fint i langt de fleste tilfælde, men hvis du vil have en endnu bedre billedkvalitet, kan du aktivere \"Vis billeder i den højst mulige kvalitet\" i appens indstillinger, i sektionen \"Dybt zoombare billeder\".</string>
<string name="faq_14_title">Jeg har en skjult fil/mappe. Hvordan kan jeg få den vist igen?</string>
<string name="faq_14_text">Du kan enten trykke på menupunktet \"Vis midlertidigt skjulte\" på hovedskærmen, eller aktivere \"Vis skjulte elementer\" i app\'ens indstillinger for at se det skjulte element. Hvis du vil fjerne skjulningen, skal du blot holde fingeren nede og vælge \"Fjern skjulning\". Mapper er skjult ved at tilføje en skjult \".nomedia\" fil i dem, du kan også slette med enhver filhåndterings-app.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_14_text">Du kan enten trykke på menupunktet \"Vis midlertidigt skjulte\" på hovedskærmen, eller aktivere \"Vis skjulte elementer\" i appens indstillinger for at se det skjulte element. Hvis du vil fjerne skjulningen, skal du blot holde fingeren nede og vælge \"Fjern skjulning\". Mapper er skjult ved at tilføje en skjult \".nomedia\"-fil i dem, som du også kan slette med enhver filhåndterings-app.</string>
<string name="faq_15_title">Hvorfor fylder appen så meget?</string>
<string name="faq_15_text">App-mellemlageret kan bruge op til 250MB, det sikrer hurtigere indlæsning. Fylder appen endnu mere kan det skyldes at der ligger meget papirkurven. Filer heri tæller med til appens størrelse. Du kan tømme papirkurven ved at åbne den og slette indholdet, eller fra appens indstillinger. Alle filer i papirkurven slettes automatisk efter 30 dage.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<string name="app_title">Simple Gallery Pro: Billedhåndtering</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Offline gallery without ads. Organize, edit, recover and protect photos &amp; videos</string>
<string name="app_short_description">Offline galleri uden reklamer. Organiser, rediger og gendan mm. fotos og videoer</string>
<string name="app_long_description">
Simple Gallery Pro is a highly customizable offline gallery. Organize &amp; edit your photos, recover deleted files with the recycle bin, protect &amp; hide files and view a huge variety of different photo &amp; video formats including RAW, SVG and much more.
Simple Gallery Pro er et offline-galleri med mange tilpasningsmuligheder. Organiser og rediger dine billeder, gendan slettede filer via papirkurven, beskyt og skjul filer og se adskillige forskellige billed- og videoformater inklusiv RAW, SVG og mange flere.
The app contains no ads and unnecessary permissions. As the app doesnt require internet access either, your privacy is protected.
Appen indeholder ingen reklamer og kræver ingen unødvendige tilladelser. Da den heller ikke kræver adgang til internettet, er dit privatliv også beskyttet.
-------------------------------------------------
<b>SIMPLE GALLERY PRO FEATURES</b>
<b>SIMPLE GALLERY PRO FUNKTIONER</b>
-------------------------------------------------
• Offline gallery with no ads or popups
• Simple gallery photo editor crop, rotate, resize, draw, filters &amp; more
No internet access needed, giving you more privacy and security
No unnecessary permissions required
Quickly search images, videos &amp; files
Open &amp; view many different photo and video types (RAW, SVG, panoramic etc)
A variety of intuitive gestures to easily edit &amp; organize files
Lots of ways to filter, group &amp; sort files
Customize the appearance of Simple Gallery Pro
Available in 32 languages
• Mark files as favorites for quick access
Protect your photos &amp; videos with a pattern, pin or fingerprint
Use pin, pattern &amp; fingerprint to protect the app launch or specific functions too
Recover deleted photos &amp; videos from the recycle bin
Toggle visibility of files to hide photos &amp; videos
Create a customizable slideshow of your files
View detailed information of your files (resolution, EXIF values etc)
• Simple Gallery Pro is open source
and much much more!
• Offline galleri uden reklamer eller pop op\'er
• Simple gallerys billedbehandler beskær, roter, tilpas størrelse, tegn, filtrer mm.
Inget krav om internetadgang - en stor fordel for dit privatliv og din sikkerhed
Ingen krav om unødvendige tilladelser
Hurtig søgning efter billeder, videoer &amp; filer
Åbn &amp; se mange forskellige foto- og videoformater (RAW, SVG, panoramic osv.)
En række intuitive bevægelser til nem redigering og organisering af filer
Mange muligheder for filtrering, gruppering og sortering af filer
Tilpas udseendet af Simple Gallery Pro
Tilgængelig på 32 sprog
• Marker filer som favoriter for hurtig adgang
Beskyt dine billeder &amp; videoer med et mønster, pinkode eller fingeraftryk
Brug mønster, pinkode eller fingeraftryk til beskyttelse af åbning af appen eller specifikke funktioner
Gendan slettede billeder &amp; videoer via papirkurven
Skift mellem vis/skjul filer for at skjule billeder &amp; videoer
Opret et redigerbart slideshow med dine filer
Se detaljeret information om dine filer (opløsning, EXIF-værdier osv.)
• Simple Gallery Pro er open source
og meget mere!
<b>PHOTO GALLERY EDITOR</b>
Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If youre feeling a little more creative you can add filters and draw on your pictures!
<b>FOTOGALLERI - EDITOR</b>
Simple Gallery Pro gør det nemt at redigere dine billeder i en fart. Beskær, flip, roter og tilpas størrelsen på dine billeder. Føler du dig lidt mere kreativ, kan du tilføje filtre og tegne oveni dine billeder!
<b>SUPPORT FOR MANY FILE TYPES</b>
Unlike some other gallery viewers &amp; photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more.
<b>UNDERSTØTTELSE AF MANGE FILTYPER</b>
I modsætning til mange andre gallerier supporterer Simple Gallery Pro en masse forskellige filtyper inklusiv JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic-foto, Panoramic-videoer og mange flere.
<b>HIGHLY CUSTOMIZABLE GALLERY MANAGER</b>
From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, were also available in 32 languages!
<b>GALLERI MED MASSER AF TILPASNINGSMULIGHEDER</b>
Simple Gallery Pro kan tilpasses lige fra brugerfladen til funktionsknapper på nederste værktøjslinje og fungere lige efter dit ønske. Inget andet galleri er så fleksibelt! Takket være at det er open sourse, er det også tilgængeligt på 32 sprog!
<b>RECOVER DELETED PHOTOS &amp; VIDEOS</b>
Accidentally deleted a precious photo or video? Dont worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos &amp; videos easily.
<b>GENDAN SLETTEDE BILLEDER &amp; VIDEOER</b>
Er du ved en fejl kommet til at slette et billede eller en video? Intet problem! Simple Gallery Pro har en handy papirkurv hvorfra du nemt kan gendanne slettede billeder &amp; videoer.
<b>PROTECT &amp; HIDE PHOTOS, VIDEOS &amp; FILES</b>
Using pin, pattern or your devices fingerprint scanner you can protect and hide photos, videos &amp; entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you cant delete a file without a fingerprint scan, helping to protect your files from accidental deletion.
<b>BESKYT &amp; SKJUL FOTOS, VIDEOER &amp; FILER</b>
Du kan beskytte og skjule billeder, videoer og hele album med en pinkode, et mønster eller din enheds fingeraftryksscanner. Du kan også beskytte selve appen eller låse specifikke funktioner i appen. Du kan for eksempel låse sletning af en fil uden scanning af fingeraftryk og dermed beskytte filer mod at blive slettet ved en fejl.
<b>Check out the full suite of Simple Tools here:</b>
<b>Se hele suiten af Simple Tools her:</b>
https://www.simplemobiletools.com
<b>Facebook:</b>

View file

@ -32,7 +32,7 @@
<string name="fixing">Korrigiere…</string>
<string name="dates_fixed_successfully">Datum erfolgreich korrigiert.</string>
<string name="share_resized">Teile eine verkleinerte Version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="upgraded_from_free">Hey,\n\nes sieht so aus, als hättest du von der alten kostenlosen App geupgraded. Du kannst nun die alte Version deinstallieren, die oben in den App-Einstellungen einen \'Upgrade auf Pro\' Button hat.\n\nEs wird nur der Papierkorb gelöscht, die Markierungen von Favoriten entfernt und die App-Einstellungen zurückgesetzt.\n\nDanke!</string>
<!-- Filter -->
<string name="filter_media">Filter</string>
@ -63,6 +63,7 @@
<string name="manage_included_folders">Einbezogene Ordner verwalten</string>
<string name="add_folder">Ordner hinzufügen</string>
<string name="included_activity_placeholder">Solltest du weitere Mediendateien haben, die von der App nicht gefunden wurden, kannst du deren Ordner hier manuell hinzufügen.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Größe ändern</string>
@ -219,12 +220,12 @@
<string name="faq_13_text">Die jetzige Methode für die Anzeige von Bildern funktioniert gut, aber für eine noch bessere Bildqualität kann die Einstellung \"Zeige Bilder in der höchstmöglichen Qualität\" im Menü unter \"Stark vergrösserbare Bilder\" gesetzt werden.</string>
<string name="faq_14_title">Ich habe eine versteckte Datei bzw. einen versteckten Ordner. Wie kann ich diese/n sichtbar stellen?</string>
<string name="faq_14_text">Du kannst entweder auf \"Verstecktes temporär anzeigen\" im Hauptmenü drücken oder die Einstellung \"Versteckte Elemente anzeigen\" setzen. Wenn du es sichtbar einstellen willst, drücke lange darauf und wähle \"Nicht verstecken\" aus. Ordner werden durch eine versteckte, in ihnen gespeicherte \".nomedia\"-Datei versteckt und das Löschen der Datei ist mit jedem Dateimanger möglich.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_15_title">Warum beansprucht die App so viel Speicherplatz?</string>
<string name="faq_15_text">Der Cache der App kann bis zu 250 MB groß werden und sorgt dafür, dass die Bilder schneller geladen werden. Wenn die App noch mehr Speicherplatz beansprucht, liegt das wahrscheinlich daran, dass der Papierkorb zu voll ist. Diese Dateien zählen zum Speicherplatz der App dazu. Du kannst den Papierkorb leeren, indem du ihn öffnest und alle Dateien darin löschst, oder den entsprechenden Button in den Einstellungen betätigst. All 30 Tage wird der Papierkorb automatisch geleert.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<string name="app_title">Schlichte Galerie Pro: Foto Manager &amp; Editor</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Galerie ohne Werbung. Ordnen, Bearbeiten und Wiederherstellen von Fotos &amp; Videos</string>
<string name="app_long_description">
@ -256,10 +257,10 @@
• Schlichte Galerie Pro ist Open Source
… und viele, viele mehr!
<b>FOTO EDITOR</b>
<b>FOTOEDITOR</b>
Schlichte Galerie Pro macht es schnell und einfach deine Bilder zu bearbeiten. Schneide Bilder zu, drehe sie und ändere die Größe. Wenn du dich etwas kreativer fühlst, kannst du Filter hinzufügen und auf deinen Bildern malen!
<b>UNTERSTÜTZUNG FÜR VIELE DATEITYPEEN</b>
<b>UNTERSTÜTZUNG FÜR VIELE DATEITYPEN</b>
Im Gegensatz zu einigen anderen Galerien unterstütz Schlichte Galerie Pro eine Vielzahl verschiedener Dateitypen. Unter anderem JPEG, PNG, MP4, MKV, RAW, SVG, Panoramabilder, Panoramavideos und viele mehr.
<b>STARK INDIVIDUALISIERBARE GALERIE</b>
@ -268,7 +269,7 @@
<b>WIEDERHERSTELLUNG GELÖSCHTER FOTOS &amp; VIDEOS</b>
Versehentlich ein wertvolles Foto oder Video gelöscht? Keine Sorge! Schlichte Galerie Pro verfügt über einen praktischen Papierkorb, aus dem du gelöschte Bilder &amp; Videos leicht wiederherstellen kannst.
<b>SCHÜTZE &amp; VERSTECKE FOTOS, VIDEOS &amp; DATEIEN</b>
<b>SCHÜTZE UND VERSTECKE FOTOS, VIDEOS &amp; DATEIEN</b>
Mit einem PIN, Muster oder dem Fingerabdrucksensor deines Gerätes kannst du Fotos, Videos und komplette Alben verstecken und schützen. Du kannst auch die App selber schützen oder bestimmte Funktionen der App sperren. Beispielsweise kannst du eine Datei nicht ohne Scan des Fingerabdrucks löschen, um deine Dateien vor versehentlichem Löschen zu schützen.
<b>Schau dir die vollständige Serie der Schlichten Apps hier an:</b>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Διαχείριση φακέλων που συμπεριλαμβάνονται</string>
<string name="add_folder">Προσθήκη φακέλου</string>
<string name="included_activity_placeholder">Αν υπάρχουν κάποιοι φάκελοι που περιέχουν πολυμέσα, αλλά δεν αναγνωρίζονται από την εφαρμογή, μπορείτε να τους προσθέσετε χειροκίνητα εδώ.\n\nΗ προσθήκη στοιχείων εδώ, δεν θα εξαιρέσει κάποιον άλλο φάκελο.</string>
<string name="no_media_add_included">Δεν βρέθηκαν αρχεία πολυμέσων. Μπορεί να λυθεί αυτό, προσθέτοντας τους φακέλους που περιέχουν αρχεία πολυμέσων με μη αυτόματο τρόπο.</string>
<!-- Resizing -->
<string name="resize">Αλλαγή μεγέθους</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Gestionar carpetas incluidas</string>
<string name="add_folder">Agregar carpeta</string>
<string name="included_activity_placeholder">Si tiene algunas carpetas que contengan multimedia, pero que no fueron reconocidas por la aplicación, puede agregarlas manualmente aquí.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionar</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Hallitse sisällettyjä kansioita</string>
<string name="add_folder">Lisää kansio</string>
<string name="included_activity_placeholder">Jos sinulla on kansioita, jotka sisältää mediaa, mutta sovellus ei tunnistanut, voit lisätä ne manuaalisesti tähän.\n\Lisääminen ei poissulje muita kansioita.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Rajaa</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Gérer les dossiers ajoutés</string>
<string name="add_folder">Ajouter un dossier</string>
<string name="included_activity_placeholder">Si vous avez des dossiers contenant des médias qui ne sont pas affichés dans l\'application, vous pouvez les ajouter manuellement ici.\n\nCet ajout n\'exclura aucun autre dossier.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionner</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Xestionar cartafoles incluídos</string>
<string name="add_folder">Engadir cartafol</string>
<string name="included_activity_placeholder">Si ten algún cartafol con medios, mais non foi recoñecido polo aplicativo, pódeo engadir manualmente.\n\nEngadindo aquí elementos non eliminará outros.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionar</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Upravljajte uključenim mapama</string>
<string name="add_folder">Dodaj mapu</string>
<string name="included_activity_placeholder">Ako imate neke mape koje sadrže medije, ali ih aplikacija nije prepoznala, ručno ih možete dodati ovdje.\n\nDodavanjem nekih stavki ovdje nećete izuzeti bilo koju drugu mapu.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Promjeni veličinu</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Befoglalt mappák kezelése</string>
<string name="add_folder">Mappa hozzáadása</string>
<string name="included_activity_placeholder">Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Átméretezés</string>
@ -221,14 +222,14 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal
<string name="faq_13_text">Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban.</string>
<string name="faq_14_title">Elrejtettem egy fájlt/mappát. Hogyan tudom látni?</string>
<string name="faq_14_text">A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_15_title">Miért használ az alkalmazás ennyi helyet?</string>
<string name="faq_15_text">Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Offline gallery without ads. Organize, edit, recover and protect photos &amp; videos</string>
<string name="app_short_description">Offline galéria hirdetések nélkül. A fényképek és videók rendezése, szerkesztése</string>
<string name="app_long_description">
Simple Gallery Pro is a highly customizable offline gallery. Organize &amp; edit your photos, recover deleted files with the recycle bin, protect &amp; hide files and view a huge variety of different photo &amp; video formats including RAW, SVG and much more.
@ -273,7 +274,7 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal
<b>PROTECT &amp; HIDE PHOTOS, VIDEOS &amp; FILES</b>
Using pin, pattern or your devices fingerprint scanner you can protect and hide photos, videos &amp; entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you cant delete a file without a fingerprint scan, helping to protect your files from accidental deletion.
<b>Check out the full suite of Simple Tools here:</b>
<b>Nézze meg a Simple Tools csomagot itt:</b>
https://www.simplemobiletools.com
<b>Facebook:</b>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Atur folder yang disertakan</string>
<string name="add_folder">Tambah folder</string>
<string name="included_activity_placeholder">Jika ada folder yang berisi file media, namun tidak dikenali oleh aplikasi ini, Anda bisa menambahkannya disini secara manual.\n\nMenambah beberapa item disini tidak akan mengecualikan folder yang lain.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Ubah ukuran</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Gestisci le cartelle incluse</string>
<string name="add_folder">Aggiungi cartella</string>
<string name="included_activity_placeholder">Se si hanno alcune cartelle che contengono media, ma non sono state riconosciute dall\'app, si possono aggiungerle manualmente qui.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Ridimensiona</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">追加フォルダの管理</string>
<string name="add_folder">フォルダを追加</string>
<string name="included_activity_placeholder">メディア入りのフォルダがアプリで認識されない場合は手動で追加します。</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">リサイズ</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">動画を早送りするにはどうすればよいですか?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">포함된 폴더 관리</string>
<string name="add_folder">폴더 추가</string>
<string name="included_activity_placeholder">미디어가 포함되어 있지만 앱에서 인식하지 못하는 폴더가있는 경우 여기에서 수동으로 추가 할 수 있습니다. \n\n여기에 항목을 추가해도 원본 폴더에서 제외되지 않습니다.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">크기 변경</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Tvarkyti įtrauktus aplankus</string>
<string name="add_folder">Įtraukti aplanką</string>
<string name="included_activity_placeholder">Jei turite tam tikrų aplankų, kuriuose yra medijos , bet kurių neneatpažįsta programėlė, galite juos pridėti rankiniu būdu. \ N \ nPridedant kai kuriuos elementus, neišskirsite jokio kito aplanko.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Keisti dydį</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Håndter inkluderte mapper</string>
<string name="add_folder">Legg til mappe</string>
<string name="included_activity_placeholder">Hvis du har noen mapper som inneholder media, men ikke ble gjenkjent av appen, kan du legge dem til manuelt her.\n\nÅ legge til noen elementer her, ekskluderer ikke noen annen mappe.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Endre størrelse</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Toegevoegde mappen beheren</string>
<string name="add_folder">Map toevoegen</string>
<string name="included_activity_placeholder">Als er mappen zijn die wel media bevatten, maar niet door de galerij worden herkend, voeg deze mappen dan hier handmatig toe.\n\nHet hier toevoegen van mappen zal andere mappen niet uitsluiten.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Grootte aanpassen</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Zarządzaj dołączonymi folderami</string>
<string name="add_folder">Dodaj folder</string>
<string name="included_activity_placeholder">Jeśli masz jakieś foldery z multimediami, ale aplikacja ich nie wykryła, możesz je dodać ręcznie tutaj.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Zmień rozmiar</string>

View file

@ -5,7 +5,7 @@
<string name="edit">Editar</string>
<string name="open_camera">Abrir câmera</string>
<string name="hidden">(oculto)</string>
<string name="excluded">(excluded)</string>
<string name="excluded">(excluído)</string>
<string name="pin_folder">Fixar pasta</string>
<string name="unpin_folder">Desfixar pasta</string>
<string name="pin_to_the_top">Fixar no topo</string>
@ -24,15 +24,15 @@
<string name="brightness">Brilho</string>
<string name="lock_orientation">Travar orientação</string>
<string name="unlock_orientation">Destravar orientação</string>
<string name="change_orientation">Change orientation</string>
<string name="force_portrait">Force portrait</string>
<string name="force_landscape">Force landscape</string>
<string name="use_default_orientation">Use default orientation</string>
<string name="change_orientation">Mudar orientação</string>
<string name="force_portrait">Forçar modo retrato</string>
<string name="force_landscape">Forçar modo paisagem</string>
<string name="use_default_orientation">Usar orientação padrão</string>
<string name="fix_date_taken">Fix Date Taken value</string>
<string name="fixing">Fixing…</string>
<string name="dates_fixed_successfully">Dates fixed successfully</string>
<string name="share_resized">Share a resized version</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="upgraded_from_free">Hey,\n\nparece que você atualizou o antigo aplicativo gratuito. Agora você poderá desinstalar a velha versão que tem o botão \'Atualize para a versão Pro\' no topo das Configurações.\n\nVocê terá os itens da Lixeira excluídos, itens favoritos desmarcados e também terá que redefinir as configurações do seu aplicativo.\n\nObrigado!</string>
<!-- Filter -->
<string name="filter_media">Filtrar mídia</string>
@ -63,6 +63,7 @@
<string name="manage_included_folders">Gerenciar pastas incluídas</string>
<string name="add_folder">Adicionar pasta</string>
<string name="included_activity_placeholder">Se possuir pastas com dados multimídia não reconhecidos pelo aplicativo, aqui você pode adicioná-las manualmente.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionar</string>
@ -89,8 +90,8 @@
<string name="flip">Inverter</string>
<string name="flip_horizontally">Horizontalmente</string>
<string name="flip_vertically">Verticalmente</string>
<string name="free_aspect_ratio">Free</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="free_aspect_ratio">Gratuito</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Outro</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string>
@ -117,37 +118,37 @@
<string name="loop_slideshow">Apresentação em ciclo</string>
<string name="slideshow_ended">Fim da apresentação</string>
<string name="no_media_for_slideshow">Nenhuma mídia encontrada para a apresentação</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Usar animações crossfade</string>
<!-- View types -->
<string name="change_view_type">Alterar modo de visualização</string>
<string name="grid">Grade</string>
<string name="list">Lista</string>
<string name="group_direct_subfolders">Group direct subfolders</string>
<string name="group_direct_subfolders">Agrupar subpastas do diretório</string>
<!-- Grouping at media thumbnails -->
<string name="group_by">Group by</string>
<string name="do_not_group_files">Do not group files</string>
<string name="by_folder">Folder</string>
<string name="by_last_modified">Last modified</string>
<string name="by_date_taken">Date taken</string>
<string name="by_file_type">File type</string>
<string name="by_extension">Extension</string>
<string name="grouping_and_sorting">Please note that grouping and sorting are 2 independent fields</string>
<string name="group_by">Agrupar por</string>
<string name="do_not_group_files">Não agrupar arquivos</string>
<string name="by_folder">Pasta</string>
<string name="by_last_modified">Última modificação</string>
<string name="by_date_taken">Data de criação</string>
<string name="by_file_type">Tipo de arquivo</string>
<string name="by_extension">Extensão</string>
<string name="grouping_and_sorting">Por favor, note que o agrupamento e classificação são 2 campos independentes</string>
<!-- Widgets -->
<string name="folder_on_widget">Folder shown on the widget:</string>
<string name="show_folder_name">Show folder name</string>
<string name="folder_on_widget">Exibição da Pasta no widget:</string>
<string name="show_folder_name">Exibir nome da pasta</string>
<!-- Settings -->
<string name="autoplay_videos">Reproduzir vídeos automaticamente</string>
<string name="remember_last_video_position">Remember last video playback position</string>
<string name="remember_last_video_position">Lembrar da última posição de reprodução de vídeo</string>
<string name="toggle_filename">Mostrar/ocultar nome do arquivo</string>
<string name="loop_videos">Reproduzir vídeos em ciclo</string>
<string name="animate_gifs">Animação de GIFs nas miniaturas</string>
<string name="max_brightness">Brilho máximo ao visualizar mídia</string>
<string name="crop_thumbnails">Recortar miniaturas em quadrados</string>
<string name="show_thumbnail_video_duration">Show video durations</string>
<string name="show_thumbnail_video_duration">Exibir durações de vídeo</string>
<string name="screen_rotation_by">Critério para rotação de tela</string>
<string name="screen_rotation_system_setting">Padrão do sistema</string>
<string name="screen_rotation_device_rotation">Sensor do aparelho</string>
@ -163,22 +164,22 @@
<string name="manage_extended_details">Gerenciar detalhes extendidos</string>
<string name="one_finger_zoom">Permitir zoom com um dedo quando em exibição de tela cheia</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">Permitir zoom aprofundado em imagens</string>
<string name="hide_extended_details">Ocultar detalhes extendidos quando a barra de status estiver oculta</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="deep_zoomable_images">Deep zoomable images</string>
<string name="show_highest_quality">Show images in the highest possible quality</string>
<string name="show_recycle_bin_last">Show the Recycle Bin as the last item on the main screen</string>
<string name="allow_down_gesture">Allow closing the fullscreen view with a down gesture</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</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="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="show_at_bottom">Mostrar alguns botões de ação na parte inferior da tela</string>
<string name="show_recycle_bin">Mostar a Lixeira na tela de pastas</string>
<string name="deep_zoomable_images">Imagens com zoom aprofundado</string>
<string name="show_highest_quality">Mostrar imagens com a maior qualidade possível</string>
<string name="show_recycle_bin_last">Mostrar a Lixeira como o último item na tela principal</string>
<string name="allow_down_gesture">Permitir fechar a exibição em tela cheia com um gesto para baixo</string>
<string name="allow_one_to_one_zoom">Permitir zoom 1:1 com dois toques duplos</string>
<string name="open_videos_on_separate_screen">Sempre abrir vídeos em uma tela separada com novos gestos horizontais</string>
<string name="show_notch">Mostrar um encaixe, se disponível</string>
<string name="allow_rotating_gestures">Permitir rotação de imagens com gestos</string>
<string name="file_loading_priority">Prioridade de carregamento de arquivos</string>
<string name="speed">Velocidade</string>
<string name="compromise">Compromise</string>
<string name="avoid_showing_invalid_files">Avoid showing invalid files</string>
<string name="avoid_showing_invalid_files">Evite exibit arquivos inválidos</string>
<!-- Setting sections -->
<string name="thumbnails">Miniaturas</string>
@ -192,13 +193,13 @@
<string name="toggle_file_visibility">Toggle file visibility</string>v
<!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string>
<string name="faq_1_title">Como eu posso tornar o Simple Gallery como galeria padrão do meu aparelho?</string>
<string name="faq_1_text">First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\".
The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app.</string>
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Gerir pastas incluídas</string>
<string name="add_folder">Adicionar pasta</string>
<string name="included_activity_placeholder">Se possuir pastas com dados multimédia não reconhecidos pela aplicação, aqui pode adicioná-las manualmente.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Redimensionar</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Управление включёнными папками</string>
<string name="add_folder">Добавить папку</string>
<string name="included_activity_placeholder">Если у вас есть папки, содержащие медиафайлы, но не распознанные приложением, вы можете добавить их вручную.\n\nДобавление папки не приводит к исключению каких-либо других.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Изменить размер</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Spravovať pridané priečinky</string>
<string name="add_folder">Pridať priečinok</string>
<string name="included_activity_placeholder">Ak máte nejaké priečinky obsahujúce médiá, ale neboli rozpoznané aplikáciou, môžete ich tu manuálne pridať.\n\nPridanie nových položiek sem nevylúči žiadny iný priečinok.</string>
<string name="no_media_add_included">Nenašli sa žiadne súbory s médiami. Viete to napraviť manuálnym pridaním priečinkov, ktoré obsahujú médiá.</string>
<!-- Resizing -->
<string name="resize">Zmeniť veľkosť</string>

View file

@ -32,7 +32,7 @@
<string name="fixing">Popravljam…</string>
<string name="dates_fixed_successfully">Datumi uspešno popravljeni</string>
<string name="share_resized">Deli spremenjeno verzijo</string>
<string name="upgraded_from_free">Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks!</string>
<string name="upgraded_from_free">Živjo,\n\nkot kaže, ste nadgradili staro brezplačno aplikacijo. Sedaj lahko odstranite staro verzijo, ki ima gumb \'Nadgradi na Pro verzijo\' na vrhu nastavitev.\n\nIzbrisani bodo le elementi v košu, priljubljeni elementi bodo odznačeni, poleg tega pa bo potrebno še ponastaviti nastavitve aplikacije.\n\nHvala!</string>
<!-- Filter -->
<string name="filter_media">Filtriranje datotek</string>
@ -63,6 +63,7 @@
<string name="manage_included_folders">Urejaj vključene mape</string>
<string name="add_folder">Dodaj mapo</string>
<string name="included_activity_placeholder">Če imate mape, ki vsebujejo medijske datoteke, ki jih aplikacija ni prepoznala, jih lahko ročno dodate tukaj.\n\nDodajanje novih elementov ne bo izključilo drugih.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Spremeni velikost</string>
@ -220,18 +221,18 @@
<string name="faq_13_text">Trenutna rešitev prikazovanja slik deluje dobro v veliki večini primerov, če pa vseeno želite višjo kvaliteto, lahko uporabite funkcijo \"Prikaži slike v najvišji možni kvaliteti\" v Nastavitvah v razdelku \"Globoko povečljive slike\".</string>
<string name="faq_14_title">Skril sem mapo/datoteko. Kako jo lahko zopet prikažem?</string>
<string name="faq_14_text">Lahko uporabite funkcijo \"Začasno prikaži skrite elemente\", ki se nahaja v meniju na glavnem zaslonu ali preklopite \"Prikaži skrite elemente\" v Nastavitvah aplikacije. Če želite element označiti kot viden, z dolgim pritiskom nanj prikličite meni in izberite \"Prikaži\". Skrivanje map deluje tako, da se kreira prazno \".nomedia\" datoteko v izbrani mapi, ki jo lahko odstranite tudi s katerimkoli urejevalnikom datotek.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_15_title">Zakaj aplikacija zaseda toliko prostora?</string>
<string name="faq_15_text">Predpomnilnik aplikacije lahko zasede do 250MB, zagotavlja pa hitrejše nalaganje fotografij. Če aplikacija zaseda še več prostora, je to najverjetneje zaradi velikega števila elementov v košu. Tudi te datoteke se vštevajo v velikost aplikacije. Ročno odstranite datoteke iz koša. Vsaka datoteka v košu je sicer avtomatično izbrisana po 30 dneh.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<string name="app_title">Simple Gallery Pro: Pregledovalnik fotografij</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Offline gallery without ads. Organize, edit, recover and protect photos &amp; videos</string>
<string name="app_short_description">Fotogalerija brez reklam. Organizira, ureja in zaščiti slike &amp; videoposnetke.</string>
<string name="app_long_description">
Simple Gallery Pro is a highly customizable offline gallery. Organize &amp; edit your photos, recover deleted files with the recycle bin, protect &amp; hide files and view a huge variety of different photo &amp; video formats including RAW, SVG and much more.
Simple Gallery Pro je visoko prilagodljiva lokalna galerija. Organizirajte &amp; urejajte vaše fotografije, vrnite izbrisane datoteke iz koša, zaščitite &amp; skrijte datoteke in pregledujte ogromno različnih vrst foto &amp; video formatov, vključujoč RAW, SVG in mnoge druge.
The app contains no ads and unnecessary permissions. As the app doesnt require internet access either, your privacy is protected.
Aplikacije ne vsebuje reklam in nepotrebnih dovoljenj. Prav tako aplikacija ne potrebuje internetnega dostopa, zato je vaša zasebnost zagotovljena.
-------------------------------------------------
<b>SIMPLE GALLERY PRO FEATURES</b>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Управљај укљученим фасциклама</string>
<string name="add_folder">Додај фасциклу</string>
<string name="included_activity_placeholder">Ако имате неке фасцикле које садрже медију, али нису препознате од стране апликације, можете их додати ручно овде. \n\nДодавањем неких ставки овде нећете изузети неку другу фасциклу.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Промена величине</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Hantera inkluderade mappar</string>
<string name="add_folder">Lägg till mapp</string>
<string name="included_activity_placeholder">Om du har vissa mappar som innehåller media men som inte känns igen av appen, kan du lägga till dem manuellt här.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Ändra storlek</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -5,4 +5,5 @@
<dimen name="sd_card_icon_size">30dp</dimen>
<dimen name="selection_check_size">38dp</dimen>
<dimen name="tmb_shadow_height">70dp</dimen>
<dimen name="instant_change_bar_width">100dp</dimen>
</resources>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Dahil edilen klasörleri yönet</string>
<string name="add_folder">Klasör ekle</string>
<string name="included_activity_placeholder">Medya içeren, ancak uygulama tarafından tanınmayan bazı klasörleriniz varsa, bunları elle ekleyebilirsiniz.\n\nBuraya bazı öğeler eklemek başka bir klasörü hariç tutmaz.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Yeniden boyutlandır</string>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Керування включеними теками</string>
<string name="add_folder">Додати теку</string>
<string name="included_activity_placeholder">Якщо у вас є теки з медіафайлами, але вони не були розпізнані додатком, ви можете додати їх тут вручну.\n\nДодавання елементів сюди не виключить будь-яку іншу теку.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Змінити розмір</string>
@ -220,12 +221,12 @@
<string name="faq_13_text">Поточне рішення для показу зображень відмінно працює в переважній більшості випадків, але якщо вам потрібна ще краща якість зображень, ви можете увімкнути опцію \"Показувати зображення в найвищій можливій якості\" в розділі \"Глибокомасштабовані зображення\" налаштувань додатку.</string>
<string name="faq_14_title">Я приховав файл / теку. Як я можу відмінити цю дію?</string>
<string name="faq_14_text">Щоб побачити приховані елементи, ви можете або натиснути пункт меню \"Тимчасово показати приховані елементи\" на головному екрані, або перемкнути опцію \"Показати приховані елементи\" в налаштуваннях додатку. Якщо ви більше не хочете приховувати елемент, довго натисніть на нього і оберіть \"Не приховувати\". Теки приховуються шляхом створення прихованого файлу \".nomedia\" в них, тож ви також можете видалити цей файл будь-яким файловим менеджером.</string>
<string name="faq_15_title">Why does the app take up so much space?</string>
<string name="faq_15_text">App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days.</string>
<string name="faq_15_title">Чому додаток займає так багато місця?</string>
<string name="faq_15_text">Кеш додатку може займати до 500 МБ, він забезпечує швидше завантаження зображень. Якщо додаток займає ще більше місця, найбільш вірогідно, це спричинено видаленими елементами у Кошику. Вони враховуються у загальному розмірі додатку. Ви можете очистити Кошик, відкривши його та видаливши всі файли, або через налаштування додатку. Кожен файл у Кошику автоматично видаляється через 30 днів.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Gallery Pro: Photo Manager &amp; Editor</string>
<string name="app_title">Simple Gallery Pro: фотоменеджер і редактор</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Офлайн-галерея без реклами. Впорядкуй, редагуй, віднови та захисти фото і відео.</string>
<string name="app_long_description">

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">管理包含目录</string>
<string name="add_folder">添加目录</string>
<string name="included_activity_placeholder">如果您还有应用未扫描到的媒体文件,请添加所在目录路径。</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">缩放</string>
@ -218,7 +219,7 @@
<string name="faq_13_text">目前显示图像的方案在绝大多数情况下都能正常工作,如果您想要更好的图像质量,您可以在设置中启用\"以最高质量显示图像\"。</string>
<string name="faq_14_title">我隐藏了某个文件/文件夹。如何取消隐藏?</string>
<string name="faq_14_text">您可以点击主界面上的\"暂时显示隐藏的项目\"选项,或在设置中开启\"显示隐藏的项目\"。 如果你想取消隐藏它,长按它并选择\"取消隐藏\"即可。 我们是通过向文件夹中添加\".nomedia\"文件来隐藏文件夹的,使用文件管理器删除该文件也可以取消隐藏。</string>
<string name="faq_15_title"</string>
<string name="faq_15_title">为什么应用占用了这么多的空间?</string>
<string name="faq_15_text">应用缓存最多可达250MB这样可以使图像加载更快。如果应用占用了更多空间则很可能是因为回收站中有项目。这些文件被计入应用程序大小。您可以打开回收站并删除所有文件或从应用设置中清除回收站。回收站中的内容会在30天后自动删除。</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View file

@ -0,0 +1,290 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">簡易相簿</string>
<string name="app_launcher_name">簡易相簿</string>
<string name="edit">編輯</string>
<string name="open_camera">開啟相機</string>
<string name="hidden">(隱藏)</string>
<string name="excluded">(排除)</string>
<string name="pin_folder">釘選資料夾</string>
<string name="unpin_folder">取消釘選資料夾</string>
<string name="pin_to_the_top">釘選在頂端</string>
<string name="show_all">資料夾內容全部顯示</string>
<string name="all_folders">全部資料夾</string>
<string name="folder_view">切換成資料夾檢視</string>
<string name="other_folder">其他資料夾</string>
<string name="show_on_map">在地圖上顯示</string>
<string name="unknown_location">未知的位置</string>
<string name="increase_column_count">增加欄數</string>
<string name="reduce_column_count">減少欄數</string>
<string name="change_cover_image">更換封面圖片</string>
<string name="select_photo">選擇相片</string>
<string name="use_default">使用預設</string>
<string name="volume">音量</string>
<string name="brightness">亮度</string>
<string name="lock_orientation">鎖定方向</string>
<string name="unlock_orientation">解除鎖定方向</string>
<string name="change_orientation">改變方向</string>
<string name="force_portrait">強制直向</string>
<string name="force_landscape">強制橫向</string>
<string name="use_default_orientation">使用預設方向</string>
<string name="fix_date_taken">修復拍照日期數值</string>
<string name="fixing">修復中…</string>
<string name="dates_fixed_successfully">日期修復成功</string>
<string name="share_resized">分享調整大小的版本</string>
<string name="upgraded_from_free">嘿\n\n你似乎從舊版免費應用程式升級了。現在你能解除安裝舊版了在應用程式設定的頂端有個\'升級至專業版\'按鈕。\n\n將只有回收桶項目會被刪除我的最愛項目會被解除標記以及也會重置你的應用程式設定。\n\n感謝!</string>
<!-- Filter -->
<string name="filter_media">篩選媒體檔案</string>
<string name="images">圖片</string>
<string name="videos">影片</string>
<string name="gifs">GIF</string>
<string name="raw_images">RAW圖檔</string>
<string name="svgs">SVG</string>
<string name="no_media_with_filters">選擇的篩選條件未發現媒體檔案。</string>
<string name="change_filters_underlined"><u>更改篩選條件</u></string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">這功能藉由添加一個\".nomedia\"檔案,來隱藏資料夾和所有子資料夾。您可以透過[設定]中的\"顯示隱藏的項目\"選項來查看。\n是否繼續?</string>
<string name="exclude">排除</string>
<string name="excluded_folders">排除資料夾</string>
<string name="manage_excluded_folders">管理排除資料夾</string>
<string name="exclude_folder_description">此資料夾與子資料夾將只會都從簡易相簿中排除。您可以在設定中進行管理。</string>
<string name="exclude_folder_parent">是否排除上層資料夾?</string>
<string name="excluded_activity_placeholder">[排除資料夾]只會將選擇的資料夾與子資料夾一起從簡易相簿中隱藏,他們仍會出現在其他應用程式中。\n\n如果您要在其他應用程式中也隱藏請使用[隱藏]功能。</string>
<string name="remove_all">移除全部</string>
<string name="remove_all_description">是否將排除列表中的所有資料夾都移除?這不會刪除資料夾。</string>
<string name="hidden_folders">隱藏資料夾</string>
<string name="manage_hidden_folders">管理隱藏資料夾</string>
<string name="hidden_folders_placeholder">您似乎沒有用\".nomedia\"檔案來隱藏的資料夾</string>
<!-- Include folders -->
<string name="include_folders">包含資料夾</string>
<string name="manage_included_folders">管理包含資料夾</string>
<string name="add_folder">增加資料夾</string>
<string name="included_activity_placeholder">如果有些資料夾含有媒體檔案,卻沒被辨識到,您可以在此手動加入。</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">縮放</string>
<string name="resize_and_save">縮放所選區域並儲存</string>
<string name="width">寬度</string>
<string name="height">高度</string>
<string name="keep_aspect_ratio">保持長寬比</string>
<string name="invalid_values">請輸入有效的解析度</string>
<!-- Editor -->
<string name="editor">編輯器</string>
<string name="save">儲存</string>
<string name="rotate">旋轉</string>
<string name="path">路徑</string>
<string name="invalid_image_path">無效的圖片路徑</string>
<string name="image_editing_failed">圖片編輯失敗</string>
<string name="edit_image_with">編輯圖片:</string>
<string name="no_editor_found">找不到圖片編輯器</string>
<string name="unknown_file_location">未知的檔案位置</string>
<string name="error_saving_file">無法誤蓋原始檔案</string>
<string name="rotate_left">向左轉</string>
<string name="rotate_right">向右轉</string>
<string name="rotate_one_eighty">旋轉180º</string>
<string name="flip">翻轉</string>
<string name="flip_horizontally">水平翻轉</string>
<string name="flip_vertically">垂直翻轉</string>
<string name="free_aspect_ratio">自由</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">其它</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">簡易桌布</string>
<string name="set_as_wallpaper">設為桌布</string>
<string name="set_as_wallpaper_failed">設為桌布失敗</string>
<string name="set_as_wallpaper_with">用其他程式設為桌布:</string>
<string name="setting_wallpaper">桌布設定中&#8230;</string>
<string name="wallpaper_set_successfully">成功設為桌布</string>
<string name="portrait_aspect_ratio">直向長寬比</string>
<string name="landscape_aspect_ratio">橫向長寬比</string>
<string name="home_screen">主頁螢幕</string>
<string name="lock_screen">鎖定螢幕</string>
<string name="home_and_lock_screen">主頁和鎖定螢幕</string>
<!-- Slideshow -->
<string name="slideshow">投影片</string>
<string name="interval">間隔 (秒):</string>
<string name="include_photos">包含照片</string>
<string name="include_videos">包含影片</string>
<string name="include_gifs">包含GIF</string>
<string name="random_order">隨機順序</string>
<string name="use_fade">使用淡入淡出動畫</string>
<string name="move_backwards">反向播放</string>
<string name="loop_slideshow">投影片循環</string>
<string name="slideshow_ended">投影片結束</string>
<string name="no_media_for_slideshow">找不到投影片的媒體檔案</string>
<string name="use_crossfade_animation">使用淡入淡出動畫</string>
<!-- View types -->
<string name="change_view_type">改變瀏覽類型</string>
<string name="grid">格狀</string>
<string name="list">列表</string>
<string name="group_direct_subfolders">歸類子資料夾</string>
<!-- Grouping at media thumbnails -->
<string name="group_by">歸類</string>
<string name="do_not_group_files">不歸類檔案</string>
<string name="by_folder">資料夾</string>
<string name="by_last_modified">最後修改</string>
<string name="by_date_taken">拍照日期</string>
<string name="by_file_type">檔案類型</string>
<string name="by_extension">副檔名</string>
<string name="grouping_and_sorting">請注意,歸類和排序是兩者是獨立的</string>
<!-- Widgets -->
<string name="folder_on_widget">在小工具顯示資料夾:</string>
<string name="show_folder_name">顯示資料夾名稱</string>
<!-- Settings -->
<string name="autoplay_videos">自動播放影片</string>
<string name="remember_last_video_position">記住影片上次播放位置</string>
<string name="toggle_filename">顯示檔案名稱</string>
<string name="loop_videos">影片循環播放</string>
<string name="animate_gifs">縮圖顯示GIF動畫</string>
<string name="max_brightness">瀏覽時最大亮度</string>
<string name="crop_thumbnails">縮圖裁剪成正方形</string>
<string name="show_thumbnail_video_duration">顯示影片長度</string>
<string name="screen_rotation_by">全螢幕時旋轉方向</string>
<string name="screen_rotation_system_setting">系統設定方向</string>
<string name="screen_rotation_device_rotation">裝置實際方向</string>
<string name="screen_rotation_aspect_ratio">圖片長寬比</string>
<string name="black_background_at_fullscreen">全螢幕時黑色背景和狀態欄</string>
<string name="scroll_thumbnails_horizontally">橫向滑動縮圖</string>
<string name="hide_system_ui_at_fullscreen">全螢幕時自動隱藏系統介面</string>
<string name="delete_empty_folders">刪除內容後刪除空白資料夾</string>
<string name="allow_photo_gestures">允許用上下手勢來控制相片的亮度</string>
<string name="allow_video_gestures">允許用上下手勢來控制影片的音量和亮度</string>
<string name="show_media_count">主畫面顯示資料夾內的媒體檔案數量</string>
<string name="show_extended_details">全螢幕時顯示詳細資訊</string>
<string name="manage_extended_details">管理詳細資訊</string>
<string name="one_finger_zoom">全螢幕時允許單指縮放</string>
<string name="allow_instant_change">允許點擊螢幕邊緣來快速切換媒體檔案</string>
<string name="allow_deep_zooming_images">允許深度縮放圖片</string>
<string name="hide_extended_details">狀態欄隱藏時,同時隱藏詳細資訊</string>
<string name="show_at_bottom">在螢幕底部顯示一些操作按鈕</string>
<string name="show_recycle_bin">在資料夾畫面顯示回收桶</string>
<string name="deep_zoomable_images">可深度縮放的圖片</string>
<string name="show_highest_quality">以最高品質顯示圖片</string>
<string name="show_recycle_bin_last">回收桶顯示在主畫面最後一項</string>
<string name="allow_down_gesture">允許用下滑手勢來關閉全螢幕檢視</string>
<string name="allow_one_to_one_zoom">允許用兩次雙擊來1:1縮放</string>
<string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string>
<string name="show_notch">如果可以,顯示瀏海螢幕</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 -->
<string name="thumbnails">縮圖</string>
<string name="fullscreen_media">全螢幕媒體檔案</string>
<string name="extended_details">詳細資訊</string>
<string name="bottom_actions">底部操作</string>
<!-- Bottom actions -->
<string name="manage_bottom_actions">管理要顯示的底部操作</string>
<string name="toggle_favorite">我的最愛</string>
<string name="toggle_file_visibility">檔案顯示</string>
<!-- FAQ -->
<string name="faq_1_title">我如何將簡易相簿設為預設相簿?</string>
<string name="faq_1_text">首先你必須先在裝置設定中應用程式部分尋找目前預設相簿,找到一個像是\"預設開啟(Open by default)\"的按鈕,點下去,然後選擇\"清除預設(Clear defaults)\"。
下次你要開啟圖片或影片時應該會看到程式選擇器,你可以在那裡選擇簡易相簿並設為預設程式。</string>
<string name="faq_2_title">我用密碼鎖住了這應用程式,但我忘記了。怎麼辦?</string>
<string name="faq_2_text">有兩個解決方法。你可以重新安裝應用程式,或者在裝置設定中找到這程式然後選擇\"清除資料(Clear data)\"。這將重置你程式內所有設定,不會移除任何媒體檔案。</string>
<string name="faq_3_title">我如何讓某個相冊總是出現在頂端?</string>
<string name="faq_3_text">你可以長按想要的相冊,然後在操作選單中選擇[圖釘]圖示,就會釘選於頂端。你也能釘選多個資料夾,釘選的項目會依預設的排序方法來排序。</string>
<string name="faq_4_title">我如何快轉影片?</string>
<string name="faq_4_text">你可以在影片播放器上水平滑動你的手指,或者點擊進度條附近的當前或總時長文字。這會使影片快轉或倒轉。</string>
<string name="faq_5_title">隱藏和排除資料夾,兩者有什麼不同?</string>
<string name="faq_5_text">[排除]只在簡易相簿中避免顯示出來;而[隱藏]則作用於整個系統,資料夾也會被其他相簿隱藏。這是藉由在指定資料夾內建立一個\".nomedia\"空白檔案來進行隱藏,你之後也能用任何檔案管理器移除。</string>
<string name="faq_6_title">為什麼有些音樂專輯封面或貼圖的資料夾會出現?</string>
<string name="faq_6_text">這情況可能發生,你會看到一些異常的相冊出現。你可以長按再選擇[排除]來輕易排除他們。在下個對話框,你可以選擇上層資料夾,有可能讓其他相關相冊也避免出現。</string>
<string name="faq_7_title">有一個圖片資料夾沒有顯示出來,怎麼辦?</string>
<string name="faq_7_text">可能有多種原因,不過很好解決。只要到[設定] -> [管理包含資料夾],選擇[加號]然後導引到需要的資料夾。</string>
<string name="faq_8_title">如果我只想看到幾個特定的資料夾,怎麼做?</string>
<string name="faq_8_text">在[包含資料夾]內添加資料夾並不會自動排除任何東西。你能做的是到[設定] -> [管理排除資料夾],排除根目錄 \"/\",然後在[設定] -> [管理包含資料夾]添加想要的資料夾。
那樣的話就只有選擇的資料夾可見。因為排除和包含都是遞迴的,如果一個資料夾被排除又被包含,則會顯示出來。</string>
<string name="faq_10_title">我可以用這程式裁減圖片嗎?</string>
<string name="faq_10_text">是的,你能夠在編輯器內拉動圖片角落來裁剪圖片。要進入編輯器,你可以長按圖片縮圖然後選擇[編輯],或是在全螢幕檢視下選擇[編輯]。</string>
<string name="faq_11_title">我可以歸類媒體檔案的縮圖嗎?</string>
<string name="faq_11_text">當然,只要在縮圖瀏覽中使用[歸類]選單項目就可以了。你能依多種條件歸類檔案,包含拍照日期。如果你使用了[資料夾內容全部顯示]功能,你還能以資料夾來歸類。</string>
<string name="faq_12_title">依拍照日期排序似乎沒正確運作,我該如何修復?</string>
<string name="faq_12_text">那很可能是由於檔案從某處複製過來所造成的。你可以選擇檔案縮圖,然後選擇\"修復拍照日期數值\"來進行修復。</string>
<string name="faq_13_title">我在圖片上看到一些色彩條紋。我如何提升品質?</string>
<string name="faq_13_text">目前顯示圖片的處理方法,在大部分情況下都能正常運行。但如果你想要更好的圖片品質,你可以在程式設定中[可深度縮放的圖片]部分,啟用[以最高品質顯示圖片]。</string>
<string name="faq_14_title">我隱藏了一個檔案/資料夾。我如何取消隱藏?</string>
<string name="faq_14_text">你可以在主畫面的選單項按[暫時顯示隱藏的項目],或者在程式設定中切換[顯示隱藏的項目]來看隱藏項目。如果你想要取消隱藏,只要長按然後選擇[取消隱藏]。以添加\".nomedia\"檔案進行隱藏的資料夾,你也可以用任何檔案管理器來刪除這檔案。</string>
<string name="faq_15_title">為什麼這應用程式占用了這麼多空間?</string>
<string name="faq_15_text">應用程式快取最多占用250MB以確保更快的圖片讀取。如果這應用程式占用了多更多的空間最有可能是因為你在垃圾桶內有東西。那些檔案也計入應用程式大小內。你可以開啟垃圾桶並刪除全部檔案或者從應用程式設定來清除垃圾桶。垃圾桶內的每個檔案都會在30天後自動刪除。</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">簡易相簿 Pro: 相片管理&amp;編輯器</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">沒有廣告的離線相簿。整理、編輯、恢復和保護照片&amp;影片</string>
<string name="app_long_description">
簡易相簿Pro是一個高度自訂化的離線相簿。整理和編輯你的照片從回收桶恢復刪除的檔案保護和隱藏檔案以及瀏覽大量不同的照片&amp;影片格式包含RAW、SVG…等更多。
這應用程式沒有廣告和非必要的權限。並且由於不需要網路連線,您的隱私受到保護。
-------------------------------------------------
<b>簡易相簿PRO 特色</b>
-------------------------------------------------
• 沒有廣告和彈出畫面的離線相簿
• 簡易相簿編輯器 裁減、旋轉、縮放、繪畫、濾鏡…等更多
• 不需要網路連線,給您更多隱私及安全
• 不會要求非必要的權限
• 快速搜尋圖片、影片和檔案
• 開啟和瀏覽多種不同的照片和影片類型 (RAW、SVG、全景之類的)
• 多種直觀的手勢,以便於編輯和整理檔案
• 大量方法來篩選、歸類和排序檔案
• 自訂簡易相簿Pro的外觀
• 支援32種語言
• 將檔案標記為我的最愛,以快速存取
• 以圖形、PIN碼或指紋來保護您的照片&amp;影片
• 也能以圖形、PIN碼或指紋來保護應用程式開啟或特定功能
• 從回收桶恢復刪除的照片&amp;影片
• 切換檔案的可見度來隱藏照片&amp;影片
• 用您的檔案建立可自訂的投影片
• 查看您檔案的詳細資訊 (解析度、EXIF值…等)
• 簡易相簿Pro是開源的
…還有多更多!
<b>照片相簿編輯器</b>
簡易相簿Pro使編輯圖片變得非常輕鬆。裁減、翻轉、旋轉及縮放您的圖片。如果您想更有一點創意您可以直接在圖片上添加濾鏡和繪畫!
<b>支援多種檔案類型</b>
不同於其他相簿瀏覽器和照片整理器簡易相簿Pro支援大量不同的檔案類型包含JPEG、PNG、MP4、MKV、RAW、SVG、全景照片、全景影片…等更多。
<b>高度自訂化的相簿管理</b>
從UI到底部工具列的功能按鈕簡易相簿Pro是高度自訂化的任您隨心所欲的方式操作。沒有其他相簿管理器有這樣的靈活性。歸功於開源我們也支援32種語言!
<b>恢復刪除的照片&amp;影片</b>
不小心刪除掉珍貴的照片或影片?別擔心!簡易相簿Pro標榜有便利的回收桶您可以在那裡輕鬆恢復照片&amp;影片。
<b>保護&amp;隱藏照片、影片和檔案</b>
使用Pin碼、圖形或裝置的指紋掃描器您可以保護和隱藏照片、影片及整個相冊。您可以保護應用程式本身或者對程式的特定功能設個鎖。例如您無法未經指紋掃描就刪除檔案有助於檔案遭意外刪除。
<b>於此查看簡易工具系列全套:</b>
https://www.simplemobiletools.com
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">管理包含資料夾</string>
<string name="add_folder">增加資料夾</string>
<string name="included_activity_placeholder">如果有些資料夾含有媒體檔案,卻沒被辨識到,您可以在此手動加入。</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">縮放</string>

View file

@ -4,5 +4,5 @@
<integer name="media_columns_vertical_scroll">3</integer>
<integer name="media_columns_horizontal_scroll">4</integer>
<integer name="default_sorting">1026</integer>
<integer name="default_sorting">33794</integer>
</resources>

View file

@ -63,6 +63,7 @@
<string name="manage_included_folders">Manage included folders</string>
<string name="add_folder">Add folder</string>
<string name="included_activity_placeholder">If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder.</string>
<string name="no_media_add_included">No media files have been found. You can solve it by adding the folders containing media files manually.</string>
<!-- Resizing -->
<string name="resize">Resize</string>
@ -198,7 +199,7 @@
<string name="faq_2_title">I locked the app with a password, but I forgot it. What can I do?</string>
<string name="faq_2_text">You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_3_text">You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method.</string>
<string name="faq_4_title">How can I fast-forward videos?</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_5_title">What is the difference between hiding and excluding a folder?</string>

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.21'
ext.kotlin_version = '1.3.31'
repositories {
google()
@ -9,7 +9,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.android.tools.build:gradle:3.4.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
@ -22,6 +22,7 @@ allprojects {
google()
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 KiB

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 731 KiB

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 592 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View file

@ -1,2 +1,3 @@
android.enableJetifier=true
android.useAndroidX=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m

View file

@ -1,6 +1,6 @@
#Wed Jan 16 16:59:58 CET 2019
#Tue Apr 30 16:38:30 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip