Merge pull request #27 from SimpleMobileTools/master

гзв
This commit is contained in:
solokot 2018-04-13 14:32:33 +03:00 committed by GitHub
commit cad9633492
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 1038 additions and 676 deletions

View file

@ -1,6 +1,27 @@
Changelog Changelog
========== ==========
Version 3.7.1 *(2018-04-12)*
----------------------------
* Fix no media being shown to some people
* Fix some glitches at renaming files
* Show a count of files being deleted at the confirmation prompt
Version 3.7.0 *(2018-04-10)*
----------------------------
* Rewrote media file fetching for better performance and new item discovering
* Make un/hiding folders quicker
* Make automatic fullscreen toggling animation smoother by delaying it
* Many other smaller performance and UX improvements
Version 3.6.3 *(2018-03-30)*
----------------------------
* Couple file scanning and thumbnail displaying updates
* Show a dialog about the new Simple Clock app to some users
Version 3.6.2 *(2018-03-23)* Version 3.6.2 *(2018-03-23)*
---------------------------- ----------------------------

View file

@ -10,8 +10,8 @@ android {
applicationId "com.simplemobiletools.gallery" applicationId "com.simplemobiletools.gallery"
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 27 targetSdkVersion 27
versionCode 168 versionCode 171
versionName "3.6.2" versionName "3.7.1"
multiDexEnabled true multiDexEnabled true
setProperty("archivesBaseName", "gallery") setProperty("archivesBaseName", "gallery")
} }
@ -46,16 +46,15 @@ ext {
} }
dependencies { dependencies {
implementation 'com.simplemobiletools:commons:3.16.15' implementation 'com.simplemobiletools:commons:3.18.22'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0'
implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.8' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.12'
implementation 'com.github.chrisbanes:PhotoView:2.1.3' implementation 'com.github.chrisbanes:PhotoView:2.1.3'
//implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0' //implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0'
implementation 'com.github.tibbi:subsampling-scale-image-view:v3.9.0.6-fork' implementation 'com.github.tibbi:subsampling-scale-image-view:v3.10.0-fork'
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion" debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion"
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion"

View file

@ -28,7 +28,6 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
val adapter = ManageFoldersAdapter(this, folders, true, this, manage_folders_list) {} val adapter = ManageFoldersAdapter(this, folders, true, this, manage_folders_list) {}
adapter.setupDragListener(true)
manage_folders_list.adapter = adapter manage_folders_list.adapter = adapter
} }
@ -50,7 +49,8 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
private fun addFolder() { private fun addFolder() {
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden) {
config.lastFilepickerPath = it
config.addExcludedFolder(it) config.addExcludedFolder(it)
updateFolders() updateFolders()
} }

View file

