Merge pull request #4 from SimpleMobileTools/master

merge
This commit is contained in:
fiepi 2017-06-19 05:54:44 -05:00 committed by GitHub
commit 9277e33a10
48 changed files with 493 additions and 264 deletions

View file

@ -1,6 +1,19 @@
Changelog
==========
Version 2.11.1 *(2017-06-19)*
----------------------------
* Fixed a crash at starting video
Version 2.11.0 *(2017-06-18)*
----------------------------
* Store column count separately for portrait and landscape modes
* Improve zooming at double taping fullscreen images
* Allow opening a third party editor from our Editor screen
* Many crashfixes and smaller improvements
Version 2.10.10 *(2017-06-07)*
----------------------------

View file

@ -10,8 +10,8 @@ android {
applicationId "com.simplemobiletools.gallery"
minSdkVersion 16
targetSdkVersion 23
versionCode 109
versionName "2.10.10"
versionCode 111
versionName "2.11.1"
}
signingConfigs {
@ -32,7 +32,7 @@ android {
}
dependencies {
compile 'com.simplemobiletools:commons:2.20.1'
compile 'com.simplemobiletools:commons:2.21.4'
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'
compile 'com.theartofdev.edmodo:android-image-cropper:2.4.0'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
@ -47,7 +47,7 @@ dependencies {
}
buildscript {
ext.kotlin_version = '1.1.2-3'
ext.kotlin_version = '1.1.2-5'
repositories {
mavenCentral()
}

View file

@ -18,11 +18,11 @@ import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.dialogs.ResizeDialog
import com.simplemobiletools.gallery.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.extensions.getRealPathFromURI
import com.simplemobiletools.gallery.extensions.openEditor
import com.theartofdev.edmodo.cropper.CropImageView
import kotlinx.android.synthetic.main.view_crop_image.*
import java.io.*
class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener {
val TAG = EditActivity::class.java.simpleName
val ASPECT_X = "aspectX"
@ -33,6 +33,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
var resizeWidth = 0
var resizeHeight = 0
var isCropIntent = false
var isEditingWithThirdParty = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -62,6 +63,17 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
}
}
override fun onResume() {
super.onResume()
isEditingWithThirdParty = false
}
override fun onStop() {
super.onStop()
if (isEditingWithThirdParty)
finish()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_editor, menu)
menu.findItem(R.id.resize).isVisible = !isCropIntent
@ -75,6 +87,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
R.id.resize -> resizeImage()
R.id.flip_horizontally -> flipImage(true)
R.id.flip_vertically -> flipImage(false)
R.id.edit -> editWith()
else -> return super.onOptionsItemSelected(item)
}
return true
@ -189,6 +202,11 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
crop_image_view.flipImageVertically()
}
private fun editWith() {
openEditor(uri, true)
isEditingWithThirdParty = true
}
private fun scanFinalPath(path: String) {
scanPath(path) {
setResult(Activity.RESULT_OK, intent)

View file

@ -14,6 +14,8 @@ import android.support.v4.app.ActivityCompat
import android.support.v7.widget.GridLayoutManager
import android.view.Menu
import android.view.MenuItem
import android.view.ViewGroup
import android.widget.FrameLayout
import com.google.gson.Gson
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.Release
@ -27,10 +29,7 @@ import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.models.Directory
import com.simplemobiletools.gallery.views.MyScalableRecyclerView
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.io.OutputStream
import java.io.*
import java.util.*
class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
@ -51,6 +50,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private var mIsGettingDirs = false
private var mStoredAnimateGifs = true
private var mStoredCropThumbnails = true
private var mStoredScrollHorizontally = true
private var mLoadedInitialPhotos = false
private var mLastMediaModified = 0
private var mLastMediaHandler = Handler()
@ -74,6 +74,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
mDirs = ArrayList<Directory>()
mStoredAnimateGifs = config.animateGifs
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
storeStoragePaths()
checkWhatsNewDialog()
}
@ -108,12 +109,18 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
override fun onResume() {
super.onResume()
if (mStoredAnimateGifs != config.animateGifs) {
mDirs.clear()
directories_grid.adapter.notifyDataSetChanged()
}
if (mStoredCropThumbnails != config.cropThumbnails) {
mDirs.clear()
directories_grid.adapter.notifyDataSetChanged()
}
if (mStoredScrollHorizontally != config.scrollHorizontally) {
(directories_grid.adapter as DirectoryAdapter).scrollVertically = !config.scrollHorizontally
directories_grid.adapter.notifyDataSetChanged()
}
tryloadGallery()
invalidateOptionsMenu()
}
@ -126,6 +133,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
mIsGettingDirs = false
mStoredAnimateGifs = config.animateGifs
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
MyScalableRecyclerView.mListener = null
mLastMediaHandler.removeCallbacksAndMessages(null)
}
@ -141,7 +149,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
showAllMedia()
else
getDirectories()
handleZooming()
setupLayoutManager()
checkIfColorChanged()
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), STORAGE_PERMISSION)
@ -221,8 +229,16 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun getRecyclerAdapter() = (directories_grid.adapter as DirectoryAdapter)
private fun handleZooming() {
private fun setupLayoutManager() {
val layoutManager = directories_grid.layoutManager as GridLayoutManager
if (config.scrollHorizontally) {
layoutManager.orientation = GridLayoutManager.HORIZONTAL
directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
} else {
layoutManager.orientation = GridLayoutManager.VERTICAL
directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
layoutManager.spanCount = config.dirColumnCnt
MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener {
override fun zoomIn() {
@ -252,11 +268,13 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun increaseColumnCount() {
config.dirColumnCnt = ++(directories_grid.layoutManager as GridLayoutManager).spanCount
invalidateOptionsMenu()
directories_grid.adapter.notifyDataSetChanged()
}
private fun reduceColumnCount() {
config.dirColumnCnt = --(directories_grid.layoutManager as GridLayoutManager).spanCount
invalidateOptionsMenu()
directories_grid.adapter.notifyDataSetChanged()
}
private fun isPickImageIntent(intent: Intent) = isPickIntent(intent) && (hasImageContentData(intent) || isImageType(intent))
@ -302,6 +320,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
inputStream = FileInputStream(File(path))
outputStream = contentResolver.openOutputStream(output)
inputStream.copyTo(outputStream)
} catch (ignored: FileNotFoundException) {
} finally {
inputStream?.close()
outputStream?.close()

View file

@ -12,6 +12,8 @@ import android.support.v7.widget.GridLayoutManager
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.view.ViewGroup
import android.widget.FrameLayout
import com.bumptech.glide.Glide
import com.bumptech.glide.request.animation.GlideAnimation
import com.bumptech.glide.request.target.SimpleTarget
@ -46,6 +48,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private var mLoadedInitialPhotos = false
private var mStoredAnimateGifs = true
private var mStoredCropThumbnails = true
private var mStoredScrollHorizontally = true
private var mLastDrawnHashCode = 0
private var mLastMediaModified = 0
private var mLastMediaHandler = Handler()
@ -67,6 +70,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
mPath = intent.getStringExtra(DIRECTORY)
mStoredAnimateGifs = config.animateGifs
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
mShowAll = config.showAll
if (mShowAll)
supportActionBar?.setDisplayHomeAsUpEnabled(false)
@ -75,12 +79,18 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
override fun onResume() {
super.onResume()
if (mShowAll && mStoredAnimateGifs != config.animateGifs) {
mMedia.clear()
media_grid.adapter.notifyDataSetChanged()
}
if (mStoredCropThumbnails != config.cropThumbnails) {
mMedia.clear()
media_grid.adapter.notifyDataSetChanged()
}
if (mStoredScrollHorizontally != config.scrollHorizontally) {
(media_grid.adapter as MediaAdapter).scrollVertically = !config.scrollHorizontally
media_grid.adapter.notifyDataSetChanged()
}
tryloadGallery()
invalidateOptionsMenu()
}
@ -91,12 +101,14 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
media_refresh_layout.isRefreshing = false
mStoredAnimateGifs = config.animateGifs
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
MyScalableRecyclerView.mListener = null
mLastMediaHandler.removeCallbacksAndMessages(null)
}
override fun onDestroy() {
super.onDestroy()
if (config.showAll)
config.temporarilyShowHidden = false
mMedia.clear()
}
@ -106,7 +118,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
val dirName = getHumanizedFilename(mPath)
title = if (mShowAll) resources.getString(R.string.all_folders) else dirName
getMedia()
handleZooming()
setupLayoutManager()
checkIfColorChanged()
} else {
finish()
@ -293,8 +305,16 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun getRecyclerAdapter() = (media_grid.adapter as MediaAdapter)
private fun handleZooming() {
private fun setupLayoutManager() {
val layoutManager = media_grid.layoutManager as GridLayoutManager
if (config.scrollHorizontally) {
layoutManager.orientation = GridLayoutManager.HORIZONTAL
media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
} else {
layoutManager.orientation = GridLayoutManager.VERTICAL
media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
layoutManager.spanCount = config.mediaColumnCnt
MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener {
override fun zoomIn() {
@ -324,11 +344,13 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun increaseColumnCount() {
config.mediaColumnCnt = ++(media_grid.layoutManager as GridLayoutManager).spanCount
invalidateOptionsMenu()
media_grid.adapter.notifyDataSetChanged()
}
private fun reduceColumnCount() {
config.mediaColumnCnt = --(media_grid.layoutManager as GridLayoutManager).spanCount
invalidateOptionsMenu()
media_grid.adapter.notifyDataSetChanged()
}
private fun isSetWallpaperIntent() = intent.getBooleanExtra(SET_WALLPAPER_INTENT, false)

View file

@ -129,18 +129,21 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.photo_video_menu, menu)
menu.findItem(R.id.menu_set_as_wallpaper).isVisible = mMedium?.isImage() == true
menu.findItem(R.id.menu_set_as).isVisible = mMedium?.isImage() == true
menu.findItem(R.id.menu_edit).isVisible = mMedium?.isImage() == true
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (mMedium == null)
return true
when (item.itemId) {
R.id.menu_set_as_wallpaper -> trySetAsWallpaper(File(mMedium!!.path))
R.id.menu_set_as -> trySetAs(File(mMedium!!.path))
R.id.menu_open_with -> openWith(File(mMedium!!.path))
R.id.menu_share -> shareUri(mMedium!!, mUri)
R.id.menu_edit -> openEditor(File(mMedium!!.path))
R.id.menu_edit -> openFileEditor(File(mMedium!!.path))
else -> return super.onOptionsItemSelected(item)
}
return true

View file

@ -33,6 +33,7 @@ class SettingsActivity : SimpleActivity() {
setupMaxBrightness()
setupCropThumbnails()
setupDarkBackground()
setupScrollHorizontally()
setupScreenRotation()
setupShowMedia()
updateTextColors(settings_holder)
@ -112,6 +113,14 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupScrollHorizontally() {
settings_scroll_horizontally.isChecked = config.scrollHorizontally
settings_scroll_horizontally_holder.setOnClickListener {
settings_scroll_horizontally.toggle()
config.scrollHorizontally = settings_scroll_horizontally.isChecked
}
}
private fun setupScreenRotation() {
settings_screen_rotation.text = getScreenRotationText()
settings_screen_rotation_holder.setOnClickListener {

View file

@ -176,7 +176,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
return true
menu.apply {
findItem(R.id.menu_set_as_wallpaper).isVisible = getCurrentMedium()!!.isImage() == true
findItem(R.id.menu_set_as).isVisible = getCurrentMedium()!!.isImage() == true
findItem(R.id.menu_edit).isVisible = getCurrentMedium()!!.isImage() == true
findItem(R.id.menu_rotate).isVisible = getCurrentMedium()!!.isImage() == true
findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0f
@ -199,7 +199,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
return true
when (item.itemId) {
R.id.menu_set_as_wallpaper -> trySetAsWallpaper(getCurrentFile())
R.id.menu_set_as -> trySetAs(getCurrentFile())
R.id.menu_copy_to -> copyMoveTo(true)
R.id.menu_move_to -> copyMoveTo(false)
R.id.menu_open_with -> openWith(getCurrentFile())
@ -208,7 +208,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
R.id.menu_share -> shareMedium(getCurrentMedium()!!)
R.id.menu_delete -> askConfirmDelete()
R.id.menu_rename -> renameFile()
R.id.menu_edit -> openEditor(getCurrentFile())
R.id.menu_edit -> openFileEditor(getCurrentFile())
R.id.menu_properties -> showProperties()
R.id.menu_save_as -> saveImageAs()
R.id.show_on_map -> showOnMap()
@ -228,6 +228,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
adapter = pagerAdapter
currentItem = mPos
addOnPageChangeListener(this@ViewPagerActivity)
adapter!!.notifyDataSetChanged()
}
}
}
@ -377,7 +378,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
mPos = -1
reloadViewPager()
}
} else if (requestCode == REQUEST_SET_WALLPAPER) {
} else if (requestCode == REQUEST_SET_AS) {
if (resultCode == Activity.RESULT_OK) {
toast(R.string.wallpaper_set_successfully)
}

View file

@ -41,6 +41,7 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
val selectedPositions = HashSet<Int>()
var foregroundColor = 0
var pinnedFolders = config.pinnedFolders
var scrollVertically = !config.scrollHorizontally
fun toggleItemSelection(select: Boolean, pos: Int) {
if (itemViews[pos] != null)
@ -294,11 +295,13 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
var needPermissionForPath = ""
selectedPositions.forEach {
if (dirs.size > it) {
val path = dirs[it].path
if (activity.needsStupidWritePermissions(path) && config.treeUri.isEmpty()) {
needPermissionForPath = path
}
}
}
activity.handleSAFDialog(File(needPermissionForPath)) {
selectedPositions.sortedDescending().forEach {
@ -359,12 +362,12 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.directory_item, parent, false)
return ViewHolder(view, adapterListener, itemClick)
return ViewHolder(view, adapterListener, activity, multiSelectorMode, multiSelector, listener, itemClick)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val dir = dirs[position]
itemViews.put(position, holder.bindView(activity, multiSelectorMode, multiSelector, dir, pinnedFolders.contains(dir.path), listener))
itemViews.put(position, holder.bindView(dir, pinnedFolders.contains(dir.path), scrollVertically))
toggleItemSelection(selectedPositions.contains(position), position)
holder.itemView.tag = holder
}
@ -420,17 +423,34 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
}
}
class ViewHolder(val view: View, val adapter: MyAdapterListener, val itemClick: (Directory) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
fun bindView(activity: SimpleActivity, multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, directory: Directory,
isPinned: Boolean, listener: DirOperationsListener?): View {
class ViewHolder(val view: View, val adapter: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
val multiSelector: MultiSelector, val listener: DirOperationsListener?, val itemClick: (Directory) -> (Unit)) :
SwappingHolder(view, MultiSelector()) {
fun bindView(directory: Directory, isPinned: Boolean, scrollVertically: Boolean): View {
itemView.apply {
dir_name.text = directory.name
photo_cnt.text = directory.mediaCnt.toString()
dir_pin.visibility = if (isPinned) View.VISIBLE else View.GONE
activity.loadImage(directory.tmb, dir_thumbnail)
activity.loadImage(directory.tmb, dir_thumbnail, scrollVertically)
setOnClickListener { viewClicked(multiSelector, directory) }
setOnLongClickListener {
setOnClickListener { viewClicked(directory) }
setOnLongClickListener { viewLongClicked(); true }
adapter.setupItemForeground(this)
}
return itemView
}
fun viewClicked(directory: Directory) {
if (multiSelector.isSelectable) {
val isSelected = adapter.getSelectedPositions().contains(layoutPosition)
adapter.toggleItemSelectionAdapter(!isSelected, layoutPosition)
} else {
itemClick(directory)
}
}
fun viewLongClicked() {
if (listener != null) {
if (!multiSelector.isSelectable) {
activity.startSupportActionMode(multiSelectorCallback)
@ -439,21 +459,6 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
listener.itemLongClicked(layoutPosition)
}
true
}
adapter.setupItemForeground(this)
}
return itemView
}
fun viewClicked(multiSelector: MultiSelector, directory: Directory) {
if (multiSelector.isSelectable) {
val isSelected = adapter.getSelectedPositions().contains(layoutPosition)
adapter.toggleItemSelectionAdapter(!isSelected, layoutPosition)
} else {
itemClick(directory)
}
}
fun stopLoad() {

View file

@ -34,6 +34,7 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
val selectedPositions = HashSet<Int>()
var foregroundColor = 0
var displayFilenames = config.displayFileNames
var scrollVertically = !config.scrollHorizontally
fun toggleItemSelection(select: Boolean, pos: Int) {
if (itemViews[pos] != null)
@ -120,7 +121,7 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu): Boolean {
menu.findItem(R.id.cab_rename).isVisible = selectedPositions.size <= 1
menu.findItem(R.id.cab_edit).isVisible = selectedPositions.size == 1 && media[selectedPositions.first()].isImage()
menu.findItem(R.id.cab_edit).isVisible = selectedPositions.size == 1 && media.size > selectedPositions.first() && media[selectedPositions.first()].isImage()
checkHideBtnVisibility(menu)
@ -172,7 +173,7 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
}
private fun editFile() {
activity.openEditor(getCurrentFile())
activity.openFileEditor(getCurrentFile())
actMode?.finish()
}
@ -270,11 +271,11 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.photo_video_item, parent, false)
return ViewHolder(view, adapterListener, itemClick)
return ViewHolder(view, adapterListener, activity, multiSelectorMode, multiSelector, listener, itemClick)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
itemViews.put(position, holder.bindView(activity, multiSelectorMode, multiSelector, media[position], listener, displayFilenames))
itemViews.put(position, holder.bindView(media[position], displayFilenames, scrollVertically))
toggleItemSelection(selectedPositions.contains(position), position)
holder.itemView.tag = holder
}
@ -335,17 +336,33 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
}
}
class ViewHolder(val view: View, val adapter: MyAdapterListener, val itemClick: (Medium) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
fun bindView(activity: SimpleActivity, multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, medium: Medium,
listener: MediaOperationsListener?, displayFilenames: Boolean): View {
class ViewHolder(val view: View, val adapter: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
val multiSelector: MultiSelector, val listener: MediaOperationsListener?, val itemClick: (Medium) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
fun bindView(medium: Medium, displayFilenames: Boolean, scrollVertically: Boolean): View {
itemView.apply {
play_outline.visibility = if (medium.video) View.VISIBLE else View.GONE
photo_name.beVisibleIf(displayFilenames)
photo_name.text = medium.name
activity.loadImage(medium.path, medium_thumbnail)
activity.loadImage(medium.path, medium_thumbnail, scrollVertically)
setOnClickListener { viewClicked(multiSelector, medium) }
setOnLongClickListener {
setOnClickListener { viewClicked(medium) }
setOnLongClickListener { viewLongClicked(); true }
adapter.setupItemForeground(this)
}
return itemView
}
fun viewClicked(medium: Medium) {
if (multiSelector.isSelectable) {
val isSelected = adapter.getSelectedPositions().contains(layoutPosition)
adapter.toggleItemSelectionAdapter(!isSelected, layoutPosition)
} else {
itemClick(medium)
}
}
fun viewLongClicked() {
if (listener != null) {
if (!multiSelector.isSelectable) {
activity.startSupportActionMode(multiSelectorCallback)
@ -354,21 +371,6 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
listener.itemLongClicked(layoutPosition)
}
true
}
adapter.setupItemForeground(this)
}
return itemView
}
fun viewClicked(multiSelector: MultiSelector, medium: Medium) {
if (multiSelector.isSelectable) {
val isSelected = adapter.getSelectedPositions().contains(layoutPosition)
adapter.toggleItemSelectionAdapter(!isSelected, layoutPosition)
} else {
itemClick(medium)
}
}
fun stopLoad() {

View file

@ -25,7 +25,7 @@ import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.activities.SimpleActivity
import com.simplemobiletools.gallery.helpers.NOMEDIA
import com.simplemobiletools.gallery.helpers.REQUEST_EDIT_IMAGE
import com.simplemobiletools.gallery.helpers.REQUEST_SET_WALLPAPER
import com.simplemobiletools.gallery.helpers.REQUEST_SET_AS
import com.simplemobiletools.gallery.models.Directory
import com.simplemobiletools.gallery.models.Medium
import com.simplemobiletools.gallery.views.MySquareImageView
@ -71,32 +71,32 @@ fun Activity.shareMedia(media: List<Medium>) {
}
}
fun Activity.trySetAsWallpaper(file: File) {
fun Activity.trySetAs(file: File) {
try {
var uri = Uri.fromFile(file)
if (!setAsWallpaper(uri, file)) {
if (!setAs(uri, file)) {
uri = getFileContentUri(file)
setAsWallpaper(uri, file, false)
setAs(uri, file, false)
}
} catch (e: Exception) {
toast(R.string.unknown_error_occurred)
}
}
fun Activity.setAsWallpaper(uri: Uri, file: File, showToast: Boolean = true): Boolean {
fun Activity.setAs(uri: Uri, file: File, showToast: Boolean = true): Boolean {
var success = false
Intent().apply {
action = Intent.ACTION_ATTACH_DATA
setDataAndType(uri, file.getMimeType("image/*"))
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val chooser = Intent.createChooser(this, getString(R.string.set_as_wallpaper_with))
val chooser = Intent.createChooser(this, getString(R.string.set_as))
if (resolveActivity(packageManager) != null) {
startActivityForResult(chooser, REQUEST_SET_WALLPAPER)
startActivityForResult(chooser, REQUEST_SET_AS)
success = true
} else {
if (showToast) {
toast(R.string.no_wallpaper_setter_found)
toast(R.string.no_capable_app_found)
}
success = false
}
@ -130,9 +130,9 @@ fun Activity.openWith(file: File, forceChooser: Boolean = true) {
action = Intent.ACTION_VIEW
setDataAndType(uri, file.getMimeType())
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val chooser = Intent.createChooser(this, getString(R.string.open_with))
if (resolveActivity(packageManager) != null) {
val chooser = Intent.createChooser(this, getString(R.string.open_with))
startActivity(if (forceChooser) chooser else this)
} else {
toast(R.string.no_app_found)
@ -140,15 +140,19 @@ fun Activity.openWith(file: File, forceChooser: Boolean = true) {
}
}
fun Activity.openEditor(file: File) {
val uri = Uri.fromFile(file)
fun Activity.openFileEditor(file: File) {
openEditor(Uri.fromFile(file))
}
fun Activity.openEditor(uri: Uri, forceChooser: Boolean = false) {
Intent().apply {
action = Intent.ACTION_EDIT
setDataAndType(uri, "image/*")
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
if (resolveActivity(packageManager) != null) {
startActivityForResult(this, REQUEST_EDIT_IMAGE)
val chooser = Intent.createChooser(this, getString(R.string.edit_image_with))
startActivityForResult(if (forceChooser) chooser else this, REQUEST_EDIT_IMAGE)
} else {
toast(R.string.no_editor_found)
}
@ -260,7 +264,8 @@ fun SimpleActivity.toggleFileVisibility(oldFile: File, hide: Boolean, callback:
fun Activity.getFileSignature(path: String) = StringSignature(File(path).lastModified().toString())
fun Activity.loadImage(path: String, target: MySquareImageView) {
fun Activity.loadImage(path: String, target: MySquareImageView, verticalScroll: Boolean) {
target.isVerticalScrolling = verticalScroll
if (path.isImageFast() || path.isVideoFast()) {
if (path.isPng()) {
loadPng(path, target)
@ -304,7 +309,7 @@ fun Activity.loadAnimatedGif(path: String, target: MySquareImageView) {
.load(path)
.asGif()
.signature(getFileSignature(path))
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.crossFade()
if (config.cropThumbnails) builder.centerCrop() else builder.fitCenter()

View file

@ -2,6 +2,7 @@ package com.simplemobiletools.gallery.extensions
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.database.Cursor
import android.net.Uri
import android.provider.MediaStore
@ -19,6 +20,8 @@ import com.simplemobiletools.gallery.models.Medium
import java.io.File
import java.util.*
val Context.portrait get() = resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
fun Context.getRealPathFromURI(uri: Uri): String? {
var cursor: Cursor? = null
try {
@ -139,8 +142,7 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP
}
}
if (curPath.isEmpty()) {
config.includedFolders.mapNotNull { File(it).listFiles() }.forEach {
config.includedFolders.filter { it.isEmpty() || it == curPath }.mapNotNull { File(it).listFiles() }.forEach {
for (file in it) {
val size = file.length()
if (size <= 0L) {
@ -169,7 +171,6 @@ private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isP
curMedia.add(medium)
}
}
}
Medium.sorting = config.getFileSorting(curPath)
curMedia.sort()

View file

@ -27,6 +27,7 @@ import com.simplemobiletools.gallery.activities.ViewPagerActivity
import com.simplemobiletools.gallery.extensions.config
import com.simplemobiletools.gallery.extensions.getFileSignature
import com.simplemobiletools.gallery.extensions.getRealPathFromURI
import com.simplemobiletools.gallery.extensions.portrait
import com.simplemobiletools.gallery.helpers.GlideRotateTransformation
import com.simplemobiletools.gallery.helpers.MEDIUM
import com.simplemobiletools.gallery.models.Medium
@ -229,8 +230,6 @@ class PhotoFragment : ViewPagerFragment() {
}
private fun getDoubleTapZoomScale(): Float {
val displayAspectRatio = ViewPagerActivity.screenHeight / (ViewPagerActivity.screenWidth).toFloat()
val bitmapOptions = BitmapFactory.Options()
bitmapOptions.inJustDecodeBounds = true
BitmapFactory.decodeFile(medium.path, bitmapOptions)
@ -238,12 +237,15 @@ class PhotoFragment : ViewPagerFragment() {
val height = bitmapOptions.outHeight
val bitmapAspectRatio = height / (width).toFloat()
return if (Math.abs(displayAspectRatio - bitmapAspectRatio) < RATIO_THRESHOLD) {
2f
} else if (bitmapAspectRatio > 1f) {
width / (height).toFloat()
if (context == null)
return 2f
return if (context.portrait && bitmapAspectRatio <= 1f) {
ViewPagerActivity.screenHeight / height.toFloat()
} else if (!context.portrait && bitmapAspectRatio >= 1f) {
ViewPagerActivity.screenWidth / width.toFloat()
} else {
bitmapAspectRatio
2f
}
}

View file

@ -95,6 +95,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
super.setMenuVisibility(menuVisible)
mIsFragmentVisible = menuVisible
if (menuVisible) {
if (mSurfaceView != null)
initMediaPlayer()
if (context?.config?.autoplayVideos == true) {
playVideo()
}
@ -228,6 +231,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
}
} catch (e: IOException) {
Log.e(TAG, "init media player failed $e")
releaseMediaPlayer()
}
}
@ -258,12 +262,16 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
private fun cleanup() {
pauseVideo()
mCurrTimeView?.text = 0.getFormattedDuration()
mMediaPlayer?.release()
mMediaPlayer = null
releaseMediaPlayer()
mSeekBar?.progress = 0
mTimerHandler?.removeCallbacksAndMessages(null)
}
private fun releaseMediaPlayer() {
mMediaPlayer?.release()
mMediaPlayer = null
}
private fun videoPrepared(mediaPlayer: MediaPlayer) {
mDuration = mediaPlayer.duration / 1000
addPreviewImage()
@ -294,8 +302,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
mMediaPlayer?.release()
mMediaPlayer = null
releaseMediaPlayer()
}
private fun setVideoSize() {
@ -348,6 +355,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
override fun onStartTrackingTouch(seekBar: SeekBar) {
initMediaPlayer()
if (mMediaPlayer == null)
return
mMediaPlayer!!.pause()
mIsDragged = true
}

View file

@ -1,6 +1,7 @@
package com.simplemobiletools.gallery.helpers
import android.content.Context
import android.content.res.Configuration
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.simplemobiletools.commons.helpers.BaseConfig
@ -160,12 +161,52 @@ class Config(context: Context) : BaseConfig(context) {
set(showMedia) = prefs.edit().putInt(SHOW_MEDIA, showMedia).apply()
var dirColumnCnt: Int
get() = prefs.getInt(DIR_COLUMN_CNT, context.resources.getInteger(R.integer.directory_columns))
set(dirColumnCnt) = prefs.edit().putInt(DIR_COLUMN_CNT, dirColumnCnt).apply()
get() = prefs.getInt(getDirectoryColumnsField(), getDefaultDirectoryColumnCount())
set(dirColumnCnt) = prefs.edit().putInt(getDirectoryColumnsField(), dirColumnCnt).apply()
private fun getDirectoryColumnsField(): String {
val isPortrait = context.resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
return if (isPortrait) {
if (scrollHorizontally) {
DIR_HORIZONTAL_COLUMN_CNT
} else {
DIR_COLUMN_CNT
}
} else {
if (scrollHorizontally) {
DIR_LANDSCAPE_HORIZONTAL_COLUMN_CNT
} else {
DIR_LANDSCAPE_COLUMN_CNT
}
}
}
private fun getDefaultDirectoryColumnCount() = context.resources.getInteger(if (scrollHorizontally) R.integer.directory_columns_horizontal_scroll
else R.integer.directory_columns_vertical_scroll)
var mediaColumnCnt: Int
get() = prefs.getInt(MEDIA_COLUMN_CNT, context.resources.getInteger(R.integer.media_columns))
set(mediaColumnCnt) = prefs.edit().putInt(MEDIA_COLUMN_CNT, mediaColumnCnt).apply()
get() = prefs.getInt(getMediaColumnsField(), getDefaultMediaColumnCount())
set(mediaColumnCnt) = prefs.edit().putInt(getMediaColumnsField(), mediaColumnCnt).apply()
private fun getMediaColumnsField(): String {
val isPortrait = context.resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
return if (isPortrait) {
if (scrollHorizontally) {
MEDIA_HORIZONTAL_COLUMN_CNT
} else {
MEDIA_COLUMN_CNT
}
} else {
if (scrollHorizontally) {
MEDIA_LANDSCAPE_HORIZONTAL_COLUMN_CNT
} else {
MEDIA_LANDSCAPE_COLUMN_CNT
}
}
}
private fun getDefaultMediaColumnCount() = context.resources.getInteger(if (scrollHorizontally) R.integer.media_columns_horizontal_scroll
else R.integer.media_columns_vertical_scroll)
var directories: String
get() = prefs.getString(DIRECTORIES, "")
@ -179,4 +220,8 @@ class Config(context: Context) : BaseConfig(context) {
val listType = object : TypeToken<List<AlbumCover>>() {}.type
return Gson().fromJson<ArrayList<AlbumCover>>(albumCovers, listType) ?: ArrayList(1)
}
var scrollHorizontally: Boolean
get() = prefs.getBoolean(SCROLL_HORIZONTALLY, false)
set(scrollHorizontally) = prefs.edit().putBoolean(SCROLL_HORIZONTALLY, scrollHorizontally).apply()
}

View file

@ -16,7 +16,13 @@ val DISPLAY_FILE_NAMES = "display_file_names"
val DARK_BACKGROUND = "dark_background"
val PINNED_FOLDERS = "pinned_folders"
val DIR_COLUMN_CNT = "dir_column_cnt"
val DIR_LANDSCAPE_COLUMN_CNT = "dir_landscape_column_cnt"
val DIR_HORIZONTAL_COLUMN_CNT = "dir_horizontal_column_cnt"
val DIR_LANDSCAPE_HORIZONTAL_COLUMN_CNT = "dir_landscape_horizontal_column_cnt"
val MEDIA_COLUMN_CNT = "media_column_cnt"
val MEDIA_LANDSCAPE_COLUMN_CNT = "media_landscape_column_cnt"
val MEDIA_HORIZONTAL_COLUMN_CNT = "media_horizontal_column_cnt"
val MEDIA_LANDSCAPE_HORIZONTAL_COLUMN_CNT = "media_landscape_horizontal_column_cnt"
val SHOW_ALL = "show_all" // display images and videos from all folders together
val SHOW_MEDIA = "show_media"
val SAVE_FOLDER_PREFIX = "folder2_"
@ -24,6 +30,7 @@ val HIDE_FOLDER_TOOLTIP_SHOWN = "hide_folder_tooltip_shown"
val EXCLUDED_FOLDERS = "excluded_folders"
val INCLUDED_FOLDERS = "included_folders"
val ALBUM_COVERS = "album_covers"
val SCROLL_HORIZONTALLY = "scroll_horizontally"
val NOMEDIA = ".nomedia"
@ -37,7 +44,7 @@ val DIRECTORIES = "directories2"
val IS_VIEW_INTENT = "is_view_intent"
val REQUEST_EDIT_IMAGE = 1
val REQUEST_SET_WALLPAPER = 2
val REQUEST_SET_AS = 2
// show media
val IMAGES_AND_VIDEOS = 0

View file

@ -5,6 +5,7 @@ import android.util.AttributeSet
import android.widget.ImageView
class MySquareImageView : ImageView {
var isVerticalScrolling = true
constructor(context: Context) : super(context)
@ -14,6 +15,7 @@ class MySquareImageView : ImageView {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
setMeasuredDimension(measuredWidth, measuredWidth)
val spec = if (isVerticalScrolling) measuredWidth else measuredHeight
setMeasuredDimension(spec, spec)
}
}

View file

@ -17,7 +17,7 @@
android:layout_height="wrap_content"
android:scrollbars="none"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
app:spanCount="@integer/directory_columns"/>
app:spanCount="@integer/directory_columns_vertical_scroll"/>
<com.simplemobiletools.commons.views.FastScroller
android:id="@+id/directories_fastscroller"

View file

@ -17,7 +17,7 @@
android:layout_height="wrap_content"
android:scrollbars="none"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
app:spanCount="@integer/media_columns"/>
app:spanCount="@integer/media_columns_vertical_scroll"/>
<com.simplemobiletools.commons.views.FastScroller
android:id="@+id/media_fastscroller"

View file

@ -208,6 +208,27 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_scroll_horizontally_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:visibility="gone">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_scroll_horizontally"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingLeft="@dimen/medium_margin"
android:paddingStart="@dimen/medium_margin"
android:text="@string/scroll_thumbnails_horizontally"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_screen_rotation_holder"
android:layout_width="match_parent"

View file

@ -7,4 +7,4 @@
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_margin"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
app:spanCount="@integer/directory_columns"/>
app:spanCount="@integer/directory_columns_vertical_scroll"/>

View file

@ -7,4 +7,4 @@
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_margin"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
app:spanCount="@integer/media_columns"/>
app:spanCount="@integer/media_columns_vertical_scroll"/>

View file

@ -2,7 +2,7 @@
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dir_holder"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1px">

View file

@ -2,7 +2,7 @@
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/media_item_holder"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1px">

View file

@ -30,4 +30,8 @@
android:title="@string/flip_vertically"/>
</menu>
</item>
<item
android:id="@+id/edit"
android:title="@string/edit_with"
app:showAsAction="never"/>
</menu>

View file

@ -43,8 +43,8 @@
android:title="@string/move_to"
app:showAsAction="never"/>
<item
android:id="@+id/menu_set_as_wallpaper"
android:title="@string/set_as_wallpaper"
android:id="@+id/menu_set_as"
android:title="@string/set_as"
app:showAsAction="never"/>
<item
android:id="@+id/menu_open_with"

View file

@ -12,8 +12,8 @@
android:title="@string/edit"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_set_as_wallpaper"
android:title="@string/set_as_wallpaper"
android:id="@+id/menu_set_as"
android:title="@string/set_as"
app:showAsAction="never"/>
<item
android:id="@+id/menu_open_with"

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Nastavit jako</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Tato funkce skryje složku, včetně podsložek, přidáním souboru \'.nomedia\'. Zobrazíte je zvolením možnosti \'Zobrazit skryté složky\' v nastavení. Pokračovat?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Překlopit vodorovně</string>
<string name="flip_vertically">Překlopit svisle</string>
<string name="out_of_memory_error">Zařízení nemá dostatek paměti</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Jednoduchá tapeta</string>
<string name="set_as_wallpaper">Nastavit jako tapetu</string>
<string name="set_as_wallpaper_failed">Nastavení tapety selhalo</string>
<string name="set_as_wallpaper_with">Nastavit jako tapetu pomocí:</string>
<string name="no_wallpaper_setter_found">Nebyla nalezena žádná vhodná aplikace</string>
<string name="no_capable_app_found">Nebyla nalezena žádná vhodná aplikace</string>
<string name="setting_wallpaper">Nastavuje se tapeta&#8230;</string>
<string name="wallpaper_set_successfully">Tapeta byla úspěšně změněna</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,8 +88,8 @@
<string name="show_media">Zobrazit média</string>
<string name="images">Jen obrázky</string>
<string name="videos">Jen videa</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Obrázky i videa</string>
<string name="loop_videos">Přehrávat videa ve smyčce</string>
<string name="animate_gifs">Animovat náhledy souborů GIF</string>

View file

@ -21,8 +21,9 @@
<string name="reduce_column_count">Kacheln vergrößern</string>
<string name="temporarily_show_hidden">Verstecktes temporär zeigen</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="select_photo">Bild auswählen</string>
<string name="use_default">Standard verwenden</string>
<string name="set_as">Festlegen als</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Diese Funktion versteckt ausgewählte Ordner (auch für andere Apps), indem dort im Dateisystem eine \'.nomedia\'-Datei abgelegt wird. Dadurch werden auch deren Unterordner versteckt. Solche Ordner werden nur gezeigt, wenn die Einstellung \'Versteckte Ordner zeigen\' aktiv ist (auch andere Apps bieten üblicherweise eine solche Option). Fortfahren?</string>
@ -39,7 +40,7 @@
<string name="include_folders">Einbezogene Ordner</string>
<string name="manage_included_folders">Einbezogene Ordner verwalten</string>
<string name="add_folder">Ordner hinzufügen</string>
<string name="included_activity_placeholder">Sollten Sie weitere Medien-Ordner haben, die von der App nicht erkannt wurden, können Sie diese hier manuell hinzufügen.</string>
<string name="included_activity_placeholder">Sollten Sie weitere Medienordner haben, die von der App nicht erkannt wurden, können Sie diese hier manuell hinzufügen.</string>
<!-- Resizing -->
<string name="resize">Größe ändern</string>
@ -62,18 +63,19 @@
<string name="error_saving_file">Konnte Quelldatei nicht überschreiben</string>
<string name="rotate_left">Nach links drehen</string>
<string name="rotate_right">Nach rechts drehen</string>
<string name="rotate_one_eighty">Um 180º drehen</string>
<string name="rotate_one_eighty">Um 180° drehen</string>
<string name="flip">Spiegeln</string>
<string name="flip_horizontally">Horizontal spiegeln</string>
<string name="flip_vertically">Vertikal spiegeln</string>
<string name="out_of_memory_error">Fehler: Zuwenig Speicher</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Schlichter Hintergrund</string>
<string name="set_as_wallpaper">Als Hintergrund festlegen</string>
<string name="set_as_wallpaper_failed">Hintergrundbild festlegen fehlgeschlagen</string>
<string name="set_as_wallpaper_with">Als Hintergrund festlegen mit:</string>
<string name="no_wallpaper_setter_found">Keine Hintergrundbild-App gefunden</string>
<string name="no_capable_app_found">Keine Hintergrundbild-App gefunden</string>
<string name="setting_wallpaper">Hintergrund festlegen&#8230;</string>
<string name="wallpaper_set_successfully">Hintergrundbild erfolgreich festgelegt</string>
<string name="portrait_aspect_ratio">Hochformat</string>
@ -86,8 +88,8 @@
<string name="show_media">Medien auswählen</string>
<string name="images">Nur Bilder</string>
<string name="videos">Nur Videos</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">Nur GIFs</string>
<string name="images_videos_gifs">Bilder, Videos und GIFs</string>
<string name="images_and_videos">Bilder und Videos</string>
<string name="loop_videos">Videos in Endlosschleife spielen</string>
<string name="animate_gifs">Kacheln bei GIFs animieren</string>
@ -98,7 +100,7 @@
<string name="screen_rotation_device_rotation">Gerätedrehung</string>
<string name="screen_rotation_aspect_ratio">Seitenverhältnis</string>
<string name="dark_background_at_fullscreen">Schwarzer Hintergrund im Vollbild</string>
<string name="scroll_thumbnails_horizontally">Scroll thumbnails horizontally</string>
<string name="scroll_thumbnails_horizontally">Kacheln horizontal scrollen</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Esta función oculta la carpeta agregando un archivo \'.nomedia\' en ella, y ocultará también las subcarpetas. Puede mostrarlas cambiando la opción \'Mostrar carpetas ocultas\' en los Ajustes. ¿Continuar?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Horizontalmente</string>
<string name="flip_vertically">Verticalmente</string>
<string name="out_of_memory_error">Error: sin memoria</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Fondos de pantalla Simple Gallery</string>
<string name="set_as_wallpaper">Establecer como fondo de pantalla</string>
<string name="set_as_wallpaper_failed">Error al establecer fondo de pantalla</string>
<string name="set_as_wallpaper_with">Establecer como fondo de pantalla con:</string>
<string name="no_wallpaper_setter_found">No se encontró aplicación para ello</string>
<string name="no_capable_app_found">No se encontró aplicación para ello</string>
<string name="setting_wallpaper">Estableciendo fondo de pantalla&#8230;</string>
<string name="wallpaper_set_successfully">Fondo de pantalla establecido correctamente</string>
<string name="portrait_aspect_ratio">Relación de aspecto tipo retrato</string>
@ -86,11 +88,11 @@
<string name="show_media">Mostrar multimedia</string>
<string name="images">Solo imágenes</string>
<string name="videos">Solo vídeos</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Imágenes y vídeos</string>
<string name="loop_videos">Reproducción continua de vídeos</string>
<string name="animate_gifs">Animar las miniaturas de gifs</string>
<string name="animate_gifs">Animar las miniaturas de GIFs</string>
<string name="max_brightness">Brillo máximo cuando se muestra multimedia</string>
<string name="crop_thumbnails">Recortar miniaturas en cuadrados</string>
<string name="screen_rotation_by">Rotar multimedia en pantalla completa según</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Cette option masque le dossier en ajoutant un fichier \'.nomedia\' à l\'intérieur, cela masquera aussi tous les sous-dossiers. Vous pouvez les voir en modifiant l\'option \'Afficher les dossiers cachés\' dans les Paramètres. Continuer ?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Retourner horizontalement</string>
<string name="flip_vertically">Retourner verticallement</string>
<string name="out_of_memory_error">Erreur excès de mémoire</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple fond d\'écran</string>
<string name="set_as_wallpaper">Définir comme fond d\'écran</string>
<string name="set_as_wallpaper_failed">Échec de la définition en tant que fond d\'écran.</string>
<string name="set_as_wallpaper_with">Définir comme fond d\'écran avec :</string>
<string name="no_wallpaper_setter_found">Aucune application trouvée pour continuer cette action</string>
<string name="no_capable_app_found">Aucune application trouvée pour continuer cette action</string>
<string name="setting_wallpaper">Paramètre de fond d\'écran…</string>
<string name="wallpaper_set_successfully">Fond d\'écran défini avec succès.</string>
<string name="portrait_aspect_ratio">Ratio aspect Portrait</string>
@ -86,11 +88,11 @@
<string name="show_media">Afficher les médias</string>
<string name="images">Seulement les images</string>
<string name="videos">Vidéos uniquement</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Images et vidéos</string>
<string name="loop_videos">Tourner en boucle les vidéos</string>
<string name="animate_gifs">Gifs animés sur les miniatures</string>
<string name="animate_gifs">GIFs animés sur les miniatures</string>
<string name="max_brightness">Luminosité maximale lors de l\'affichage de media</string>
<string name="crop_thumbnails">Rogner les miniatures en carrés</string>
<string name="screen_rotation_by">Pivoter les medias plen écran selon</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip horizontally</string>
<string name="flip_vertically">Flip vertically</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string>
<string name="set_as_wallpaper">Set as Wallpaper</string>
<string name="set_as_wallpaper_failed">Setting as Wallpaper failed</string>
<string name="set_as_wallpaper_with">Set as wallpaper with:</string>
<string name="no_wallpaper_setter_found">No app capable of it has been found</string>
<string name="no_capable_app_found">No app capable of it has been found</string>
<string name="setting_wallpaper">Setting wallpaper&#8230;</string>
<string name="wallpaper_set_successfully">Wallpaper set successfully</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Show media</string>
<string name="images">Images only</string>
<string name="videos">Videos only</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Images and videos</string>
<string name="loop_videos">Loop videos</string>
<string name="animate_gifs">Animate gifs at thumbnails</string>
<string name="animate_gifs">Animate GIFs at thumbnails</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Questa funzione nasconde la cartella aggiungendo un file \'.nomedia\' all\'interno, nasconderà anche tutte le sottocartelle. Puoi vederle attivando l\'opzione \'Mostra cartelle nascoste\' nelle impostazioni. Continuare?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Capovolgi orizzontalmente</string>
<string name="flip_vertically">Capovolgi verticalmente</string>
<string name="out_of_memory_error">Errore memoria esaurita</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Sfondo semplice</string>
<string name="set_as_wallpaper">Imposta come sfondo</string>
<string name="set_as_wallpaper_failed">Impostazione sfondo non riuscita</string>
<string name="set_as_wallpaper_with">Imposta come sfondo con:</string>
<string name="no_wallpaper_setter_found">Non sono disponibili app compatibili</string>
<string name="no_capable_app_found">Non sono disponibili app compatibili</string>
<string name="setting_wallpaper">Impostazione sfondo&#8230;</string>
<string name="wallpaper_set_successfully">Sfondo impostato correttamente</string>
<string name="portrait_aspect_ratio">Proporzioni ritratto</string>
@ -86,11 +88,11 @@
<string name="show_media">Mostra tipo di media</string>
<string name="images">Solo immagini</string>
<string name="videos">Solo video</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Immagini e video</string>
<string name="loop_videos">Ripeti i video</string>
<string name="animate_gifs">Anima le gif in miniatura</string>
<string name="animate_gifs">Anima le GIF in miniatura</string>
<string name="max_brightness">Luminosità max durante visualizzazione</string>
<string name="crop_thumbnails">Ritaglia le miniature in quadrati</string>
<string name="screen_rotation_by">Ruota a schermo intero per</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip horizontally</string>
<string name="flip_vertically">Flip vertically</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">シンプル壁紙</string>
<string name="set_as_wallpaper">壁紙として設定</string>
<string name="set_as_wallpaper_failed">壁紙としての設定に失敗しました</string>
<string name="set_as_wallpaper_with">壁紙として設定:</string>
<string name="no_wallpaper_setter_found">対応できるアプリが見つかりません</string>
<string name="no_capable_app_found">対応できるアプリが見つかりません</string>
<string name="setting_wallpaper">壁紙の設定&#8230;</string>
<string name="wallpaper_set_successfully">壁紙を正常に設定しました</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Show media</string>
<string name="images">Images only</string>
<string name="videos">Videos only</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Images and videos</string>
<string name="loop_videos">Loop videos</string>
<string name="animate_gifs">Animate gifs at thumbnails</string>
<string name="animate_gifs">Animate GIFs at thumbnails</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Ta funkcja ukrywa folder dodając \'. \' Nomedia plik do niego, można tak ukryć wszystkie podfoldery. Można je zobaczyć poprzez przełączanie \'Pokaż ukryte foldery \' opcję w ustawieniach. Kontyntynuj?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip poziomo</string>
<string name="flip_vertically">Flip pionowo</string>
<string name="out_of_memory_error">Błąd pamięci</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Tapeta</string>
<string name="set_as_wallpaper">Ustaw jako tapeta</string>
<string name="set_as_wallpaper_failed">Ustawienie tapety nie powiodło się</string>
<string name="set_as_wallpaper_with">Ustaw jako tapetę w:</string>
<string name="no_wallpaper_setter_found">Brak odpowiednich ustawień</string>
<string name="no_capable_app_found">Brak odpowiednich ustawień</string>
<string name="setting_wallpaper">Ustawianie tapety&#8230;</string>
<string name="wallpaper_set_successfully">Tapeta ustawiona</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Wybierz co pokazywać</string>
<string name="images">Tylko Zdjęcia</string>
<string name="videos">Tylko Filmy</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Obrazy i wideo</string>
<string name="loop_videos">Pętla wideo</string>
<string name="animate_gifs">Animowanie gify z miniaturkami</string>
<string name="animate_gifs">Animowanie GIFy z miniaturkami</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -20,9 +20,10 @@
<string name="increase_column_count">Aumentar número de colunas</string>
<string name="reduce_column_count">Reduzir número de colunas</string>
<string name="temporarily_show_hidden">Mostrar pastas ocultas temporariamente</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="change_cover_image">Trocar imagem de capa</string>
<string name="select_photo">Selecionar foto</string>
<string name="use_default">Usar padrão</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Esta opção oculta uma pasta com a adição de um arquivo \'.nomedia\' dentro dela, e irá ocultar todas as subpastas que estejam dentro da mesma. Você poderá rever essas pastas com a opção \'Mostrar pastas ocultas\'. Continuar?</string>
@ -67,15 +68,16 @@
<string name="flip_horizontally">Horizontalmente</string>
<string name="flip_vertically">Verticalmente</string>
<string name="out_of_memory_error">Memória insuficiente</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string>
<string name="set_as_wallpaper">Definir como fundo de tela</string>
<string name="set_as_wallpaper_failed">Falha ao definir como fundo de tela</string>
<string name="set_as_wallpaper_with">Definir fundo de tela com:</string>
<string name="no_wallpaper_setter_found">Aplicativo não encontrado</string>
<string name="setting_wallpaper">A definir como fundo de tela;</string>
<string name="wallpaper_set_successfully">Fundo de tela definido com sucesso</string>
<string name="set_as_wallpaper">Definir como papel de parede</string>
<string name="set_as_wallpaper_failed">Falha ao definir como papel de parede</string>
<string name="set_as_wallpaper_with">Definir papel de parede com:</string>
<string name="no_capable_app_found">Aplicativo não encontrado</string>
<string name="setting_wallpaper">Definindo como papel de parede;</string>
<string name="wallpaper_set_successfully">Papel de parede com sucesso</string>
<string name="portrait_aspect_ratio">Retrato</string>
<string name="landscape_aspect_ratio">Paisagem</string>
@ -86,11 +88,11 @@
<string name="show_media">Mostrar mídia</string>
<string name="images">Apenas imagens</string>
<string name="videos">Apenas vídeos</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">Apenas GIFS</string>
<string name="images_videos_gifs">Imagens, vídeos, GIFs</string>
<string name="images_and_videos">Imagens e vídeos</string>
<string name="loop_videos">Reproduzir vídeos em ciclo</string>
<string name="animate_gifs">Animação de gifs nas miniaturas</string>
<string name="animate_gifs">Animação de GIFs nas miniaturas</string>
   <string name="max_brightness">Brilho máximo ao visualizar mídia</string>
<string name="crop_thumbnails">Recortar miniaturas em quadrados</string>
<string name="screen_rotation_by">Critério para rotação de tela</string>
@ -98,7 +100,7 @@
<string name="screen_rotation_device_rotation">Sensor do aparelho</string>
<string name="screen_rotation_aspect_ratio">Proporção da mídia</string>
<string name="dark_background_at_fullscreen">Fundo de tela escuro em mídia tela cheia</string>
<string name="scroll_thumbnails_horizontally">Scroll thumbnails horizontally</string>
<string name="scroll_thumbnails_horizontally">Rolar miniaturas horizontalmente</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -18,11 +18,12 @@
<string name="no_map_application">Não existe uma aplicação adequada</string>
<string name="no_camera_app_found">Não existe uma aplicação adequeada</string>
<string name="increase_column_count">Aumentar número de colunas</string>
<string name="reduce_column_count">Reduzir número de colunas</string>
<string name="reduce_column_count">Diminuir número de colunas</string>
<string name="temporarily_show_hidden">Mostrar ocultas temporariamente</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="change_cover_image">Alterar imagem da capa</string>
<string name="select_photo">Selecionar foto</string>
<string name="use_default">Predefinição</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Esta opção oculta uma pasta com a adição de um ficheiro \'.nomedia\' na pasta, e irá ocultar todas as subpastas existentes. Pode ver as pastas com a opção \'Mostrar pastas ocultas\'. Continuar?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Horizontalmente</string>
<string name="flip_vertically">Verticalmente</string>
<string name="out_of_memory_error">Memória insuficiente</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string>
<string name="set_as_wallpaper">Definir como fundo do ecrã</string>
<string name="set_as_wallpaper_failed">Falha ao definir como fundo de ecrã</string>
<string name="set_as_wallpaper_with">Definir como fundo com:</string>
<string name="no_wallpaper_setter_found">Aplicação não encontrada</string>
<string name="no_capable_app_found">Aplicação não encontrada</string>
<string name="setting_wallpaper">A definir como fundo de ecrã&#8230;</string>
<string name="wallpaper_set_successfully">Fundo definido com sucesso</string>
<string name="portrait_aspect_ratio">Proporção na vertical</string>
@ -86,11 +88,11 @@
<string name="show_media">Mostrar multimédia</string>
<string name="images">Apenas imagens</string>
<string name="videos">Apenas vídeos</string>
<string name="gifs">Apenas gifs</string>
<string name="images_videos_gifs">Imagens, vídeos e gifs</string>
<string name="gifs">Apenas GIFs</string>
<string name="images_videos_gifs">Imagens, vídeos e GIFs</string>
<string name="images_and_videos">Imagens e vídeos</string>
<string name="loop_videos">Vídeos em ciclo</string>
<string name="animate_gifs">Animação de gifs nas miniaturas</string>
<string name="animate_gifs">Animação de GIFs nas miniaturas</string>
<string name="max_brightness">Brilho máximo permitido</string>
<string name="crop_thumbnails">Recortar miniaturas em quadrados</string>
<string name="screen_rotation_by">Rodar em ecrã completo por</string>
@ -98,7 +100,7 @@
<string name="screen_rotation_device_rotation">Rotação do dispositivo</string>
<string name="screen_rotation_aspect_ratio">Proporção</string>
<string name="dark_background_at_fullscreen">Usar sempre um fundo escuro se em ecrã completo</string>
<string name="scroll_thumbnails_horizontally">Scroll thumbnails horizontally</string>
<string name="scroll_thumbnails_horizontally">Deslocação horizontal de miniaturas</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Эта опция скрывает папку, добавляя в неё файл \'.nomedia\'; будут скрыты все подпапки. Можно показывать их, переключая \'Показать скрытые папки\' в настройках. Продолжить?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">По горизонтали</string>
<string name="flip_vertically">По вертикали</string>
<string name="out_of_memory_error">Память переполнена</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Простые обои</string>
<string name="set_as_wallpaper">Установить в качестве обоев</string>
<string name="set_as_wallpaper_failed">Установить не удалось</string>
<string name="set_as_wallpaper_with">Установить в качестве обоев в:</string>
<string name="no_wallpaper_setter_found">Приложение не найдено</string>
<string name="no_capable_app_found">Приложение не найдено</string>
<string name="setting_wallpaper">Установка обоев&#8230;</string>
<string name="wallpaper_set_successfully">Обои успешно установлены</string>
<string name="portrait_aspect_ratio">Формат изображения</string>
@ -86,11 +88,11 @@
<string name="show_media">Отображать</string>
<string name="images">Только изображения</string>
<string name="videos">Только видео</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Изображения и видео</string>
<string name="loop_videos">Повторять видео</string>
<string name="animate_gifs">Анимировать эскизы gif-файлов</string>
<string name="animate_gifs">Анимировать эскизы GIF-файлов</string>
<string name="max_brightness">Максимальная яркость при просмотре файлов</string>
<string name="crop_thumbnails">Нарезать миниатюры в квадраты</string>
<string name="screen_rotation_by">Полноэкранный поворот</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Zmeniť obal albumu</string>
<string name="select_photo">Zvoliť foto</string>
<string name="use_default">Použiť predvolený</string>
<string name="set_as">Nastaviť ako</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Táto funkcia skryje priečinok pridaním súboru \'.nomedia\', skryté budú aj podpriečinky. Môžete ich vidieť zvolením možnosti \'Zobraziť skryté priečinky\' v nastaveniach. Pokračovať?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Preklopiť vodorovne</string>
<string name="flip_vertically">Preklopiť zvisle</string>
<string name="out_of_memory_error">Došlo k chybe s nedostatkom pamäte</string>
<string name="edit_with">Upraviť s</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Jednoduchá tapeta</string>
<string name="set_as_wallpaper">Nastaviť ako tapetu</string>
<string name="set_as_wallpaper_failed">Nastavovanie ako tapeta zlyhalo</string>
<string name="set_as_wallpaper_with">Nastaviť ako tapetu s:</string>
<string name="no_wallpaper_setter_found">Nenašla sa žiadna vhodná aplikácia No app capable of it has been found</string>
<string name="no_capable_app_found">Nenašla sa žiadna vhodná aplikácia</string>
<string name="setting_wallpaper">Nastavuje sa tapeta&#8230;</string>
<string name="wallpaper_set_successfully">Tapeta bola úspešne zmenená</string>
<string name="portrait_aspect_ratio">Orientácia nastojato</string>
@ -86,11 +88,11 @@
<string name="show_media">Zobraziť médiá</string>
<string name="images">Iba obrázky</string>
<string name="videos">Iba videá</string>
<string name="gifs">Iba gif</string>
<string name="images_videos_gifs">Obrázky, videá, gif</string>
<string name="gifs">Iba GIF</string>
<string name="images_videos_gifs">Obrázky, videá, GIF</string>
<string name="images_and_videos">Obrázky aj videá</string>
<string name="loop_videos">Automaticky reštartovať videá</string>
<string name="animate_gifs">Animovať gif súbory pri náhľade</string>
<string name="animate_gifs">Animovať GIF súbory pri náhľade</string>
<string name="max_brightness">Maximálny jas pri prezeraní médií</string>
<string name="crop_thumbnails">Orezať náhľady na štvorce</string>
<string name="screen_rotation_by">Otáčať obrazovku podľa Rotate fullscreen media by</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip horizontally</string>
<string name="flip_vertically">Flip vertically</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Bakgrundsbild</string>
<string name="set_as_wallpaper">Ange som bakgrundsbild</string>
<string name="set_as_wallpaper_failed">Det gick inte att byta bakgrundsbild</string>
<string name="set_as_wallpaper_with">Ange som bakgrundsbild med:</string>
<string name="no_wallpaper_setter_found">Hittade ingen app som klarar av detta</string>
<string name="no_capable_app_found">Hittade ingen app som klarar av detta</string>
<string name="setting_wallpaper">Inställningar för bakgrundsbild&#8230;</string>
<string name="wallpaper_set_successfully">Bakgrundsbilden är ändrad</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Visa media</string>
<string name="images">Endast bilder</string>
<string name="videos">Endast videos</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Bilder och videos</string>
<string name="loop_videos">Återspela videos</string>
<string name="animate_gifs">Animate gifs at thumbnails</string>
<string name="animate_gifs">Animate GIFs at thumbnails</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">Bu işlev, klasöre\'.medya yok\'dosyası ekleyerek gizler; tüm alt klasörleri de gizler. Bunları Ayarlar\'da\'Gizli klasörleri göster\'seçeneğine basarak görebilirsiniz. Devam et?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Yatay</string>
<string name="flip_vertically">Dikey</string>
<string name="out_of_memory_error">Yetersiz bellek hatası</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Basit Duvar Kağıdı</string>
<string name="set_as_wallpaper">Duvar kağıdı olarak ayarla</string>
<string name="set_as_wallpaper_failed">Duvar Kağıdı Olarak Ayarlanılamıyor</string>
<string name="set_as_wallpaper_with">İle duvar kağıdı olarak ayarla:</string>
<string name="no_wallpaper_setter_found">Mümkün olan herhangi bir uygulama bulunamadı</string>
<string name="no_capable_app_found">Mümkün olan herhangi bir uygulama bulunamadı</string>
<string name="setting_wallpaper">Duvar kağıdını ayarlama&#8230;</string>
<string name="wallpaper_set_successfully">Duvar kağıdı başarıyla ayarlandı</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Medyayı göster</string>
<string name="images">Yalnızca resimler</string>
<string name="videos">Yalnızca videolar</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Resimler ve videolar</string>
<string name="loop_videos">Videolar döngüsü</string>
<string name="animate_gifs">Küçük resimlerde gif\'leri canlandırın</string>
<string name="animate_gifs">Küçük resimlerde GIF\'leri canlandırın</string>
<string name="max_brightness">Ortam görüntülerken azami parlaklık</string>
<string name="crop_thumbnails">Küçük resimleri karelere kırp</string>
<string name="screen_rotation_by">Tarafından tam ekran medyayı döndür</string>

View file

@ -1,4 +1,6 @@
<resources>
<integer name="directory_columns">3</integer>
<integer name="media_columns">5</integer>
<integer name="directory_columns_vertical_scroll">3</integer>
<integer name="directory_columns_horizontal_scroll">3</integer>
<integer name="media_columns_vertical_scroll">5</integer>
<integer name="media_columns_horizontal_scroll">5</integer>
</resources>

View file

@ -1,4 +1,6 @@
<resources>
<integer name="directory_columns">4</integer>
<integer name="media_columns">7</integer>
<integer name="directory_columns_vertical_scroll">4</integer>
<integer name="directory_columns_horizontal_scroll">7</integer>
<integer name="media_columns_vertical_scroll">7</integer>
<integer name="media_columns_horizontal_scroll">8</integer>
</resources>

View file

@ -5,41 +5,42 @@
<string name="edit">编辑</string>
<string name="open_camera">打开相机</string>
<string name="open_with">打开方式</string>
<string name="no_app_found">没有可用的应用</string>
<string name="hidden">(隐藏)</string>
<string name="pin_folder">锁定目录</string>
<string name="unpin_folder">解除锁定目录</string>
<string name="show_all">显示目录中所有内容</string>
<string name="all_folders">所有目录</string>
<string name="folder_view">切换到目录视图</string>
<string name="other_folder">其他目录</string>
<string name="no_app_found">未找到可用应用</string>
<string name="hidden">(隐藏)</string>
<string name="pin_folder">锁定文件夹</string>
<string name="unpin_folder">解除锁定文件夹</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="no_map_application">未发现地图应用</string>
<string name="no_camera_app_found">未发现相机应用</string>
<string name="increase_column_count">增加一行</string>
<string name="reduce_column_count">减少一行</string>
<string name="temporarily_show_hidden">显示/隐藏缓存内容</string>
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="no_map_application">未找到地图应用</string>
<string name="no_camera_app_found">未找到相机应用</string>
<string name="increase_column_count">增加一栏</string>
<string name="reduce_column_count">减少一栏</string>
<string name="temporarily_show_hidden">显示/隐藏缓存内容</string>
<string name="change_cover_image">更改封面图片</string>
<string name="select_photo">选择图片</string>
<string name="use_default">使用默认</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">通过添加一个 \'.nomedia\' 文件到目录下,该目录包括子目录下的所有媒体都不会被扫描。 你可以通过设置中的 \'Show hidden folders\' 选项改变设置, 继续?</string>
<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">Exclude a parent instead?</string>
<string name="excluded_activity_placeholder">处的目录及其子目录中的媒体将不会在Simple Gallery中显示但是其它应用可以访问。\\n\\n如果你想对其它应用隐藏,请使用隐藏功能。</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="remove_all_description">是否移除列表中的全部文件夹?文件夹不会被物理删除。</string>
<!-- Include folders -->
<string name="include_folders">包含目录</string>
<string name="manage_included_folders">管理包含的目录</string>
<string name="add_folder">添加目录</string>
<string name="included_activity_placeholder">如果你还有应用未扫描到的媒体文件,可以将所在目录路径添加到这里</string>
<string name="include_folders">包含文件夹</string>
<string name="manage_included_folders">管理包含文件夹</string>
<string name="add_folder">添加文件夹</string>
<string name="included_activity_placeholder">如果您还有应用未扫描到的媒体文件,请添加所在文件夹路径</string>
<!-- Resizing -->
<string name="resize">缩放</string>
@ -47,17 +48,17 @@
<string name="width">宽度</string>
<string name="height">高度</string>
<string name="keep_aspect_ratio">保持纵横比</string>
<string name="invalid_values">请输入合法的分辨率</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="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>
@ -66,16 +67,17 @@
<string name="flip">翻转</string>
<string name="flip_horizontally">水平翻转</string>
<string name="flip_vertically">垂直翻转</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="out_of_memory_error">内存不足</string>
<string name="edit_with">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="no_wallpaper_setter_found">没有应用可</string>
<string name="setting_wallpaper">壁纸应用中&#8230;</string>
<string name="wallpaper_set_successfully">壁纸应用成功</string>
<string name="no_capable_app_found">未找到可用应</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>
@ -84,10 +86,10 @@
<string name="autoplay_videos">自动播放</string>
<string name="toggle_filename">显示文件名</string>
<string name="show_media">显示多媒体文件</string>
<string name="images">仅图</string>
<string name="images">仅图</string>
<string name="videos">仅视频</string>
<string name="gifs">仅 GIF </string>
<string name="images_videos_gifs">图片, 视频, GIF</string>
<string name="images_videos_gifs">图片,视频,GIF</string>
<string name="images_and_videos">图片和视频</string>
<string name="loop_videos">循环播放视频</string>
<string name="animate_gifs">GIF 缩略图</string>
@ -98,7 +100,7 @@
<string name="screen_rotation_device_rotation">设备方向</string>
<string name="screen_rotation_aspect_ratio">根据长宽比</string>
<string name="dark_background_at_fullscreen">全屏时黑色背景</string>
<string name="scroll_thumbnails_horizontally">Scroll thumbnails horizontally</string>
<string name="scroll_thumbnails_horizontally">水平滚动缩略图</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip horizontally</string>
<string name="flip_vertically">Flip vertically</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">簡易桌布</string>
<string name="set_as_wallpaper">設定為桌布</string>
<string name="set_as_wallpaper_failed">桌布設定失敗</string>
<string name="set_as_wallpaper_with">用其他應用軟體設定桌布……</string>
<string name="no_wallpaper_setter_found">沒有可用的應用軟體</string>
<string name="no_capable_app_found">沒有可用的應用軟體</string>
<string name="setting_wallpaper">正在應用軟體桌布&#8230;</string>
<string name="wallpaper_set_successfully">成功應用軟體桌布</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">秀出多媒體檔案</string>
<string name="images">僅圖片</string>
<string name="videos">僅影片</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">圖片和影片</string>
<string name="loop_videos">迴圈播放影片</string>
<string name="animate_gifs">Animate gifs at thumbnails</string>
<string name="animate_gifs">Animate GIFs at thumbnails</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -1,4 +1,6 @@
<resources>
<integer name="directory_columns">2</integer>
<integer name="media_columns">3</integer>
<integer name="directory_columns_vertical_scroll">2</integer>
<integer name="directory_columns_horizontal_scroll">3</integer>
<integer name="media_columns_vertical_scroll">3</integer>
<integer name="media_columns_horizontal_scroll">4</integer>
</resources>

View file

@ -23,6 +23,7 @@
<string name="change_cover_image">Change cover image</string>
<string name="select_photo">Select photo</string>
<string name="use_default">Use default</string>
<string name="set_as">Set as</string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue?</string>
@ -67,13 +68,14 @@
<string name="flip_horizontally">Flip horizontally</string>
<string name="flip_vertically">Flip vertically</string>
<string name="out_of_memory_error">Out of memory error</string>
<string name="edit_with">Edit with</string>
<!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string>
<string name="set_as_wallpaper">Set as Wallpaper</string>
<string name="set_as_wallpaper_failed">Setting as Wallpaper failed</string>
<string name="set_as_wallpaper_with">Set as wallpaper with:</string>
<string name="no_wallpaper_setter_found">No app capable of it has been found</string>
<string name="no_capable_app_found">No app capable of it has been found</string>
<string name="setting_wallpaper">Setting wallpaper&#8230;</string>
<string name="wallpaper_set_successfully">Wallpaper set successfully</string>
<string name="portrait_aspect_ratio">Portrait aspect ratio</string>
@ -86,11 +88,11 @@
<string name="show_media">Show media</string>
<string name="images">Images only</string>
<string name="videos">Videos only</string>
<string name="gifs">Gifs only</string>
<string name="images_videos_gifs">Images, videos, gifs</string>
<string name="gifs">GIFs only</string>
<string name="images_videos_gifs">Images, videos, GIFs</string>
<string name="images_and_videos">Images and videos</string>
<string name="loop_videos">Loop videos</string>
<string name="animate_gifs">Animate gifs at thumbnails</string>
<string name="animate_gifs">Animate GIFs at thumbnails</string>
<string name="max_brightness">Max brightness when viewing media</string>
<string name="crop_thumbnails">Crop thumbnails into squares</string>
<string name="screen_rotation_by">Rotate fullscreen media by</string>

View file

@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files