Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f993c458dd | ||
|
|
d26b62446e | ||
|
|
0e541f091c | ||
|
|
58ace8e59f | ||
|
|
099e13ea0c | ||
|
|
3a0dbd9d57 | ||
|
|
5a625a3388 | ||
|
|
f728ca2650 | ||
|
|
3a48b5d41f | ||
|
|
e2ad9ebfa6 | ||
|
|
bd29368585 | ||
|
|
49bce54b52 | ||
|
|
77e32c2790 | ||
|
|
9a7361795f | ||
|
|
0f0b3cfc30 | ||
|
|
f2bcac6298 | ||
|
|
762662a976 | ||
|
|
b064a76e97 | ||
|
|
7a7c8d0801 | ||
|
|
15e6ee399d | ||
|
|
9837ecec26 | ||
|
|
aa19b35d56 | ||
|
|
d6f77febfe | ||
|
|
992950f2a7 | ||
|
|
5d23653523 | ||
|
|
2c4bbfb0e2 | ||
|
|
5bba8d27dc | ||
|
|
ac24ac91e0 | ||
|
|
06ac24eca5 | ||
|
|
d14ce706e4 | ||
|
|
b6ee141c9c | ||
|
|
cf4bb250fe | ||
|
|
9c04107608 | ||
|
|
a60aba6cb7 | ||
|
|
48fbf859ea | ||
|
|
1cc6301afd | ||
|
|
90f7b0fb4c | ||
|
|
10670a8f0d | ||
|
|
9773a481c8 | ||
|
|
d1995d129a | ||
|
|
06e6f8a3f5 | ||
|
|
c4f49c56c9 | ||
|
|
3a2cdd40c4 | ||
|
|
bc81f6a7e3 | ||
|
|
0483706359 | ||
|
|
9ba8391634 | ||
|
|
78d7e6e4d4 | ||
|
|
c6d29b7e65 | ||
|
|
714f4e778e | ||
|
|
af97d961d5 | ||
|
|
d0964c66a1 | ||
|
|
3d14119929 | ||
|
|
b35e8a93f8 | ||
|
|
a84158eab7 | ||
|
|
e13a37edf9 | ||
|
|
f6aecb62c0 | ||
|
|
a3f7384ea9 | ||
|
|
de5907b176 | ||
|
|
e6124bd69f | ||
|
|
483b49ed25 | ||
|
|
876f81c0e7 | ||
|
|
40ec71c5c2 | ||
|
|
c6c945eb36 |
36
CHANGELOG.md
@@ -1,6 +1,42 @@
|
||||
Changelog
|
||||
==========
|
||||
|
||||
Version 2.3.7 *(2017-02-09)*
|
||||
----------------------------
|
||||
|
||||
* Fixed some issues with inability to delete files from SD card
|
||||
* Some crashfixes
|
||||
|
||||
Version 2.3.6 *(2017-02-07)*
|
||||
----------------------------
|
||||
|
||||
* Some crashfixes
|
||||
|
||||
Version 2.3.5 *(2017-01-23)*
|
||||
----------------------------
|
||||
|
||||
* Allow selecting colors by hex codes
|
||||
* Added a button for restoring default colors
|
||||
|
||||
Version 2.3.4 *(2017-01-22)*
|
||||
----------------------------
|
||||
|
||||
* Allow showing photos and videos on the map, if coords are available
|
||||
* Some crashfixes
|
||||
|
||||
Version 2.3.3 *(2017-01-16)*
|
||||
----------------------------
|
||||
|
||||
* Fix a rare bug which could remove unwanted folders from SD card
|
||||
* Remove the Source field from copy dialog to make it simpler
|
||||
|
||||
Version 2.3.2 *(2017-01-15)*
|
||||
----------------------------
|
||||
|
||||
* Remember 40 photos per folder for instant loading
|
||||
* Remember the scroll position when opening fullscreen photo
|
||||
* Make the launcher icon a bit smaller
|
||||
|
||||
Version 2.3.1 *(2017-01-14)*
|
||||
----------------------------
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ android {
|
||||
applicationId "com.simplemobiletools.gallery"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 25
|
||||
versionCode 62
|
||||
versionName "2.3.1"
|
||||
versionCode 68
|
||||
versionName "2.3.7"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
@@ -32,7 +32,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'com.simplemobiletools:commons:2.3.8'
|
||||
compile 'com.simplemobiletools:commons:2.5.14'
|
||||
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'
|
||||
compile 'com.theartofdev.edmodo:android-image-cropper:2.3.1'
|
||||
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
|
||||
@@ -59,12 +59,11 @@ def propFile = new File('signing.properties')
|
||||
if (propFile.canRead()) {
|
||||
props.load(new FileInputStream(propFile))
|
||||
|
||||
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
|
||||
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
|
||||
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('KEY_ALIAS') && props.containsKey('PASSWORD')) {
|
||||
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
|
||||
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
|
||||
android.signingConfigs.release.storePassword = props['PASSWORD']
|
||||
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
|
||||
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
|
||||
android.signingConfigs.release.keyPassword = props['PASSWORD']
|
||||
} else {
|
||||
println 'signing.properties found but some entries are missing'
|
||||
android.buildTypes.release.signingConfig = null
|
||||
|
||||
@@ -29,6 +29,7 @@ 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.net.URLDecoder
|
||||
import java.util.*
|
||||
|
||||
class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||
@@ -100,7 +101,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||
}
|
||||
|
||||
private fun tryloadGallery() {
|
||||
if (hasStoragePermission()) {
|
||||
if (hasWriteStoragePermission()) {
|
||||
if (config.showAll)
|
||||
showAllMedia()
|
||||
else
|
||||
@@ -193,7 +194,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||
val document = getFileDocument(file.absolutePath, config.treeUri)
|
||||
|
||||
// double check we have the uri to the proper file path, not some parent folder
|
||||
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath())) {
|
||||
val uri = URLDecoder.decode(document.uri.toString(), "UTF-8")
|
||||
if (uri.endsWith(file.absolutePath.getFilenameFromPath())) {
|
||||
Thread({
|
||||
document.delete()
|
||||
}).start()
|
||||
@@ -297,9 +299,10 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||
fun gotDirectories(dirs: ArrayList<Directory>) {
|
||||
directories_holder.isRefreshing = false
|
||||
mIsGettingDirs = false
|
||||
if (dirs == mDirs) {
|
||||
|
||||
if (dirs.hashCode() == mDirs.hashCode())
|
||||
return
|
||||
}
|
||||
|
||||
mDirs = dirs
|
||||
|
||||
setupAdapter()
|
||||
@@ -334,6 +337,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||
add(Release(54, R.string.release_54))
|
||||
add(Release(58, R.string.release_58))
|
||||
add(Release(62, R.string.release_62))
|
||||
add(Release(65, R.string.release_65))
|
||||
add(Release(66, R.string.release_66))
|
||||
checkWhatsNew(this, BuildConfig.VERSION_CODE)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,10 +27,12 @@ import com.simplemobiletools.gallery.views.MyScalableRecyclerView
|
||||
import kotlinx.android.synthetic.main.activity_media.*
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.net.URLDecoder
|
||||
import java.util.*
|
||||
|
||||
class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
private val TAG = MediaActivity::class.java.simpleName
|
||||
private val SAVE_MEDIA_CNT = 40
|
||||
|
||||
private var mMedia = ArrayList<Medium>()
|
||||
|
||||
@@ -40,6 +42,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
private var mIsGetAnyIntent = false
|
||||
private var mIsGettingMedia = false
|
||||
private var mShowAll = false
|
||||
private var mLoadedInitialPhotos = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -64,7 +67,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
}
|
||||
|
||||
private fun tryloadGallery() {
|
||||
if (hasStoragePermission()) {
|
||||
if (hasWriteStoragePermission()) {
|
||||
val dirName = getHumanizedFilename(mPath)
|
||||
title = if (mShowAll) resources.getString(R.string.all_folders) else dirName
|
||||
getMedia()
|
||||
@@ -171,8 +174,10 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
if (media.size == 0) {
|
||||
media_holder.isRefreshing = true
|
||||
} else {
|
||||
gotMedia(media)
|
||||
if (!mLoadedInitialPhotos)
|
||||
gotMedia(media)
|
||||
}
|
||||
mLoadedInitialPhotos = true
|
||||
|
||||
GetMediaAsynctask(applicationContext, mPath, mIsGetVideoIntent, mIsGetImageIntent, mShowAll) {
|
||||
gotMedia(it)
|
||||
@@ -218,7 +223,8 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
val document = getFileDocument(it.absolutePath, config.treeUri)
|
||||
|
||||
// double check we have the uri to the proper file path, not some parent folder
|
||||
if (document.uri.toString().endsWith(it.absolutePath.getFilenameFromPath()) && !document.isDirectory) {
|
||||
val uri = URLDecoder.decode(document.uri.toString(), "UTF-8")
|
||||
if (uri.endsWith(it.absolutePath.getFilenameFromPath()) && !document.isDirectory) {
|
||||
Thread({
|
||||
document.delete()
|
||||
}).start()
|
||||
@@ -281,9 +287,9 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
fun gotMedia(media: ArrayList<Medium>) {
|
||||
mIsGettingMedia = false
|
||||
media_holder.isRefreshing = false
|
||||
if (media == mMedia) {
|
||||
|
||||
if (media.hashCode() == mMedia.hashCode())
|
||||
return
|
||||
}
|
||||
|
||||
mMedia = media
|
||||
initializeGallery()
|
||||
@@ -291,7 +297,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||
}
|
||||
|
||||
private fun storeFolder() {
|
||||
val subList = mMedia.subList(0, Math.min(30, mMedia.size))
|
||||
val subList = mMedia.subList(0, Math.min(SAVE_MEDIA_CNT, mMedia.size))
|
||||
val json = Gson().toJson(subList)
|
||||
config.saveFolderMedia(mPath, json)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.simplemobiletools.gallery.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.AdapterView
|
||||
import com.simplemobiletools.commons.extensions.updateTextColors
|
||||
import com.simplemobiletools.gallery.R
|
||||
import com.simplemobiletools.gallery.dialogs.ShowMediaDialog
|
||||
import com.simplemobiletools.gallery.extensions.config
|
||||
import com.simplemobiletools.gallery.helpers.IMAGES
|
||||
import com.simplemobiletools.gallery.helpers.IMAGES_AND_VIDEOS
|
||||
import kotlinx.android.synthetic.main.activity_settings.*
|
||||
|
||||
class SettingsActivity : SimpleActivity() {
|
||||
@@ -65,14 +66,18 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupShowMedia() {
|
||||
settings_show_media.setSelection(config.showMedia)
|
||||
settings_show_media.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
config.showMedia = settings_show_media.selectedItemPosition
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
settings_show_media.text = getShowMediaText()
|
||||
settings_show_media_holder.setOnClickListener {
|
||||
ShowMediaDialog(this) {
|
||||
config.showMedia = it
|
||||
settings_show_media.text = getShowMediaText()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getShowMediaText() = getString(when (config.showMedia) {
|
||||
IMAGES_AND_VIDEOS -> R.string.images_and_videos
|
||||
IMAGES -> R.string.images
|
||||
else -> R.string.videos
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.simplemobiletools.gallery.activities
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.database.Cursor
|
||||
import android.media.ExifInterface
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.MediaStore
|
||||
import android.support.v4.view.ViewPager
|
||||
@@ -26,6 +28,7 @@ import com.simplemobiletools.gallery.helpers.REQUEST_SET_WALLPAPER
|
||||
import com.simplemobiletools.gallery.models.Medium
|
||||
import kotlinx.android.synthetic.main.activity_medium.*
|
||||
import java.io.File
|
||||
import java.net.URLDecoder
|
||||
import java.util.*
|
||||
|
||||
class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, ViewPagerFragment.FragmentListener {
|
||||
@@ -41,7 +44,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_medium)
|
||||
|
||||
if (!hasStoragePermission()) {
|
||||
if (!hasWriteStoragePermission()) {
|
||||
finish()
|
||||
return
|
||||
}
|
||||
@@ -82,7 +85,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (!hasStoragePermission()) {
|
||||
if (!hasWriteStoragePermission()) {
|
||||
finish()
|
||||
}
|
||||
supportActionBar?.setBackgroundDrawable(resources.getDrawable(R.drawable.actionbar_gradient_background))
|
||||
@@ -98,6 +101,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (getCurrentMedium() == null)
|
||||
return true
|
||||
|
||||
when (item.itemId) {
|
||||
R.id.menu_set_as_wallpaper -> setAsWallpaper(getCurrentFile())
|
||||
R.id.menu_copy_move -> displayCopyDialog()
|
||||
@@ -107,6 +113,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
R.id.menu_rename -> renameFile()
|
||||
R.id.menu_edit -> openEditor(getCurrentFile())
|
||||
R.id.menu_properties -> showProperties()
|
||||
R.id.show_on_map -> showOnMap()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
@@ -141,9 +148,68 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
}
|
||||
|
||||
private fun showProperties() {
|
||||
PropertiesDialog(this, getCurrentFile().absolutePath, false)
|
||||
if (getCurrentMedium() != null)
|
||||
PropertiesDialog(this, getCurrentMedium()!!.path, false)
|
||||
}
|
||||
|
||||
private fun showOnMap() {
|
||||
val exif = ExifInterface(getCurrentMedium()?.path)
|
||||
val lat = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)
|
||||
val lat_ref = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF)
|
||||
val lon = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)
|
||||
val lon_ref = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF)
|
||||
|
||||
if (lat == null || lat_ref == null || lon == null || lon_ref == null) {
|
||||
toast(R.string.unknown_location)
|
||||
} else {
|
||||
val geoLat = if (lat_ref == "N") {
|
||||
convertToDegree(lat)
|
||||
} else {
|
||||
0 - convertToDegree(lat)
|
||||
}
|
||||
|
||||
val geoLon = if (lon_ref == "E") {
|
||||
convertToDegree(lon)
|
||||
} else {
|
||||
0 - convertToDegree(lon)
|
||||
}
|
||||
|
||||
val uriBegin = "geo:$geoLat,$geoLon"
|
||||
val query = "$geoLat, $geoLon"
|
||||
val encodedQuery = Uri.encode(query)
|
||||
val uriString = "$uriBegin?q=$encodedQuery&z=16"
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(uriString))
|
||||
val packageManager = packageManager
|
||||
if (intent.resolveActivity(packageManager) != null) {
|
||||
startActivity(intent)
|
||||
} else {
|
||||
toast(R.string.no_map_application)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun convertToDegree(stringDMS: String): Float {
|
||||
val dms = stringDMS.split(",".toRegex(), 3).toTypedArray()
|
||||
|
||||
val stringD = dms[0].split("/".toRegex(), 2).toTypedArray()
|
||||
val d0 = stringD[0].toDouble()
|
||||
val d1 = stringD[1].toDouble()
|
||||
val floatD = d0 / d1
|
||||
|
||||
val stringM = dms[1].split("/".toRegex(), 2).toTypedArray()
|
||||
val m0 = stringM[0].toDouble()
|
||||
val m1 = stringM[1].toDouble()
|
||||
val floatM = m0 / m1
|
||||
|
||||
val stringS = dms[2].split("/".toRegex(), 2).toTypedArray()
|
||||
val s0 = stringS[0].toDouble()
|
||||
val s1 = stringS[1].toDouble()
|
||||
val floatS = s0 / s1
|
||||
|
||||
return (floatD + floatM / 60 + floatS / 3600).toFloat()
|
||||
}
|
||||
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||
if (requestCode == REQUEST_EDIT_IMAGE) {
|
||||
if (resultCode == Activity.RESULT_OK && resultData != null) {
|
||||
@@ -172,10 +238,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||
if (needsStupidWritePermissions(mPath)) {
|
||||
if (!isShowingPermDialog(file)) {
|
||||
val document = getFileDocument(mPath, config.treeUri)
|
||||
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory)
|
||||
|
||||
// double check we have the uri to the proper file path, not some parent folder
|
||||
val uri = URLDecoder.decode(document.uri.toString(), "UTF-8")
|
||||
if (uri.endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory) {
|
||||
Thread({
|
||||
document.delete()
|
||||
}).start()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Thread({
|
||||
|
||||
@@ -240,6 +240,16 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
|
||||
val paths = ArrayList<String>(selections.size)
|
||||
val removeDirs = ArrayList<Directory>(selections.size)
|
||||
|
||||
var isShowingPermDialog = false
|
||||
activity.runOnUiThread {
|
||||
if (activity.isShowingPermDialog(File(dirs[selections[0]].path))) {
|
||||
isShowingPermDialog = true
|
||||
}
|
||||
}
|
||||
|
||||
if (isShowingPermDialog)
|
||||
return
|
||||
|
||||
selections.reverse()
|
||||
selections.forEach {
|
||||
val directory = dirs[it]
|
||||
@@ -249,6 +259,7 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
|
||||
}
|
||||
|
||||
dirs.removeAll(removeDirs)
|
||||
markedItems.clear()
|
||||
listener?.deleteFiles(paths)
|
||||
}
|
||||
|
||||
|
||||
@@ -181,6 +181,16 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
|
||||
val files = ArrayList<File>(selections.size)
|
||||
val removeMedia = ArrayList<Medium>(selections.size)
|
||||
|
||||
var isShowingPermDialog = false
|
||||
activity.runOnUiThread {
|
||||
if (activity.isShowingPermDialog(File(media[selections[0]].path))) {
|
||||
isShowingPermDialog = true
|
||||
}
|
||||
}
|
||||
|
||||
if (isShowingPermDialog)
|
||||
return
|
||||
|
||||
selections.reverse()
|
||||
selections.forEach {
|
||||
val medium = media[it]
|
||||
@@ -190,6 +200,7 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
|
||||
}
|
||||
|
||||
media.removeAll(removeMedia)
|
||||
markedItems.clear()
|
||||
listener?.deleteFiles(files)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
|
||||
val sourcePath = files[0].parent.trimEnd('/')
|
||||
var destinationPath = ""
|
||||
|
||||
view.source.text = activity.humanizePath(sourcePath)
|
||||
|
||||
view.destination.setOnClickListener {
|
||||
PickAlbumDialog(activity) {
|
||||
destinationPath = it
|
||||
@@ -43,7 +41,7 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (view.source.text.trimEnd('/') == destinationPath.trimEnd('/')) {
|
||||
if (sourcePath.trimEnd('/') == destinationPath.trimEnd('/')) {
|
||||
context.toast(R.string.source_and_destination_same)
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.simplemobiletools.gallery.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.RadioGroup
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.gallery.R
|
||||
import com.simplemobiletools.gallery.extensions.config
|
||||
import com.simplemobiletools.gallery.helpers.IMAGES
|
||||
import com.simplemobiletools.gallery.helpers.IMAGES_AND_VIDEOS
|
||||
import com.simplemobiletools.gallery.helpers.VIDEOS
|
||||
import kotlinx.android.synthetic.main.dialog_show_media.view.*
|
||||
|
||||
class ShowMediaDialog(val activity: Activity, val callback: (newValue: Int) -> Unit) : AlertDialog.Builder(activity), RadioGroup.OnCheckedChangeListener {
|
||||
val dialog: AlertDialog?
|
||||
|
||||
init {
|
||||
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_show_media, null).dialog_radio_view.apply {
|
||||
check(getSavedItem())
|
||||
setOnCheckedChangeListener(this@ShowMediaDialog)
|
||||
}
|
||||
|
||||
dialog = AlertDialog.Builder(activity)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) {
|
||||
callback.invoke(getNewValue(checkedId))
|
||||
dialog?.dismiss()
|
||||
}
|
||||
|
||||
fun getNewValue(id: Int) = when (id) {
|
||||
R.id.dialog_radio_images -> IMAGES
|
||||
R.id.dialog_radio_videos -> VIDEOS
|
||||
else -> IMAGES_AND_VIDEOS
|
||||
}
|
||||
|
||||
fun getSavedItem() = when (activity.config.showMedia) {
|
||||
IMAGES -> R.id.dialog_radio_images
|
||||
VIDEOS -> R.id.dialog_radio_videos
|
||||
else -> R.id.dialog_radio_images_and_videos
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.provider.MediaStore
|
||||
import com.simplemobiletools.commons.extensions.humanizePath
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.gallery.R
|
||||
import com.simplemobiletools.gallery.activities.SettingsActivity
|
||||
import com.simplemobiletools.gallery.helpers.Config
|
||||
import com.simplemobiletools.gallery.helpers.IMAGES
|
||||
@@ -13,6 +15,7 @@ import com.simplemobiletools.gallery.helpers.VIDEOS
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
fun Context.getRealPathFromURI(uri: Uri): String? {
|
||||
var cursor: Cursor? = null
|
||||
try {
|
||||
@@ -35,7 +38,12 @@ fun Context.getHumanizedFilename(path: String): String {
|
||||
}
|
||||
|
||||
fun Context.launchCamera() {
|
||||
startActivity(Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA))
|
||||
val intent = Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA)
|
||||
if (intent.resolveActivity(packageManager) != null) {
|
||||
startActivity(intent)
|
||||
} else {
|
||||
toast(R.string.no_camera_app_found)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.launchSettings() {
|
||||
@@ -54,7 +62,7 @@ fun Context.getParents(isPickImage: Boolean, isPickVideo: Boolean): ArrayList<St
|
||||
cursor = contentResolver.query(uri, columns, where, args, null)
|
||||
if (cursor?.moveToFirst() == true) {
|
||||
do {
|
||||
val curPath = cursor.getStringValue(MediaStore.Images.Media.DATA)
|
||||
val curPath = cursor.getStringValue(MediaStore.Images.Media.DATA) ?: ""
|
||||
parents.add(File(curPath).parent)
|
||||
} while (cursor.moveToNext())
|
||||
}
|
||||
@@ -62,8 +70,10 @@ fun Context.getParents(isPickImage: Boolean, isPickVideo: Boolean): ArrayList<St
|
||||
cursor?.close()
|
||||
}
|
||||
|
||||
filterDirectories(parents)
|
||||
return parents
|
||||
val notNull = ArrayList<String>()
|
||||
parents.mapNotNullTo(notNull, { it })
|
||||
filterDirectories(notNull)
|
||||
return notNull
|
||||
}
|
||||
|
||||
fun Context.getWhereCondition(isPickImage: Boolean, isPickVideo: Boolean): String {
|
||||
@@ -86,7 +96,7 @@ fun Context.getArgs(isPickImage: Boolean, isPickVideo: Boolean): Array<String> {
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.filterDirectories(dirs: MutableList<String>) {
|
||||
fun Context.filterDirectories(dirs: ArrayList<String>) {
|
||||
if (!config.showHiddenFolders) {
|
||||
removeHiddenFolders(dirs)
|
||||
removeNoMediaFolders(dirs)
|
||||
@@ -114,4 +124,3 @@ private fun removeNoMediaFolders(paths: MutableList<String>) {
|
||||
}
|
||||
|
||||
val Context.config: Config get() = Config.newInstance(this)
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.bumptech.glide.request.RequestListener
|
||||
import com.bumptech.glide.request.target.Target
|
||||
import com.davemorrissey.labs.subscaleview.ImageSource
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.gallery.R
|
||||
import com.simplemobiletools.gallery.extensions.getRealPathFromURI
|
||||
import com.simplemobiletools.gallery.helpers.MEDIUM
|
||||
@@ -43,32 +44,33 @@ class PhotoFragment : ViewPagerFragment() {
|
||||
medium.path = context.getRealPathFromURI(Uri.parse(medium.path)) ?: ""
|
||||
|
||||
if (medium.path.isEmpty()) {
|
||||
var inputStream = context.contentResolver.openInputStream(Uri.parse(originalPath))
|
||||
val exif = ExifInterface()
|
||||
exif.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
|
||||
val tag = exif.getTag(ExifInterface.TAG_ORIENTATION)
|
||||
val orientation = tag?.getValueAsInt(-1) ?: -1
|
||||
|
||||
inputStream = context.contentResolver.openInputStream(Uri.parse(originalPath))
|
||||
val original = BitmapFactory.decodeStream(inputStream)
|
||||
val rotated = rotateViaMatrix(original, orientation)
|
||||
exif.setTagValue(ExifInterface.TAG_ORIENTATION, 1)
|
||||
exif.removeCompressedThumbnail()
|
||||
|
||||
val file = File(context.externalCacheDir, Uri.parse(originalPath).lastPathSegment)
|
||||
var out: FileOutputStream? = null
|
||||
try {
|
||||
var inputStream = context.contentResolver.openInputStream(Uri.parse(originalPath))
|
||||
val exif = ExifInterface()
|
||||
exif.readExif(inputStream, ExifInterface.Options.OPTION_ALL)
|
||||
val tag = exif.getTag(ExifInterface.TAG_ORIENTATION)
|
||||
val orientation = tag?.getValueAsInt(-1) ?: -1
|
||||
|
||||
inputStream = context.contentResolver.openInputStream(Uri.parse(originalPath))
|
||||
val original = BitmapFactory.decodeStream(inputStream)
|
||||
val rotated = rotateViaMatrix(original, orientation)
|
||||
exif.setTagValue(ExifInterface.TAG_ORIENTATION, 1)
|
||||
exif.removeCompressedThumbnail()
|
||||
|
||||
val file = File(context.externalCacheDir, Uri.parse(originalPath).lastPathSegment)
|
||||
out = FileOutputStream(file)
|
||||
rotated.compress(Bitmap.CompressFormat.JPEG, 100, out)
|
||||
medium.path = file.absolutePath
|
||||
} catch (e: Exception) {
|
||||
context.toast(R.string.unknown_error_occurred)
|
||||
return view
|
||||
} finally {
|
||||
try {
|
||||
out?.close()
|
||||
} catch (e: IOException) {
|
||||
}
|
||||
}
|
||||
exif.writeExif(rotated, file.absolutePath, 100)
|
||||
medium.path = file.absolutePath
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.simplemobiletools.gallery.fragments
|
||||
import android.content.res.Configuration
|
||||
import android.media.AudioManager
|
||||
import android.media.MediaPlayer
|
||||
import android.media.MediaPlayer.OnPreparedListener
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@@ -24,8 +23,7 @@ import kotlinx.android.synthetic.main.pager_video_item.view.*
|
||||
import java.io.IOException
|
||||
import java.util.*
|
||||
|
||||
class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.Callback, MediaPlayer.OnCompletionListener,
|
||||
MediaPlayer.OnVideoSizeChangedListener, SeekBar.OnSeekBarChangeListener, OnPreparedListener {
|
||||
class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSeekBarChangeListener {
|
||||
|
||||
private var mMediaPlayer: MediaPlayer? = null
|
||||
private var mSurfaceView: SurfaceView? = null
|
||||
@@ -60,7 +58,6 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
|
||||
mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
setupPlayer()
|
||||
mView.setOnClickListener(this)
|
||||
|
||||
activity.window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
|
||||
val fullscreen = visibility and View.SYSTEM_UI_FLAG_FULLSCREEN != 0
|
||||
@@ -76,12 +73,16 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
if (activity == null)
|
||||
return
|
||||
|
||||
mView.video_play_outline.setOnClickListener(this)
|
||||
mView.video_play_outline.setOnClickListener { togglePlayPause() }
|
||||
|
||||
mSurfaceView = mView.video_surface
|
||||
mSurfaceView!!.setOnClickListener(this)
|
||||
mSurfaceHolder = mSurfaceView!!.holder
|
||||
mSurfaceHolder!!.addCallback(this)
|
||||
mSurfaceView!!.setOnClickListener({
|
||||
mIsFullscreen = !mIsFullscreen
|
||||
checkFullscreen()
|
||||
listener?.fragmentClicked()
|
||||
})
|
||||
|
||||
initTimeHolder()
|
||||
}
|
||||
@@ -157,18 +158,10 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
outState.putInt(PROGRESS, mCurrTime)
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.video_play_outline -> togglePlayPause()
|
||||
else -> {
|
||||
mIsFullscreen = !mIsFullscreen
|
||||
checkFullscreen()
|
||||
listener?.fragmentClicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkFullscreen() {
|
||||
if (activity == null)
|
||||
return
|
||||
|
||||
var anim = android.R.anim.fade_in
|
||||
if (mIsFullscreen) {
|
||||
anim = android.R.anim.fade_out
|
||||
@@ -177,7 +170,7 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
mSeekBar!!.setOnSeekBarChangeListener(this)
|
||||
}
|
||||
|
||||
AnimationUtils.loadAnimation(context, anim).apply {
|
||||
AnimationUtils.loadAnimation(activity, anim).apply {
|
||||
duration = 150
|
||||
fillAfter = true
|
||||
mTimeHolder!!.startAnimation(this)
|
||||
@@ -218,9 +211,9 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
mMediaPlayer = MediaPlayer().apply {
|
||||
setDataSource(context, Uri.parse(mMedium.path))
|
||||
setDisplay(mSurfaceHolder)
|
||||
setOnCompletionListener(this@VideoFragment)
|
||||
setOnVideoSizeChangedListener(this@VideoFragment)
|
||||
setOnPreparedListener(this@VideoFragment)
|
||||
setOnCompletionListener { videoCompleted() }
|
||||
setOnVideoSizeChangedListener({ mediaPlayer, width, height -> setVideoSize() })
|
||||
setOnPreparedListener { videoPrepared(it) }
|
||||
setAudioStreamType(AudioManager.STREAM_MUSIC)
|
||||
prepareAsync()
|
||||
}
|
||||
@@ -262,6 +255,26 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
mTimerHandler?.removeCallbacksAndMessages(null)
|
||||
}
|
||||
|
||||
private fun videoPrepared(mediaPlayer: MediaPlayer) {
|
||||
mDuration = mediaPlayer.duration / 1000
|
||||
addPreviewImage()
|
||||
setupTimeHolder()
|
||||
setProgress(mCurrTime)
|
||||
|
||||
if (mIsFragmentVisible && context.config.autoplayVideos)
|
||||
playVideo()
|
||||
}
|
||||
|
||||
private fun videoCompleted() {
|
||||
if (context.config.loopVideos) {
|
||||
playVideo()
|
||||
} else {
|
||||
mSeekBar!!.progress = mSeekBar!!.max
|
||||
mCurrTimeView!!.text = getTimeString(mDuration)
|
||||
pauseVideo()
|
||||
}
|
||||
}
|
||||
|
||||
override fun surfaceCreated(holder: SurfaceHolder) {
|
||||
initMediaPlayer()
|
||||
}
|
||||
@@ -275,20 +288,6 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
mMediaPlayer = null
|
||||
}
|
||||
|
||||
override fun onCompletion(mp: MediaPlayer) {
|
||||
if (context.config.loopVideos) {
|
||||
playVideo()
|
||||
} else {
|
||||
mSeekBar!!.progress = mSeekBar!!.max
|
||||
mCurrTimeView!!.text = getTimeString(mDuration)
|
||||
pauseVideo()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVideoSizeChanged(mp: MediaPlayer, width: Int, height: Int) {
|
||||
setVideoSize()
|
||||
}
|
||||
|
||||
private fun setVideoSize() {
|
||||
if (activity == null)
|
||||
return
|
||||
@@ -360,14 +359,4 @@ class VideoFragment : ViewPagerFragment(), View.OnClickListener, SurfaceHolder.C
|
||||
|
||||
mIsDragged = false
|
||||
}
|
||||
|
||||
override fun onPrepared(mp: MediaPlayer) {
|
||||
mDuration = mp.duration / 1000
|
||||
addPreviewImage()
|
||||
setupTimeHolder()
|
||||
setProgress(mCurrTime)
|
||||
|
||||
if (mIsFragmentVisible && context.config.autoplayVideos)
|
||||
playVideo()
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 283 B |
|
Before Width: | Height: | Size: 206 B |
|
Before Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 516 B |
|
Before Width: | Height: | Size: 293 B |
@@ -115,27 +115,32 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_show_media_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@+id/settings_show_media"
|
||||
android:layout_toStartOf="@+id/settings_show_media"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/show_media"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatSpinner
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_show_media"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:entries="@array/show_media_items"/>
|
||||
android:layout_marginEnd="@dimen/small_margin"
|
||||
android:layout_marginRight="@dimen/small_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -9,22 +9,6 @@
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/source_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/source"
|
||||
android:textSize="@dimen/smaller_text_size"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/source"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:layout_marginLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/small_margin"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/destination_label"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
33
app/src/main/res/layout/dialog_show_media.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RadioGroup
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/dialog_radio_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyCompatRadioButton
|
||||
android:id="@+id/dialog_radio_images"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:text="@string/images"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyCompatRadioButton
|
||||
android:id="@+id/dialog_radio_videos"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:text="@string/videos"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyCompatRadioButton
|
||||
android:id="@+id/dialog_radio_images_and_videos"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:text="@string/images_and_videos"/>
|
||||
|
||||
</RadioGroup>
|
||||
@@ -8,7 +8,7 @@
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/toggle_filename"
|
||||
android:icon="@drawable/ic_toggle_filename"
|
||||
android:icon="@drawable/ic_label"
|
||||
android:title="@string/toggle_filename"
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
|
||||
@@ -38,4 +38,8 @@
|
||||
android:icon="@drawable/ic_info"
|
||||
android:title="@string/properties"
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/show_on_map"
|
||||
android:title="@string/show_on_map"
|
||||
app:showAsAction="never"/>
|
||||
</menu>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 933 B After Width: | Height: | Size: 924 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.2 KiB |
@@ -13,19 +13,23 @@
|
||||
<string name="hidden">(versteckt)</string>
|
||||
<string name="save_as">Speichern unter</string>
|
||||
<string name="file_saved">Datei erfolgreich gespeichert</string>
|
||||
<string name="pin_folder">fixiere Ordner</string>
|
||||
<string name="unpin_folder">Unpin folder</string>
|
||||
<string name="pin_folder">Fixiere Ordner</string>
|
||||
<string name="unpin_folder">Ordner lösen</string>
|
||||
<string name="show_all">Inhalt aller Ordner (anzeigen)</string>
|
||||
<string name="all_folders">All media</string>
|
||||
<string name="folder_view">wechsle zu Ordner Ansicht</string>
|
||||
<string name="other_folder">Other folder</string>
|
||||
<string name="all_folders">Alle Medien</string>
|
||||
<string name="folder_view">Wechsle zu Ordner Ansicht</string>
|
||||
<string name="other_folder">andere Ordner</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
<string name="resize_and_save">Resize selection and save</string>
|
||||
<string name="resize">Größe ändern</string>
|
||||
<string name="resize_and_save">Größe ändern und speichern</string>
|
||||
<string name="width">Breite</string>
|
||||
<string name="height">Höhe</string>
|
||||
<string name="keep_aspect_ratio">Behalte Seitenverhältnis bei</string>
|
||||
<string name="keep_aspect_ratio">Seitenverhältnis beibehalten</string>
|
||||
<string name="invalid_values">Bitte gib eine korrekte Auflösung ein</string>
|
||||
|
||||
<!-- Renaming -->
|
||||
@@ -35,9 +39,9 @@
|
||||
<string name="rename_folder_error">Konnte den Ordner nicht umbenennen</string>
|
||||
<string name="rename_folder_empty">Ordnername darf nicht leer sein</string>
|
||||
<string name="rename_folder_exists">Ein Ordner mit diesem Namen existiert bereits</string>
|
||||
<string name="rename_folder_root">Cannot rename the root folder of a storage</string>
|
||||
<string name="rename_folder_root">Root-Ordner des Speichers kann nicht umbenannt werden</string>
|
||||
<string name="rename_folder_ok">Ordner erfolgreich umbenannt</string>
|
||||
<string name="renaming_folder">Benenne Ordner um</string>
|
||||
<string name="renaming_folder">Ordner umbennenen</string>
|
||||
<string name="filename_cannot_be_empty">Dateiname darf nicht leer sein</string>
|
||||
<string name="filename_invalid_characters">Dateiname enthält ungültige Zeichen</string>
|
||||
<string name="extension">Dateiendung</string>
|
||||
@@ -65,10 +69,9 @@
|
||||
<string name="wallpaper_set_successfully">Hintergrundbild erfolgreich festgelegt</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Dunkles Design</string>
|
||||
<string name="same_sorting">Selbe Sortierung für Dateien und Ordner</string>
|
||||
<string name="show_hidden_folders">Zeige versteckte Ordner</string>
|
||||
<string name="autoplay_videos">spiele Videos automatisch ab</string>
|
||||
<string name="autoplay_videos">Spiele Videos automatisch ab</string>
|
||||
<string name="toggle_filename">Toggle filename visibility</string>
|
||||
<string name="show_media">Medienauswahl</string>
|
||||
<string name="images">nur Bilder</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Video Endlos-Schleife</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">All media</string>
|
||||
<string name="folder_view">Switch to folder view</string>
|
||||
<string name="other_folder">Other folder</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Wallpaper set successfully</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Tema oscuro</string>
|
||||
<string name="same_sorting">Ordenar del mismo modo los archivos y las carpetas</string>
|
||||
<string name="show_hidden_folders">Mostrar carpetas ocultas</string>
|
||||
<string name="autoplay_videos">Reproducir vídeos automáticamente</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Loop videos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">Tous les dossiers</string>
|
||||
<string name="folder_view">Permuter vers la vue du dossier</string>
|
||||
<string name="other_folder">Autre dossier</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Redimensionner</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Fond d\'écran défini avec succès.</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Thème sombre</string>
|
||||
<string name="same_sorting">Tri identique pour fichiers et dossiers</string>
|
||||
<string name="show_hidden_folders">Afficher les dossiers cachés</string>
|
||||
<string name="autoplay_videos">Lecture automatique des vidéos</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Tourner en boucle les vidéos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">All media</string>
|
||||
<string name="folder_view">Switch to folder view</string>
|
||||
<string name="other_folder">Other folder</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Sfondo impostato correttamente</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Tema scuro</string>
|
||||
<string name="same_sorting">Stesso ordinamento per file e cartelle</string>
|
||||
<string name="show_hidden_folders">Mostra cartelle nascoste</string>
|
||||
<string name="autoplay_videos">Riproduci video automaticamente</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Loop videos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">All media</string>
|
||||
<string name="folder_view">Switch to folder view</string>
|
||||
<string name="other_folder">Other folder</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">壁紙を正常に設定しました</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">ダークテーマ</string>
|
||||
<string name="same_sorting">ファイルとフォルダーを同じに並べ替え</string>
|
||||
<string name="show_hidden_folders">非表示フォルダーを表示</string>
|
||||
<string name="autoplay_videos">自動的にビデオを再生</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Loop videos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">Todas as pastas</string>
|
||||
<string name="folder_view">Alternar para a vista de pastas</string>
|
||||
<string name="other_folder">Outra pasta</string>
|
||||
<string name="show_on_map">Mostrar no mapa</string>
|
||||
<string name="unknown_location">Localização desconhecida</string>
|
||||
<string name="no_map_application">Não existe uma aplicação adequada</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Redimensionar</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Fundo definido com sucesso</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Tema escuro</string>
|
||||
<string name="same_sorting">Mesma ordenação para ficheiros e pastas</string>
|
||||
<string name="show_hidden_folders">Mostrar pastas ocultas</string>
|
||||
<string name="autoplay_videos">Reproduzir vídeos automaticamente</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Vídeos em ciclo</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<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">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Изменить размер</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Обои успешно установлены</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Темная тема</string>
|
||||
<string name="same_sorting">Одинаковая сортировка для файлов и папок</string>
|
||||
<string name="show_hidden_folders">Показать скрытые папки</string>
|
||||
<string name="autoplay_videos">Воспроизводить видео автоматически</string>
|
||||
@@ -77,7 +80,9 @@
|
||||
<string name="loop_videos">Повторять видео</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_66">Добавлена возможность выбирать цвета по hex-кодам</string>
|
||||
<string name="release_65">Добавлена возможность показывать место съёмки фото или видео на карте, если указаны координаты</string>
|
||||
<string name="release_62">В свойствах фото теперь отображаются некоторые Exif-данные</string>
|
||||
<string name="release_58">
|
||||
Добавлена возможность масштабирования png и gif изображений\n
|
||||
Добавлена возможность создания новой папки в диалогах "Копировать/Переместить" и "Сохранить как"
|
||||
|
||||
121
app/src/main/res/values-sk/strings.xml
Normal file
@@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Jednoduchá galéria</string>
|
||||
<string name="app_launcher_name">Galéria</string>
|
||||
<string name="share_via">Zdieľať cez</string>
|
||||
<string name="no_permissions">Bez prístupu k súborom sa nedá robiť nič</string>
|
||||
<string name="edit">Upraviť</string>
|
||||
<string name="open_camera">Otvoriť fotoaparát</string>
|
||||
<string name="open_with">Otvoriť pomocou</string>
|
||||
<string name="no_app_found">Nenašla sa žiadna vhodná aplikácia</string>
|
||||
<string name="hide_folder">Skryť priečinok</string>
|
||||
<string name="unhide_folder">Odkryť priečinok</string>
|
||||
<string name="hidden">(skryté)</string>
|
||||
<string name="save_as">Uložiť ako</string>
|
||||
<string name="file_saved">Súbor bol úspešne uložený</string>
|
||||
<string name="pin_folder">Pripnúť priečinok</string>
|
||||
<string name="unpin_folder">Odopnúť priečinok</string>
|
||||
<string name="show_all">Zobraziť obsah všetkých priečinkov</string>
|
||||
<string name="all_folders">Všetky priečinky</string>
|
||||
<string name="folder_view">Prepnúť na zobrazenie priečinkov</string>
|
||||
<string name="other_folder">Iný priečinok</string>
|
||||
<string name="show_on_map">Zobraziť na mape</string>
|
||||
<string name="unknown_location">Neznáma poloha</string>
|
||||
<string name="no_map_application">Nenašla sa žiadna mapová aplikácia</string>
|
||||
<string name="no_camera_app_found">Nenašla sa žiadna aplikácia pre fotoaparát</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Zmeniť veľkosť</string>
|
||||
<string name="resize_and_save">Zmeniť veľkosť a uložiť</string>
|
||||
<string name="width">Šǐrka</string>
|
||||
<string name="height">Výška</string>
|
||||
<string name="keep_aspect_ratio">Zachovať pomer strán</string>
|
||||
<string name="invalid_values">Prosím zadajte platné rozlíšenie</string>
|
||||
|
||||
<!-- Renaming -->
|
||||
<string name="rename_file">Premenovať súbor</string>
|
||||
<string name="rename_folder">Premenovať priečinok</string>
|
||||
<string name="rename_file_error">Nepodarilo sa premenovať súbor</string>
|
||||
<string name="rename_folder_error">Nepodarilo sa premenovať priečinok</string>
|
||||
<string name="rename_folder_empty">Názov priečinka nemôže byť prázdny</string>
|
||||
<string name="rename_folder_exists">Priečinok s daným názvom už existuje</string>
|
||||
<string name="rename_folder_root">Nepodarilo sa premenovať základný priečinok úložiska</string>
|
||||
<string name="rename_folder_ok">Priečinok bol úspešne premenovaný</string>
|
||||
<string name="renaming_folder">Premenúva sa priečinok</string>
|
||||
<string name="filename_cannot_be_empty">Názov súboru nemôže byť prázdny</string>
|
||||
<string name="filename_invalid_characters">Názov súboru obsahuje neplatné znaky</string>
|
||||
<string name="extension">Prípona</string>
|
||||
<string name="extension_cannot_be_empty">Prípona nesmie byť prázdna</string>
|
||||
|
||||
<!-- Editor -->
|
||||
<string name="editor">Editor</string>
|
||||
<string name="save">Uložiť</string>
|
||||
<string name="rotate">Otočiť</string>
|
||||
<string name="path">Cesta</string>
|
||||
<string name="invalid_image_path">Neplatná cesta</string>
|
||||
<string name="image_editing_failed">Úprava súboru zlyhala</string>
|
||||
<string name="edit_image_with">Upraviť súbor s:</string>
|
||||
<string name="no_editor_found">Nebol nájdený žiadny editor</string>
|
||||
<string name="unknown_file_location">Neznáme umiestnenie súboru</string>
|
||||
<string name="error_saving_file">Nepodarilo sa prepísať zdrojový súbor</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="setting_wallpaper">Nastavuje sa tapeta…</string>
|
||||
<string name="wallpaper_set_successfully">Tapeta bola úspešne zmenená</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="same_sorting">Použiť rovnaké zoradenie pre súbory a priečinky</string>
|
||||
<string name="show_hidden_folders">Zobraziť skryté priečinky</string>
|
||||
<string name="autoplay_videos">Spúšťať videá automaticky</string>
|
||||
<string name="toggle_filename">Prepnúť viditeľnosť názvov súborov</string>
|
||||
<string name="show_media">Zobraziť médiá</string>
|
||||
<string name="images">Iba obrázky</string>
|
||||
<string name="videos">Iba videá</string>
|
||||
<string name="images_and_videos">Obrázky aj videá</string>
|
||||
<string name="loop_videos">Automaticky reštartovať videá</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
Allow creating new folders at Copy/Move or Save as dialog destinations
|
||||
</string>
|
||||
<string name="release_54">Added an option to loop videos automatically</string>
|
||||
<string name="release_52">
|
||||
Added more color customization options\n
|
||||
Your settings have been cleared, please reset them</string>
|
||||
<string name="release_51">Allow changing the column count with pinch gestures</string>
|
||||
<string name="release_50">Added an option to display images or videos only</string>
|
||||
<string name="release_49">Added a Select all button at selecting media and folders</string>
|
||||
<string name="release_47">
|
||||
Added an image resizer to the editor\n
|
||||
Allow displaying images and videos from all folders together
|
||||
</string>
|
||||
<string name="release_46">Allow pinning folders at the top</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">Galéria na prezeranie obrázkov a videí bez reklám.</string>
|
||||
<string name="app_long_description">
|
||||
Jednoduchá nástroj použiteľný na prezeranie obrázkov a videí. Položky môžu byť zoradené podľa dátumu, veľkosti, názvu oboma smermi, obrázky je možné aj priblížiť. Položky sú zobrazované vo viacerých stĺpcoch v závislosti od veľkosti displeja, počet stĺpcov je možné meniť pomocou gesta prstami. Súbory môžete premenovať, zdieľať, mazať, kopírovať, premiestňovaŤ. Obrázky môžete orezať, otočiť, alebo nastaviť ako tapeta priamo v aplikácií.
|
||||
|
||||
|
||||
Galéria je tiež poskytovaná pre použitie treťou stranou pre prehliadanie fotiek a videí, pridávanie príloh v emailových klientoch. Je perfektná na každodenné použitie.
|
||||
|
||||
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
|
||||
</string>
|
||||
|
||||
<!--
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
@@ -4,29 +4,33 @@
|
||||
<string name="app_launcher_name">Gallery</string>
|
||||
<string name="share_via">Dela via</string>
|
||||
<string name="no_permissions">Inte mycket att göra i ett galleri om jag inte kommer åt lagringsutrymmet</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="edit">Redigera</string>
|
||||
<string name="open_camera">Starta kameran</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="no_app_found">No valid app found</string>
|
||||
<string name="hide_folder">Hide folder</string>
|
||||
<string name="unhide_folder">Unhide folder</string>
|
||||
<string name="hidden">(hidden)</string>
|
||||
<string name="save_as">Save as</string>
|
||||
<string name="file_saved">File saved successfully</string>
|
||||
<string name="pin_folder">Pin folder</string>
|
||||
<string name="unpin_folder">Unpin folder</string>
|
||||
<string name="show_all">Show all folders content</string>
|
||||
<string name="all_folders">All folders</string>
|
||||
<string name="folder_view">Switch to folder view</string>
|
||||
<string name="other_folder">Другая папка</string>
|
||||
<string name="open_with">Öppna med</string>
|
||||
<string name="no_app_found">Hittade ingen giltig app</string>
|
||||
<string name="hide_folder">Dölj mapp</string>
|
||||
<string name="unhide_folder">Visa mapp</string>
|
||||
<string name="hidden">(dold)</string>
|
||||
<string name="save_as">Spara som</string>
|
||||
<string name="file_saved">Filen sparad</string>
|
||||
<string name="pin_folder">Fäst mappen</string>
|
||||
<string name="unpin_folder">Släpp mappen</string>
|
||||
<string name="show_all">Visa alla mappars innehåll</string>
|
||||
<string name="all_folders">Alla mappar</string>
|
||||
<string name="folder_view">Byt till mappvy</string>
|
||||
<string name="other_folder">Andra mappar</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
<string name="resize_and_save">Resize selection and save</string>
|
||||
<string name="width">Width</string>
|
||||
<string name="height">Height</string>
|
||||
<string name="keep_aspect_ratio">Keep aspect ratio</string>
|
||||
<string name="invalid_values">Please enter a valid resolution</string>
|
||||
<string name="resize">Ändra storlek</string>
|
||||
<string name="resize_and_save">Ändra storlek och spara</string>
|
||||
<string name="width">Bredd</string>
|
||||
<string name="height">Höjd</string>
|
||||
<string name="keep_aspect_ratio">Behåll bildförhållande</string>
|
||||
<string name="invalid_values">Ange en giltig bildupplösning</string>
|
||||
|
||||
<!-- Renaming -->
|
||||
<string name="rename_file">Döp om fil</string>
|
||||
@@ -34,49 +38,50 @@
|
||||
<string name="rename_file_error">Det gick inte att döpa om filen</string>
|
||||
<string name="rename_folder_error">Det gick inte att döpa om mappen</string>
|
||||
<string name="rename_folder_empty">Du måste ange ett mappnamn</string>
|
||||
<string name="rename_folder_exists">A folder with that name already exists</string>
|
||||
<string name="rename_folder_root">Cannot rename the root folder of a storage</string>
|
||||
<string name="rename_folder_exists">En mapp med det namnet finns redan</string>
|
||||
<string name="rename_folder_root">Det går inte att döpa om rotmappen på lagringsutrymmet</string>
|
||||
<string name="rename_folder_ok">Mappen döptes om</string>
|
||||
<string name="renaming_folder">Döper om mappen</string>
|
||||
<string name="filename_cannot_be_empty">Du måste ange ett filnamn</string>
|
||||
<string name="filename_invalid_characters">Filename contains invalid characters</string>
|
||||
<string name="filename_invalid_characters">Filnamnet innehåller ogiltiga tecken</string>
|
||||
<string name="extension">Filändelse</string>
|
||||
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
|
||||
<string name="extension_cannot_be_empty">Filändelsen får inte vara tom</string>
|
||||
|
||||
<!-- Editor -->
|
||||
<string name="editor">Editor</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="rotate">Rotate</string>
|
||||
<string name="path">Path</string>
|
||||
<string name="invalid_image_path">Invalid image path</string>
|
||||
<string name="editor">Redigera</string>
|
||||
<string name="save">Spara</string>
|
||||
<string name="rotate">Rotera</string>
|
||||
<string name="path">Sökväg</string>
|
||||
<string name="invalid_image_path">Ogiltig bildsökväg</string>
|
||||
<string name="image_editing_failed">Image editing failed</string>
|
||||
<string name="edit_image_with">Edit image with:</string>
|
||||
<string name="no_editor_found">No image editor found</string>
|
||||
<string name="unknown_file_location">Unknown file location</string>
|
||||
<string name="error_saving_file">Could not overwrite the source file</string>
|
||||
<string name="edit_image_with">Redigera bilden med:</string>
|
||||
<string name="no_editor_found">Hittade ingen bildredigerare</string>
|
||||
<string name="unknown_file_location">Okänd filplats</string>
|
||||
<string name="error_saving_file">Det gick inte att skriva över källfilen</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="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="setting_wallpaper">Inställningar för bakgrundsbild…</string>
|
||||
<string name="wallpaper_set_successfully">Wallpaper set successfully</string>
|
||||
<string name="wallpaper_set_successfully">Bakgrundsbilden är ändrad</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Mörkt tema</string>
|
||||
<string name="same_sorting">Same sorting for files and folders</string>
|
||||
<string name="show_hidden_folders">Show hidden folders</string>
|
||||
<string name="autoplay_videos">Play videos automatically</string>
|
||||
<string name="toggle_filename">Toggle filename visibility</string>
|
||||
<string name="show_media">Show media</string>
|
||||
<string name="images">Images only</string>
|
||||
<string name="videos">Videos only</string>
|
||||
<string name="images_and_videos">Images and videos</string>
|
||||
<string name="loop_videos">Loop videos</string>
|
||||
<string name="same_sorting">Samma sortering för filer som för mappar</string>
|
||||
<string name="show_hidden_folders">Visa dolda mappar</string>
|
||||
<string name="autoplay_videos">Spela upp videos automatiskt</string>
|
||||
<string name="toggle_filename">Visa/dölj filnamnen</string>
|
||||
<string name="show_media">Visa media</string>
|
||||
<string name="images">Endast bilder</string>
|
||||
<string name="videos">Endast videos</string>
|
||||
<string name="images_and_videos">Bilder och videos</string>
|
||||
<string name="loop_videos">Återspela videos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
@@ -97,16 +102,16 @@
|
||||
|
||||
<!-- 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">A gallery for viewing photos and videos without ads.</string>
|
||||
<string name="app_short_description">Ett Galleri för att visa bilder och videos utan en massa reklam.</string>
|
||||
<string name="app_long_description">
|
||||
A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated or set as Wallpaper directly from the app.
|
||||
Ett enkelt verktyg för att visa bilder och vdeos. Objekten kan sorteras efter datum, storlek, namn både stigande och fallande, bilder kan zoomas in. Mediafiler visas i flera kolumner beroende av skärmens storlek, du kan ändra antalet kolumner genom en nyp-rörelse. De går att döpa om, dela, ta bort, kopiera, flytta. Bilder kan också beskäras, roteras och anges som bakgrundsbild direkt från appen.
|
||||
|
||||
|
||||
The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage.
|
||||
Galleriet kan också användas av tredjeparts för förhandsgranskning av bilder / videos, bifoga bilagor i e-postklienter etc. Den är perfekt för det dagliga användandet.
|
||||
|
||||
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
|
||||
Innehåller ingen reklam eller onödiga behörigheter. Det är helt och hållet opensource, innehåller anpassningsbara färger.
|
||||
|
||||
This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com
|
||||
Detta är bara en app i en serie av appar. Du hittar resten av dem här http://www.simplemobiletools.com
|
||||
</string>
|
||||
|
||||
<!--
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">所有文件夹</string>
|
||||
<string name="folder_view">切换到文件夹视图</string>
|
||||
<string name="other_folder">其他文件夹</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">缩放</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">壁纸应用成功</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">暗主题</string>
|
||||
<string name="same_sorting">全局排序</string>
|
||||
<string name="show_hidden_folders">显示所有</string>
|
||||
<string name="autoplay_videos">自动播放</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">循环播放视频</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">所有資料夾</string>
|
||||
<string name="folder_view">切換到資料夾檢視</string>
|
||||
<string name="other_folder">其他資料夾</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">縮放</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">成功應用軟體桌布</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">暗色使用者介面主題</string>
|
||||
<string name="same_sorting">全部排序</string>
|
||||
<string name="show_hidden_folders">秀出隱藏資料夾</string>
|
||||
<string name="autoplay_videos">自動播放影片</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">迴圈播放影片</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="show_media_items" translatable="false">
|
||||
<item>@string/images_and_videos</item>
|
||||
<item>@string/images</item>
|
||||
<item>@string/videos</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
@@ -19,6 +19,10 @@
|
||||
<string name="all_folders">All folders</string>
|
||||
<string name="folder_view">Switch to folder view</string>
|
||||
<string name="other_folder">Other folder</string>
|
||||
<string name="show_on_map">Show on map</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
<string name="no_map_application">No application with maps has been found</string>
|
||||
<string name="no_camera_app_found">No Camera app has been found</string>
|
||||
|
||||
<!-- Resizing -->
|
||||
<string name="resize">Resize</string>
|
||||
@@ -65,7 +69,6 @@
|
||||
<string name="wallpaper_set_successfully">Wallpaper set successfully</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="dark_theme">Dark theme</string>
|
||||
<string name="same_sorting">Same sorting for files and folders</string>
|
||||
<string name="show_hidden_folders">Show hidden folders</string>
|
||||
<string name="autoplay_videos">Play videos automatically</string>
|
||||
@@ -77,6 +80,8 @@
|
||||
<string name="loop_videos">Loop videos</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_66">Allow picking colors by hex codes</string>
|
||||
<string name="release_65">Allow showing the photos and videos on a map, if there are available map coordinates</string>
|
||||
<string name="release_62">Show some additional Exif data at photo properties</string>
|
||||
<string name="release_58">
|
||||
Allow zooming pngs and gifs\n
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
STORE_FILE=/path/to/your.keystore
|
||||
STORE_PASSWORD=yourkeypass
|
||||
KEY_ALIAS=projectkeyalias
|
||||
KEY_PASSWORD=yourkeypass
|
||||
PASSWORD=yourpass
|
||||
|
||||