@ -30,7 +30,6 @@ class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
val adapter = ManageHiddenFoldersAdapter(this, it, this, manage_folders_list) {} val adapter = ManageHiddenFoldersAdapter(this, it, this, manage_folders_list) {}
adapter.setupDragListener(true)
manage_folders_list.adapter = adapter manage_folders_list.adapter = adapter
} }
} }
@ -54,7 +53,8 @@ class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
private fun addFolder() { private fun addFolder() {
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden) {
config.lastFilepickerPath = it
Thread { Thread {
addNoMedia(it) { addNoMedia(it) {
updateFolders() updateFolders()

View file

@ -29,7 +29,6 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
val adapter = ManageFoldersAdapter(this, folders, false, this, manage_folders_list) {} val adapter = ManageFoldersAdapter(this, folders, false, this, manage_folders_list) {}
adapter.setupDragListener(true)
manage_folders_list.adapter = adapter manage_folders_list.adapter = adapter
} }
@ -51,7 +50,8 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
private fun addFolder() { private fun addFolder() {
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden) {
config.lastFilepickerPath = it
config.addIncludedFolder(it) config.addIncludedFolder(it)
updateFolders() updateFolders()
Thread { Thread {

View file

@ -5,7 +5,6 @@ import android.content.ClipData
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.os.Handler import android.os.Handler
import android.provider.MediaStore import android.provider.MediaStore
import android.support.v7.widget.GridLayoutManager import android.support.v7.widget.GridLayoutManager
@ -15,7 +14,6 @@ import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog
import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.dialogs.NewAppDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.PERMISSION_READ_STORAGE import com.simplemobiletools.commons.helpers.PERMISSION_READ_STORAGE
@ -38,13 +36,12 @@ import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.models.Directory import com.simplemobiletools.gallery.models.Directory
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import java.io.* import java.io.*
import java.util.*
class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private val PICK_MEDIA = 2 private val PICK_MEDIA = 2
private val PICK_WALLPAPER = 3 private val PICK_WALLPAPER = 3
private val LAST_MEDIA_CHECK_PERIOD = 3000L private val LAST_MEDIA_CHECK_PERIOD = 3000L
private val CONTACTS_PACKAGE = "com.simplemobiletools.contacts" private val NEW_APP_PACKAGE = "com.simplemobiletools.clock"
lateinit var mDirs: ArrayList<Directory> lateinit var mDirs: ArrayList<Directory>
@ -66,13 +63,13 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private var mCurrAsyncTask: GetDirectoriesAsynctask? = null private var mCurrAsyncTask: GetDirectoriesAsynctask? = null
private var mZoomListener: MyRecyclerView.MyZoomListener? = null private var mZoomListener: MyRecyclerView.MyZoomListener? = null
private var mStoredUseEnglish = false
private var mStoredAnimateGifs = true private var mStoredAnimateGifs = true
private var mStoredCropThumbnails = true private var mStoredCropThumbnails = true
private var mStoredScrollHorizontally = true private var mStoredScrollHorizontally = true
private var mStoredShowMediaCount = true private var mStoredShowMediaCount = true
private var mStoredShowInfoBubble = true private var mStoredShowInfoBubble = true
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mStoredPrimaryColor = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -102,10 +99,10 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
mIsPasswordProtectionPending = config.appPasswordProtectionOn mIsPasswordProtectionPending = config.appPasswordProtectionOn
setupLatestMediaId() setupLatestMediaId()
// notify the users about the Contacts app // notify some users about the Clock app
/*if (System.currentTimeMillis() < 1521015000000 && !config.wasNewAppShown && config.appRunCount > 100 && config.appRunCount % 50 != 0 && !isPackageInstalled(CONTACTS_PACKAGE)) { /*if (System.currentTimeMillis() < 1523750400000 && !config.wasNewAppShown && config.appRunCount > 100 && config.appRunCount % 50 != 0 && !isPackageInstalled(NEW_APP_PACKAGE)) {
config.wasNewAppShown = true config.wasNewAppShown = true
NewAppDialog(this, CONTACTS_PACKAGE, "Simple Contacts") NewAppDialog(this, NEW_APP_PACKAGE, "Simple Clock")
}*/ }*/
} }
@ -117,30 +114,32 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
config.isThirdPartyIntent = false config.isThirdPartyIntent = false
if (mStoredUseEnglish != config.useEnglish) {
restartActivity()
return
}
if (mStoredAnimateGifs != config.animateGifs) { if (mStoredAnimateGifs != config.animateGifs) {
getDirectoryAdapter()?.updateAnimateGifs(config.animateGifs) getRecyclerAdapter()?.updateAnimateGifs(config.animateGifs)
} }
if (mStoredCropThumbnails != config.cropThumbnails) { if (mStoredCropThumbnails != config.cropThumbnails) {
getDirectoryAdapter()?.updateCropThumbnails(config.cropThumbnails) getRecyclerAdapter()?.updateCropThumbnails(config.cropThumbnails)
} }
if (mStoredShowMediaCount != config.showMediaCount) { if (mStoredShowMediaCount != config.showMediaCount) {
getDirectoryAdapter()?.updateShowMediaCount(config.showMediaCount) getRecyclerAdapter()?.updateShowMediaCount(config.showMediaCount)
} }
if (mStoredScrollHorizontally != config.scrollHorizontally || mStoredShowInfoBubble != config.showInfoBubble) { if (mStoredScrollHorizontally != config.scrollHorizontally || mStoredShowInfoBubble != config.showInfoBubble) {
getDirectoryAdapter()?.updateScrollHorizontally(config.viewTypeFolders != VIEW_TYPE_LIST && config.scrollHorizontally) getRecyclerAdapter()?.updateScrollHorizontally(config.viewTypeFolders != VIEW_TYPE_LIST && config.scrollHorizontally)
setupScrollDirection() setupScrollDirection()
} }
if (mStoredTextColor != config.textColor) { if (mStoredTextColor != config.textColor) {
getDirectoryAdapter()?.updateTextColor(config.textColor) getRecyclerAdapter()?.updateTextColor(config.textColor)
}
if (mStoredPrimaryColor != config.primaryColor) {
getRecyclerAdapter()?.updatePrimaryColor(config.primaryColor)
directories_vertical_fastscroller.updatePrimaryColor()
directories_horizontal_fastscroller.updatePrimaryColor()
} }
directories_horizontal_fastscroller.updateBubbleColors() directories_horizontal_fastscroller.updateBubbleColors()
@ -188,6 +187,10 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
config.temporarilyShowHidden = false config.temporarilyShowHidden = false
mTempShowHiddenHandler.removeCallbacksAndMessages(null) mTempShowHiddenHandler.removeCallbacksAndMessages(null)
removeTempFolder() removeTempFolder()
if (!mDirs.isEmpty()) {
mCurrAsyncTask?.stopFetching()
}
} }
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
@ -222,28 +225,28 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
return true return true
} }
private fun getDirectoryAdapter() = directories_grid.adapter as? DirectoryAdapter private fun getRecyclerAdapter() = directories_grid.adapter as? DirectoryAdapter
private fun storeStateVariables() { private fun storeStateVariables() {
config.apply { config.apply {
mStoredUseEnglish = useEnglish
mStoredAnimateGifs = animateGifs mStoredAnimateGifs = animateGifs
mStoredCropThumbnails = cropThumbnails mStoredCropThumbnails = cropThumbnails
mStoredScrollHorizontally = scrollHorizontally mStoredScrollHorizontally = scrollHorizontally
mStoredShowMediaCount = showMediaCount mStoredShowMediaCount = showMediaCount
mStoredShowInfoBubble = showInfoBubble mStoredShowInfoBubble = showInfoBubble
mStoredTextColor = textColor mStoredTextColor = textColor
mStoredPrimaryColor = primaryColor
} }
} }
private fun removeTempFolder() { private fun removeTempFolder() {
if (config.tempFolderPath.isNotEmpty()) { if (config.tempFolderPath.isNotEmpty()) {
/*val newFolder = File(config.tempFolderPath) val newFolder = File(config.tempFolderPath)
if (newFolder.exists() && newFolder.isDirectory) { if (newFolder.exists() && newFolder.isDirectory) {
if (newFolder.list()?.isEmpty() == true) { if (newFolder.list()?.isEmpty() == true) {
deleteFile(newFolder.toFileDirItem(applicationContext), true) deleteFile(newFolder.toFileDirItem(applicationContext), true)
} }
}*/ }
config.tempFolderPath = "" config.tempFolderPath = ""
} }
} }
@ -258,7 +261,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
} }
setupLayoutManager() setupLayoutManager()
checkIfColorChanged()
} else { } else {
toast(R.string.no_storage_permissions) toast(R.string.no_storage_permissions)
finish() finish()
@ -288,17 +290,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
gotDirectories(addTempFolderIfNeeded(it), false) gotDirectories(addTempFolderIfNeeded(it), false)
} }
mCurrAsyncTask!!.execute() mCurrAsyncTask!!.execute()
// try ensuring that the screenshots folders is properly added to the mediastore
if (config.appRunCount < 5) {
Thread {
val pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
val screenshots = File(pictures, "Screenshots")
if (screenshots.exists()) {
scanFile(screenshots)
}
}.start()
}
} }
private fun showSortingDialog() { private fun showSortingDialog() {
@ -362,14 +353,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
invalidateOptionsMenu() invalidateOptionsMenu()
} }
private fun checkIfColorChanged() {
if (directories_grid.adapter != null && getRecyclerAdapter().primaryColor != config.primaryColor) {
getRecyclerAdapter().primaryColor = config.primaryColor
directories_vertical_fastscroller.updatePrimaryColor()
directories_horizontal_fastscroller.updatePrimaryColor()
}
}
override fun deleteFolders(folders: ArrayList<File>) { override fun deleteFolders(folders: ArrayList<File>) {
val fileDirItems = folders.map { FileDirItem(it.absolutePath, it.name, true) } as ArrayList<FileDirItem> val fileDirItems = folders.map { FileDirItem(it.absolutePath, it.name, true) } as ArrayList<FileDirItem>
deleteFolders(fileDirItems) { deleteFolders(fileDirItems) {
@ -379,8 +362,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
} }
} }
private fun getRecyclerAdapter() = (directories_grid.adapter as DirectoryAdapter)
private fun setupLayoutManager() { private fun setupLayoutManager() {
if (config.viewTypeFolders == VIEW_TYPE_GRID) { if (config.viewTypeFolders == VIEW_TYPE_GRID) {
setupGridLayoutManager() setupGridLayoutManager()
@ -409,14 +390,14 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
override fun zoomIn() { override fun zoomIn() {
if (layoutManager.spanCount > 1) { if (layoutManager.spanCount > 1) {
reduceColumnCount() reduceColumnCount()
getRecyclerAdapter().finishActMode() getRecyclerAdapter()?.finishActMode()
} }
} }
override fun zoomOut() { override fun zoomOut() {
if (layoutManager.spanCount < MAX_COLUMN_COUNT) { if (layoutManager.spanCount < MAX_COLUMN_COUNT) {
increaseColumnCount() increaseColumnCount()
getRecyclerAdapter().finishActMode() getRecyclerAdapter()?.finishActMode()
} }
} }
} }
@ -570,11 +551,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
} }
private fun gotDirectories(newDirs: ArrayList<Directory>, isFromCache: Boolean) { private fun gotDirectories(newDirs: ArrayList<Directory>, isFromCache: Boolean) {
if (!isFromCache) { /*if (!isFromCache) {
Thread { Thread {
checkFolderContentChange(newDirs) checkFolderContentChange(newDirs)
}.start() }.start()
} }*/
val dirs = getSortedDirectories(newDirs) val dirs = getSortedDirectories(newDirs)
directories_refresh_layout.isRefreshing = false directories_refresh_layout.isRefreshing = false
@ -627,7 +608,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
itemClicked((it as Directory).path) itemClicked((it as Directory).path)
}.apply { }.apply {
setupZoomListener(mZoomListener) setupZoomListener(mZoomListener)
setupDragListener(true)
directories_grid.adapter = this directories_grid.adapter = this
} }
} else { } else {
@ -659,7 +639,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
} }
} }
private fun getBubbleTextItem(index: Int) = getRecyclerAdapter().dirs.getOrNull(index)?.getBubbleText() ?: "" private fun getBubbleTextItem(index: Int) = getRecyclerAdapter()?.dirs?.getOrNull(index)?.getBubbleText() ?: ""
private fun setupLatestMediaId() { private fun setupLatestMediaId() {
Thread { Thread {
@ -701,6 +681,15 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
gotDirectories(movePinnedDirectoriesToFront(mDirs), true) gotDirectories(movePinnedDirectoriesToFront(mDirs), true)
} }
override fun updateDirectories(directories: ArrayList<Directory>, refreshList: Boolean) {
if (refreshList) {
gotDirectories(directories, true)
} else {
mDirs = directories
storeDirectories()
}
}
private fun checkWhatsNewDialog() { private fun checkWhatsNewDialog() {
arrayListOf<Release>().apply { arrayListOf<Release>().apply {
add(Release(46, R.string.release_46)) add(Release(46, R.string.release_46))

View file

@ -63,12 +63,12 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private var mZoomListener: MyRecyclerView.MyZoomListener? = null private var mZoomListener: MyRecyclerView.MyZoomListener? = null
private var mSearchMenuItem: MenuItem? = null private var mSearchMenuItem: MenuItem? = null
private var mStoredUseEnglish = false
private var mStoredAnimateGifs = true private var mStoredAnimateGifs = true
private var mStoredCropThumbnails = true private var mStoredCropThumbnails = true
private var mStoredScrollHorizontally = true private var mStoredScrollHorizontally = true
private var mStoredShowInfoBubble = true private var mStoredShowInfoBubble = true
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mStoredPrimaryColor = 0
companion object { companion object {
var mMedia = ArrayList<Medium>() var mMedia = ArrayList<Medium>()
@ -109,11 +109,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (mStoredUseEnglish != config.useEnglish) {
restartActivity()
return
}
if (mStoredAnimateGifs != config.animateGifs) { if (mStoredAnimateGifs != config.animateGifs) {
getMediaAdapter()?.updateAnimateGifs(config.animateGifs) getMediaAdapter()?.updateAnimateGifs(config.animateGifs)
} }
@ -131,6 +126,12 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
getMediaAdapter()?.updateTextColor(config.textColor) getMediaAdapter()?.updateTextColor(config.textColor)
} }
if (mStoredPrimaryColor != config.primaryColor) {
getMediaAdapter()?.updatePrimaryColor(config.primaryColor)
media_horizontal_fastscroller.updatePrimaryColor()
media_vertical_fastscroller.updatePrimaryColor()
}
media_horizontal_fastscroller.updateBubbleColors() media_horizontal_fastscroller.updateBubbleColors()
media_vertical_fastscroller.updateBubbleColors() media_vertical_fastscroller.updateBubbleColors()
media_refresh_layout.isEnabled = config.enablePullToRefresh media_refresh_layout.isEnabled = config.enablePullToRefresh
@ -225,12 +226,12 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun storeStateVariables() { private fun storeStateVariables() {
config.apply { config.apply {
mStoredUseEnglish = useEnglish
mStoredAnimateGifs = animateGifs mStoredAnimateGifs = animateGifs
mStoredCropThumbnails = cropThumbnails mStoredCropThumbnails = cropThumbnails
mStoredScrollHorizontally = scrollHorizontally mStoredScrollHorizontally = scrollHorizontally
mStoredShowInfoBubble = showInfoBubble mStoredShowInfoBubble = showInfoBubble
mStoredTextColor = textColor mStoredTextColor = textColor
mStoredPrimaryColor = primaryColor
mShowAll = showAll mShowAll = showAll
} }
} }
@ -287,7 +288,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
supportActionBar?.title = if (mShowAll) resources.getString(R.string.all_folders) else dirName supportActionBar?.title = if (mShowAll) resources.getString(R.string.all_folders) else dirName
getMedia() getMedia()
setupLayoutManager() setupLayoutManager()
checkIfColorChanged()
} else { } else {
toast(R.string.no_storage_permissions) toast(R.string.no_storage_permissions)
finish() finish()
@ -297,14 +297,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun getMediaAdapter() = media_grid.adapter as? MediaAdapter private fun getMediaAdapter() = media_grid.adapter as? MediaAdapter
private fun checkIfColorChanged() {
if (media_grid.adapter != null && getRecyclerAdapter().primaryColor != config.primaryColor) {
getRecyclerAdapter().primaryColor = config.primaryColor
media_horizontal_fastscroller.updatePrimaryColor()
media_vertical_fastscroller.updatePrimaryColor()
}
}
private fun setupAdapter() { private fun setupAdapter() {
if (!mShowAll && isDirEmpty()) { if (!mShowAll && isDirEmpty()) {
return return
@ -318,7 +310,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
itemClicked((it as Medium).path) itemClicked((it as Medium).path)
}.apply { }.apply {
setupZoomListener(mZoomListener) setupZoomListener(mZoomListener)
setupDragListener(true)
media_grid.adapter = this media_grid.adapter = this
} }
} else { } else {
@ -348,7 +339,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
} }
} }
private fun getBubbleTextItem(index: Int) = getRecyclerAdapter().media.getOrNull(index)?.getBubbleText() ?: "" private fun getBubbleTextItem(index: Int) = getMediaAdapter()?.media?.getOrNull(index)?.getBubbleText() ?: ""
private fun checkLastMediaChanged() { private fun checkLastMediaChanged() {
if (isActivityDestroyed()) if (isActivityDestroyed())
@ -388,7 +379,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun toggleFilenameVisibility() { private fun toggleFilenameVisibility() {
config.displayFileNames = !config.displayFileNames config.displayFileNames = !config.displayFileNames
if (media_grid.adapter != null) if (media_grid.adapter != null)
getRecyclerAdapter().updateDisplayFilenames(config.displayFileNames) getMediaAdapter()?.updateDisplayFilenames(config.displayFileNames)
} }
private fun switchToFolderView() { private fun switchToFolderView() {
@ -501,8 +492,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
invalidateOptionsMenu() invalidateOptionsMenu()
} }
private fun getRecyclerAdapter() = (media_grid.adapter as MediaAdapter)
private fun setupLayoutManager() { private fun setupLayoutManager() {
if (config.viewTypeFiles == VIEW_TYPE_GRID) { if (config.viewTypeFiles == VIEW_TYPE_GRID) {
setupGridLayoutManager() setupGridLayoutManager()
@ -531,14 +520,14 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
override fun zoomIn() { override fun zoomIn() {
if (layoutManager.spanCount > 1) { if (layoutManager.spanCount > 1) {
reduceColumnCount() reduceColumnCount()
getRecyclerAdapter().finishActMode() getMediaAdapter()?.finishActMode()
} }
} }
override fun zoomOut() { override fun zoomOut() {
if (layoutManager.spanCount < MAX_COLUMN_COUNT) { if (layoutManager.spanCount < MAX_COLUMN_COUNT) {
increaseColumnCount() increaseColumnCount()
getRecyclerAdapter().finishActMode() getMediaAdapter()?.finishActMode()
} }
} }
} }

View file

@ -6,7 +6,10 @@ import android.os.Bundle
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.dialogs.SecurityDialog import com.simplemobiletools.commons.dialogs.SecurityDialog
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
import com.simplemobiletools.commons.extensions.handleHiddenFolderPasswordProtection
import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.PROTECTION_FINGERPRINT import com.simplemobiletools.commons.helpers.PROTECTION_FINGERPRINT
import com.simplemobiletools.commons.helpers.SHOW_ALL_TABS import com.simplemobiletools.commons.helpers.SHOW_ALL_TABS
import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.models.RadioItem
@ -89,7 +92,7 @@ class SettingsActivity : SimpleActivity() {
settings_use_english_holder.setOnClickListener { settings_use_english_holder.setOnClickListener {
settings_use_english.toggle() settings_use_english.toggle()
config.useEnglish = settings_use_english.isChecked config.useEnglish = settings_use_english.isChecked
useEnglishToggled() System.exit(0)
} }
} }

View file

@ -56,7 +56,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private var mShowAll = false private var mShowAll = false
private var mIsSlideshowActive = false private var mIsSlideshowActive = false
private var mSkipConfirmationDialog = false private var mSkipConfirmationDialog = false
private var mRotationDegrees = 0f private var mRotationDegrees = 0
private var mPrevHashcode = 0 private var mPrevHashcode = 0
private var mSlideshowHandler = Handler() private var mSlideshowHandler = Handler()
@ -66,7 +66,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private var mAreSlideShowMediaVisible = false private var mAreSlideShowMediaVisible = false
private var mIsOrientationLocked = false private var mIsOrientationLocked = false
private var mStoredUseEnglish = false
private var mStoredReplaceZoomableImages = false private var mStoredReplaceZoomableImages = false
private var mMediaFiles = ArrayList<Medium>() private var mMediaFiles = ArrayList<Medium>()
@ -101,11 +100,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
return return
} }
if (mStoredUseEnglish != config.useEnglish) {
restartActivity()
return
}
if (mStoredReplaceZoomableImages != config.replaceZoomableImages) { if (mStoredReplaceZoomableImages != config.replaceZoomableImages) {
mPrevHashcode = 0 mPrevHashcode = 0
refreshViewPager() refreshViewPager()
@ -224,7 +218,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
if (config.hideSystemUI) { if (config.hideSystemUI) {
view_pager.onGlobalLayout {
Handler().postDelayed({
fragmentClicked() fragmentClicked()
}, 500)
}
} }
window.decorView.setOnSystemUiVisibilityChangeListener { visibility -> window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
@ -256,13 +254,13 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
findItem(R.id.menu_share_1).isVisible = !config.replaceShare findItem(R.id.menu_share_1).isVisible = !config.replaceShare
findItem(R.id.menu_share_2).isVisible = config.replaceShare findItem(R.id.menu_share_2).isVisible = config.replaceShare
findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() findItem(R.id.menu_rotate).isVisible = currentMedium.isImage()
findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0f findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0
findItem(R.id.menu_hide).isVisible = !currentMedium.name.startsWith('.') findItem(R.id.menu_hide).isVisible = !currentMedium.name.startsWith('.')
findItem(R.id.menu_unhide).isVisible = currentMedium.name.startsWith('.') findItem(R.id.menu_unhide).isVisible = currentMedium.name.startsWith('.')
findItem(R.id.menu_lock_orientation).isVisible = mRotationDegrees == 0f findItem(R.id.menu_lock_orientation).isVisible = mRotationDegrees == 0
findItem(R.id.menu_lock_orientation).title = getString(if (mIsOrientationLocked) R.string.unlock_orientation else R.string.lock_orientation) findItem(R.id.menu_lock_orientation).title = getString(if (mIsOrientationLocked) R.string.unlock_orientation else R.string.lock_orientation)
findItem(R.id.menu_rotate).setShowAsAction( findItem(R.id.menu_rotate).setShowAsAction(
if (mRotationDegrees != 0f) { if (mRotationDegrees != 0) {
MenuItem.SHOW_AS_ACTION_ALWAYS MenuItem.SHOW_AS_ACTION_ALWAYS
} else { } else {
MenuItem.SHOW_AS_ACTION_IF_ROOM MenuItem.SHOW_AS_ACTION_IF_ROOM
@ -304,7 +302,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private fun storeStateVariables() { private fun storeStateVariables() {
config.apply { config.apply {
mStoredUseEnglish = useEnglish
mStoredReplaceZoomableImages = replaceZoomableImages mStoredReplaceZoomableImages = replaceZoomableImages
} }
} }
@ -543,7 +540,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
val oldLastModified = getCurrentFile().lastModified() val oldLastModified = getCurrentFile().lastModified()
if (oldPath.isJpg()) { if (oldPath.isJpg()) {
copyFile(getCurrentFile(), tmpFile) copyFile(getCurrentFile(), tmpFile)
saveExifRotation(ExifInterface(tmpFile.absolutePath)) saveExifRotation(ExifInterface(tmpFile.absolutePath), mRotationDegrees)
} else { } else {
val bitmap = BitmapFactory.decodeFile(oldPath) val bitmap = BitmapFactory.decodeFile(oldPath)
saveFile(tmpFile, bitmap, it as FileOutputStream) saveFile(tmpFile, bitmap, it as FileOutputStream)
@ -563,7 +560,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
it.flush() it.flush()
it.close() it.close()
mRotationDegrees = 0f mRotationDegrees = 0
invalidateOptionsMenu() invalidateOptionsMenu()
// we cannot refresh a specific image in Glide Cache, so just clear it all // we cannot refresh a specific image in Glide Cache, so just clear it all
@ -584,30 +581,15 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
@TargetApi(Build.VERSION_CODES.N) @TargetApi(Build.VERSION_CODES.N)
private fun tryRotateByExif(path: String): Boolean { private fun tryRotateByExif(path: String): Boolean {
try { return if (saveImageRotation(path, mRotationDegrees)) {
if (!isPathOnSD(path)) { mRotationDegrees = 0
saveExifRotation(ExifInterface(path))
mRotationDegrees = 0f
invalidateOptionsMenu() invalidateOptionsMenu()
toast(R.string.file_saved) toast(R.string.file_saved)
return true true
} else if (isNougatPlus()) { } else {
val documentFile = getSomeDocumentFile(path) false
if (documentFile != null) {
val parcelFileDescriptor = contentResolver.openFileDescriptor(documentFile.uri, "rw")
val fileDescriptor = parcelFileDescriptor.fileDescriptor
saveExifRotation(ExifInterface(fileDescriptor))
mRotationDegrees = 0f
invalidateOptionsMenu()
toast(R.string.file_saved)
return true
} }
} }
} catch (e: Exception) {
showErrorToast(e)
}
return false
}
private fun copyFile(source: File, destination: File) { private fun copyFile(source: File, destination: File) {
var inputStream: InputStream? = null var inputStream: InputStream? = null
@ -625,32 +607,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private fun saveFile(file: File, bitmap: Bitmap, out: FileOutputStream) { private fun saveFile(file: File, bitmap: Bitmap, out: FileOutputStream) {
val matrix = Matrix() val matrix = Matrix()
matrix.postRotate(mRotationDegrees) matrix.postRotate(mRotationDegrees.toFloat())
val bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) val bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
bmp.compress(file.absolutePath.getCompressionFormat(), 90, out) bmp.compress(file.absolutePath.getCompressionFormat(), 90, out)
} }
private fun saveExifRotation(exif: ExifInterface) {
val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL)
val orientationDegrees = (degreesForRotation(orientation) + mRotationDegrees) % 360
exif.setAttribute(ExifInterface.TAG_ORIENTATION, rotationFromDegrees(orientationDegrees))
exif.saveAttributes()
}
private fun degreesForRotation(orientation: Int) = when (orientation) {
ExifInterface.ORIENTATION_ROTATE_270 -> 270f
ExifInterface.ORIENTATION_ROTATE_180 -> 180f
ExifInterface.ORIENTATION_ROTATE_90 -> 90f
else -> 0f
}
private fun rotationFromDegrees(degrees: Float) = when (degrees) {
270f -> ExifInterface.ORIENTATION_ROTATE_270
180f -> ExifInterface.ORIENTATION_ROTATE_180
90f -> ExifInterface.ORIENTATION_ROTATE_90
else -> ExifInterface.ORIENTATION_NORMAL
}.toString()
private fun isShowHiddenFlagNeeded(): Boolean { private fun isShowHiddenFlagNeeded(): Boolean {
val file = File(mPath) val file = File(mPath)
if (file.isHidden) { if (file.isHidden) {
@ -767,7 +728,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
private fun askConfirmDelete() { private fun askConfirmDelete() {
DeleteWithRememberDialog(this) { DeleteWithRememberDialog(this, getString(R.string.proceed_with_deletion)) {
mSkipConfirmationDialog = it mSkipConfirmationDialog = it
deleteConfirmed() deleteConfirmed()
} }
@ -943,7 +904,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (mPos != position) { if (mPos != position) {
mPos = position mPos = position
updateActionbarTitle() updateActionbarTitle()
mRotationDegrees = 0f mRotationDegrees = 0
supportInvalidateOptionsMenu() supportInvalidateOptionsMenu()
scheduleSwipe() scheduleSwipe()
} }

View file

@ -1,5 +1,6 @@
package com.simplemobiletools.gallery.adapters package com.simplemobiletools.gallery.adapters
import android.util.SparseArray
import android.view.Menu import android.view.Menu
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -27,8 +28,9 @@ import com.simplemobiletools.gallery.models.Directory
import kotlinx.android.synthetic.main.directory_item_list.view.* import kotlinx.android.synthetic.main.directory_item_list.view.*
import java.io.File import java.io.File
import java.util.* import java.util.*
import kotlin.collections.ArrayList
class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Directory>, val listener: DirOperationsListener?, recyclerView: MyRecyclerView, class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directory>, val listener: DirOperationsListener?, recyclerView: MyRecyclerView,
val isPickIntent: Boolean, fastScroller: FastScroller? = null, itemClick: (Any) -> Unit) : val isPickIntent: Boolean, fastScroller: FastScroller? = null, itemClick: (Any) -> Unit) :
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
@ -41,6 +43,10 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
private var cropThumbnails = config.cropThumbnails private var cropThumbnails = config.cropThumbnails
private var currentDirectoriesHash = dirs.hashCode() private var currentDirectoriesHash = dirs.hashCode()
init {
setupDragListener(true)
}
override fun getActionMenuId() = R.menu.cab_directories override fun getActionMenuId() = R.menu.cab_directories
override fun prepareItemSelection(view: View) { override fun prepareItemSelection(view: View) {
@ -111,7 +117,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
var hiddenCnt = 0 var hiddenCnt = 0
var unhiddenCnt = 0 var unhiddenCnt = 0
selectedPositions.mapNotNull { dirs.getOrNull(it)?.path }.forEach { selectedPositions.mapNotNull { dirs.getOrNull(it)?.path }.forEach {
if (File(it).containsNoMedia()) { if (File(it).doesThisOrParentHaveNoMedia()) {
hiddenCnt++ hiddenCnt++
} else { } else {
unhiddenCnt++ unhiddenCnt++
@ -149,8 +155,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
} }
private fun renameDir() { private fun renameDir() {
val path = dirs[selectedPositions.first()].path val sourcePath = dirs[selectedPositions.first()].path
val dir = File(path) val dir = File(sourcePath)
if (activity.isAStorageRootFolder(dir.absolutePath)) { if (activity.isAStorageRootFolder(dir.absolutePath)) {
activity.toast(R.string.rename_folder_root) activity.toast(R.string.rename_folder_root)
return return
@ -158,47 +164,106 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
RenameItemDialog(activity, dir.absolutePath) { RenameItemDialog(activity, dir.absolutePath) {
activity.runOnUiThread { activity.runOnUiThread {
listener?.refreshItems() if (selectedPositions.isEmpty()) {
finishActMode() return@runOnUiThread
}
dirs[selectedPositions.first()].apply {
path = it
name = it.getFilenameFromPath()
tmb = File(it, tmb.getFilenameFromPath()).absolutePath
}
updateDirs(dirs)
listener?.updateDirectories(dirs.toList() as ArrayList, false)
} }
} }
} }
private fun toggleFoldersVisibility(hide: Boolean) { private fun toggleFoldersVisibility(hide: Boolean) {
getSelectedPaths().forEach { getSelectedPaths().forEach {
val path = it
if (hide) { if (hide) {
if (config.wasHideFolderTooltipShown) { if (config.wasHideFolderTooltipShown) {
hideFolder(it) hideFolder(path)
} else { } else {
config.wasHideFolderTooltipShown = true config.wasHideFolderTooltipShown = true
ConfirmationDialog(activity, activity.getString(R.string.hide_folder_description)) { ConfirmationDialog(activity, activity.getString(R.string.hide_folder_description)) {
hideFolder(it) hideFolder(path)
} }
} }
} else { } else {
activity.removeNoMedia(it) { activity.removeNoMedia(path) {
activity.scanPath(it) if (activity.config.shouldShowHidden) {
noMediaHandled() updateFolderNames()
} else {
activity.runOnUiThread {
listener?.refreshItems()
finishActMode()
} }
} }
} }
} }
}
}
private fun updateFolderNames() {
val includedFolders = activity.config.includedFolders
val hidden = activity.getString(R.string.hidden)
dirs.forEach {
it.name = activity.checkAppendingHidden(it.path, hidden, includedFolders)
}
listener?.updateDirectories(dirs.toList() as ArrayList, false)
activity.runOnUiThread {
updateDirs(dirs)
}
}
private fun hideFolder(path: String) { private fun hideFolder(path: String) {
activity.addNoMedia(path) { activity.addNoMedia(path) {
noMediaHandled() if (activity.config.shouldShowHidden) {
updateFolderNames()
} else {
val affectedPositions = ArrayList<Int>()
val includedFolders = activity.config.includedFolders
val newDirs = dirs.filterIndexed { index, directory ->
val removeDir = File(directory.path).doesThisOrParentHaveNoMedia() && !includedFolders.contains(directory.path)
if (removeDir) {
affectedPositions.add(index)
}
!removeDir
} as ArrayList<Directory>
activity.runOnUiThread {
affectedPositions.sortedDescending().forEach {
notifyItemRemoved(it)
itemViews.put(it, null)
}
val newItems = SparseArray<View>()
(0 until itemViews.size())
.filter { itemViews[it] != null }
.forEachIndexed { curIndex, i -> newItems.put(curIndex, itemViews[i]) }
currentDirectoriesHash = newDirs.hashCode()
itemViews = newItems
dirs = newDirs
finishActMode()
fastScroller?.measureRecyclerView()
listener?.updateDirectories(newDirs, false)
}
}
} }
} }
private fun tryExcludeFolder() { private fun tryExcludeFolder() {
ExcludeFolderDialog(activity, getSelectedPaths().toList()) { val paths = getSelectedPaths()
if (paths.size == 1) {
ExcludeFolderDialog(activity, paths.toList()) {
listener?.refreshItems() listener?.refreshItems()
finishActMode() finishActMode()
} }
} } else {
activity.config.addExcludedFolders(paths)
private fun noMediaHandled() {
activity.runOnUiThread {
listener?.refreshItems() listener?.refreshItems()
finishActMode() finishActMode()
} }
@ -236,7 +301,9 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
if (config.skipDeleteConfirmation) { if (config.skipDeleteConfirmation) {
deleteFiles() deleteFiles()
} else { } else {
ConfirmationDialog(activity) { val items = resources.getQuantityString(R.plurals.delete_items, selectedPositions.size, selectedPositions.size)
val question = String.format(resources.getString(R.string.deletion_confirmation), items)
ConfirmationDialog(activity, question) {
deleteFiles() deleteFiles()
} }
} }
@ -317,7 +384,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
fun updateDirs(newDirs: ArrayList<Directory>) { fun updateDirs(newDirs: ArrayList<Directory>) {
if (newDirs.hashCode() != currentDirectoriesHash) { if (newDirs.hashCode() != currentDirectoriesHash) {
currentDirectoriesHash = newDirs.hashCode() currentDirectoriesHash = newDirs.hashCode()
dirs = newDirs dirs = newDirs.clone() as ArrayList<Directory>
notifyDataSetChanged() notifyDataSetChanged()
finishActMode() finishActMode()
} }
@ -375,5 +442,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList<Direc
fun deleteFolders(folders: ArrayList<File>) fun deleteFolders(folders: ArrayList<File>)
fun recheckPinnedFolders() fun recheckPinnedFolders()
fun updateDirectories(directories: ArrayList<Directory>, refreshList: Boolean)
} }
} }

View file

@ -17,6 +17,10 @@ class ManageFoldersAdapter(activity: BaseSimpleActivity, var folders: ArrayList<
private val config = activity.config private val config = activity.config
init {
setupDragListener(true)
}
override fun getActionMenuId() = R.menu.cab_remove_only override fun getActionMenuId() = R.menu.cab_remove_only
override fun prepareActionMode(menu: Menu) {} override fun prepareActionMode(menu: Menu) {}

View file

@ -19,6 +19,10 @@ class ManageHiddenFoldersAdapter(activity: BaseSimpleActivity, var folders: Arra
private val config = activity.config private val config = activity.config
init {
setupDragListener(true)
}
override fun getActionMenuId() = R.menu.cab_hidden_folders override fun getActionMenuId() = R.menu.cab_hidden_folders
override fun prepareActionMode(menu: Menu) {} override fun prepareActionMode(menu: Menu) {}

View file

@ -44,6 +44,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
private var displayFilenames = config.displayFileNames private var displayFilenames = config.displayFileNames
init { init {
setupDragListener(true)
enableInstantLoad() enableInstantLoad()
} }
@ -203,7 +204,9 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
} }
private fun askConfirmDelete() { private fun askConfirmDelete() {
DeleteWithRememberDialog(activity) { val items = resources.getQuantityString(R.plurals.delete_items, selectedPositions.size, selectedPositions.size)
val question = String.format(resources.getString(R.string.deletion_confirmation), items)
DeleteWithRememberDialog(activity, question) {
skipConfirmationDialog = it skipConfirmationDialog = it
deleteFiles() deleteFiles()
} }
@ -256,10 +259,12 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
fun updateMedia(newMedia: ArrayList<Medium>) { fun updateMedia(newMedia: ArrayList<Medium>) {
if (newMedia.hashCode() != currentMediaHash) { if (newMedia.hashCode() != currentMediaHash) {
currentMediaHash = newMedia.hashCode() currentMediaHash = newMedia.hashCode()
media = newMedia Handler().postDelayed({
media = newMedia.clone() as ArrayList<Medium>
enableInstantLoad() enableInstantLoad()
notifyDataSetChanged() notifyDataSetChanged()
finishActMode() finishActMode()
}, 100L)
} }
} }

View file

@ -6,10 +6,10 @@ import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.commons.helpers.OTG_PATH
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
import com.simplemobiletools.commons.helpers.SORT_DESCENDING import com.simplemobiletools.commons.helpers.SORT_DESCENDING
import com.simplemobiletools.commons.helpers.sumByLong
import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.extensions.checkAppendingHidden
import com.simplemobiletools.gallery.extensions.config import com.simplemobiletools.gallery.extensions.config
import com.simplemobiletools.gallery.extensions.doesParentHaveNoMedia
import com.simplemobiletools.gallery.extensions.sumByLong
import com.simplemobiletools.gallery.helpers.MediaFetcher import com.simplemobiletools.gallery.helpers.MediaFetcher
import com.simplemobiletools.gallery.models.Directory import com.simplemobiletools.gallery.models.Directory
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
@ -27,9 +27,10 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va
val config = context.config val config = context.config
val groupedMedia = mediaFetcher.getMediaByDirectories(isPickVideo, isPickImage) val groupedMedia = mediaFetcher.getMediaByDirectories(isPickVideo, isPickImage)
val directories = ArrayList<Directory>() val directories = ArrayList<Directory>()
val hidden = context.resources.getString(R.string.hidden) val hidden = context.getString(R.string.hidden)
val albumCovers = config.parseAlbumCovers() val albumCovers = config.parseAlbumCovers()
val hasOTG = context.hasOTGConnected() && context.config.OTGBasePath.isNotEmpty() val hasOTG = context.hasOTGConnected() && context.config.OTGBasePath.isNotEmpty()
val includedFolders = config.includedFolders
for ((path, curMedia) in groupedMedia) { for ((path, curMedia) in groupedMedia) {
Medium.sorting = config.getFileSorting(path) Medium.sorting = config.getFileSorting(path)
@ -37,7 +38,7 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va
val firstItem = curMedia.first() val firstItem = curMedia.first()
val lastItem = curMedia.last() val lastItem = curMedia.last()
val parentDir = if (hasOTG && firstItem.path.startsWith(OTG_PATH)) firstItem.path.getParentPath() else File(firstItem.path).parent val parentDir = if (hasOTG && firstItem.path.startsWith(OTG_PATH)) firstItem.path.getParentPath() else File(firstItem.path).parent ?: continue
var thumbnail = curMedia.firstOrNull { context.getDoesFilePathExist(it.path) }?.path ?: "" var thumbnail = curMedia.firstOrNull { context.getDoesFilePathExist(it.path) }?.path ?: ""
if (thumbnail.startsWith(OTG_PATH)) { if (thumbnail.startsWith(OTG_PATH)) {
thumbnail = thumbnail.getOTGPublicPath(context) thumbnail = thumbnail.getOTGPublicPath(context)
@ -49,23 +50,7 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va
} }
} }
var dirName = when (parentDir) { val dirName = context.checkAppendingHidden(parentDir, hidden, includedFolders)
context.internalStoragePath -> context.getString(R.string.internal)
context.sdCardPath -> context.getString(R.string.sd_card)
OTG_PATH -> context.getString(R.string.otg)
else -> {
if (parentDir.startsWith(OTG_PATH)) {
parentDir.trimEnd('/').substringAfterLast('/')
} else {
parentDir.getFilenameFromPath()
}
}
}
if (File(parentDir).doesParentHaveNoMedia()) {
dirName += " $hidden"
}
val lastModified = if (config.directorySorting and SORT_DESCENDING > 0) Math.max(firstItem.modified, lastItem.modified) else Math.min(firstItem.modified, lastItem.modified) val lastModified = if (config.directorySorting and SORT_DESCENDING > 0) Math.max(firstItem.modified, lastItem.modified) else Math.min(firstItem.modified, lastItem.modified)
val dateTaken = if (config.directorySorting and SORT_DESCENDING > 0) Math.max(firstItem.taken, lastItem.taken) else Math.min(firstItem.taken, lastItem.taken) val dateTaken = if (config.directorySorting and SORT_DESCENDING > 0) Math.max(firstItem.taken, lastItem.taken) else Math.min(firstItem.taken, lastItem.taken)
val size = curMedia.sumByLong { it.size } val size = curMedia.sumByLong { it.size }

View file

@ -25,7 +25,7 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo
media.sort() media.sort()
media media
} else { } else {
mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo, false) mediaFetcher.getFilesFrom(mPath, isPickImage, isPickVideo)
} }
} }

View file

@ -6,11 +6,12 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.R
import kotlinx.android.synthetic.main.dialog_delete_with_remember.view.* import kotlinx.android.synthetic.main.dialog_delete_with_remember.view.*
class DeleteWithRememberDialog(val activity: Activity, val callback: (remember: Boolean) -> Unit) { class DeleteWithRememberDialog(val activity: Activity, val message: String, val callback: (remember: Boolean) -> Unit) {
private var dialog: AlertDialog private var dialog: AlertDialog
val view = activity.layoutInflater.inflate(R.layout.dialog_delete_with_remember, null)!! val view = activity.layoutInflater.inflate(R.layout.dialog_delete_with_remember, null)!!
init { init {
view.delete_remember_title.text = message
val builder = AlertDialog.Builder(activity) val builder = AlertDialog.Builder(activity)
.setPositiveButton(R.string.yes, { dialog, which -> dialogConfirmed() }) .setPositiveButton(R.string.yes, { dialog, which -> dialogConfirmed() })
.setNegativeButton(R.string.no, null) .setNegativeButton(R.string.no, null)

View file

@ -110,33 +110,44 @@ fun AppCompatActivity.hideSystemUI() {
fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) { fun BaseSimpleActivity.addNoMedia(path: String, callback: () -> Unit) {
val file = File(path, NOMEDIA) val file = File(path, NOMEDIA)
if (file.exists()) if (file.exists()) {
callback()
return return
}
if (needsStupidWritePermissions(path)) { if (needsStupidWritePermissions(path)) {
handleSAFDialog(file.absolutePath) { handleSAFDialog(file.absolutePath) {
val fileDocument = getDocumentFile(path) val fileDocument = getDocumentFile(path)
if (fileDocument?.exists() == true && fileDocument.isDirectory) { if (fileDocument?.exists() == true && fileDocument.isDirectory) {
fileDocument.createFile("", NOMEDIA) fileDocument.createFile("", NOMEDIA)
applicationContext.scanFile(file) {
callback()
}
} else { } else {
toast(R.string.unknown_error_occurred) toast(R.string.unknown_error_occurred)
callback()
} }
} }
} else { } else {
try { try {
file.createNewFile() file.createNewFile()
} catch (e: Exception) {
showErrorToast(e)
}
}
applicationContext.scanFile(file) { applicationContext.scanFile(file) {
callback() callback()
} }
} catch (e: Exception) {
showErrorToast(e)
callback()
}
}
} }
fun BaseSimpleActivity.removeNoMedia(path: String, callback: (() -> Unit)? = null) { fun BaseSimpleActivity.removeNoMedia(path: String, callback: (() -> Unit)? = null) {
val file = File(path, NOMEDIA) val file = File(path, NOMEDIA)
if (!file.exists()) {
callback?.invoke()
return
}
deleteFile(file.toFileDirItem(applicationContext)) { deleteFile(file.toFileDirItem(applicationContext)) {
callback?.invoke() callback?.invoke()
} }
@ -235,7 +246,7 @@ fun Activity.loadJpg(path: String, target: MySquareImageView, cropThumbnails: Bo
fun Activity.getCachedDirectories(): ArrayList<Directory> { fun Activity.getCachedDirectories(): ArrayList<Directory> {
val token = object : TypeToken<List<Directory>>() {}.type val token = object : TypeToken<List<Directory>>() {}.type
return Gson().fromJson<ArrayList<Directory>>(config.directories, token) ?: ArrayList<Directory>(1) return Gson().fromJson<ArrayList<Directory>>(config.directories, token) ?: ArrayList(1)
} }
fun Activity.getCachedMedia(path: String): ArrayList<Medium> { fun Activity.getCachedMedia(path: String): ArrayList<Medium> {

View file

@ -1,5 +0,0 @@
package com.simplemobiletools.gallery.extensions
import java.util.*
fun <E> ArrayList<E>.sumByLong(selector: (E) -> Long) = map { selector(it) }.sum()

View file

@ -10,9 +10,9 @@ import android.os.Build
import android.provider.MediaStore import android.provider.MediaStore
import android.view.WindowManager import android.view.WindowManager
import com.google.gson.Gson import com.google.gson.Gson
import com.simplemobiletools.commons.extensions.getStringValue import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.extensions.humanizePath
import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.commons.helpers.OTG_PATH
import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.activities.SettingsActivity import com.simplemobiletools.gallery.activities.SettingsActivity
import com.simplemobiletools.gallery.asynctasks.GetDirectoriesAsynctask import com.simplemobiletools.gallery.asynctasks.GetDirectoriesAsynctask
import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask
@ -161,6 +161,26 @@ fun Context.updateStoredDirectories() {
fun Context.storeDirectoryItems(items: ArrayList<Directory>) { fun Context.storeDirectoryItems(items: ArrayList<Directory>) {
val subList = items.subList(0, Math.min(SAVE_DIRS_CNT, items.size)) val subList = items.subList(0, Math.min(SAVE_DIRS_CNT, items.size))
val directories = Gson().toJson(subList) config.directories = Gson().toJson(subList)
config.directories = directories }
fun Context.checkAppendingHidden(path: String, hidden: String, includedFolders: MutableSet<String>): String {
val dirName = when (path) {
internalStoragePath -> getString(R.string.internal)
sdCardPath -> getString(R.string.sd_card)
OTG_PATH -> getString(R.string.otg)
else -> {
if (path.startsWith(OTG_PATH)) {
path.trimEnd('/').substringAfterLast('/')
} else {
path.getFilenameFromPath()
}
}
}
return if (File(path).doesThisOrParentHaveNoMedia() && !path.isThisOrParentIncluded(includedFolders)) {
"$dirName $hidden"
} else {
dirName
}
} }

View file

@ -5,13 +5,13 @@ import java.io.File
fun File.containsNoMedia() = isDirectory && File(this, NOMEDIA).exists() fun File.containsNoMedia() = isDirectory && File(this, NOMEDIA).exists()
fun File.doesParentHaveNoMedia(): Boolean { fun File.doesThisOrParentHaveNoMedia(): Boolean {
var curFile = this var curFile = this
while (true) { while (true) {
if (curFile.containsNoMedia()) { if (curFile.containsNoMedia()) {
return true return true
} }
curFile = curFile.parentFile curFile = curFile.parentFile ?: break
if (curFile.absolutePath == "/") { if (curFile.absolutePath == "/") {
break break
} }

View file

@ -3,4 +3,11 @@ package com.simplemobiletools.gallery.extensions
import com.bumptech.glide.signature.ObjectKey import com.bumptech.glide.signature.ObjectKey
import java.io.File import java.io.File
fun String.getFileSignature() = ObjectKey(File(this).lastModified().toString()) fun String.getFileSignature(): ObjectKey {
val file = File(this)
return ObjectKey("${file.name}${file.lastModified()}")
}
fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedPaths.any { startsWith(it, true) }
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) }

View file

@ -229,8 +229,8 @@ class PhotoFragment : ViewPagerFragment() {
} }
} }
private fun loadBitmap(degrees: Float = 0f) { private fun loadBitmap(degrees: Int = 0) {
if (degrees == 0f) { if (degrees == 0) {
var targetWidth = if (ViewPagerActivity.screenWidth == 0) Target.SIZE_ORIGINAL else ViewPagerActivity.screenWidth var targetWidth = if (ViewPagerActivity.screenWidth == 0) Target.SIZE_ORIGINAL else ViewPagerActivity.screenWidth
var targetHeight = if (ViewPagerActivity.screenHeight == 0) Target.SIZE_ORIGINAL else ViewPagerActivity.screenHeight var targetHeight = if (ViewPagerActivity.screenHeight == 0) Target.SIZE_ORIGINAL else ViewPagerActivity.screenHeight
if (useHalfResolution) { if (useHalfResolution) {
@ -371,7 +371,7 @@ class PhotoFragment : ViewPagerFragment() {
} }
} }
fun rotateImageViewBy(degrees: Float) { fun rotateImageViewBy(degrees: Int) {
view.subsampling_view.beGone() view.subsampling_view.beGone()
loadBitmap(degrees) loadBitmap(degrees)
} }

View file

@ -326,4 +326,8 @@ class Config(context: Context) : BaseConfig(context) {
var wasNewAppShown: Boolean var wasNewAppShown: Boolean
get() = prefs.getBoolean(WAS_NEW_APP_SHOWN, false) get() = prefs.getBoolean(WAS_NEW_APP_SHOWN, false)
set(wasNewAppShown) = prefs.edit().putBoolean(WAS_NEW_APP_SHOWN, wasNewAppShown).apply() set(wasNewAppShown) = prefs.edit().putBoolean(WAS_NEW_APP_SHOWN, wasNewAppShown).apply()
var lastFilepickerPath: String
get() = prefs.getString(TEMP_FOLDER_PATH, "")
set(tempFolderPath) = prefs.edit().putString(TEMP_FOLDER_PATH, tempFolderPath).apply()
} }

View file

@ -47,7 +47,8 @@ const val ONE_FINGER_ZOOM = "one_finger_zoom"
const val ALLOW_INSTANT_CHANGE = "allow_instant_change" const val ALLOW_INSTANT_CHANGE = "allow_instant_change"
const val REPLACE_ZOOMABLE_IMAGES = "replace_zoomable_images" const val REPLACE_ZOOMABLE_IMAGES = "replace_zoomable_images"
const val DO_EXTRA_CHECK = "do_extra_check" const val DO_EXTRA_CHECK = "do_extra_check"
const val WAS_NEW_APP_SHOWN = "was_new_app_shown" const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock"
const val LAST_FILEPICKER_PATH = "last_filepicker_path"
// slideshow // slideshow
const val SLIDESHOW_INTERVAL = "slideshow_interval" const val SLIDESHOW_INTERVAL = "slideshow_interval"

View file

@ -30,8 +30,9 @@ class GlideDecoder : ImageDecoder {
.override(targetWidth, targetHeight) .override(targetWidth, targetHeight)
val degrees = getRotationDegrees(orientation) val degrees = getRotationDegrees(orientation)
if (degrees != 0f) if (degrees != 0) {
options.transform(GlideRotateTransformation(context, getRotationDegrees(orientation))) options.transform(GlideRotateTransformation(context, getRotationDegrees(orientation)))
}
val drawable = Glide.with(context) val drawable = Glide.with(context)
.load(uri) .load(uri)
@ -61,9 +62,9 @@ class GlideDecoder : ImageDecoder {
// rotating backwards intentionally, as SubsamplingScaleImageView will rotate it properly at displaying // rotating backwards intentionally, as SubsamplingScaleImageView will rotate it properly at displaying
private fun getRotationDegrees(orientation: Int) = when (orientation) { private fun getRotationDegrees(orientation: Int) = when (orientation) {
ExifInterface.ORIENTATION_ROTATE_270 -> 90f ExifInterface.ORIENTATION_ROTATE_270 -> 90
ExifInterface.ORIENTATION_ROTATE_180 -> 180f ExifInterface.ORIENTATION_ROTATE_180 -> 180
ExifInterface.ORIENTATION_ROTATE_90 -> 270f ExifInterface.ORIENTATION_ROTATE_90 -> 270
else -> 0f else -> 0
} }
} }

View file

@ -7,13 +7,13 @@ import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
import java.security.MessageDigest import java.security.MessageDigest
class GlideRotateTransformation(context: Context, val rotateRotationAngle: Float) : BitmapTransformation(context) { class GlideRotateTransformation(context: Context, val rotateRotationAngle: Int) : BitmapTransformation(context) {
override fun transform(pool: BitmapPool, bitmap: Bitmap, outWidth: Int, outHeight: Int): Bitmap { override fun transform(pool: BitmapPool, bitmap: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
if (rotateRotationAngle % 360 == 0f) if (rotateRotationAngle % 360 == 0)
return bitmap return bitmap
val matrix = Matrix() val matrix = Matrix()
matrix.postRotate(rotateRotationAngle) matrix.postRotate(rotateRotationAngle.toFloat())
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
} }

View file

@ -3,220 +3,141 @@ package com.simplemobiletools.gallery.helpers
import android.content.Context import android.content.Context
import android.database.Cursor import android.database.Cursor
import android.net.Uri import android.net.Uri
import android.os.Environment
import android.provider.MediaStore import android.provider.MediaStore
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.helpers.OTG_PATH
import com.simplemobiletools.gallery.extensions.config import com.simplemobiletools.commons.helpers.photoExtensions
import com.simplemobiletools.gallery.extensions.containsNoMedia import com.simplemobiletools.commons.helpers.videoExtensions
import com.simplemobiletools.gallery.extensions.doesParentHaveNoMedia import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.extensions.isPathInMediaStore
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
import java.io.File import java.io.File
import java.util.LinkedHashMap import java.util.LinkedHashMap
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
import kotlin.collections.component1 import kotlin.collections.HashSet
import kotlin.collections.component2 import kotlin.collections.set
class MediaFetcher(val context: Context) { class MediaFetcher(val context: Context) {
var shouldStop = false var shouldStop = false
fun getMediaByDirectories(isPickVideo: Boolean, isPickImage: Boolean): HashMap<String, ArrayList<Medium>> { fun getMediaByDirectories(isPickVideo: Boolean, isPickImage: Boolean): HashMap<String, ArrayList<Medium>> {
val media = getFilesFrom("", isPickImage, isPickVideo, true) val media = getFilesFrom("", isPickImage, isPickVideo)
val excludedPaths = context.config.excludedFolders return groupDirectories(media)
val includedPaths = context.config.includedFolders
val showHidden = context.config.shouldShowHidden
val directories = groupDirectories(media)
val removePaths = ArrayList<String>()
for ((path, curMedia) in directories) {
// make sure the path has uppercase letters wherever appropriate
val groupPath = File(curMedia.first().path).parent
if (!File(groupPath).exists() || !shouldFolderBeVisible(groupPath, excludedPaths, includedPaths, showHidden)) {
removePaths.add(groupPath.toLowerCase())
}
} }
removePaths.forEach { fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean): ArrayList<Medium> {
directories.remove(it) val filterMedia = context.config.filterMedia
if (filterMedia == 0) {
return ArrayList()
} }
searchNewFiles(directories, showHidden)
return directories
}
// search for undiscovered media files in the folders, from which we already have some media files
private fun searchNewFiles(directories: Map<String, ArrayList<Medium>>, showHidden: Boolean) {
Thread {
// try not to delay the main media file loading
Thread.sleep(3000)
for ((path, dirMedia) in directories) {
if (path.contains("/.thumbnails/", true)) {
continue
}
// get the file parent this way, "path" is lowercased
val folder = File(dirMedia.first().path).parentFile
val files = folder.listFiles() ?: continue
val fileCnt = files.filter { it.isFile }.size
val newPaths = ArrayList<String>()
if (dirMedia.size != fileCnt) {
val dirPaths = dirMedia.map { it.path }
files.forEach {
val filePath = it.absolutePath
if ((showHidden || !it.name.startsWith(".")) && !dirPaths.contains(filePath)) {
if (it.exists() && it.length() > 0 && it.isImageVideoGif() && !context.isPathInMediaStore(it.absolutePath)) {
newPaths.add(it.absolutePath)
}
}
}
}
context.scanPaths(newPaths)
}
}.start()
}
fun getFilesFrom(curPath: String, isPickImage: Boolean, isPickVideo: Boolean, allowRecursion: Boolean): ArrayList<Medium> {
if (curPath.startsWith(OTG_PATH)) { if (curPath.startsWith(OTG_PATH)) {
val curMedia = ArrayList<Medium>() val curMedia = ArrayList<Medium>()
getMediaOnOTG(curPath, curMedia, isPickImage, isPickVideo, context.config.filterMedia, allowRecursion) getMediaOnOTG(curPath, curMedia, isPickImage, isPickVideo, filterMedia)
return curMedia return curMedia
} else { } else {
val projection = arrayOf(MediaStore.Images.Media._ID, val projection = arrayOf(MediaStore.Images.Media.DATA)
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN,
MediaStore.Images.Media.DATE_MODIFIED,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.SIZE)
val uri = MediaStore.Files.getContentUri("external") val uri = MediaStore.Files.getContentUri("external")
val selection = getSelectionQuery(curPath)
val selectionArgs = getSelectionArgsQuery(curPath) val selection = "${getSelectionQuery(curPath, filterMedia)} ${MediaStore.Images.ImageColumns.BUCKET_ID} IS NOT NULL) GROUP BY (${MediaStore.Images.ImageColumns.BUCKET_ID}"
val selectionArgs = getSelectionArgsQuery(curPath, filterMedia).toTypedArray()
return try { return try {
val cur = context.contentResolver.query(uri, projection, selection, selectionArgs, getSortingForFolder(curPath)) val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
parseCursor(context, cur, isPickImage, isPickVideo, curPath, allowRecursion) parseCursor(context, cursor, isPickImage, isPickVideo, curPath, filterMedia)
} catch (e: Exception) { } catch (e: Exception) {
ArrayList() ArrayList()
} }
} }
} }
private fun getSelectionQuery(path: String): String? { private fun getSelectionQuery(path: String, filterMedia: Int): String {
val dataQuery = "${MediaStore.Images.Media.DATA} LIKE ?" val query = StringBuilder()
return if (path.isEmpty()) { if (path.isNotEmpty()) {
if (isAndroidFour()) query.append("${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ? AND ")
return null
var query = "($dataQuery)"
if (context.hasExternalSDCard()) {
query += " OR ($dataQuery)"
} }
query
} else { query.append("(")
"($dataQuery AND ${MediaStore.Images.Media.DATA} NOT LIKE ?)" if (filterMedia and IMAGES != 0) {
photoExtensions.forEach {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
} }
} }
private fun getSelectionArgsQuery(path: String): Array<String>? { if (filterMedia and VIDEOS != 0) {
return if (path.isEmpty()) { videoExtensions.forEach {
if (isAndroidFour()) { query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ")
return null
}
if (context.hasExternalSDCard()) {
arrayOf("${context.internalStoragePath}/%", "${context.sdCardPath}/%")
} else {
arrayOf("${context.internalStoragePath}/%")
}
} else {
arrayOf("$path/%", "$path/%/%")
} }
} }
private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isPickVideo: Boolean, curPath: String, allowRecursion: Boolean): ArrayList<Medium> { if (filterMedia and GIFS != 0) {
val curMedia = ArrayList<Medium>() query.append("${MediaStore.Images.Media.DATA} LIKE ?")
}
var selectionQuery = query.toString().trim().removeSuffix("OR")
selectionQuery += ") AND "
return selectionQuery
}
private fun getSelectionArgsQuery(path: String, filterMedia: Int): ArrayList<String> {
val args = ArrayList<String>()
if (path.isNotEmpty()) {
args.add("$path/%")
args.add("$path/%/%")
}
if (filterMedia and IMAGES != 0) {
photoExtensions.forEach {
args.add("%$it")
}
}
if (filterMedia and VIDEOS != 0) {
videoExtensions.forEach {
args.add("%$it")
}
}
if (filterMedia and GIFS != 0) {
args.add("%.gif")
}
return args
}
private fun parseCursor(context: Context, cursor: Cursor, isPickImage: Boolean, isPickVideo: Boolean, curPath: String, filterMedia: Int): ArrayList<Medium> {
val config = context.config val config = context.config
val filterMedia = config.filterMedia val includedFolders = config.includedFolders
val showHidden = config.shouldShowHidden val foldersToScan = HashSet<String>()
val isThirdPartyIntent = config.isThirdPartyIntent
val doExtraCheck = config.doExtraCheck
cur.use { cursor.use {
if (cur.moveToFirst()) { if (cursor.moveToFirst()) {
do { do {
try { val path = cursor.getStringValue(MediaStore.Images.Media.DATA).trim()
if (shouldStop) { val parentPath = File(path).parent?.trimEnd('/') ?: continue
break if (!includedFolders.contains(parentPath)) {
foldersToScan.add(parentPath)
} }
} while (cursor.moveToNext())
val path = cur.getStringValue(MediaStore.Images.Media.DATA).trim()
var filename = cur.getStringValue(MediaStore.Images.Media.DISPLAY_NAME)?.trim() ?: ""
if (filename.isEmpty())
filename = path.getFilenameFromPath()
val isImage = filename.isImageFast()
val isVideo = if (isImage) false else filename.isVideoFast()
val isGif = if (isImage || isVideo) false else filename.isGif()
if (!isImage && !isVideo && !isGif)
continue
if (isVideo && (isPickImage || filterMedia and VIDEOS == 0))
continue
if (isImage && (isPickVideo || filterMedia and IMAGES == 0))
continue
if (isGif && filterMedia and GIFS == 0)
continue
if (!showHidden && filename.startsWith('.'))
continue
var size = cur.getLongValue(MediaStore.Images.Media.SIZE)
val file = File(path)
if (size == 0L) {
size = file.length()
}
if (size <= 0L || (doExtraCheck && !file.exists()))
continue
val dateTaken = cur.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
val dateModified = cur.getIntValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L
val type = when {
isImage -> TYPE_IMAGE
isVideo -> TYPE_VIDEO
else -> TYPE_GIF
}
val medium = Medium(filename, path, dateModified, dateTaken, size, type)
curMedia.add(medium)
} catch (e: Exception) {
continue
}
} while (cur.moveToNext())
} }
} }
val screenshotsFolder = "${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)}/Screenshots" includedFolders.forEach {
val foldersToScan = config.includedFolders if (curPath.isEmpty()) {
if (File(screenshotsFolder).exists()) { addFolder(foldersToScan, it)
foldersToScan.add(screenshotsFolder) } else if (curPath == it) {
} foldersToScan.add(it)
foldersToScan.filter { it.isNotEmpty() && (curPath.isEmpty() || it == curPath) }.forEach {
if (it.startsWith(OTG_PATH)) {
getMediaOnOTG(it, curMedia, isPickImage, isPickVideo, filterMedia, allowRecursion)
} else {
getMediaInFolder(it, curMedia, isPickImage, isPickVideo, filterMedia, allowRecursion)
} }
} }
if (isThirdPartyIntent && curPath.isNotEmpty() && curMedia.isEmpty()) { val curMedia = ArrayList<Medium>()
getMediaInFolder(curPath, curMedia, isPickImage, isPickVideo, filterMedia, allowRecursion) val showHidden = config.shouldShowHidden
val excludedFolders = config.excludedFolders
foldersToScan.filter { shouldFolderBeVisible(it, excludedFolders, includedFolders, showHidden) }.toList().forEach {
fetchFolderContent(it, curMedia, isPickImage, isPickVideo, filterMedia)
}
if (config.isThirdPartyIntent && curPath.isNotEmpty() && curMedia.isEmpty()) {
getMediaInFolder(curPath, curMedia, isPickImage, isPickVideo, filterMedia)
} }
Medium.sorting = config.getFileSorting(curPath) Medium.sorting = config.getFileSorting(curPath)
@ -225,6 +146,24 @@ class MediaFetcher(val context: Context) {
return curMedia return curMedia
} }
private fun addFolder(curFolders: HashSet<String>, folder: String) {
curFolders.add(folder)
val files = File(folder).listFiles() ?: return
for (file in files) {
if (file.isDirectory) {
addFolder(curFolders, file.absolutePath)
}
}
}
private fun fetchFolderContent(path: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int) {
if (path.startsWith(OTG_PATH)) {
getMediaOnOTG(path, curMedia, isPickImage, isPickVideo, filterMedia)
} else {
getMediaInFolder(path, curMedia, isPickImage, isPickVideo, filterMedia)
}
}
private fun groupDirectories(media: ArrayList<Medium>): HashMap<String, ArrayList<Medium>> { private fun groupDirectories(media: ArrayList<Medium>): HashMap<String, ArrayList<Medium>> {
val directories = LinkedHashMap<String, ArrayList<Medium>>() val directories = LinkedHashMap<String, ArrayList<Medium>>()
val hasOTG = context.hasOTGConnected() && context.config.OTGBasePath.isNotEmpty() val hasOTG = context.hasOTGConnected() && context.config.OTGBasePath.isNotEmpty()
@ -246,14 +185,16 @@ class MediaFetcher(val context: Context) {
private fun shouldFolderBeVisible(path: String, excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean { private fun shouldFolderBeVisible(path: String, excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
val file = File(path) val file = File(path)
return if (includedPaths.contains(path)) { return if (path.isEmpty()) {
false
} else if (path.isThisOrParentIncluded(includedPaths)) {
true true
} else if (isThisOrParentExcluded(path, excludedPaths, includedPaths)) { } else if (path.isThisOrParentExcluded(excludedPaths)) {
false false
} else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) { } else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) {
var containsNoMediaOrDot = file.containsNoMedia() || path.contains("/.") var containsNoMediaOrDot = file.containsNoMedia() || path.contains("/.")
if (!containsNoMediaOrDot) { if (!containsNoMediaOrDot) {
containsNoMediaOrDot = file.doesParentHaveNoMedia() containsNoMediaOrDot = file.doesThisOrParentHaveNoMedia()
} }
!containsNoMediaOrDot !containsNoMediaOrDot
} else { } else {
@ -261,21 +202,16 @@ class MediaFetcher(val context: Context) {
} }
} }
private fun isThisOrParentExcluded(path: String, excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>) = private fun getMediaInFolder(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int) {
includedPaths.none { path.startsWith(it, true) } && excludedPaths.any { path.startsWith(it, true) }
private fun getMediaInFolder(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, allowRecursion: Boolean) {
val files = File(folder).listFiles() ?: return val files = File(folder).listFiles() ?: return
val doExtraCheck = context.config.doExtraCheck
val showHidden = context.config.shouldShowHidden
for (file in files) { for (file in files) {
if (shouldStop) { if (shouldStop) {
break break
} }
if (file.isDirectory && allowRecursion) {
getMediaInFolder(file.absolutePath, curMedia, isPickImage, isPickVideo, filterMedia, allowRecursion)
continue
}
val filename = file.name val filename = file.name
val isImage = filename.isImageFast() val isImage = filename.isImageFast()
val isVideo = if (isImage) false else filename.isVideoFast() val isVideo = if (isImage) false else filename.isVideoFast()
@ -293,8 +229,11 @@ class MediaFetcher(val context: Context) {
if (isGif && filterMedia and GIFS == 0) if (isGif && filterMedia and GIFS == 0)
continue continue
if (!showHidden && filename.startsWith('.'))
continue
val size = file.length() val size = file.length()
if (size <= 0L && !file.exists()) if (size <= 0L || (doExtraCheck && !file.exists()))
continue continue
val dateTaken = file.lastModified() val dateTaken = file.lastModified()
@ -307,24 +246,18 @@ class MediaFetcher(val context: Context) {
} }
val medium = Medium(filename, file.absolutePath, dateModified, dateTaken, size, type) val medium = Medium(filename, file.absolutePath, dateModified, dateTaken, size, type)
val isAlreadyAdded = curMedia.any { it.path == file.absolutePath }
if (!isAlreadyAdded) {
curMedia.add(medium) curMedia.add(medium)
//context.scanPath(file.absolutePath)
}
} }
} }
private fun getMediaOnOTG(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, allowRecursion: Boolean) { private fun getMediaOnOTG(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int) {
val files = context.getDocumentFile(folder)?.listFiles() ?: return val files = context.getDocumentFile(folder)?.listFiles() ?: return
val doExtraCheck = context.config.doExtraCheck
val showHidden = context.config.shouldShowHidden
for (file in files) { for (file in files) {
if (shouldStop) { if (shouldStop) {
return break
}
if (file.isDirectory && allowRecursion) {
getMediaOnOTG("$folder${file.name}", curMedia, isPickImage, isPickVideo, filterMedia, allowRecursion)
continue
} }
val filename = file.name val filename = file.name
@ -344,8 +277,11 @@ class MediaFetcher(val context: Context) {
if (isGif && filterMedia and GIFS == 0) if (isGif && filterMedia and GIFS == 0)
continue continue
if (!showHidden && filename.startsWith('.'))
continue
val size = file.length() val size = file.length()
if (size <= 0L && !file.exists()) if (size <= 0L || (doExtraCheck && !file.exists()))
continue continue
val dateTaken = file.lastModified() val dateTaken = file.lastModified()
@ -359,26 +295,7 @@ class MediaFetcher(val context: Context) {
val path = Uri.decode(file.uri.toString().replaceFirst("${context.config.OTGBasePath}%3A", OTG_PATH)) val path = Uri.decode(file.uri.toString().replaceFirst("${context.config.OTGBasePath}%3A", OTG_PATH))
val medium = Medium(filename, path, dateModified, dateTaken, size, type) val medium = Medium(filename, path, dateModified, dateTaken, size, type)
val isAlreadyAdded = curMedia.any { it.path == path }
if (!isAlreadyAdded) {
curMedia.add(medium) curMedia.add(medium)
} }
} }
}
private fun getSortingForFolder(path: String): String {
val sorting = context.config.getFileSorting(path)
val sortValue = when {
sorting and SORT_BY_NAME > 0 -> MediaStore.Images.Media.DISPLAY_NAME
sorting and SORT_BY_SIZE > 0 -> MediaStore.Images.Media.SIZE
sorting and SORT_BY_DATE_MODIFIED > 0 -> MediaStore.Images.Media.DATE_MODIFIED
else -> MediaStore.Images.Media.DATE_TAKEN
}
return if (sorting and SORT_DESCENDING > 0) {
"$sortValue DESC"
} else {
"$sortValue ASC"
}
}
} }

View file

@ -5,7 +5,7 @@ import com.simplemobiletools.commons.extensions.formatSize
import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.helpers.*
import java.io.Serializable import java.io.Serializable
data class Directory(val path: String, val tmb: String, val name: String, var mediaCnt: Int, val modified: Long, val taken: Long, data class Directory(var path: String, var tmb: String, var name: String, var mediaCnt: Int, val modified: Long, val taken: Long,
val size: Long, val isOnSDCard: Boolean) : Serializable, Comparable<Directory> { val size: Long, val isOnSDCard: Boolean) : Serializable, Comparable<Directory> {
companion object { companion object {
private val serialVersionUID = -6553345863555455L private val serialVersionUID = -6553345863555455L

View file

@ -20,6 +20,7 @@
android:paddingRight="@dimen/big_margin" android:paddingRight="@dimen/big_margin"
android:paddingTop="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin"
android:text="@string/no_media_with_filters" android:text="@string/no_media_with_filters"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/> android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyTextView <com.simplemobiletools.commons.views.MyTextView
@ -31,6 +32,7 @@
android:background="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin" android:padding="@dimen/activity_margin"
android:text="@string/change_filters_underlined" android:text="@string/change_filters_underlined"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/> android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyRecyclerView <com.simplemobiletools.commons.views.MyRecyclerView

View file

@ -20,6 +20,7 @@
android:paddingRight="@dimen/big_margin" android:paddingRight="@dimen/big_margin"
android:paddingTop="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin"
android:text="@string/no_media_with_filters" android:text="@string/no_media_with_filters"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/> android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyTextView <com.simplemobiletools.commons.views.MyTextView
@ -31,6 +32,7 @@
android:background="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin" android:padding="@dimen/activity_margin"
android:text="@string/change_filters_underlined" android:text="@string/change_filters_underlined"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/> android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyRecyclerView <com.simplemobiletools.commons.views.MyRecyclerView

View file

@ -15,8 +15,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/medium_margin"
android:layout_marginRight="@dimen/medium_margin"
android:layout_marginTop="@dimen/medium_margin"/> android:layout_marginTop="@dimen/medium_margin"/>
</RelativeLayout> </RelativeLayout>

View file

@ -5,6 +5,7 @@
<string name="edit">تعديل</string> <string name="edit">تعديل</string>
<string name="open_camera">فتح الكاميرا</string> <string name="open_camera">فتح الكاميرا</string>
<string name="hidden">(مخفية)</string> <string name="hidden">(مخفية)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">تثبيت المجلد</string> <string name="pin_folder">تثبيت المجلد</string>
<string name="unpin_folder">ازالة تثبيت الملف</string> <string name="unpin_folder">ازالة تثبيت الملف</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="pin_to_the_top">Pin to the top</string>
@ -21,7 +22,6 @@
<string name="use_default">استخدم الافتراضي</string> <string name="use_default">استخدم الافتراضي</string>
<string name="volume">الصوت</string> <string name="volume">الصوت</string>
<string name="brightness">السطوع</string> <string name="brightness">السطوع</string>
<string name="do_not_ask_again">لا تسأل مرة أخرى في هذه الجلسة</string>
<string name="lock_orientation">غلق الاتجاه</string> <string name="lock_orientation">غلق الاتجاه</string>
<string name="unlock_orientation">فتح الاتجاه</string> <string name="unlock_orientation">فتح الاتجاه</string>
@ -45,9 +45,9 @@
إذا كنت تريد إخفاءها من تطبيقات أخرى أيضا، استخدم ميزة الإخفاء</string> إذا كنت تريد إخفاءها من تطبيقات أخرى أيضا، استخدم ميزة الإخفاء</string>
<string name="remove_all">حذف الكل</string> <string name="remove_all">حذف الكل</string>
<string name="remove_all_description">هل تريد إزالة جميع المجلدات من القائمة المستبعدة؟ لن يؤدي هذا إلى حذف المجلدات</string> <string name="remove_all_description">هل تريد إزالة جميع المجلدات من القائمة المستبعدة؟ لن يؤدي هذا إلى حذف المجلدات</string>
<string name="hidden_folders">Hidden folders</string> <string name="hidden_folders">المجلدات المخفية</string>
<string name="manage_hidden_folders">Manage hidden folders</string> <string name="manage_hidden_folders">إدارة المجلدات المخفية</string>
<string name="hidden_folders_placeholder">Seems like you don\'t have any folders hidden with a \".nomedia\" file.</string> <string name="hidden_folders_placeholder">يبدو أنك لا تملك أي مجلد مخفي بملف \".nomedia\".</string>
<!-- Include folders --> <!-- Include folders -->
<string name="include_folders">المجلدات المضمنة</string> <string name="include_folders">المجلدات المضمنة</string>
@ -130,52 +130,50 @@
<string name="scroll_thumbnails_horizontally">قم بتمرير الصور المصغرة أفقيا</string> <string name="scroll_thumbnails_horizontally">قم بتمرير الصور المصغرة أفقيا</string>
<string name="hide_system_ui_at_fullscreen">إخفاء واجهة النظام تلقائيا عند العرض في وضع ملء الشاشة</string> <string name="hide_system_ui_at_fullscreen">إخفاء واجهة النظام تلقائيا عند العرض في وضع ملء الشاشة</string>
<string name="delete_empty_folders">احذف المجلدات الفارغة بعد حذف محتواها</string> <string name="delete_empty_folders">احذف المجلدات الفارغة بعد حذف محتواها</string>
<string name="allow_photo_gestures">Allow controlling photo brightness with vertical gestures</string> <string name="allow_photo_gestures">السماح بالتحكم في سطوع الصورة باستخدام الإيماءات الرأسية</string>
<string name="allow_video_gestures">السماح بالتحكم في صوت الفيديو والسطوع بالإيماءات العمودية</string> <string name="allow_video_gestures">السماح بالتحكم في صوت الفيديو والسطوع بالإيماءات العمودية</string>
<string name="show_media_count">إظهار عدد لوسائط المجلد على طريقة العرض الرئيسية</string> <string name="show_media_count">إظهار عدد لوسائط المجلد على طريقة العرض الرئيسية</string>
<string name="replace_share_with_rotate">استبدال خيار المشاركة مع خيار تدوير في القائمة ملء الشاشة</string> <string name="replace_share_with_rotate">استبدال خيار المشاركة مع خيار تدوير في القائمة ملء الشاشة</string>
<string name="show_extended_details">عرض تفاصيل موسعة على وسائط ملء الشاشة</string> <string name="show_extended_details">عرض تفاصيل موسعة على وسائط ملء الشاشة</string>
<string name="manage_extended_details">إدارة المجلدات المستبعدة</string> <string name="manage_extended_details">إدارة المجلدات المستبعدة</string>
<string name="one_finger_zoom">Allow one finger zoom at fullscreen media</string> <string name="one_finger_zoom">السماح بتكبير الوسائط بأصبع واحد في وضع ملء الشاشة</string>
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string> <string name="allow_instant_change">السماح بتغيير الوسائط على الفور من خلال النقر على جوانب الشاشة</string>
<string name="replace_zoomable_images">Replace deep zoomable images with better quality ones</string> <string name="replace_zoomable_images">استبدل الصور التي يمكن تكبيرها بعمق باستخدام صور ذات جودة أفضل</string>
<string name="hide_extended_details">Hide extended details when status bar is hidden</string> <string name="hide_extended_details">إخفاء التفاصيل الموسعة عند إخفاء شريط الحالة</string>
<string name="do_extra_check">Do an extra check to avoid showing invalid files</string> <string name="do_extra_check">قم بإجراء فحص إضافي لتجنب إظهار الملفات التالفة</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnails</string> <string name="thumbnails">المصغرات</string>
<string name="fullscreen_media">Fullscreen media</string> <string name="fullscreen_media">وسائط ملء الشاشة</string>
<string name="extended_details">Extended details</string> <string name="extended_details">تفاصيل موسعة</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string> <string name="faq_1_title">كيف يمكنني جعل الاستوديو البسيط معرض الأجهزة الافتراضي؟</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\". <string name="faq_1_text">أولاً ، عليك العثور على المعرض الافتراضي حاليًا في قسم التطبيقات في إعدادات جهازك ، ابحث عن زر يقول مثلا \"فتح افتراضيًا\" ، وانقر عليه ، ثم حدد \"مسح الإعدادات الافتراضية\". في المرة التالية التي ستحاول فيها فتح صورة أو فيديو ، يجب أن تذهب الى منتقي التطبيقات ، حيث يمكنك اختيار تطبيق الاستوديو البسيط وجعله التطبيق الافتراضي.</string>
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">أغلقت التطبيق بكلمة مرور ، لكني نسيت ذلك. ماذا افعل؟</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">يمكنك حلها بطريقتين. يمكنك إما إعادة تثبيت التطبيق ، أو العثور على التطبيق في إعدادات جهازك وتحديد \"مسح البيانات\". سيقوم بإعادة ضبط جميع إعداداتك ، ولن يزيل أي ملفات وسائط.</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">كيف يمكنني جعل الألبوم يظهر دائمًا في الجزء العلوي؟</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_text">يمكنك الضغط لفترة طويلة على الألبوم المطلوب وتحديد أيقونة الدبوس في الإجراء ، والتي سوف تثبيته إلى الأعلى. يمكنك تثبيت عدة مجلدات أيضًا ، وسيتم ترتيب العناصر المثبتة حسب طريقة الفرز الافتراضية.</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_4_title">كيف يمكنني تقديم مقاطع فيديو بسرعة؟</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_text">يمكنك النقر على النصوص الحالية أو أقصى مدة قريبة من شريط السحب ، والتي ستنقل الفيديو إما للخلف أو إلى الأمام.</string>
<string name="faq_4_text">You can 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">ما الفرق بين إخفاء واستبعاد مجلد؟</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_text">يمنع الاستبعاد من عرض المجلد في الاستوديو البسيط فقط ، بينما يقوم بإخفاء بالعمل على مستوى النظام ككل ويقوم بإخفاء المجلد من المعارض الأخرى أيضًا. وهو يعمل عن طريق إنشاء ملف \".nomedia\" فارغ في المجلد المحدد ، والذي يمكنك بعد ذلك إزالته مع أي مدير ملفات أيضًا.</string>
<string name="faq_5_text">Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too.</string> <string name="faq_6_title">لماذا تظهر المجلدات التي تحتوي على ملصقات أو ملصقات موسيقى تغطيها؟</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_text">يمكن أن يحدث ذلك سترى بعض ألبومات غير عادية تظهر. يمكنك استبعادها بسهولة عن طريق الضغط عليها وتحديد \"استبعاد\". في مربع الحوار التالي ، يمكنك بعد ذلك تحديد المجلد الأصلي ، ومن المحتمل أن يؤدي ذلك إلى منع ظهور الألبومات الأخرى ذات الصلة أيضًا.</string>
<string name="faq_6_text">It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too.</string> <string name="faq_7_title">لا يظهر مجلد به صور ، فماذا أفعل؟</string>
<string name="faq_7_title">A folder with images isn\'t showing up, what can I do?</string> <string name="faq_7_text">يمكن أن يكون ذلك لأسباب متعددة ، ولكن حلها أمر سهل. أذهب إلى الإعدادات -> إدارة المجلدات المضمنة ، اضغط علامة الزائد وانتقل إلى المجلد المطلوب.</string>
<string name="faq_7_text">That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder.</string> <string name="faq_8_title">ماذا لو كنت أرغب في رؤية بعض المجلدات الخاصة؟</string>
<string name="faq_8_title">What if I want just a few particular folders visible?</string> <string name="faq_8_text">لا يؤدي إضافة مجلد في \"المجلدات المضمنة\" إلى استبعاد أي شيء تلقائيًا. ما يمكنك فعله هو الذهاب إلى الإعدادات -> إدارة المجلدات المستبعدة ، واستبعاد المجلد الجذر \"/\" ، ثم إضافة المجلدات المطلوبة في الإعدادات -> إدارة المجلدات المضمنة. سيؤدي ذلك إلى إظهار المجلدات المحددة فقط ، حيث أن الاستبعاد والتضمين يكونان متكررين ، وإذا تم استبعاد أحد المجلدات وإدراجه ، فسيظهر.</string>
<string name="faq_8_text">Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. <string name="faq_9_title">الصور بملء الشاشة لها آثار غريبة ، هل يمكنني تحسين الجودة؟</string>
That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up.</string> <string name="faq_9_text">نعم ، هناك تبديل في الإعدادات يقول \"استبدل صورًا ذات زووم عميق بجودة أفضل منها\" ، يمكنك استخدام ذلك. سيؤدي ذلك إلى تحسين جودة الصور ، ولكن ستظهر بشكل واضح عند محاولة التكبير كثيرًا.</string>
<string name="faq_9_title">Fullscreen images have weird artifacts, can I somehow improve the quality?</string> <string name="faq_10_title">هل يمكنني قص الصور باستخدام هذا التطبيق؟</string>
<string name="faq_9_text">Yea, there is a toggle in Settings saying \"Replace deep zoomable images with better quality ones\", you can use that. It will improve the quality of the images, but they will get blurred once you try zooming in too much.</string> <string name="faq_10_text">نعم ، يمكنك اقتصاص الصور في المحرر ، عن طريق سحب زوايا الصورة. يمكنك الوصول إلى المحرر إما عن طريق الضغط لفترة طويلة على صورة مصغرة وتحديد تحرير ، أو تحديد تحرير من العرض بملء الشاشة.</string>
<string name="faq_10_title">Can I crop images with this app?</string>
<string name="faq_10_text">Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">استوديو لعرض الصور والفيديو بدون اعلانات.</string> <string name="app_short_description">استوديو لعرض الصور والفيديو بدون اعلانات.</string>
<string name="app_long_description">أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n <string name="app_long_description">أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n
http://www.simplemobiletools.com</string> https://www.simplemobiletools.com</string>
<!-- <!--
Haven't found some strings? There's more at Haven't found some strings? There's more at

View file

@ -5,6 +5,7 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Obrir càmera</string> <string name="open_camera">Obrir càmera</string>
<string name="hidden">(ocult)</string> <string name="hidden">(ocult)</string>
<string name="excluded">(exclòs)</string>
<string name="pin_folder">Fixar carpeta</string> <string name="pin_folder">Fixar carpeta</string>
<string name="unpin_folder">No fixar carpeta</string> <string name="unpin_folder">No fixar carpeta</string>
<string name="pin_to_the_top">Ancorar a l\'inici</string> <string name="pin_to_the_top">Ancorar a l\'inici</string>
@ -21,7 +22,6 @@
<string name="use_default">Us per defecte</string> <string name="use_default">Us per defecte</string>
<string name="volume">Volum</string> <string name="volume">Volum</string>
<string name="brightness">Brillantor</string> <string name="brightness">Brillantor</string>
<string name="do_not_ask_again">No tornar a preguntar en aquesta sessió</string>
<string name="lock_orientation">Bloquejar orientació</string> <string name="lock_orientation">Bloquejar orientació</string>
<string name="unlock_orientation">Desbloquejar orientació</string> <string name="unlock_orientation">Desbloquejar orientació</string>
@ -179,7 +179,7 @@
No conté ni publicitat ni permisos innecessaris. Es totalment Lliure i proporciona colors personalitzables. No conté ni publicitat ni permisos innecessaris. Es totalment Lliure i proporciona colors personalitzables.
Aquesta aplicació es només una peça d'una sèrie més gran d'aplicacions. Pots trobar la resta a http://www.simplemobiletools.com Aquesta aplicació es només una peça d'una sèrie més gran d'aplicacions. Pots trobar la resta a https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Upravit</string> <string name="edit">Upravit</string>
<string name="open_camera">Spustit fotoaparát</string> <string name="open_camera">Spustit fotoaparát</string>
<string name="hidden">(skryté)</string> <string name="hidden">(skryté)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Připnout složku</string> <string name="pin_folder">Připnout složku</string>
<string name="unpin_folder">Odepnout složku</string> <string name="unpin_folder">Odepnout složku</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="pin_to_the_top">Pin to the top</string>
@ -21,7 +22,6 @@
<string name="use_default">Use default</string> <string name="use_default">Use default</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brightness</string> <string name="brightness">Brightness</string>
<string name="do_not_ask_again">Do not ask again in this session</string>
<string name="lock_orientation">Lock orientation</string> <string name="lock_orientation">Lock orientation</string>
<string name="unlock_orientation">Unlock orientation</string> <string name="unlock_orientation">Unlock orientation</string>
@ -179,7 +179,7 @@
Neobsahuje žádné reklamy ani nepotřebná oprávnění a má otevřený zdrojový kód. Poskytuje možnost změny barev rozhraní. Neobsahuje žádné reklamy ani nepotřebná oprávnění a má otevřený zdrojový kód. Poskytuje možnost změny barev rozhraní.
Táto aplikace je jen jednou ze skupiny aplikací. Všechny tyto aplikace naleznete na http://www.simplemobiletools.com Táto aplikace je jen jednou ze skupiny aplikací. Všechny tyto aplikace naleznete na https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Bearbeiten</string> <string name="edit">Bearbeiten</string>
<string name="open_camera">Kamera öffnen</string> <string name="open_camera">Kamera öffnen</string>
<string name="hidden">(versteckt)</string> <string name="hidden">(versteckt)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Ordner anheften</string> <string name="pin_folder">Ordner anheften</string>
<string name="unpin_folder">Ordner loslösen</string> <string name="unpin_folder">Ordner loslösen</string>
<string name="pin_to_the_top">Oben anheften</string> <string name="pin_to_the_top">Oben anheften</string>
@ -21,7 +22,6 @@
<string name="use_default">Standard</string> <string name="use_default">Standard</string>
<string name="volume">Lautstärke</string> <string name="volume">Lautstärke</string>
<string name="brightness">Helligkeit</string> <string name="brightness">Helligkeit</string>
<string name="do_not_ask_again">Nicht erneut fragen (in dieser Sitzung)</string>
<string name="lock_orientation">Bildschirmausrichtung sperren</string> <string name="lock_orientation">Bildschirmausrichtung sperren</string>
<string name="unlock_orientation">Bildschirmausrichtung entsperren</string> <string name="unlock_orientation">Bildschirmausrichtung entsperren</string>
@ -179,7 +179,7 @@
Beinhaltet keine Werbung oder unnötige Berechtigungen. Sie ist komplett Open Source, alle verwendeten Farben sind anpassbar. Beinhaltet keine Werbung oder unnötige Berechtigungen. Sie ist komplett Open Source, alle verwendeten Farben sind anpassbar.
Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf http://www.simplemobiletools.com Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Simple Gallery</string>
<string name="app_launcher_name">Gallery</string>
<string name="edit">Επεξεργασία</string>
<string name="open_camera">Άνοιγμα κάμερας</string>
<string name="hidden">(κρυμμένο)</string>
<string name="excluded">(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>
<!-- Filter -->
<string name="filter_media">Φιλτράρισμα πολυμέσων</string>
<string name="images">Εικόνες</string>
<string name="videos">Βίντεο</string>
<string name="gifs">GIFs</string>
<string name="no_media_with_filters">Δεν βρέθηκε κανένα αρχείο πολυμέσων με τα επιλεγμένα φίλτρα.</string>
<string name="change_filters_underlined"><u>Αλλαγή φίλτρων</u></string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Αυτή η λειτουργικότητα κρύβει τον φάκελο προσθέτοντας ένα \'.nomedia\' αρχείο μέσα του, θα κρύψει και όλους τους υποφακέλους επίσης. Μπορείτε να τους δείτε με την επιλογή του \'Εμφάνιση κρυφών δεδομένων\' στις Ρυθμίσεις. Συνέχεια?</string>
<string name="exclude">Εξαίρεση</string>
<string name="excluded_folders">Εξαίρεση φακέλων</string>
<string name="manage_excluded_folders">Διαχείριση εξαιρεμένων φακέλων</string>
<string name="exclude_folder_description">Αυτό θα εξαιρέσει το επιλεγμένο μαζί με τους υποφακέλους από το Simple Gallery μόνο. Μπορείτε να διαχειριστείτε τους φακέλους που εξαιρέθηκαν στις Ρυθμίσεις.</string>
<string name="exclude_folder_parent">Να εξαιρεθεί μήπως ο γονικός φάκελος;</string>
<string name="excluded_activity_placeholder">Εξαιρώντας τους φακέλους, θα τους αποκρύψει μαζί με τους υποφακέλους τους μόνο στο Simple Gallery, θα είναι ορατοί στις υπόλοιπες εφαρμογές.\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">Αν υπάρχουν κάποιοι φάκελοι που περιέχουν πολυμέσα, αλλά δεν αναγνωρίζονται από την εφαρμογή, μπορείτε να τους προσθέσετε χειροκίνητα εδώ.\n\nΗ προσθήκη στοιχείων εδώ, δεν θα εξαιρέσει κάποιον άλλο φάκελο.</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="edit_with">Επεξεργασία με</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">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">Include GIFs</string>6
<string name="random_order">Τυχαία σειρά</string>
<string name="use_fade">Use fade animations</string>
<string name="move_backwards">Κίνηση προς τα πίσω</string>
<string name="loop_slideshow">Επανάληψη εμφάνισης διαφανιών</string>
<string name="slideshow_ended">Η εμφάνιση διαφανειών τελείωσε</string>
<string name="no_media_for_slideshow">Δεν βρέθηκαν πολυμέσα για την εμφάνιση διαφανειών</string>
<!-- View types -->
<string name="change_view_type">Αλλαγή τύπου εμφάνισης</string>
<string name="grid">Πλέγμα</string>
<string name="list">Λίστα</string>
<!-- Settings -->
<string name="autoplay_videos">Αυτόματη αναπαραγωγή βίντεο</string>
<string name="toggle_filename">Αλλαγή ορατότητας ονόματος αρχείων</string>
<string name="loop_videos">Επανάληψη βίντεο</string>
<string name="animate_gifs">Εμφάνιση κινούμενων GIFs στα εικονίδια</string>
<string name="max_brightness">Μέγιστη φωτεινότητα κατά την θέαση πλήρους οθόνης</string>
<string name="crop_thumbnails">Κόψιμο εικονιδίων σε τετράγωνα</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">Να επιτρέπεται ο έλεγχος έντασης του βίντεο και φωτεινότητας με κατακόρυφες
κινήσεις (gestures)</string>
<string name="show_media_count">Εμφάνιση του πλήθους των πολυμέσων σε φάκελο, στην κύρια οθόνη</string>
<string name="replace_share_with_rotate">Αντικατάσταση της "Κοινής χρήσης" με "Περιστροφή" στο μενού πλήρους οθόνης</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="replace_zoomable_images">Αντικατάσταση των φωτογραφιών που απαιτούν ζούμ με άλλες καλύτερης ποιότητας</string>
<string name="hide_extended_details">Απόκρυψη λεπτομερειών όταν η μπάρα κατάστασης είναι κρυμμένη</string>
<string name="do_extra_check">Επιπλέον έλεγχος για την αποφυγή εμφάνισης λανθασμένων αρχείων</string>
<!-- Setting sections -->
<string name="thumbnails">Εικονίδια</string>
<string name="fullscreen_media">Πολυμέσα πλήρους οθόνης</string>
<string name="extended_details">Περισσότερες λεπτομέρειες</string>
<!-- FAQ -->
<string name="faq_1_title">Πως μπορώ να κάνω το Simple Gallery προκαθορισμένη εφαρμογή συλλογής πολυμέσων;</string>
<string name="faq_1_text">Αρχικά πρέπει να βρείτε την τρέχουσα προεπιλεγμένη εφαρμογή γκάλερι στις Ρυθμίσεις(τμήμα Εφαρμογών) της συσκευής, αναζητήστε για ένα κουμπί που αναφέρει κάτι σαν \"Άνοιγμα με προεπιλογή\", πατήστε το, μετά επιλέξτε \"Καθαρισμός προεπιλεγμένων\".
Την επόμενη φορά που θα προσπαθήσετε να ανοίξετε μία εικόνα ή ένα βίντεο θα πρέπει να δείτε έναν διάλογο επιλογής εφαρμογών, όπου μπορείτε να επιλέξετε Simple Gallery να το κάνετε προεπιλεγμένη εφαρμογή.</string>
<string name="faq_2_title">Κλείδωσα την εφαρμογή με κωδικό, αλλά τον ξέχασα. Τι μπορώ να κάνω;</string>
<string name="faq_2_text">Υπάρχουν 2 λύσεις. Είτε επανεγκατάσταση της εφαρμογής, ή να εντοπίσετε την εφαρμογή στις ρυθμίσεις της συσκευής και να επιλέξετε \"Καθαρισμό δεδομένων\". Θα επαναφέρει όλες τις ρυθμίσεις και δεν θα σβήσει κάποιο αρχείο πολυμέσου.</string>
<string name="faq_3_title">Πως μπορώ να κάνω ένα άλμπυμ να φαίνεται στην κορυφή;</string>
<string name="faq_3_text">Μπορείτε να πατήσετε παρατεταμένα στο άλμπουμ και να επιλέξετε το εικονίδιο καρφιτσώματος στο μενού, αυτό θα το καρφιτσώσει στην κορυφή. Επίσης μπορείτε να καρφιτσώσετε πολλαπλούς φακέλους, τα καρφιτσωμένα αντικείμενα θα είναι ταξινομημένα με την προεπιλεγμένη μέθοδο.</string>
<string name="faq_4_title">Πως μπορώ να τρέξω μπροστά (fast-forward) τα βίντεο;</string>
<string name="faq_4_text">Μπορείτε να αγγίξετε στο τρέχον ή στο κείμενο μέγιστης διάρκειας κοντά στην μπάρα αναζήτησης, αυτό θα μετακινήσει το βίντεο μπροστά ή πίσω.</string>
<string name="faq_5_title">Ποια είναι διαφορά μεταξύ απόκρυψης και εξαίρεσης ενός φακέλου;</string>
<string name="faq_5_text">Η εξαίρεση δεν επιτρέπει την εμφάνιση του φακέλου μόνο στο Simple Gallery, ενώ η απόκρυψη λειτουργεί σε επίπεδο συστήματος και θα αποκρύψει τον φάκελο και από άλλες εφαρμογές γκάλερι. Λειτουργεί δημιουργώντας ένα άδειο \".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">Η προσθήκη ενός φακέλου στους Συμπεριλαμβανόμενους Φακέλους δεν εξαιρεί αυτόματα τίποτα. Μπορείτε να πάτε στις Ρυμίσεις-> Διαχείριση Εξαιρεμένων Φακέλων, εξαιρέστε τον ριζικό φάκελο \"/\", έπειτα προσθέστε τους φακέλους στο Ρυθμίσεις -> Διαχείριση Συμπεριλαμβανομένων Φακέλων.
Αυτό θα κάνει ορατούς μόνο τους επιλεγμένους φακέλους, καθώς η εξαίρεση και η συμπερίληψη λειτουργούν αναδρομικά και αν ενας φάκελος ανήκει και στα 2, θα εμφανιστεί.</string>
<string name="faq_9_title">Οι εικόνες πλήρους οθόνης έχουν κάποια περίεργα σημάδια, μπορώ κάπως να βελτιώσω την ποιότητα;</string>
<string name="faq_9_text">Ναι υπάρχει ένας διακόπτης στις Ρυθμίσεις με το κείμενο \"Αντικατάσταση των φωτογραφιών που απαιτούν ζούμ με άλλες καλύτερης ποιότητας\", μπορείτε να χρησιμοποιήσετε αυτό. Θα βελτιώσει την ποιότητα των φωτογραφιών, αλλά θα θολώσουν στο μεγάλο ζουμ.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Μία γκάλερι για την προβολή φωτογραφιών και βίντεο χωρίς διαφημίσεις.</string>
<string name="app_long_description">
Μία απλή εφαρμογή για την εμφάνιση φωτογραφιών και βίντεο. Τα αντικείμενα μπορούνα να ταξινομηθούν με βάση την ημερ/νία, το μέγεθος και το όνομα με αύξουσα ή φθίσουσα σειρά, οι φωτογραφίες μπορούν να μεγενθυθούν. Τα αρχεία πολυμέσων εμφανίζονται σε πολλαπλές στήλες ανάλογα με τον μέγεθος της οθόνης, μπορείτε να αλλάξετε το πλήθος των στηλών με τα 2 δάχτυλα(pintch). Μπορούν να μετονομαστούν, να μοιραστούν, να διαγραφούν, να αντιγραφούν και να μετακινηθούν. Οι εικόνας επίσης μπορούν να κοπούν, να γυριστούν, να αντιστραφούν ή να μπούν σαν Wallpaper κατευθείαν από την εφαρμογή.
Η γκάλερι επίσης μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές για προεμφάνιση φωτογραφιών / βίντεο, να μπουν ως επισυνάψεις σε εφαρμογές email κλπ. Είναι τέλεια για καθημερινή χρήση.
Το δικαίωμα δαχτυλικού αποτυπώματος χρειάζεται για το κλείδωμα των κρυφών αντικειμένων ή ολόκληρης της εφαρμογής.
Δεν περιέχει διαφημίσεις ή περιττά δικαιώματα. Έιναι όλη ανοιχτού κώδικα, και δίνει την δυνατότητα επιλογής των χρωμάτων της εφαρμογής.
Αυτή η εφαργμογή είναι κομμάτι μιας σειρά εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com
</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

@ -5,6 +5,7 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Abrir cámara</string> <string name="open_camera">Abrir cámara</string>
<string name="hidden">(oculto)</string> <string name="hidden">(oculto)</string>
<string name="excluded">(excluido)</string>
<string name="pin_folder">Fijar carpeta</string> <string name="pin_folder">Fijar carpeta</string>
<string name="unpin_folder">No fijar carpeta</string> <string name="unpin_folder">No fijar carpeta</string>
<string name="pin_to_the_top">Anclar arriba</string> <string name="pin_to_the_top">Anclar arriba</string>
@ -21,7 +22,6 @@
<string name="use_default">Uso por defecto</string> <string name="use_default">Uso por defecto</string>
<string name="volume">Volumen</string> <string name="volume">Volumen</string>
<string name="brightness">Brillo</string> <string name="brightness">Brillo</string>
<string name="do_not_ask_again">No volver a preguntar en esta sesión</string>
<string name="lock_orientation">Bloquear orientación</string> <string name="lock_orientation">Bloquear orientación</string>
<string name="unlock_orientation">Desbloquear orientación</string> <string name="unlock_orientation">Desbloquear orientación</string>
@ -179,7 +179,7 @@
No contiene publicidad ni permisos innecesarios. Es totalmente libre, proporciona colores personalizables. No contiene publicidad ni permisos innecesarios. Es totalmente libre, proporciona colores personalizables.
Esta aplicación es solamente una pieza de una serie más grande de aplicaciones. Puede encontrar el resto en http://www.simplemobiletools.com Esta aplicación es solamente una pieza de una serie más grande de aplicaciones. Puede encontrar el resto en https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Muokkaa</string> <string name="edit">Muokkaa</string>
<string name="open_camera">Avaa kamera</string> <string name="open_camera">Avaa kamera</string>
<string name="hidden">(piilotettu)</string> <string name="hidden">(piilotettu)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Kiinnitä kansio</string> <string name="pin_folder">Kiinnitä kansio</string>
<string name="unpin_folder">Poista kiinnitys</string> <string name="unpin_folder">Poista kiinnitys</string>
<string name="pin_to_the_top">Kiinnitä ylimmäksi</string> <string name="pin_to_the_top">Kiinnitä ylimmäksi</string>
@ -21,7 +22,6 @@
<string name="use_default">Käytä oletuksia</string> <string name="use_default">Käytä oletuksia</string>
<string name="volume">Äänenvoimakkuus</string> <string name="volume">Äänenvoimakkuus</string>
<string name="brightness">Kirkkaus</string> <string name="brightness">Kirkkaus</string>
<string name="do_not_ask_again">Älä kysy uudestaan tällä istunnolla</string>
<string name="lock_orientation">Lukitse näytönkierto</string> <string name="lock_orientation">Lukitse näytönkierto</string>
<string name="unlock_orientation">Vapauta näytönkierto</string> <string name="unlock_orientation">Vapauta näytönkierto</string>
@ -179,7 +179,7 @@
Ei sisällä mainoksia tai turhia käyttöoikeuksia. Täysin avointa lähdekoodia, tarjoaa muokattavat värit. Ei sisällä mainoksia tai turhia käyttöoikeuksia. Täysin avointa lähdekoodia, tarjoaa muokattavat värit.
Tämä sovellus on vain yksi osa suurempaa kokoelmaa. Löydät loput osoitteesta http://www.simplemobiletools.com Tämä sovellus on vain yksi osa suurempaa kokoelmaa. Löydät loput osoitteesta https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Édition</string> <string name="edit">Édition</string>
<string name="open_camera">Ouvrir appareil photo</string> <string name="open_camera">Ouvrir appareil photo</string>
<string name="hidden">(caché)</string> <string name="hidden">(caché)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Épingler le dossier</string> <string name="pin_folder">Épingler le dossier</string>
<string name="unpin_folder">Désépingler le dossier</string> <string name="unpin_folder">Désépingler le dossier</string>
<string name="pin_to_the_top">Épingler en haut</string> <string name="pin_to_the_top">Épingler en haut</string>
@ -21,7 +22,6 @@
<string name="use_default">Utiliser par défaut</string> <string name="use_default">Utiliser par défaut</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Luminosité</string> <string name="brightness">Luminosité</string>
<string name="do_not_ask_again">Ne pas redemander pour cette session</string>
<string name="lock_orientation">Verrouiller la rotation</string> <string name="lock_orientation">Verrouiller la rotation</string>
<string name="unlock_orientation">Déverrouiller la rotation</string> <string name="unlock_orientation">Déverrouiller la rotation</string>
@ -172,13 +172,13 @@
<string name="app_long_description"> <string name="app_long_description">
Un simple outil pour visionner les photos et les vidéos. Elles peuvent être triées par dates, tailles, noms dans les deux sens (alphabétique comme désalphabétique), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la taille de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être tournées, rognées ou être définies comme fond d\'écran directement depuis l\'application. Un simple outil pour visionner les photos et les vidéos. Elles peuvent être triées par dates, tailles, noms dans les deux sens (alphabétique comme désalphabétique), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la taille de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être tournées, rognées ou être définies comme fond d\'écran directement depuis l\'application.
La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients email, etc... C\'est parfait pour un usage au quotidien. La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients email, etc C\'est parfait pour un usage au quotidien.
L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers cachés et/ou l\'application. L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers cachés et/ou l\'application.
L\'application ne contient ni publicité ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables. L\'application ne contient ni publicité ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables.
Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur http://www.simplemobiletools.com Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Abrir cámara</string> <string name="open_camera">Abrir cámara</string>
<string name="hidden">(oculto)</string> <string name="hidden">(oculto)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Fixar cartafol</string> <string name="pin_folder">Fixar cartafol</string>
<string name="unpin_folder">Soltar cartafol</string> <string name="unpin_folder">Soltar cartafol</string>
<string name="pin_to_the_top">Fixar arriba</string> <string name="pin_to_the_top">Fixar arriba</string>
@ -21,7 +22,6 @@
<string name="use_default">Usar valor por omisión</string> <string name="use_default">Usar valor por omisión</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brillo</string> <string name="brightness">Brillo</string>
<string name="do_not_ask_again">Non preguntar de novo en esta sesión</string>
<string name="lock_orientation">Fixar orientación</string> <string name="lock_orientation">Fixar orientación</string>
<string name="unlock_orientation">Desbloquear orientación</string> <string name="unlock_orientation">Desbloquear orientación</string>
@ -179,7 +179,7 @@
Non contén anuncios nin solicita permisos innecesarios. É de código aberto, con cores personalizadas. Non contén anuncios nin solicita permisos innecesarios. É de código aberto, con cores personalizadas.
Este aplicativo é só unha das pezas de unha grande familia. Pode atopar o resto en http://www.simplemobiletools.com Este aplicativo é só unha das pezas de unha grande familia. Pode atopar o resto en https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -1,17 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Simple Gallery</string> <string name="app_name">Jednostavna galerija</string>
<string name="app_launcher_name">Galerija</string> <string name="app_launcher_name">Galerija</string>
<string name="edit">Uredi</string> <string name="edit">Uredi</string>
<string name="open_camera">Otvori kameru</string> <string name="open_camera">Otvori kameru</string>
<string name="hidden">(skriveno)</string> <string name="hidden">(skriveno)</string>
<string name="pin_folder">Prikači direktorij</string> <string name="excluded">(excluded)</string>
<string name="unpin_folder">Otkači direktorij</string> <string name="pin_folder">Prikvači mapu</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="unpin_folder">Otkvači mapu</string>
<string name="show_all">Prikaži cijeli sadržaj direktorija</string> <string name="pin_to_the_top">Prikvači na vrh</string>
<string name="all_folders">Svi direktoriji</string> <string name="show_all">Prikaži cijeli sadržaj mape</string>
<string name="folder_view">Prebaci se na pogled direktorija</string> <string name="all_folders">Sve mape</string>
<string name="other_folder">Ostali direktoriji</string> <string name="folder_view">Prijeđi na prikaz mape</string>
<string name="other_folder">Ostale mape</string>
<string name="show_on_map">Prikaži na karti</string> <string name="show_on_map">Prikaži na karti</string>
<string name="unknown_location">Nepoznata lokacija</string> <string name="unknown_location">Nepoznata lokacija</string>
<string name="increase_column_count">Povećaj broj stupaca</string> <string name="increase_column_count">Povećaj broj stupaca</string>
@ -21,37 +22,36 @@
<string name="use_default">Koristi zadano</string> <string name="use_default">Koristi zadano</string>
<string name="volume">Glasnoća</string> <string name="volume">Glasnoća</string>
<string name="brightness">Svjetlina</string> <string name="brightness">Svjetlina</string>
<string name="do_not_ask_again">Ne pitaj me više u ovoj sesiji</string> <string name="lock_orientation">Zaključaj rotaciju</string>
<string name="lock_orientation">Zaključaj orijentaciju</string> <string name="unlock_orientation">Otključaj rotaciju</string>
<string name="unlock_orientation">Otključaj orijentaciju</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtriraj slike i videe</string> <string name="filter_media">Filtriranje medija</string>
<string name="images">Slike</string> <string name="images">Slike</string>
<string name="videos">Videi</string> <string name="videos">Video</string>
<string name="gifs">GIFovi</string> <string name="gifs">GIF-ovi</string>
<string name="no_media_with_filters">Nije pronađena nijedna datoteka s odabranim filterom.</string> <string name="no_media_with_filters">Nije pronađena nijedna datoteka s odabranim filtrom.</string>
<string name="change_filters_underlined"><u>Promjeni filter</u></string> <string name="change_filters_underlined"><u>Promijeni filter</u></string>
<!-- Hide / Exclude --> <!-- Hide / Exclude -->
<string name="hide_folder_description">Ova funkcija skriva direktorij dodavajući \'.nomedia\' datoteku u njega. Također će sakriti i sve poddirektorije. Možete ih vidjeti uključivanjem opcije \'Show hidden folders\' u Postavkama. Nastaviti?</string> <string name="hide_folder_description">Ova funkcija skriva mapu dodavanjem \'.nomedia\' datoteke u njega. Također će sakriti i sve podmape. Možete ih vidjeti uključivanjem opcije \'Prikaži skrivene mape\' u Postavkama. Nastaviti?</string>
<string name="exclude">Izostavi</string> <string name="exclude">Izuzmi</string>
<string name="excluded_folders">Izostavljeni direktoriji</string> <string name="excluded_folders">Izuzete mape</string>
<string name="manage_excluded_folders">Upravljaj izostavljenim direktorijima</string> <string name="manage_excluded_folders">Upravljaj izuzetim mapama</string>
<string name="exclude_folder_description">Ovo će izostaviti izabrano zajedno s poddirektorijima samo iz Simple Gallery aplikacije. Možete upravljati izostavljenim direktorijima u Postavkama.</string> <string name="exclude_folder_description">Ovo će isključiti odabir zajedno s podmapama samo iz Jednostavne galerije. Izuzete mape možete upravljati u Postavkama.</string>
<string name="exclude_folder_parent">Izostavi glavni direktorij umjesto?</string> <string name="exclude_folder_parent">Izostavi rađe glavnu mapu?</string>
<string name="excluded_activity_placeholder">Izostavljanje direktorija učiniti će ih nevidljivim zajedno s njihovim poddirektorijima samo u Simple Gallery, ali će oni biti vidljivi u drugim aplikacijama.\n\nAko ih želite sakriti od drugih aplikacija također, koristite Sakrij opciju.</string> <string name="excluded_activity_placeholder">Izuzevši mape učinit će ih zajedno s podmapama skrivene samo u jednostavnoj galeriji, i dalje će biti vidljive u drugim aplikacijama.\n\nAko ih želite sakriti i od drugih aplikacija, upotrijebite funkciju Sakrij.</string>
<string name="remove_all">Ukloni sve</string> <string name="remove_all">Ukloni sve</string>
<string name="remove_all_description">Ukloni sve direktorije iz liste izostavljenih? Ovo neće izbrisati direktorije.</string> <string name="remove_all_description">Želite li ukloniti sve mape s popisa izuzetih? Ovo neće izbrisati mape.</string>
<string name="hidden_folders">Hidden folders</string> <string name="hidden_folders">Skrivene mape</string>
<string name="manage_hidden_folders">Manage hidden folders</string> <string name="manage_hidden_folders">Upravljanje skrivenim mapama</string>
<string name="hidden_folders_placeholder">Seems like you don\'t have any folders hidden with a \".nomedia\" file.</string> <string name="hidden_folders_placeholder">Čini se da nemate skrivenih mapa s \".nomedia\" datotekom.</string>
<!-- Include folders --> <!-- Include folders -->
<string name="include_folders">Dodaj direktorije</string> <string name="include_folders">Uključene mape</string>
<string name="manage_included_folders">Upravljaj dodanim direktorijima</string> <string name="manage_included_folders">Upravljajte uključenim mapama</string>
<string name="add_folder">Dodaj direktorij</string> <string name="add_folder">Dodaj mapu</string>
<string name="included_activity_placeholder">Ako postoji direktorij koji sadrži slike i video sadržaj, ali ga aplikacija ne prepoznaje, možete ih ručno dodati ovdje.\n\nDodavanjem nekoliko stavki ovdje, neće se izostaviti niti jedan drugi direktorij.</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>
<!-- Resizing --> <!-- Resizing -->
<string name="resize">Promjeni veličinu</string> <string name="resize">Promjeni veličinu</string>
@ -59,7 +59,7 @@
<string name="width">Širina</string> <string name="width">Širina</string>
<string name="height">Visina</string> <string name="height">Visina</string>
<string name="keep_aspect_ratio">Zadrži omjer slike</string> <string name="keep_aspect_ratio">Zadrži omjer slike</string>
<string name="invalid_values">Molimo unesite valjanu rezoluciju</string> <string name="invalid_values">Molim unesite valjanu rezoluciju</string>
<!-- Editor --> <!-- Editor -->
<string name="editor">Uređivač</string> <string name="editor">Uređivač</string>
@ -67,38 +67,38 @@
<string name="rotate">Rotiraj</string> <string name="rotate">Rotiraj</string>
<string name="path">Putanja</string> <string name="path">Putanja</string>
<string name="invalid_image_path">Neispravna putanja slike</string> <string name="invalid_image_path">Neispravna putanja slike</string>
<string name="image_editing_failed">Neuspješno uređivanje slike</string> <string name="image_editing_failed">Uređivanje slika nije uspjelo</string>
<string name="edit_image_with">Uredi sliku s:</string> <string name="edit_image_with">Uredi sliku pomoću:</string>
<string name="no_editor_found">Nije pronađen uređivač slika</string> <string name="no_editor_found">Nije pronađen uređivač slika</string>
<string name="unknown_file_location">Nepoznata lokacija datoteke</string> <string name="unknown_file_location">Nepoznata lokacija datoteke</string>
<string name="error_saving_file">Nije moguće presnimiti izvornu datoteku</string> <string name="error_saving_file">Nije moguće presnimiti izvornu datoteku</string>
<string name="rotate_left">Rotiraj lijevo</string> <string name="rotate_left">Rotiraj ulijevo</string>
<string name="rotate_right">Rotiraj desno</string> <string name="rotate_right">Rotiraj udesno</string>
<string name="rotate_one_eighty">Rotiraj za 180º</string> <string name="rotate_one_eighty">Rotiraj za 180º</string>
<string name="flip">Okreni</string> <string name="flip">Okreni</string>
<string name="flip_horizontally">Okreni horizontalno</string> <string name="flip_horizontally">Okreni horizontalno</string>
<string name="flip_vertically">Okreni vertikalno</string> <string name="flip_vertically">Okreni vertikalno</string>
<string name="edit_with">Uredi s</string> <string name="edit_with">Uredi pomoću</string>
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Jednostavna pozadina</string> <string name="simple_wallpaper">Jednostavna pozadina</string>
<string name="set_as_wallpaper">Postavi kao pozadinu</string> <string name="set_as_wallpaper">Postavi kao pozadinu</string>
<string name="set_as_wallpaper_failed">Neuspješno postavljanje pozadine</string> <string name="set_as_wallpaper_failed">Postavljanje pozadine nije uspjelo</string>
<string name="set_as_wallpaper_with">Postavi kao pozadinu s:</string> <string name="set_as_wallpaper_with">Postavi kao pozadinu pomoću:</string>
<string name="setting_wallpaper">Postavljanje pozadine&#8230;</string> <string name="setting_wallpaper">Postavljanje pozadine&#8230;</string>
<string name="wallpaper_set_successfully">Uspješno postavljanje pozadine</string> <string name="wallpaper_set_successfully">Postavljanje pozadine uspješno</string>
<string name="portrait_aspect_ratio">Portretni omjer slike</string> <string name="portrait_aspect_ratio">Portretni omjer slike</string>
<string name="landscape_aspect_ratio">Pejzažni omjer slike</string> <string name="landscape_aspect_ratio">Pejzažni omjer slike</string>
<string name="home_screen">Home screen</string> <string name="home_screen">Početni zaslon</string>
<string name="lock_screen">Lock screen</string> <string name="lock_screen">Zaključani zaslon</string>
<string name="home_and_lock_screen">Home and lock screen</string> <string name="home_and_lock_screen">Početni i zaključani zaslon</string>
<!-- Slideshow --> <!-- Slideshow -->
<string name="slideshow">Dijaprojekcija</string> <string name="slideshow">Dijaprojekcija</string>
<string name="interval">Interval (sekunde):</string> <string name="interval">Interval (sekunde):</string>
<string name="include_photos">Dodaj slike</string> <string name="include_photos">Dodaj slike</string>
<string name="include_videos">Dodaj videe</string> <string name="include_videos">Dodaj videe</string>
<string name="include_gifs">Dodaj GIFove</string> <string name="include_gifs">Dodaj GIF-ove</string>
<string name="random_order">Nasumični redoslijed</string> <string name="random_order">Nasumični redoslijed</string>
<string name="use_fade">Koristi animaciju izbljeđivanja</string> <string name="use_fade">Koristi animaciju izbljeđivanja</string>
<string name="move_backwards">Pomakni unatrag</string> <string name="move_backwards">Pomakni unatrag</string>
@ -107,79 +107,79 @@
<string name="no_media_for_slideshow">Nema datoteka za dijaprojekciju</string> <string name="no_media_for_slideshow">Nema datoteka za dijaprojekciju</string>
<!-- View types --> <!-- View types -->
<string name="change_view_type">Promjeni način pregleda</string> <string name="change_view_type">Promijeni vrstu prikaza</string>
<string name="grid">Rešetka</string> <string name="grid">Mreža</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<!-- Settings --> <!-- Settings -->
<string name="autoplay_videos">Automatsko pokretanje videa</string> <string name="autoplay_videos">Automatsko pokretanje videa</string>
<string name="toggle_filename">Uključi prikaz naziva datoteka</string> <string name="toggle_filename">Uključi prikaz naziva datoteka</string>
<string name="loop_videos">Ponavljanje videa</string> <string name="loop_videos">Ponavljanje videa</string>
<string name="animate_gifs">Prikaz animacije GIFova na sličicama</string> <string name="animate_gifs">Prikaz animacije GIF-ova na sličicama</string>
<string name="max_brightness">Maksimalna svjetlina pri pregledu datoteka</string> <string name="max_brightness">Maksimalna svjetlina pri pregledu datoteka</string>
<string name="crop_thumbnails">Izreži sličice u kvadrate</string> <string name="crop_thumbnails">Izreži sličice u kvadrate</string>
<string name="screen_rotation_by">Rotiraj datoteku u punom zaslonu za</string> <string name="screen_rotation_by">Rotiraj datoteku u punom zaslonu za</string>
<string name="screen_rotation_system_setting">Postavke sustava</string> <string name="screen_rotation_system_setting">Postavke sustava</string>
<string name="screen_rotation_device_rotation">Rotacija uređaja</string> <string name="screen_rotation_device_rotation">Rotacija uređaja</string>
<string name="screen_rotation_aspect_ratio">Omjer slike</string> <string name="screen_rotation_aspect_ratio">Omjer slike</string>
<string name="black_background_at_fullscreen">Black background and status bar at fullscreen media</string> <string name="black_background_at_fullscreen">Crna pozadina i statusna traka na zaslonu na cijelom zaslonu</string>
<string name="scroll_thumbnails_horizontally">Listaj sličice horizontalno</string> <string name="scroll_thumbnails_horizontally">Listaj sličice horizontalno</string>
<string name="hide_system_ui_at_fullscreen">Automatski sakrij UI sustava pri pregledu datoteka</string> <string name="hide_system_ui_at_fullscreen">Automatski sakrij sučelje sustava na medijima na cijelom zaslonu</string>
<string name="delete_empty_folders">Izbriži prazne direktorije nakon brisanja njihovog sadržaja</string> <string name="delete_empty_folders">Izbrišite prazne mape nakon brisanja njihovog sadržaja</string>
<string name="allow_photo_gestures">Allow controlling photo brightness with vertical gestures</string> <string name="allow_photo_gestures">Omogućite kontrolu svjetline fotografije vertikalnim pokretima</string>
<string name="allow_video_gestures">Omogući kontrolu glasnoće videa i svjetline pomoću vertikalnih gesti</string> <string name="allow_video_gestures">Omogući kontrolu glasnoće videa i svjetline pomoću vertikalnih pokreta</string>
<string name="show_media_count">Prikaži broj datoteka u direktoriju na glavnom zaslonu</string> <string name="show_media_count">Prikaz broja medija mapa u glavnom prikazu</string>
<string name="replace_share_with_rotate">Zamjeni Dijeli s Rotiraj pri pregledu datoteka</string> <string name="replace_share_with_rotate">Zamjeni Dijeli s Rotiraj pri pregledu datoteka</string>
<string name="show_extended_details">Prikaži detaljne informacije pri pregledu datoteka</string> <string name="show_extended_details">Prikaži proširene pojedinosti preko medija na cijelom zaslonu</string>
<string name="manage_extended_details">Upravljaj detaljnim informacijama</string> <string name="manage_extended_details">Upravljaj proširenim pojedinostima</string>
<string name="one_finger_zoom">Allow one finger zoom at fullscreen media</string> <string name="one_finger_zoom">Omogući zumiranje jednim prstom na mediju cijelog zaslona</string>
<string name="allow_instant_change">Allow instantly changing media by clicking on screen sides</string> <string name="allow_instant_change">Dopusti trenutačno mijenjanje medija dodirom na stranice zaslona</string>
<string name="replace_zoomable_images">Replace deep zoomable images with better quality ones</string> <string name="replace_zoomable_images">Zamijenite slike s dubokim zumom za one s boljom kvalitetom</string>
<string name="hide_extended_details">Hide extended details when status bar is hidden</string> <string name="hide_extended_details">Sakrij proširene pojedinosti kada je traka statusa skrivena</string>
<string name="do_extra_check">Do an extra check to avoid showing invalid files</string> <string name="do_extra_check">Napravite dodatnu provjeru da biste izbjegli prikazivanje nevažećih datoteka</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Thumbnails</string> <string name="thumbnails">Sličice</string>
<string name="fullscreen_media">Fullscreen media</string> <string name="fullscreen_media">Mediji na cijelom zaslonu</string>
<string name="extended_details">Extended details</string> <string name="extended_details">Proširene pojedinosti</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string> <string name="faq_1_title">Kako mogu postaviti Jednostavnu galeriju kao zadanu galeriju uređaja?</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\". <string name="faq_1_text">Prvo morate pronaći trenutačno zadanu galeriju u odjeljku Aplikacije, u Postavkama uređaja, potražite gumb koji kaže nešto poput opcije \"Otvori prema zadanim postavkama\", kliknite na tu opciju, a zatim odaberite \"Izbriši zadane postavke\".
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> Sljedeći put kada pokušate otvoriti sliku ili video, trebali biste vidjeti alat za odabir aplikacija, gdje možete odabrati Jednostavnu galeriju i postaviti je kao zadanu aplikaciju.</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_title">Zaključao sam aplikaciju zaporkom, ali zaboravio sam. Što mogu učiniti?</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_2_text">Može se riješiti na dva načina. Možete ponovno instalirati aplikaciju ili pronaći aplikaciju u postavkama uređaja i odabrati "\Izbriši podatke\". Navedeno će resetirati sve postavke, ali neće ukloniti nikakve medijske datoteke.</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_title">Kako postići da je album uvijek na vrhu?</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">Dugo pritisnute željeni album i odaberite ikonu igle na akcijskom izborniku, koji će ga pričvrstiti na vrh. Možete prikvačiti više mapa odjednom, prikvačene stavke će biti razvrstane prema zadanom načinu razvrstavanja.</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_title">Kako mogu ubrzati video?</string>
<string name="faq_4_text">You can click on the current or max duration texts near the seekbar, that will move the video either backward, or forward.</string> <string name="faq_4_text">Možete pritisnuti trenutačno vrijeme ili ukupno trajanje videozapisa na traci napretka, videozapis će se prema Vašem izboru pomicati unatrag ili prema naprijed.</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_title">Koja je razlika između skrivanja i izuzimanja mape?</string>
<string name="faq_5_text">Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too.</string> <string name="faq_5_text">Izuzimanje sprječava prikaz mape samo u Jednostavnoj galeriji, a skrivanje radi na razini sustava i skriva mapu iz drugih galerija. Djeluje stvaranjem praznih \".nomedia\" datoteka u zadanoj mapi, koju možete ukloniti pomoću bilo kojeg upraviteljem datoteka.</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_title">Zašto se prikazuju mape s naslovnicama albuma i minijaturama slika?</string>
<string name="faq_6_text">It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too.</string> <string name="faq_6_text">Može se dogoditi da vidite neke neobične albume. Možete ih jednostavno izuzeti tako da ih dugo pritisnete i odaberete Izuzmi. U sljedećem dijaloškom okviru možete odabrati glavnu mapu, čime će te spriječiti prikazivanje ostalih povezanih albuma.</string>
<string name="faq_7_title">A folder with images isn\'t showing up, what can I do?</string> <string name="faq_7_title">Mapa s fotografijama se ne prikazuje, što mogu učiniti?</string>
<string name="faq_7_text">That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder.</string> <string name="faq_7_text">To može imati više razloga, ali rješenje je jednostavno. Samo idite u Postavke -> Upravljanje uključenim mapama, odaberite ikonu Plus i prijeđite na traženu mapu.</string>
<string name="faq_8_title">What if I want just a few particular folders visible?</string> <string name="faq_8_title">Što ako želim vidjeti samo nekoliko određenih mapa?</string>
<string name="faq_8_text">Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. <string name="faq_8_text">Dodavanje direktorija u uključene mape ne izuzima ništa automatski. Da biste to učinili, idite na "Postavke", a zatim "Upravljanje izuzetim mapama", izuzmite korijenski direktorij \"/\", a zatim dodajte željene direktorije u "Postavke" i "Upravljanje uključenim mapama".
That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up.</string> Samo će odabrane mape biti vidljive, jer su izuzimanja i uključivanja rekurzivni, a ako je mapa isključena i uključena, bit će prikazana.</string>
<string name="faq_9_title">Fullscreen images have weird artifacts, can I somehow improve the quality?</string> <string name="faq_9_title">Slike na cijelom zaslonu imaju čudne artefakte, mogu li nekako poboljšati kvalitetu?</string>
<string name="faq_9_text">Yea, there is a toggle in Settings saying \"Replace deep zoomable images with better quality ones\", you can use that. It will improve the quality of the images, but they will get blurred once you try zooming in too much.</string> <string name="faq_9_text">Da, u "Postavkama" postoji opcija "Zamjena duboko zumiranih slika s kvalitetnijim slikama", ali slike će biti zamućene ako zumirate previše.</string>
<string name="faq_10_title">Can I crop images with this app?</string> <string name="faq_10_title">Mogu li izrezati slike pomoću ove aplikacije?</string>
<string name="faq_10_text">Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view.</string> <string name="faq_10_text">Da, možete obrezati slike u uređivaču povlačenjem uglova. Možete doći do uređivača dugim pritiskom na minijaturu slike i odabirom Uređivanje ili odabirom Uredi iz prikaza preko cijelog zaslona.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Galerija za pregledavanje slika, GIFova i videa bez reklama.</string> <string name="app_short_description">Galerija za gledanje fotografija i videozapisa bez oglasa.</string>
<string name="app_long_description"> <string name="app_long_description">
Jednostavan alat za pregled slika, GIFova i videa. Datoteke možete sortirati po datumu, veličini, imenu i to uzlazno i silazno. Također možete zumirati slike. Medijski sadržaj se prikazuje u višestrukim stupcima ovisno o veličini ekrana, a vi samo možete birati broj stupaca s gestom štipkanja. Možete preimenovati, dijeliti, brisati, kopirati, premještati datoteke. Slike također možete izrezati, rotirati ili postaviki kao pozadinu ekrana, odmah iz aplikacije. Jednostavan alat za pregled slika, GIFova i videa. Datoteke možete sortirati po datumu, veličini, imenu i to uzlazno i silazno. Također možete zumirati slike. Medijski sadržaj se prikazuje u višestrukim stupcima ovisno o veličini ekrana, a vi samo možete birati broj stupaca s gestom štipkanja. Možete preimenovati, dijeliti, brisati, kopirati, premještati datoteke. Slike također možete izrezati, rotirati ili postaviki kao pozadinu ekrana, odmah iz aplikacije.
Galerija se također može koristiti za pregledavanje slika i videa u drugim aplikacijama, prikačivanja datoteka u e-mail aplikacije itd. Savršeno za svakodnevno korištenje. Galerija se također može koristiti za pregledavanje slika i videa u drugim aplikacijama, prikačivanja datoteka u e-mail aplikacije itd. Savršeno za svakodnevno korištenje.
The fingerprint permission is needed for locking either hidden item visibility, or the whole app. Dopuštenje otiska prsta je potrebno za zaključavanje prikaza skrivene stavke ili cijele aplikacije.
Ne sadrži reklame niti nepotrebna dopuštenja. Aplikacije je otvorenog koda, te pruža mogućnost promjene boja. Ne sadrži oglase ili nepotrebne dozvole. Aplikacije je otvorenog koda, pruža prilagodljive boje.
Ova aplikacija je samo dio veće skupine aplikacije. Ostatak možete pronaći na http://www.simplemobiletools.com Ova je aplikacija samo dio većeg broja aplikacija. Možete pronaći ostatak na https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Edit</string> <string name="edit">Edit</string>
<string name="open_camera">Open camera</string> <string name="open_camera">Open camera</string>
<string name="hidden">(hidden)</string> <string name="hidden">(hidden)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Pin folder</string> <string name="pin_folder">Pin folder</string>
<string name="unpin_folder">Unpin folder</string> <string name="unpin_folder">Unpin folder</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="pin_to_the_top">Pin to the top</string>
@ -21,7 +22,6 @@
<string name="use_default">Use default</string> <string name="use_default">Use default</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brightness</string> <string name="brightness">Brightness</string>
<string name="do_not_ask_again">Do not ask again in this session</string>
<string name="lock_orientation">Lock orientation</string> <string name="lock_orientation">Lock orientation</string>
<string name="unlock_orientation">Unlock orientation</string> <string name="unlock_orientation">Unlock orientation</string>
@ -179,7 +179,7 @@
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Modifica</string> <string name="edit">Modifica</string>
<string name="open_camera">Apri fotocamera</string> <string name="open_camera">Apri fotocamera</string>
<string name="hidden">(nascosta)</string> <string name="hidden">(nascosta)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Blocca cartella</string> <string name="pin_folder">Blocca cartella</string>
<string name="unpin_folder">Sblocca cartella</string> <string name="unpin_folder">Sblocca cartella</string>
<string name="pin_to_the_top">Fissa in alto</string> <string name="pin_to_the_top">Fissa in alto</string>
@ -21,7 +22,6 @@
<string name="use_default">Usa predefinita</string> <string name="use_default">Usa predefinita</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Luminosità</string> <string name="brightness">Luminosità</string>
<string name="do_not_ask_again">Non chiedere nuovamente in questa sessione</string>
<string name="lock_orientation">Blocca orientamento</string> <string name="lock_orientation">Blocca orientamento</string>
<string name="unlock_orientation">Sblocca orientamento</string> <string name="unlock_orientation">Sblocca orientamento</string>
@ -179,7 +179,7 @@
Non contiene pubblicità o autorizzazioni non necessarie. È completamente opensource, offre colori personalizzabili. Non contiene pubblicità o autorizzazioni non necessarie. È completamente opensource, offre colori personalizzabili.
Questa app è solo una piccola parte di una grande serie di altre app. Puoi trovarle tutte su http://www.simplemobiletools.com Questa app è solo una piccola parte di una grande serie di altre app. Puoi trovarle tutte su https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">編集</string> <string name="edit">編集</string>
<string name="open_camera">カメラを開く</string> <string name="open_camera">カメラを開く</string>
<string name="hidden">(非表示)</string> <string name="hidden">(非表示)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">フォルダをピン留めする</string> <string name="pin_folder">フォルダをピン留めする</string>
<string name="unpin_folder">フォルダのピン留めを外す</string> <string name="unpin_folder">フォルダのピン留めを外す</string>
<string name="pin_to_the_top">トップにピン留めする</string> <string name="pin_to_the_top">トップにピン留めする</string>
@ -21,7 +22,6 @@
<string name="use_default">デフォルトに戻す</string> <string name="use_default">デフォルトに戻す</string>
<string name="volume">音量</string> <string name="volume">音量</string>
<string name="brightness">明るさ</string> <string name="brightness">明るさ</string>
<string name="do_not_ask_again">このセッションでは再度たずねない</string>
<string name="lock_orientation">画面の向きを固定する</string> <string name="lock_orientation">画面の向きを固定する</string>
<string name="unlock_orientation">向きの固定を解除する</string> <string name="unlock_orientation">向きの固定を解除する</string>
@ -179,7 +179,7 @@
広告や不要なアクセス許可は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。 広告や不要なアクセス許可は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。
このアプリは、大きな一連のアプリの一つです。 他のアプリは http://www.simplemobiletools.com で見つけることができます このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">편집</string> <string name="edit">편집</string>
<string name="open_camera">카메라 열기</string> <string name="open_camera">카메라 열기</string>
<string name="hidden">(숨기기)</string> <string name="hidden">(숨기기)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">폴더 고정</string> <string name="pin_folder">폴더 고정</string>
<string name="unpin_folder">폴더 고정 해제</string> <string name="unpin_folder">폴더 고정 해제</string>
<string name="pin_to_the_top">상단에 고정</string> <string name="pin_to_the_top">상단에 고정</string>
@ -21,7 +22,6 @@
<string name="use_default">기본값 사용</string> <string name="use_default">기본값 사용</string>
<string name="volume">볼륨</string> <string name="volume">볼륨</string>
<string name="brightness">밝기</string> <string name="brightness">밝기</string>
<string name="do_not_ask_again">다시 물어보지 않음</string>
<string name="lock_orientation">사진회전 잠금</string> <string name="lock_orientation">사진회전 잠금</string>
<string name="unlock_orientation">사진회전 해제</string> <string name="unlock_orientation">사진회전 해제</string>
@ -183,7 +183,7 @@
광고가 포함되어 있거나, 불필요한 권한을 요청하지 않습니다. 이 앱의 모든 소스는 오픈소스이며, 사용자가 직접 애플리케이션의 컬러를 설정 할 수 있습니다. 광고가 포함되어 있거나, 불필요한 권한을 요청하지 않습니다. 이 앱의 모든 소스는 오픈소스이며, 사용자가 직접 애플리케이션의 컬러를 설정 할 수 있습니다.
이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 http://www.simplemobiletools.com 에서 찾아보실 수 있습니다. 이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 https://www.simplemobiletools.com 에서 찾아보실 수 있습니다.
</string> </string>
<!-- <!--

189
app/src/main/res/values-lt Normal file
View file

@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Paprasta Galerija</string>
<string name="app_launcher_name">Galerija</string>
<string name="edit">Redaguoti</string>
<string name="open_camera">Atidaryti fotoaparatą</string>
<string name="hidden">(paslėpta)</string>
<string name="pin_folder">Prisegti aplanką</string>
<string name="unpin_folder">Atsegti aplanką</string>
<string name="pin_to_the_top">Prisegti į viršų</string>
<string name="show_all">Rodyti visų aplankų turinį</string>
<string name="all_folders">Visi aplankai</string>
<string name="folder_view">Perjungti į aplanko rodymą</string>
<string name="other_folder">Kitas aplankas</string>
<string name="show_on_map">Rodyti žemėlapyje</string>
<string name="unknown_location">Nežinoma vieta</string>
<string name="increase_column_count">Padidinti stulpelių skaičių</string>
<string name="reduce_column_count">Sumažinti stulpelių skaičių</string>
<string name="change_cover_image">Pakeisti viršelio atvaizdą</string>
<string name="select_photo">Pasirinkti nuotrauką</string>
<string name="use_default">Naudoti numatytąjį</string>
<string name="volume">Garsas</string>
<string name="brightness">Ryškumas</string>
<string name="do_not_ask_again">Šiame seanse daugiau neklausti</string>
<string name="lock_orientation">Užrakinti orientaciją</string>
<string name="unlock_orientation">Atrakinti orientaciją</string>
<!-- Filter -->
<string name="filter_media">Filtruoti mediją</string>
<string name="images">Atvaizdai</string>
<string name="videos">Vaizdo įrašai</string>
<string name="gifs">GIF'ai</string>
<string name="no_media_with_filters">Su pasirinktais filtrais nerasta medijos bylų.</string>
<string name="change_filters_underlined"><u>Pakeisti filtrus</u></string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Ši funkcija slepia aplanką, pridedant į jį \ '. Nomedia \' bylą, jis taip pat slėps visus subaplankus. Galite juos peržiūrėti, perjunkite parinktį "Rodyti paslėptus elementus \" skiltyje Nustatymai. Tęsti?</string>
<string name="exclude">Išskirti</string>
<string name="excluded_folders">Išskirti aplankai</string>
<string name="manage_excluded_folders">Tvarkyti išskirtus aplankus</string>
<string name="exclude_folder_description">Tai pašalins pasirinkimą su jo aplankais tik iš "Paprastos galerijos". Galite valdyti išskirtus aplankus skiltyje "Nustatymai".</string>
<string name="exclude_folder_parent">Vietoj to išskirti tėvinį?</string>
<string name="excluded_activity_placeholder">Išskyrus aplankus, jie bus sujungti su jų aplankais paslėpti tik "Paprastoje galerijoje", jie vis tiek bus matomi kitose programose. \ N \ nJei norite paslėpti juos ir iš kitų programų, naudokite funkciją "Slėpti".</string>
<string name="remove_all">Pašalinti visus</string>
<string name="remove_all_description">Pašalinti visus aplankus iš išskirtųjų sąrašo? Tai neištrins aplankų.</string>
<string name="hidden_folders">Paslėpti aplankai</string>
<string name="manage_hidden_folders">Tvarkyti paslėptus aplankus</string>
<string name="hidden_folders_placeholder">Atrodo, kad neturite jokių aplankų, paslėptų \ ". Nomedia \" bylos.</string>
<!-- Include folders -->
<string name="include_folders">Įtraukti aplankai</string>
<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>
<!-- Resizing -->
<string name="resize">Keisti dydį</string>
<string name="resize_and_save">Pakeisti pasirinkto dydį ir išsaugoti</string>
<string name="width">Plotis</string>
<string name="height">Aukštis</string>
<string name="keep_aspect_ratio">Išlaikyti proporcijas</string>
<string name="invalid_values">Prašome įvesti tinkamą raišką</string>
<!-- Editor -->
<string name="editor">Redaktorius</string>
<string name="save">Saugoti</string>
<string name="rotate">Sukti</string>
<string name="path">Kelias</string>
<string name="invalid_image_path">Netinkamas atvaizdo kelias</string>
<string name="image_editing_failed">Atvaizdo redagavimas nepavyko</string>
<string name="edit_image_with">Redaguoti atvaizdą su:</string>
<string name="no_editor_found">Nerasta atvaizdų redagavimo programėlės</string>
<string name="unknown_file_location">Nežinoma bylos vieta</string>
<string name="error_saving_file">Negalima perrašyti šaltinio bylos</string>
<string name="rotate_left">Sukti į kairę</string>
<string name="rotate_right">Sukti į dešinę</string>
<string name="rotate_one_eighty">Sukti 180º</string>
<string name="flip">Apversti</string>
<string name="flip_horizontally">Apversti horizontaliai</string>
<string name="flip_vertically">Apversti vertikaliai</string>
<string name="edit_with">Redaguoti su</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Paprastas darbalaukio fonas</string>
<string name="set_as_wallpaper">Nustatyti kaip darbalaukio foną</string>
<string name="set_as_wallpaper_failed">Nustatyti darbalaukio fono nepavyko</string>
<string name="set_as_wallpaper_with">Nustatyti kaip darbalaukio paveikslėlį su:</string>
<string name="setting_wallpaper">Nustatomas darbalaukio paveikslėlis&#8230;</string>
<string name="wallpaper_set_successfully">Darbalaukio foną nustatyti pavyko</string>
<string name="portrait_aspect_ratio">Portreto formato santykis</string>
<string name="landscape_aspect_ratio">Peizažo formato santykis</string>
<string name="home_screen">Pagrindinis ekranas</string>
<string name="lock_screen">Užrakto ekranas</string>
<string name="home_and_lock_screen">Pagrindinis ir užrakto ekranas</string>
<!-- Slideshow -->
<string name="slideshow">Skaidrių demonstracija</string>
<string name="interval">Intervalas (sekundėmis):</string>
<string name="include_photos">Įtraukti nuotraukas</string>
<string name="include_videos">Įtraukti vaizdo įrašus</string>
<string name="include_gifs">Itraukti GIF'us</string>
<string name="random_order">Atsitiktinė tvarka</string>
<string name="use_fade">Naudoti išblukimo animacijas</string>
<string name="move_backwards">Sukti atgal</string>
<string name="loop_slideshow">Klipuoti skaidrių demonstraciją</string>
<string name="slideshow_ended">Skaidrių demonstracija pasibaigė</string>
<string name="no_media_for_slideshow">Nerasta medijos skaidrių demonstracijai</string>
<!-- View types -->
<string name="change_view_type">Keisti peržiūros tipą</string>
<string name="grid">Tinklelis</string>
<string name="list">Sąrašas</string>
<!-- Settings -->
<string name="autoplay_videos">Groti vaizdo įrašus automatiškai</string>
<string name="toggle_filename">Perjungti bylos pavadinimo matomumą</string>
<string name="loop_videos">Klipuoti vaizdo įrašus</string>
<string name="animate_gifs">Animuoti GIF'us miniatiūrose</string>
<string name="max_brightness">Maksimalus ryškumas, kai medija peržiūrima viso ekrano rėžimu</string>
<string name="crop_thumbnails">Apkirpti miniatiūras kvadratu</string>
<string name="screen_rotation_by">Sukti viso ekrano mediją pagal</string>
<string name="screen_rotation_system_setting">Sistemos nustatymai</string>
<string name="screen_rotation_device_rotation">Įrenginio sukimas</string>
<string name="screen_rotation_aspect_ratio">Padėties santykis</string>
<string name="black_background_at_fullscreen">Juodasis fonas ir būsenos juosta per visą ekraną</string>
<string name="scroll_thumbnails_horizontally">Slinkti miniatiūras horizontaliai</string>
<string name="hide_system_ui_at_fullscreen">Automatiškai slėpti sistemos vartotojo sąsają per visą ekraną</string>
<string name="delete_empty_folders">Ištrinti tuščius aplankus po jų turinio ištrynimo</string>
<string name="allow_photo_gestures">Leisti valdyti nuotraukų ryškumą vertikaliais gestais</string>
<string name="allow_video_gestures">Leisti kontroliuoti vaizdo įrašo garsumą ir ryškumą vertikaliais gestais</string>
<string name="show_media_count">Rodyti aplanko bylų skaičių pagrindiniame rodinyje</string>
<string name="replace_share_with_rotate">Pakeisti bendrinti su rotacija viso ekrano meniu</string>
<string name="show_extended_details">Rodyti išsamią informaciją per visą ekraną</string>
<string name="manage_extended_details">Tvarkykite išsamią informaciją</string>
<string name="one_finger_zoom">Leisti vienu pirštu pritraukti viso ekrano rėžime</string>
<string name="allow_instant_change">Leiskite akimirksniu keisti mediją spustelėdami ekrano šonuose</string>
<string name="replace_zoomable_images">Pakeisti giliai priartinamus atvaizdus su geresnės kokybės atvaizdais</string>
<string name="hide_extended_details">Slėpti išsamią informaciją, kai būsenos juosta yra paslėpta</string>
<string name="do_extra_check">Atlikti papildomą patikrinimą, kad nebūtų rodomos sugadintos bylos</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatiūros</string>
<string name="fullscreen_media">Viso ekrano medija</string>
<string name="extended_details">Išsami informacija</string>
<!-- FAQ -->
<string name="faq_1_title">Kaip galiu padaryti paprastą galeriją kaip numatytąją įrenginio galeriją?</string>
<string name="faq_1_text">Pirmiausia turite rasti numatytąją galeriją savo prietaiso nustatymų skyriuje "Programėlės", ieškoti mygtuko panašaus į \ "Atidaryti pagal numatytuosius \", spustelėkite jį, tada pasirinkite \ "Išvalyti numatytuosius \".
Kitą kartą, kai bandysite atidaryti atvaizdą ar vaizdo įrašą, turėtumėte pamatyti programos parinkiklį, kuriame galite pasirinkti Paprastą galeriją ir padaryti ją numatytaja.</string>
<string name="faq_2_title">Aš užrakinau programėlę su slaptažodžiu, bet pamiršau jį. Ką aš galiu padaryti?</string>
<string name="faq_2_text">Tai galite išspręsti dviem būdais. Galite arba iš naujo įdiegti programėlę, arba rasti programėlę savo įrenginio nustatymuose ir pasirinkti \ "Išvalyti duomenis \". Jis iš naujo nustatys visus jūsų nustatymus, bet nepašalins jokių medijos bylų.</string>
<string name="faq_3_title">Kaip aš galiu padaryti albumą visada rodomą viršuje?</string>
<string name="faq_3_text">Galite ilgai paspausti norimą albumą ir pasirinkti "Prisegti" piktogramą, esančią meniu "Veiksmo meniu", viršuje. Galite prisegti kelis aplankus, prisegti elementai bus rūšiuojami pagal numatytąjį rūšiavimo metodą.</string>
<string name="faq_4_title">Kaip galėčiau greitai prasukti vaizdo įrašus?</string>
<string name="faq_4_text">Galite spustelėti tekstus šalia slinkties juostos, kad būtų perkeltas vaizdo įrašas atgal arba į priekį.</string>
<string name="faq_5_title">Koks skirtumas tarp slėpimo ir išskyrimo iš aplanko?</string>
<string name="faq_5_text">Išskyrimas neleidžia rodyti aplanko tik paprastoje galerijoje, tuo tarpu slėpimas slepia aplanką iš kitų galerijų. Tai veikia, sukuriant tuščią \ ". Nomedia \" bylą tam tikrame aplanke, kurį vėliau galite pašalinti bet kuria bylų tvarkykle.</string>
<string name="faq_6_title">Kodėl pasirodo aplankai su muzikos viršeliu ar lipdukais?</string>
<string name="faq_6_text">Gali atsitikti taip, kad pamatysite keletą neįprastų albumų. Galite lengvai juos pašalinti, ilgai paspaudę juos ir pasirinkdami "Išskirti". Kitame dialoge galite pasirinkti tėvinį aplanką, greičiausiai bus išvengta kitų panašių albumų.</string>
<string name="faq_7_title">Aplankas su nuotraukomis nerodomas, ką aš galiu padaryti?</string>
<string name="faq_7_text">Tai gali būti dėl keletos priežasčių, tačiau sprendimas yra lengvas. Tiesiog eikite į Nustatymai -> Tvarkyti įtrauktus aplankus, pasirinkite "Plius" ir eikite į reikiamą aplanką.</string>
<string name="faq_8_title">Ką daryti, jei noriu matyti tik keletą konkrečių aplankų?</string>
<string name="faq_8_text">Pridėjus aplanką į "Įtraukti aplankai", automatiškai neįtraukiama nieko. Ką jūs galite padaryti, eikite į Nustatymai -> Tvarkyti išskirtus aplankus, išskirkite šakninį aplanką \ "/ \", tada pridėkite norimus aplankus, esančius Nustatymai -> Tvarkyti įtrauktas aplankas.
Tai leis matyti tik tuos pasirinktus aplankus, nes abu atmetami ir įtraukti yra rekursyvūs, ir jei aplankas yra išskirtas ir įtrauktas, jis bus rodomas.</string>
<string name="faq_9_title">Viso ekrano atvaizdai turi keistus artefaktus, galiu kokiu nors būdu pagerinti kokybę?</string>
<string name="faq_9_text">Taip, "Nustatymuose" perjunkite \ "Pakeisti giliuosius, patobulintus vaizdus geresnės kokybės vaizdais \", galite tai naudoti. Tai pagerins vaizdų kokybę, tačiau kai jūs pabandysite per daug padidinti vaizdą, jie bus neryškūs.</string>
<string name="faq_10_title">Ar galiu apkarpyti vaizdus naudojant šią programėlę?</string>
<string name="faq_10_text">Taip, redaguodami vaizdus, galite juos apkarpyti, vilkdami vaizdo kampus. Galite patekti į redaktorių ilgai paspaudę vaizdo miniatiūrą ir pasirinkę "Redaguoti" arba iš viso ekrano rodinio pasirinkę "Redaguoti".</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Galerija, skirta peržiūrėti nuotraukas ir vaizdo įrašus be reklamų.</string>
<string name="app_long_description">
Paprastas įrankis, naudojamas peržiūrėti nuotraukas ir vaizdo įrašus. Elementus galima suskirstyti pagal datą, dydį, pavadinimą tiek didėjančia, tiek mažėjančia tvarka, nuotraukos gali būti priartintos. Vaizdo bylos rodomos keliuose stulpeliuose, priklausomai nuo ekrano dydžio, kolonėlių skaičių galite keisti naudodami gesinimo gestus. Jas galima pervardyti, bendrinti, ištrinti, kopijuoti, perkelti. Vaizdus taip pat galima apkarpyti, pasukti, apversti arba nustatyti kaip "Darbalaukio paveikslėliu" tiesiai iš programėlės.
Galerija taip pat siūloma trečiosioms šalims peržiūrėti atvaizdus / vaizdo įrašus, pridėti priedus el. Pašto klientams ir pan. Tai idealu kasdieniam naudojimui.
Pirštų atspaudų leidimas reikalingas norint užblokuoti paslėptą elemento matomumą arba visą programą.
Neturi reklamų ar nereikalingų leidimų. Programėlė visiškai atviro kodo, yra galimybė keisti spalvas.
Ši programėle yra vienina iš keletos mūsų programėlių. Likusias Jūs galite rasti čia http://www.simplemobiletools.com
</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

@ -5,6 +5,7 @@
<string name="edit">Rediger</string> <string name="edit">Rediger</string>
<string name="open_camera">Åpne kamera</string> <string name="open_camera">Åpne kamera</string>
<string name="hidden">(skjult)</string> <string name="hidden">(skjult)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Fest mappe</string> <string name="pin_folder">Fest mappe</string>
<string name="unpin_folder">Løsne mappe</string> <string name="unpin_folder">Løsne mappe</string>
<string name="pin_to_the_top">Fest til toppen</string> <string name="pin_to_the_top">Fest til toppen</string>
@ -21,7 +22,6 @@
<string name="use_default">Bruk standard</string> <string name="use_default">Bruk standard</string>
<string name="volume">Volum</string> <string name="volume">Volum</string>
<string name="brightness">Lysstyrke</string> <string name="brightness">Lysstyrke</string>
<string name="do_not_ask_again">Ikke spør igjen i denne økten</string>
<string name="lock_orientation">Lås skjermorientering</string> <string name="lock_orientation">Lås skjermorientering</string>
<string name="unlock_orientation">Lås opp skjermorientering</string> <string name="unlock_orientation">Lås opp skjermorientering</string>
@ -179,7 +179,7 @@
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Bewerken</string> <string name="edit">Bewerken</string>
<string name="open_camera">Camera</string> <string name="open_camera">Camera</string>
<string name="hidden">(verborgen)</string> <string name="hidden">(verborgen)</string>
<string name="excluded">(uitgesloten)</string>
<string name="pin_folder">Map vastzetten</string> <string name="pin_folder">Map vastzetten</string>
<string name="unpin_folder">Map losmaken</string> <string name="unpin_folder">Map losmaken</string>
<string name="pin_to_the_top">Bovenaan vastzetten</string> <string name="pin_to_the_top">Bovenaan vastzetten</string>
@ -21,7 +22,6 @@
<string name="use_default">Standaard gebruiken</string> <string name="use_default">Standaard gebruiken</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Helderheid</string> <string name="brightness">Helderheid</string>
<string name="do_not_ask_again">Onthouden voor deze sessie</string>
<string name="lock_orientation">Schermoriëntatie vergrendelen</string> <string name="lock_orientation">Schermoriëntatie vergrendelen</string>
<string name="unlock_orientation">Schermoriëntatie ontgrendelen</string> <string name="unlock_orientation">Schermoriëntatie ontgrendelen</string>
@ -179,7 +179,7 @@
Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast. Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast.
Deze app is onderdeel van een grotere verzameling. Vind de andere apps op http://www.simplemobiletools.com Deze app is onderdeel van een grotere verzameling. Vind de andere apps op https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Prosta Galeria</string> <string name="app_name">Prosta Galeria</string>
   <string name="app_launcher_name">Prosta Galeria</string>    <string name="app_launcher_name">Galeria</string>
<string name="edit">Edytuj</string> <string name="edit">Edytuj</string>
<string name="open_camera">Uruchom aplikację aparatu</string> <string name="open_camera">Uruchom aplikację aparatu</string>
<string name="hidden">(ukryty)</string> <string name="hidden">(ukryty)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Przypnij folder</string> <string name="pin_folder">Przypnij folder</string>
<string name="unpin_folder">Wypakuj folder</string> <string name="unpin_folder">Wypakuj folder</string>
   <string name="pin_to_the_top">Przypnij na górze</string>    <string name="pin_to_the_top">Przypnij na górze</string>
@ -21,7 +22,6 @@
<string name="use_default">Użyj domyślnej</string> <string name="use_default">Użyj domyślnej</string>
<string name="volume">Głośność</string> <string name="volume">Głośność</string>
<string name="brightness">Jasność</string> <string name="brightness">Jasność</string>
<string name="do_not_ask_again">Nie pytaj więcej w tej sesji</string>
<string name="lock_orientation">Zablokuj orientację ekranu</string> <string name="lock_orientation">Zablokuj orientację ekranu</string>
<string name="unlock_orientation">Odblokuj orientację ekranu</string> <string name="unlock_orientation">Odblokuj orientację ekranu</string>
@ -175,7 +175,7 @@
      Nie zawiera żadnych reklam, nie potrzebuje wielu uprawnień i jest w pełni otwartoźródłowa.       Nie zawiera żadnych reklam, nie potrzebuje wielu uprawnień i jest w pełni otwartoźródłowa.
      Jest ona tylko częścią naszej kolekcji prostych narzędzi. Ta, jak i pozostałe, dostępne są na stronie http://www.simplemobiletools.com       Jest ona tylko częścią naszej kolekcji prostych narzędzi. Ta, jak i pozostałe, dostępne są na stronie https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Abrir câmera</string> <string name="open_camera">Abrir câmera</string>
<string name="hidden">(oculto)</string> <string name="hidden">(oculto)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Fixar pasta</string> <string name="pin_folder">Fixar pasta</string>
<string name="unpin_folder">Desfixar pasta</string> <string name="unpin_folder">Desfixar pasta</string>
<string name="pin_to_the_top">Fixar no topo</string> <string name="pin_to_the_top">Fixar no topo</string>
@ -21,7 +22,6 @@
<string name="use_default">Usar padrão</string> <string name="use_default">Usar padrão</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brilho</string> <string name="brightness">Brilho</string>
<string name="do_not_ask_again">Não perguntar novamente por enquanto</string>
<string name="lock_orientation">Travar orientação</string> <string name="lock_orientation">Travar orientação</string>
<string name="unlock_orientation">Destravar orientação</string> <string name="unlock_orientation">Destravar orientação</string>
@ -179,7 +179,7 @@
Não contém anúncios, nem permissões desnecessárias. Disponibiliza um tema escuro, e é totalmente \'open source\'. Não contém anúncios, nem permissões desnecessárias. Disponibiliza um tema escuro, e é totalmente \'open source\'.
Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em http://www.simplemobiletools.com Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="open_camera">Abrir câmara</string> <string name="open_camera">Abrir câmara</string>
<string name="hidden">(oculta)</string> <string name="hidden">(oculta)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Fixar pasta</string> <string name="pin_folder">Fixar pasta</string>
<string name="unpin_folder">Desafixar pasta</string> <string name="unpin_folder">Desafixar pasta</string>
<string name="pin_to_the_top">Fixar no topo</string> <string name="pin_to_the_top">Fixar no topo</string>
@ -21,7 +22,6 @@
<string name="use_default">Predefinição</string> <string name="use_default">Predefinição</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brilho</string> <string name="brightness">Brilho</string>
<string name="do_not_ask_again">Não perguntar de novo para esta sessão</string>
<string name="lock_orientation">Bloquear orientação</string> <string name="lock_orientation">Bloquear orientação</string>
<string name="unlock_orientation">Desbloquear orientação</string> <string name="unlock_orientation">Desbloquear orientação</string>
@ -179,7 +179,7 @@
Não contém anúncios nem permissões desnecessárias. Disponibiliza um tema escuro e é totalmente \'open source\'. Não contém anúncios nem permissões desnecessárias. Disponibiliza um tema escuro e é totalmente \'open source\'.
Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em http://www.simplemobiletools.com Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -4,13 +4,14 @@
<string name="app_launcher_name">Галерея</string> <string name="app_launcher_name">Галерея</string>
<string name="edit">Редактировать</string> <string name="edit">Редактировать</string>
<string name="open_camera">Открыть камеру</string> <string name="open_camera">Открыть камеру</string>
<string name="hidden">(Скрытый)</string> <string name="hidden">(Скрытые)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Закрепить папку</string> <string name="pin_folder">Закрепить папку</string>
<string name="unpin_folder">Открепить папку</string> <string name="unpin_folder">Открепить папку</string>
<string name="pin_to_the_top">Закрепить наверху</string> <string name="pin_to_the_top">Закрепить сверху</string>
<string name="show_all">Отобразить все медиафайлы</string> <string name="show_all">Отобразить все медиафайлы</string>
<string name="all_folders">Все медиафайлы</string> <string name="all_folders">Все медиафайлы</string>
<string name="folder_view">Переключиться к виду с папками</string> <string name="folder_view">Переключиться вид на папки</string>
<string name="other_folder">Другая папка</string> <string name="other_folder">Другая папка</string>
<string name="show_on_map">Показать место съёмки</string> <string name="show_on_map">Показать место съёмки</string>
<string name="unknown_location">Место съёмки не указано</string> <string name="unknown_location">Место съёмки не указано</string>
@ -21,7 +22,6 @@
<string name="use_default">Использовать по умолчанию</string> <string name="use_default">Использовать по умолчанию</string>
<string name="volume">Громкость</string> <string name="volume">Громкость</string>
<string name="brightness">Яркость</string> <string name="brightness">Яркость</string>
<string name="do_not_ask_again">Не спрашивать снова (до следующего запуска)</string>
<string name="lock_orientation">Заблокировать ориентацию</string> <string name="lock_orientation">Заблокировать ориентацию</string>
<string name="unlock_orientation">Разблокировать ориентацию</string> <string name="unlock_orientation">Разблокировать ориентацию</string>
@ -30,11 +30,11 @@
<string name="images">Изображения</string> <string name="images">Изображения</string>
<string name="videos">Видео</string> <string name="videos">Видео</string>
<string name="gifs">GIF</string> <string name="gifs">GIF</string>
<string name="no_media_with_filters">При заданных фильтрах медиафайлы не найдены.</string> <string name="no_media_with_filters">При заданных фильтрах медиафайлы не найдены</string>
<string name="change_filters_underlined"><u>Изменить фильтры</u></string> <string name="change_filters_underlined"><u>Изменить фильтры</u></string>
<!-- Hide / Exclude --> <!-- Hide / Exclude -->
<string name="hide_folder_description">Эта функция скрывает папку, добавляя в неё файл \".nomedia\"; будут скрыты все подпапки. Можно показывать их, переключая \"Показывать скрытые папки\" в настройках. Продолжить?</string> <string name="hide_folder_description">Эта функция скрывает папку, добавляя в неё файл \".nomedia\"; будут скрыты все подпапки. Можно показать их, переключая \"Показывать скрытые папки\" в настройках. Продолжить?</string>
<string name="exclude">Исключить</string> <string name="exclude">Исключить</string>
<string name="excluded_folders">Исключённые папки</string> <string name="excluded_folders">Исключённые папки</string>
<string name="manage_excluded_folders">Управление исключёнными папками</string> <string name="manage_excluded_folders">Управление исключёнными папками</string>
@ -42,7 +42,7 @@
<string name="exclude_folder_parent">Исключить только родительский каталог?</string> <string name="exclude_folder_parent">Исключить только родительский каталог?</string>
<string name="excluded_activity_placeholder">Исключая папки, вы сделаете их скрытыми вместе с подпапками в Simple Gallery, но они будут видны в других приложениях. Если вы хотите скрыть их и в других приложениях, используйте функцию \"Скрыть\".</string> <string name="excluded_activity_placeholder">Исключая папки, вы сделаете их скрытыми вместе с подпапками в Simple Gallery, но они будут видны в других приложениях. Если вы хотите скрыть их и в других приложениях, используйте функцию \"Скрыть\".</string>
<string name="remove_all">Удалить всё</string> <string name="remove_all">Удалить всё</string>
<string name="remove_all_description">Очистить список исключённых? Сами папки не будут удалены.</string> <string name="remove_all_description">Очистить список исключённых папок? Сами папки не будут удалены.</string>
<string name="hidden_folders">Скрытые папки</string> <string name="hidden_folders">Скрытые папки</string>
<string name="manage_hidden_folders">Управление скрытыми папками</string> <string name="manage_hidden_folders">Управление скрытыми папками</string>
<string name="hidden_folders_placeholder">Похоже, у вас нет папок, скрытых файлом \".nomedia\".</string> <string name="hidden_folders_placeholder">Похоже, у вас нет папок, скрытых файлом \".nomedia\".</string>
@ -78,33 +78,33 @@
<string name="flip">Отразить</string> <string name="flip">Отразить</string>
<string name="flip_horizontally">По горизонтали</string> <string name="flip_horizontally">По горизонтали</string>
<string name="flip_vertically">По вертикали</string> <string name="flip_vertically">По вертикали</string>
<string name="edit_with">Редактировать в…</string> <string name="edit_with">Редактировать в </string>
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Простые обои</string> <string name="simple_wallpaper">Простые обои</string>
<string name="set_as_wallpaper">Установить в качестве обоев</string> <string name="set_as_wallpaper">Установить в качестве обоев</string>
<string name="set_as_wallpaper_failed">Не удалось установить</string> <string name="set_as_wallpaper_failed">Не удалось установить</string>
<string name="set_as_wallpaper_with">Установить в качестве обоев в:</string> <string name="set_as_wallpaper_with">Установить в качестве обоев в:</string>
<string name="setting_wallpaper">Установка обоев…</string> <string name="setting_wallpaper">Установка обоев </string>
<string name="wallpaper_set_successfully">Обои успешно установлены</string> <string name="wallpaper_set_successfully">Обои успешно установлены</string>
<string name="portrait_aspect_ratio">Портрет</string> <string name="portrait_aspect_ratio">Портретная ориентация</string>
<string name="landscape_aspect_ratio">Альбом</string> <string name="landscape_aspect_ratio">Альбомная ориентация</string>
<string name="home_screen">Домашний экран</string> <string name="home_screen">Домашний экран</string>
<string name="lock_screen">Экран блокировки</string> <string name="lock_screen">Экран блокировки</string>
<string name="home_and_lock_screen">Домашний экран и экран блокировки</string> <string name="home_and_lock_screen">Домашний экран и экран блокировки</string>
<!-- Slideshow --> <!-- Slideshow -->
<string name="slideshow">Слайдшоу</string> <string name="slideshow">Слайдшоу</string>
<string name="interval">Интервал (секунды):</string> <string name="interval">Интервал (в секундах):</string>
<string name="include_photos">Включать изображения</string> <string name="include_photos">Использовать изображения</string>
<string name="include_videos">Включать видео</string> <string name="include_videos">Использовать видео</string>
<string name="include_gifs">Включать GIF</string> <string name="include_gifs">Использовать GIF</string>
<string name="random_order">Случайный порядок</string> <string name="random_order">Случайный порядок</string>
<string name="use_fade">Эффект затухания</string> <string name="use_fade">Эффект затухания</string>
<string name="move_backwards">В обратном порядке</string> <string name="move_backwards">В обратном порядке</string>
<string name="loop_slideshow">Зациклить</string> <string name="loop_slideshow">Зациклить</string>
<string name="slideshow_ended">Слайдшоу завершилось</string> <string name="slideshow_ended">Слайдшоу завершилось</string>
<string name="no_media_for_slideshow">Никаких медиафайлов для слайдшоу не было найдено.</string> <string name="no_media_for_slideshow">Никаких медиафайлов для слайдшоу не было найдено</string>
<!-- View types --> <!-- View types -->
<string name="change_view_type">Режим отображения</string> <string name="change_view_type">Режим отображения</string>
@ -118,38 +118,38 @@
<string name="animate_gifs">Анимировать эскизы GIF</string> <string name="animate_gifs">Анимировать эскизы GIF</string>
<string name="max_brightness">Максимальная яркость при просмотре файлов</string> <string name="max_brightness">Максимальная яркость при просмотре файлов</string>
<string name="crop_thumbnails">Нарезать миниатюры в квадраты</string> <string name="crop_thumbnails">Нарезать миниатюры в квадраты</string>
<string name="screen_rotation_by">Полноэкранный поворот</string> <string name="screen_rotation_by">Поворот экрана при просмотре изображения</string>
<string name="screen_rotation_system_setting">Системные настройки</string> <string name="screen_rotation_system_setting">Использовать системные настройки</string>
<string name="screen_rotation_device_rotation">Поворот устройства</string> <string name="screen_rotation_device_rotation">При повороте устройства</string>
<string name="screen_rotation_aspect_ratio">Соотношение сторон</string> <string name="screen_rotation_aspect_ratio">По размеру изображения</string>
<string name="black_background_at_fullscreen">Чёрные фон и строка состояния в полноэкранном режиме</string> <string name="black_background_at_fullscreen">Чёрные фон и строка состояния при просмотре изображения</string>
<string name="scroll_thumbnails_horizontally">Прокрутка эскизов по горизонтали</string> <string name="scroll_thumbnails_horizontally">Прокрутка эскизов по горизонтали</string>
<string name="hide_system_ui_at_fullscreen">Автоматически скрывать системный интерфейс в полноэкранном режиме</string> <string name="hide_system_ui_at_fullscreen">Автоматически скрывать системный интерфейс при просмотре изображения</string>
<string name="delete_empty_folders">Удалять пустые папки после удаления их содержимого</string> <string name="delete_empty_folders">Удалять пустые папки после удаления их содержимого</string>
<string name="allow_photo_gestures">Управлять яркостью фото с помощью вертикальных жестов</string> <string name="allow_photo_gestures">Управлять яркостью при просмотре изображения с помощью вертикальных жестов</string>
<string name="allow_video_gestures">Управлять громкостью и яркостью видео с помощью вертикальных жестов</string> <string name="allow_video_gestures">Управлять громкостью и яркостью при просмотре видео с помощью вертикальных жестов</string>
<string name="show_media_count">Показывать количество файлов в папках</string> <string name="show_media_count">Показывать количество файлов в папках</string>
<string name="replace_share_with_rotate">Заменить \"Поделиться\" на \"Повернуть\" в меню полноэкранного режима</string> <string name="replace_share_with_rotate">Заменить \"Поделиться\" на \"Повернуть\" в меню при просмотре изображения</string>
<string name="show_extended_details">Показывать подробности о файле</string> <string name="show_extended_details">Показывать подробности о файле</string>
<string name="manage_extended_details">Выбрать подробности файла</string> <string name="manage_extended_details">Выбрать подробности файла</string>
<string name="one_finger_zoom">Масштабирование одним пальцем в полноэкранном режиме</string> <string name="one_finger_zoom">Масштабирование одним пальцем при просмотре изображения</string>
<string name="allow_instant_change">Мгновенное переключение медиафайлов нажатием по краю экрана</string> <string name="allow_instant_change">Мгновенное переключение медиафайлов нажатием по краю экрана</string>
<string name="replace_zoomable_images">Заменять масштабируемые изображения высококачественными</string> <string name="replace_zoomable_images">Заменять масштабируемые изображения высококачественными</string>
<string name="hide_extended_details">Не показывать подробности, если скрыта строка состояния</string> <string name="hide_extended_details">Не показывать подробности при скрытой строке состояния</string>
<string name="do_extra_check">Делать дополнительную проверку, чтобы избежать показа неподдерживаемых файлов</string> <string name="do_extra_check">Делать дополнительную проверку, чтобы избежать показа неподдерживаемых файлов</string>
<!-- Setting sections --> <!-- Setting sections -->
<string name="thumbnails">Миниатюры</string> <string name="thumbnails">Миниатюры</string>
<string name="fullscreen_media">Полноэкранное отображение медиафайлов</string> <string name="fullscreen_media">Просмотр медиафайлов</string>
<string name="extended_details">Подробности</string> <string name="extended_details">Подробности</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">Как сделать Simple Gallery галереей по умолчанию?</string> <string name="faq_1_title">Как сделать Simple Gallery галереей по умолчанию?</string>
<string name="faq_1_text">Сначала вы должны найти галерею по умолчанию в разделе \"Приложения\" настроек вашего устройства; найдите кнопку, названную как-то вроде \"Открыть по умолчанию\", нажмите на неё, затем выберите \"Очистить значения по умолчанию\". <string name="faq_1_text">Сначала вы должны найти галерею по умолчанию в разделе \"Приложения\" настроек вашего устройства; найдите кнопку, названную \"Открыть по умолчанию\",затем нажмите на неё и выберите \"Очистить значения по умолчанию\".
В следующий раз, когда попробуете открыть изображение или видео, вы увидите средство выбора приложений, где сможете выбрать Simple Gallery и сделать её приложением по умолчанию.</string> В следующий раз, когда попробуете открыть изображение или видео, вы увидите выбор приложений, где сможете выбрать Simple Gallery и сделать её приложением по умолчанию.</string>
<string name="faq_2_title">Я заблокировал приложение паролем, но забыл его. Что мне теперь делать?</string> <string name="faq_2_title">Я заблокировал приложение паролем, но забыл его. Что мне теперь делать?</string>
<string name="faq_2_text">Это можно решить двумя способами. Вы можете переустановить приложение или найти его в настройках вашего устройства и выбрать пункт \"Очистить данные\", что сбросит все настройки, но не удалит никакие медиафайлы.</string> <string name="faq_2_text">Это можно решить двумя способами. Вы можете переустановить приложение или найти его в настройках вашего устройства и выбрать пункт \"Очистить данные\", что сбросит все настройки приложения, но не удалит медиафайлы.</string>
<string name="faq_3_title">Как я могу сделать альбом всегда отображающимся наверху?</string> <string name="faq_3_title">Как я могу сделать альбом всегда отображающимся сверху?</string>
<string name="faq_3_text">Вы можете длительным нажатием на желаемый альбом открыть меню действий в нём выбрать пункт \"Закрепить\". Можно закрепить несколько альбомов (папок); прикреплённые элементы будут отсортированы по методу сортировки по умолчанию.</string> <string name="faq_3_text">Вы можете длительным нажатием на желаемый альбом открыть меню действий в нём выбрать пункт \"Закрепить\". Можно закрепить несколько альбомов (папок); прикреплённые элементы будут отсортированы по методу сортировки по умолчанию.</string>
<string name="faq_4_title">Как ускорить перемотку видео?</string> <string name="faq_4_title">Как ускорить перемотку видео?</string>
<string name="faq_4_text">Вы можете нажать на цифры текущего положения или максимальной длительности видео рядом с панелью поиска, что приведёт к перемещению позиции воспроизведения либо назад, либо вперёд.</string> <string name="faq_4_text">Вы можете нажать на цифры текущего положения или максимальной длительности видео рядом с панелью поиска, что приведёт к перемещению позиции воспроизведения либо назад, либо вперёд.</string>
@ -179,11 +179,12 @@
Это приложение не будет показывать рекламу или запрашивать ненужные разрешения. У него полностью открытый исходный код и настраиваемые цвета оформления. Это приложение не будет показывать рекламу или запрашивать ненужные разрешения. У него полностью открытый исходный код и настраиваемые цвета оформления.
Simple Gallery — это приложение из серии Simple Mobile Tools. Остальные приложения из этой серии можно найти здесь: http://www.simplemobiletools.com Simple Gallery — это приложение из серии Simple Mobile Tools. Остальные приложения из этой серии можно найти здесь: https://www.simplemobiletools.com
</string> </string>
<!-- <!--
Haven't found some strings? There's more at Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
--> -->
</resources> </resources>

View file

@ -5,6 +5,7 @@
<string name="edit">Upraviť</string> <string name="edit">Upraviť</string>
<string name="open_camera">Otvoriť fotoaparát</string> <string name="open_camera">Otvoriť fotoaparát</string>
<string name="hidden">(skryté)</string> <string name="hidden">(skryté)</string>
<string name="excluded">(vylúčené)</string>
<string name="pin_folder">Pripnúť priečinok</string> <string name="pin_folder">Pripnúť priečinok</string>
<string name="unpin_folder">Odopnúť priečinok</string> <string name="unpin_folder">Odopnúť priečinok</string>
<string name="pin_to_the_top">Pripnúť na vrch</string> <string name="pin_to_the_top">Pripnúť na vrch</string>
@ -21,7 +22,6 @@
<string name="use_default">Použiť predvolený</string> <string name="use_default">Použiť predvolený</string>
<string name="volume">Hlasitosť</string> <string name="volume">Hlasitosť</string>
<string name="brightness">Jas</string> <string name="brightness">Jas</string>
<string name="do_not_ask_again">Nepýtať sa už v tomto spustení</string>
<string name="lock_orientation">Uzamknúť otočenie obrazovky</string> <string name="lock_orientation">Uzamknúť otočenie obrazovky</string>
<string name="unlock_orientation">Odomknúť otočenie obrazovky</string> <string name="unlock_orientation">Odomknúť otočenie obrazovky</string>
@ -179,7 +179,7 @@
Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb. Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb.
Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na http://www.simplemobiletools.com Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Redigera</string> <string name="edit">Redigera</string>
<string name="open_camera">Starta kameran</string> <string name="open_camera">Starta kameran</string>
<string name="hidden">(dold)</string> <string name="hidden">(dold)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Fäst mapp</string> <string name="pin_folder">Fäst mapp</string>
<string name="unpin_folder">Lossa mapp</string> <string name="unpin_folder">Lossa mapp</string>
<string name="pin_to_the_top">Fäst högst upp</string> <string name="pin_to_the_top">Fäst högst upp</string>
@ -21,7 +22,6 @@
<string name="use_default">Använd standard</string> <string name="use_default">Använd standard</string>
<string name="volume">Volym</string> <string name="volume">Volym</string>
<string name="brightness">Ljusstyrka</string> <string name="brightness">Ljusstyrka</string>
<string name="do_not_ask_again">Fråga inte igen i denna session</string>
<string name="lock_orientation">Aktivera rotationslås</string> <string name="lock_orientation">Aktivera rotationslås</string>
<string name="unlock_orientation">Inaktivera rotationslås</string> <string name="unlock_orientation">Inaktivera rotationslås</string>
@ -179,7 +179,7 @@
Innehåller ingen reklam eller onödiga behörigheter. Det har helt öppen källkod och anpassningsbara färger. Innehåller ingen reklam eller onödiga behörigheter. Det har helt öppen källkod och anpassningsbara färger.
Denna app är bara en del av en större serie appar. Du hittar resten av dem på http://www.simplemobiletools.com Denna app är bara en del av en större serie appar. Du hittar resten av dem på https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Düzenle</string> <string name="edit">Düzenle</string>
<string name="open_camera">Kamerayı</string> <string name="open_camera">Kamerayı</string>
<string name="hidden">(gizli)</string> <string name="hidden">(gizli)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Pin klasör</string> <string name="pin_folder">Pin klasör</string>
<string name="unpin_folder">Klasörü çöz</string> <string name="unpin_folder">Klasörü çöz</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="pin_to_the_top">Pin to the top</string>
@ -21,7 +22,6 @@
<string name="use_default">Use default</string> <string name="use_default">Use default</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brightness</string> <string name="brightness">Brightness</string>
<string name="do_not_ask_again">Do not ask again in this session</string>
<string name="lock_orientation">Lock orientation</string> <string name="lock_orientation">Lock orientation</string>
<string name="unlock_orientation">Unlock orientation</string> <string name="unlock_orientation">Unlock orientation</string>
@ -179,7 +179,7 @@
Reklam içermeyen veya gereksiz izinler. Tamamen açık kaynaktır, özelleştirilebilir renkler sağlar. Reklam içermeyen veya gereksiz izinler. Tamamen açık kaynaktır, özelleştirilebilir renkler sağlar.
Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanını şu adresten bulabilirsiniz http://www.simplemobiletools.com Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanını şu adresten bulabilirsiniz https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">编辑</string> <string name="edit">编辑</string>
<string name="open_camera">打开相机</string> <string name="open_camera">打开相机</string>
<string name="hidden">(隐藏)</string> <string name="hidden">(隐藏)</string>
<string name="excluded">(排除)</string>
<string name="pin_folder">锁定目录</string> <string name="pin_folder">锁定目录</string>
<string name="unpin_folder">解除锁定目录</string> <string name="unpin_folder">解除锁定目录</string>
<string name="pin_to_the_top">锁定到顶部</string> <string name="pin_to_the_top">锁定到顶部</string>
@ -21,7 +22,6 @@
<string name="use_default">使用默认</string> <string name="use_default">使用默认</string>
<string name="volume">音量</string> <string name="volume">音量</string>
<string name="brightness">亮度</string> <string name="brightness">亮度</string>
<string name="do_not_ask_again">不再提醒</string>
<string name="lock_orientation">锁定方向</string> <string name="lock_orientation">锁定方向</string>
<string name="unlock_orientation">解锁方向</string> <string name="unlock_orientation">解锁方向</string>
@ -144,28 +144,26 @@
<string name="extended_details">扩展详情</string> <string name="extended_details">扩展详情</string>
<!-- FAQ --> <!-- FAQ -->
<string name="faq_1_title">How can I make Simple Gallery the default device gallery?</string> <string name="faq_1_title">如何把简约图库设置为设备的默认图库?</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\". <string name="faq_1_text">首先,你需要在设备设置的“应用”菜单中找到你当前的默认图库,找到并点击“默认打开”按钮,然后点击“清除默认值”。下次当你再次打开图片或视频时,你应该会看到一个应用程序选择器,请在这里选择“简约图库”并将其设为默认应用程序。</string>
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">我用密码锁定了本应用,但我忘记了密码。该怎么办?</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">有两种方法。你可以重新安装本应用,也可以在设置中清除此应用的数据,这将会会重置你的所有设置,但不会删除任何媒体文件。</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">如何让某个相册始终显示在最上面?</string>
<string name="faq_3_title">How can I make an album always appear at the top?</string> <string name="faq_3_text">你可以长按该相册并在操作栏中点击图钉图标,这样 就可以将其固定在顶部了。你也可以固定多个文件夹,固定项目将按照默认排序方法排序。</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_4_title">如何快进/快退视频?</string>
<string name="faq_4_title">How can I fast-forward videos?</string> <string name="faq_4_text">可以点击底栏进度条两侧的时间文本,或拖动进度条。</string>
<string name="faq_4_text">You can 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">文件夹的隐藏和排除有什么区别?</string>
<string name="faq_5_title">What is the difference between hiding and excluding a folder?</string> <string name="faq_5_text">排除功能只是防止其在简约图库中显示,而隐藏功能则使用的是系统的方法,这样做也会在其他图库中隐藏。它的工作原理是在给定的文件夹中创建一个空的.nomedia文件你可以使用任何文件管理器删除它。</string>
<string name="faq_5_text">Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too.</string> <string name="faq_6_title">为什么会出现音乐艺术家封面或贴纸文件夹?</string>
<string name="faq_6_title">Why do folders with music cover art or stickers show up?</string> <string name="faq_6_text">你可能会看到一些不寻常的相册出现。你可以通过长按它们并选择“排除”来排除它们。在之后的对话框中,你可以选择父文件夹,这样也许就会阻止其他相关的相册出现。</string>
<string name="faq_6_text">It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too.</string> <string name="faq_7_title">有的图片文件夹没有显示,怎么回事?</string>
<string name="faq_7_title">A folder with images isn\'t showing up, what can I do?</string> <string name="faq_7_text">原因可能有很多,但解决方法很简单。只需进入设置 -> 管理包含目录,点击+号并选择到所需的文件夹。</string>
<string name="faq_7_text">That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder.</string> <string name="faq_8_title">如果我只想显示几个特定的文件夹,该如何操作?</string>
<string name="faq_8_title">What if I want just a few particular folders visible?</string> <string name="faq_8_text">在包含目录中添加文件夹不会自动排除其他的内容。你可以做的:进入设置 -> 管理排除目录,排除根目录\"/\",然后在设置 -> 管理包含目录中添加所需的文件夹。这样就只显示选定的文件夹了,由于排除和包含都是递归的,所以排除并包含的文件夹是会显示的。</string>
<string name="faq_8_text">Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. <string name="faq_9_title">全屏图像有些奇怪的东西,该如何提高画面质量?</string>
That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up.</string> <string name="faq_9_text">在设置中有一个“用质量更好的图像替换可深度缩放的图像”开关,打开它后就可以提高图像的显示质量,但是一旦尝试放大太多次,它们就又会变得模糊不清。</string>
<string name="faq_9_title">Fullscreen images have weird artifacts, can I somehow improve the quality?</string> <string name="faq_10_title">可以裁剪图片吗?</string>
<string name="faq_9_text">Yea, there is a toggle in Settings saying \"Replace deep zoomable images with better quality ones\", you can use that. It will improve the quality of the images, but they will get blurred once you try zooming in too much.</string> <string name="faq_10_text">当然,通过长按图片缩略图并选择编辑,或在全屏视图中选择编辑来打开编辑器。你可以通过拖动图片边角来剪裁图像。</string>
<string name="faq_10_title">Can I crop images with this app?</string>
<string name="faq_10_text">Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->
@ -179,7 +177,7 @@
应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。 应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。
这个应用只是一系列应用中的一小部份。您可以在 http://www.simplemobiletools.com 找到其余的应用。 这个应用只是一系列应用中的一小部份。您可以在 https://www.simplemobiletools.com 找到其余的应用。
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">編輯</string> <string name="edit">編輯</string>
<string name="open_camera">開啟相機</string> <string name="open_camera">開啟相機</string>
<string name="hidden">(隱藏)</string> <string name="hidden">(隱藏)</string>
<string name="excluded">(排除)</string>
<string name="pin_folder">釘選資料夾</string> <string name="pin_folder">釘選資料夾</string>
<string name="unpin_folder">取消釘選資料夾</string> <string name="unpin_folder">取消釘選資料夾</string>
<string name="pin_to_the_top">釘選在頂端</string> <string name="pin_to_the_top">釘選在頂端</string>
@ -21,7 +22,6 @@
<string name="use_default">使用預設</string> <string name="use_default">使用預設</string>
<string name="volume">音量</string> <string name="volume">音量</string>
<string name="brightness">亮度</string> <string name="brightness">亮度</string>
<string name="do_not_ask_again">這情況不再詢問</string>
<string name="lock_orientation">鎖定方向</string> <string name="lock_orientation">鎖定方向</string>
<string name="unlock_orientation">解除鎖定方向</string> <string name="unlock_orientation">解除鎖定方向</string>
@ -173,13 +173,13 @@
<string name="app_long_description"> <string name="app_long_description">
一個用來瀏覽相片和影片的簡單工具。可以根據日期、大小、名稱來遞增或遞減排序項目,相片能被縮放。媒體檔案會依畫面大小呈現在數個欄位內,你可以使用縮放手勢來改變欄數。媒體檔案可以重新命名、分享、刪除、複製、移動;圖片還能縮放、旋轉、翻轉,或者直接設為桌布。 一個用來瀏覽相片和影片的簡單工具。可以根據日期、大小、名稱來遞增或遞減排序項目,相片能被縮放。媒體檔案會依畫面大小呈現在數個欄位內,你可以使用縮放手勢來改變欄數。媒體檔案可以重新命名、分享、刪除、複製、移動;圖片還能縮放、旋轉、翻轉,或者直接設為桌布。
這相簿也支援第三方使用,像是預覽圖片/影片、添加電子信箱附件...等功能,日常使用上相當適合。 這相簿也支援第三方使用,像是預覽圖片/影片、添加電子信箱附件等功能,日常使用上相當適合。
指紋權限用來鎖定隱藏的項目或是整個程式。 指紋權限用來鎖定隱藏的項目或是整個程式。
不包含廣告及非必要的權限,而且完全開放原始碼,並提供自訂顏色。 不包含廣告及非必要的權限,而且完全開放原始碼,並提供自訂顏色。
這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 http://www.simplemobiletools.com 這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -5,6 +5,7 @@
<string name="edit">Edit</string> <string name="edit">Edit</string>
<string name="open_camera">Open camera</string> <string name="open_camera">Open camera</string>
<string name="hidden">(hidden)</string> <string name="hidden">(hidden)</string>
<string name="excluded">(excluded)</string>
<string name="pin_folder">Pin folder</string> <string name="pin_folder">Pin folder</string>
<string name="unpin_folder">Unpin folder</string> <string name="unpin_folder">Unpin folder</string>
<string name="pin_to_the_top">Pin to the top</string> <string name="pin_to_the_top">Pin to the top</string>
@ -21,7 +22,6 @@
<string name="use_default">Use default</string> <string name="use_default">Use default</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brightness</string> <string name="brightness">Brightness</string>
<string name="do_not_ask_again">Do not ask again in this session</string>
<string name="lock_orientation">Lock orientation</string> <string name="lock_orientation">Lock orientation</string>
<string name="unlock_orientation">Unlock orientation</string> <string name="unlock_orientation">Unlock orientation</string>
@ -179,7 +179,7 @@
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
</string> </string>
<!-- <!--

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '1.2.30' ext.kotlin_version = '1.2.31'
repositories { repositories {
jcenter() jcenter()
@ -9,7 +9,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.android.tools.build:gradle:3.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View file

@ -6,4 +6,4 @@ The fingerprint permission is needed for locking either hidden item visibility,
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com