diff --git a/CHANGELOG.md b/CHANGELOG.md index b1340a8d7..2331262d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,32 @@ Changelog ========== +Version 4.6.5 *(2018-10-02)* +---------------------------- + + * Added notch support for Android 9 + * Allow faster video seeking by dragging a finger at the bottom seekbar + * Use a different way of displaying fullscreen GIFs + * Added a new toggle for trying to show the best possible image quality + * Keep Favorite items marked after moving + * Fixed some glitches related to toggling fullscreen mode + * Many other smaller improvements + +Version 4.6.4 *(2018-09-22)* +---------------------------- + + * Fixed lag at zooming fullscreen images on some devices + +Version 4.6.3 *(2018-09-21)* +---------------------------- + + * Improved zooming performance at fullscreen view + * Fixed showing conflict resolution dialog at Move + * Fixed selection check icons at horizontal scrolling + * Fixed displaying some fullscreen images, where file path contained percentage sign or hashtag + * Optimized many database operations + * Fixed many other smaller issues + Version 4.6.2 *(2018-09-05)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index d955bc467..1141d8232 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,14 +5,14 @@ apply plugin: 'kotlin-kapt' android { compileSdkVersion 28 - buildToolsVersion "28.0.2" + buildToolsVersion "28.0.3" defaultConfig { applicationId "com.simplemobiletools.gallery" minSdkVersion 16 targetSdkVersion 28 - versionCode 198 - versionName "4.6.2" + versionCode 201 + versionName "4.6.5" multiDexEnabled true setProperty("archivesBaseName", "gallery") } @@ -43,26 +43,26 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:4.7.14' + implementation 'com.simplemobiletools:commons:4.9.1' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' - implementation 'com.android.support:multidex:1.0.3' + implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2' implementation 'com.google.android.exoplayer:exoplayer-core:2.8.4' - implementation 'com.google.vr:sdk-panowidget:1.150.0' + implementation 'com.google.vr:sdk-panowidget:1.170.0' implementation 'org.apache.sanselan:sanselan:0.97-incubator' implementation 'info.androidhive:imagefilters:1.0.7' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.caverock:androidsvg-aar:1.3' kapt 'com.github.bumptech.glide:compiler:4.8.0' // keep it here too, not just in Commons, else loading SVGs wont work - kapt "android.arch.persistence.room:compiler:1.1.1" - implementation "android.arch.persistence.room:runtime:1.1.1" - annotationProcessor "android.arch.persistence.room:compiler:1.1.1" + kapt "androidx.room:room-compiler:2.0.0" + implementation "androidx.room:room-runtime:2.0.0" + annotationProcessor "androidx.room:room-compiler:2.0.0" - //implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0' - implementation 'com.github.tibbi:subsampling-scale-image-view:v3.10.0-fork' + //implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0' + implementation 'com.github.tibbi:subsampling-scale-image-view:v3.10.1-fork' // implementation 'com.github.chrisbanes:PhotoView:2.1.4' implementation 'com.github.tibbi:PhotoView:2.1.4-fork' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e58d5e3a1..85395342a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -203,7 +203,7 @@ diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt index e1562b1b4..8bb567298 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt @@ -1,6 +1,6 @@ package com.simplemobiletools.gallery -import android.support.multidex.MultiDexApplication +import androidx.multidex.MultiDexApplication import com.github.ajalt.reprint.core.Reprint import com.simplemobiletools.commons.extensions.checkUseEnglish diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt index 129655165..2ab28c6c4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt @@ -9,7 +9,7 @@ import android.graphics.Point import android.net.Uri import android.os.Bundle import android.provider.MediaStore -import android.support.v7.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import android.widget.RelativeLayout diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index 6db737334..4590512cb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -7,12 +7,13 @@ import android.net.Uri import android.os.Bundle import android.os.Handler import android.provider.MediaStore -import android.support.v7.widget.GridLayoutManager import android.view.Menu import android.view.MenuItem import android.view.ViewGroup import android.widget.FrameLayout import android.widget.Toast +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.simplemobiletools.commons.dialogs.CreateNewFolderDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog @@ -420,9 +421,15 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } override fun deleteFolders(folders: ArrayList) { - val fileDirItems = folders.map { FileDirItem(it.absolutePath, it.name, true) } as ArrayList - fileDirItems.forEach { - toast(String.format(getString(R.string.deleting_folder), it.name), Toast.LENGTH_LONG) + val fileDirItems = folders.asSequence().filter { it.isDirectory }.map { FileDirItem(it.absolutePath, it.name, true) }.toMutableList() as ArrayList + when { + fileDirItems.isEmpty() -> return + fileDirItems.size == 1 -> toast(String.format(getString(R.string.deleting_folder), fileDirItems.first().name)) + else -> { + val baseString = if (config.useRecycleBin) R.plurals.moving_items_into_bin else R.plurals.delete_items + val deletingItems = resources.getQuantityString(baseString, fileDirItems.size, fileDirItems.size) + toast(deletingItems) + } } if (config.useRecycleBin) { @@ -469,10 +476,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun setupGridLayoutManager() { val layoutManager = directories_grid.layoutManager as MyGridLayoutManager if (config.scrollHorizontally) { - layoutManager.orientation = GridLayoutManager.HORIZONTAL + layoutManager.orientation = RecyclerView.HORIZONTAL directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) } else { - layoutManager.orientation = GridLayoutManager.VERTICAL + layoutManager.orientation = RecyclerView.VERTICAL directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) } @@ -531,7 +538,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun setupListLayoutManager() { val layoutManager = directories_grid.layoutManager as MyGridLayoutManager layoutManager.spanCount = 1 - layoutManager.orientation = GridLayoutManager.VERTICAL + layoutManager.orientation = RecyclerView.VERTICAL directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) mZoomListener = null } @@ -915,7 +922,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { invalidDirs.add(it) } else if (it.path != config.tempFolderPath) { val children = if (it.path.startsWith(OTG_PATH)) getOTGFolderChildrenNames(it.path) else File(it.path).list()?.asList() - val hasMediaFile = children?.any { it.isMediaFile() } ?: false + val hasMediaFile = children?.any { it?.isMediaFile() == true } ?: false if (!hasMediaFile) { invalidDirs.add(it) } @@ -981,7 +988,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { }, LAST_MEDIA_CHECK_PERIOD) } - private fun checkRecycleBinItems() { if (config.useRecycleBin && config.lastBinCheck < System.currentTimeMillis() - DAY_SECONDS * 1000) { config.lastBinCheck = System.currentTimeMillis() @@ -1061,6 +1067,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { add(Release(181, R.string.release_181)) add(Release(182, R.string.release_182)) add(Release(184, R.string.release_184)) + add(Release(201, R.string.release_201)) checkWhatsNew(this, BuildConfig.VERSION_CODE) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 5107c3d21..1dd2514b6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -9,13 +9,14 @@ import android.graphics.Bitmap import android.net.Uri import android.os.Bundle import android.os.Handler -import android.support.v4.view.MenuItemCompat -import android.support.v7.widget.GridLayoutManager -import android.support.v7.widget.SearchView import android.view.Menu import android.view.MenuItem import android.view.ViewGroup import android.widget.FrameLayout +import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuItemCompat +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.target.SimpleTarget @@ -629,10 +630,10 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun setupGridLayoutManager() { val layoutManager = media_grid.layoutManager as MyGridLayoutManager if (config.scrollHorizontally) { - layoutManager.orientation = GridLayoutManager.HORIZONTAL + layoutManager.orientation = RecyclerView.HORIZONTAL media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) } else { - layoutManager.orientation = GridLayoutManager.VERTICAL + layoutManager.orientation = RecyclerView.VERTICAL media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) } @@ -721,7 +722,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun setupListLayoutManager() { val layoutManager = media_grid.layoutManager as MyGridLayoutManager layoutManager.spanCount = 1 - layoutManager.orientation = GridLayoutManager.VERTICAL + layoutManager.orientation = RecyclerView.VERTICAL media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) mZoomListener = null } @@ -832,11 +833,15 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } override fun tryDeleteFiles(fileDirItems: ArrayList) { - val filtered = fileDirItems.filter { it.path.isMediaFile() } as ArrayList - val deletingItems = resources.getQuantityString(R.plurals.deleting_items, filtered.size, filtered.size) - toast(deletingItems) + val filtered = fileDirItems.filter { File(it.path).isFile && it.path.isMediaFile() } as ArrayList + if (filtered.isEmpty()) { + return + } if (config.useRecycleBin && !filtered.first().path.startsWith(filesDir.absolutePath)) { + val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) + toast(movingItems) + movePathsInRecycleBin(filtered.map { it.path } as ArrayList, mMediumDao) { if (it) { deleteFilteredFiles(filtered) @@ -845,6 +850,8 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { } } } else { + val deletingItems = resources.getQuantityString(R.plurals.deleting_items, filtered.size, filtered.size) + toast(deletingItems) deleteFilteredFiles(filtered) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaActivity.kt index 576a5c792..e1131e92f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaActivity.kt @@ -1,12 +1,15 @@ package com.simplemobiletools.gallery.activities +import android.annotation.TargetApi import android.content.res.Configuration import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Color +import android.os.Build import android.os.Bundle import android.view.View import android.view.Window +import android.view.WindowManager import android.widget.RelativeLayout import com.google.vr.sdk.widgets.pano.VrPanoramaEventListener import com.google.vr.sdk.widgets.pano.VrPanoramaView @@ -14,6 +17,8 @@ import com.simplemobiletools.commons.extensions.beVisible import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE +import com.simplemobiletools.commons.helpers.isLollipopPlus +import com.simplemobiletools.commons.helpers.isPiePlus import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.extensions.* import com.simplemobiletools.gallery.helpers.PATH @@ -32,6 +37,12 @@ open class PanoramaActivity : SimpleActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_panorama) supportActionBar?.hide() + + if (isPiePlus()) { + window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + } + setupButtonMargins() cardboard.setOnClickListener { @@ -54,6 +65,7 @@ open class PanoramaActivity : SimpleActivity() { } } + @TargetApi(Build.VERSION_CODES.LOLLIPOP) override fun onResume() { super.onResume() panorama_view.resumeRendering() @@ -61,6 +73,10 @@ open class PanoramaActivity : SimpleActivity() { if (config.blackBackground) { updateStatusbarColor(Color.BLACK) } + + if (isLollipopPlus()) { + window.statusBarColor = resources.getColor(R.color.circle_black_background) + } } override fun onPause() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index 9ae24e5d8..5a2cafd4b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -52,7 +52,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList override fun onResume() { super.onResume() - supportActionBar?.setBackgroundDrawable(resources.getDrawable(R.drawable.actionbar_gradient_background)) + supportActionBar?.setBackgroundDrawable(resources.getDrawable(R.drawable.gradient_background_flipped)) if (config.blackBackground) { updateStatusbarColor(Color.BLACK) } @@ -103,7 +103,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList mFragment = if (mIsVideo) VideoFragment() else PhotoFragment() mFragment!!.listener = this mFragment!!.arguments = bundle - supportFragmentManager.beginTransaction().replace(R.id.fragment_placeholder, mFragment).commit() + supportFragmentManager.beginTransaction().replace(R.id.fragment_placeholder, mFragment!!).commit() } if (config.blackBackground) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt index 596b79ffc..d6086baaf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -67,6 +67,7 @@ class SettingsActivity : SimpleActivity() { setupShowInfoBubble() setupEnablePullToRefresh() setupAllowZoomingImages() + setupShowHighestQuality() setupOneFingerZoom() setupAllowInstantChange() setupShowExtendedDetails() @@ -84,7 +85,7 @@ class SettingsActivity : SimpleActivity() { private fun setupSectionColors() { val adjustedPrimaryColor = getAdjustedPrimaryColor() arrayListOf(visibility_label, videos_label, thumbnails_label, scrolling_label, fullscreen_media_label, security_label, - file_operations_label, extended_details_label, bottom_actions_label, recycle_bin_label).forEach { + file_operations_label, deep_zoomable_images_label, extended_details_label, bottom_actions_label, recycle_bin_label).forEach { it.setTextColor(adjustedPrimaryColor) } } @@ -337,10 +338,24 @@ class SettingsActivity : SimpleActivity() { private fun setupAllowZoomingImages() { settings_allow_zooming_images.isChecked = config.allowZoomingImages + updateDeepZoomToggleButtons() settings_allow_zooming_images_holder.setOnClickListener { settings_allow_zooming_images.toggle() config.allowZoomingImages = settings_allow_zooming_images.isChecked - settings_one_finger_zoom_holder.beVisibleIf(config.allowZoomingImages) + updateDeepZoomToggleButtons() + } + } + + private fun updateDeepZoomToggleButtons() { + settings_one_finger_zoom_holder.beVisibleIf(config.allowZoomingImages) + settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages) + } + + private fun setupShowHighestQuality() { + settings_show_highest_quality.isChecked = config.showHighestQuality + settings_show_highest_quality_holder.setOnClickListener { + settings_show_highest_quality.toggle() + config.showHighestQuality = settings_show_highest_quality.isChecked } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt index 644db9dde..9a318db83 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -20,7 +20,7 @@ import android.os.Build import android.os.Bundle import android.os.Handler import android.provider.MediaStore -import android.support.v4.view.ViewPager +import androidx.viewpager.widget.ViewPager import android.util.DisplayMetrics import android.view.Menu import android.view.MenuItem @@ -82,6 +82,13 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_medium) + + top_shadow.layoutParams.height = statusBarHeight + actionBarHeight + if (isPiePlus()) { + window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + } + (MediaActivity.mMedia.clone() as ArrayList).filter { it is Medium }.mapTo(mMediaFiles) { it as Medium } handlePermission(PERMISSION_WRITE_STORAGE) { @@ -113,7 +120,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } initBottomActions() - supportActionBar?.setBackgroundDrawable(resources.getDrawable(R.drawable.actionbar_gradient_background)) if (config.maxBrightness) { val attributes = window.attributes @@ -127,6 +133,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (config.blackBackground) { updateStatusbarColor(Color.BLACK) } + + supportActionBar?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + if (isLollipopPlus()) { + window.statusBarColor = Color.TRANSPARENT + } } override fun onPause() { @@ -246,8 +257,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View view_pager.adapter?.let { (it as MyPagerAdapter).toggleFullscreen(mIsFullScreen) checkSystemUI() - if (!bottom_actions.isGone()) { - bottom_actions.animate().alpha(if (mIsFullScreen) 0f else 1f).start() + val newAlpha = if (mIsFullScreen) 0f else 1f + top_shadow.animate().alpha(newAlpha).start() + if (bottom_actions.isVisible()) { + bottom_actions.animate().alpha(newAlpha).start() arrayOf(bottom_favorite, bottom_edit, bottom_share, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, bottom_toggle_file_visibility, bottom_rename).forEach { it.isClickable = !mIsFullScreen @@ -514,6 +527,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View config.tempFolderPath = "" if (!isCopyOperation) { refreshViewPager() + updateFavoritePaths(fileDirItems, it) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt index 1c6f525f0..12b095d18 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt @@ -366,7 +366,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList { val paths = ArrayList() activity.getOTGFolderChildren(path)?.forEach { - if (!it.isDirectory && it.name.isMediaFile() && (showHidden || !it.name.startsWith('.'))) { + if (!it.isDirectory && it.name!!.isMediaFile() && (showHidden || !it.name!!.startsWith('.'))) { val relativePath = it.uri.path.substringAfterLast("${activity.config.OTGPartition}:") paths.add("$OTG_PATH$relativePath") } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt index 782412a94..046abda1f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt @@ -2,10 +2,10 @@ package com.simplemobiletools.gallery.adapters import android.content.Context import android.graphics.drawable.Drawable -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.interfaces.FilterAdapterListener import com.simplemobiletools.gallery.models.FilterItem diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt index 22ecca74d..d88895b59 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -28,7 +28,6 @@ import com.simplemobiletools.gallery.models.ThumbnailItem import com.simplemobiletools.gallery.models.ThumbnailSection import kotlinx.android.synthetic.main.photo_video_item_grid.view.* import kotlinx.android.synthetic.main.thumbnail_section.view.* -import java.lang.Exception import java.text.SimpleDateFormat import java.util.* @@ -178,8 +177,9 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList 0 - menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0 + val isInRecycleBin = getSelectedMedia().firstOrNull()?.getIsInRecycleBin() == true + menu.findItem(R.id.cab_hide).isVisible = unhiddenCnt > 0 && !isInRecycleBin + menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0 && !isInRecycleBin } private fun checkFavoriteBtnVisibility(menu: Menu) { @@ -283,6 +283,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList showOtherFolder() }) + .setNeutralButton(R.string.other_folder) { dialogInterface, i -> showOtherFolder() } .create().apply { activity.setupDialogStuff(view, this, R.string.select_destination) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt index 1ccef0923..056603a3a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -1,7 +1,7 @@ package com.simplemobiletools.gallery.dialogs -import android.support.v7.app.AlertDialog -import android.support.v7.widget.GridLayoutManager +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.RecyclerView import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beGoneIf import com.simplemobiletools.commons.extensions.beVisibleIf @@ -26,7 +26,7 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c init { (view.media_grid.layoutManager as MyGridLayoutManager).apply { - orientation = if (activity.config.scrollHorizontally && isGridViewType) GridLayoutManager.HORIZONTAL else GridLayoutManager.VERTICAL + orientation = if (activity.config.scrollHorizontally && isGridViewType) RecyclerView.HORIZONTAL else RecyclerView.VERTICAL spanCount = if (isGridViewType) activity.config.mediaColumnCnt else 1 } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt index 3489dd060..378d8a524 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt @@ -1,7 +1,7 @@ package com.simplemobiletools.gallery.dialogs import android.graphics.Point -import android.support.v7.app.AlertDialog +import androidx.appcompat.app.AlertDialog import android.text.Editable import android.text.TextWatcher import android.widget.EditText diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt index 3199ff9d7..9bb1f2ea9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt @@ -1,6 +1,6 @@ package com.simplemobiletools.gallery.dialogs -import android.support.v7.app.AlertDialog +import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt index 58a4935dd..16e38f058 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt @@ -1,6 +1,6 @@ package com.simplemobiletools.gallery.dialogs -import android.support.v7.app.AlertDialog +import androidx.appcompat.app.AlertDialog import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.hideKeyboard diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt index 0aee81bfe..8993ebce3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt @@ -3,7 +3,7 @@ package com.simplemobiletools.gallery.extensions import android.app.Activity import android.content.Intent import android.provider.MediaStore -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog @@ -76,6 +76,8 @@ fun SimpleActivity.launchAbout() { FAQItem(R.string.faq_10_title, R.string.faq_10_text), FAQItem(R.string.faq_11_title, R.string.faq_11_text), FAQItem(R.string.faq_12_title, R.string.faq_12_text), + FAQItem(R.string.faq_13_title, R.string.faq_13_text), + FAQItem(R.string.faq_14_title, R.string.faq_14_text), FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons)) startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) @@ -276,3 +278,12 @@ fun BaseSimpleActivity.showRecycleBinEmptyingDialog(callback: () -> Unit) { callback() } } + +fun BaseSimpleActivity.updateFavoritePaths(fileDirItems: ArrayList, destination: String) { + Thread { + fileDirItems.forEach { + val newPath = "$destination/${it.name}" + updateDBMediaPath(it.path, newPath) + } + }.start() +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt index eb41408b1..41cf947d1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt @@ -44,11 +44,40 @@ val Context.navigationBarWidth: Int get() = if (navigationBarRight) navigationBa internal val Context.navigationBarSize: Point get() = when { - navigationBarRight -> Point(realScreenSize.x - usableScreenSize.x, usableScreenSize.y) - navigationBarBottom -> Point(usableScreenSize.x, realScreenSize.y - usableScreenSize.y) + navigationBarRight -> Point(newNavigationBarHeight, usableScreenSize.y) + navigationBarBottom -> Point(usableScreenSize.x, newNavigationBarHeight) else -> Point() } +internal val Context.newNavigationBarHeight: Int + get() { + var navigationBarHeight = 0 + val resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android") + if (resourceId > 0) { + navigationBarHeight = resources.getDimensionPixelSize(resourceId) + } + return navigationBarHeight + } + +internal val Context.statusBarHeight: Int + get() { + var statusBarHeight = 0 + val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android") + if (resourceId > 0) { + statusBarHeight = resources.getDimensionPixelSize(resourceId) + } + return statusBarHeight + } + +internal val Context.actionBarHeight: Int + get() { + val styledAttributes = theme.obtainStyledAttributes(intArrayOf(android.R.attr.actionBarSize)) + val actionBarHeight = styledAttributes.getDimension(0, 0f) + styledAttributes.recycle() + return actionBarHeight.toInt() + } + + val Context.usableScreenSize: Point get() { val size = Point() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt index ce012e47e..1da94e93e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt @@ -11,6 +11,7 @@ import android.graphics.drawable.ColorDrawable import android.graphics.drawable.PictureDrawable import android.media.ExifInterface.* import android.net.Uri +import android.os.Build import android.os.Bundle import android.os.Handler import android.util.DisplayMetrics @@ -44,24 +45,34 @@ import it.sephiroth.android.library.exif2.ExifInterface import kotlinx.android.synthetic.main.pager_photo_item.view.* import org.apache.sanselan.common.byteSources.ByteSourceInputStream import org.apache.sanselan.formats.jpeg.JpegImageParser -import pl.droidsonroids.gif.GifDrawable +import pl.droidsonroids.gif.InputSource import java.io.File import java.io.FileOutputStream +import java.util.* class PhotoFragment : ViewPagerFragment() { private val DEFAULT_DOUBLE_TAP_ZOOM = 2f private val ZOOMABLE_VIEW_LOAD_DELAY = 300L + // devices with good displays, but the rest of the hardware not good enough for them + private val WEIRD_DEVICES = arrayListOf( + "motorola xt1685", + "google nexus 5x" + ) + private var isFragmentVisible = false private var isFullscreen = false private var wasInit = false private var isPanorama = false + private var isSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it private var imageOrientation = -1 - private var gifDrawable: GifDrawable? = null private var loadZoomableViewHandler = Handler() private var storedShowExtendedDetails = false private var storedHideExtendedDetails = false + private var storedAllowDeepZoomableImages = false + private var storedShowHighestQuality = false + private var storedAllowOneFingerZoom = false private var storedExtendedDetails = 0 lateinit var view: ViewGroup @@ -71,6 +82,7 @@ class PhotoFragment : ViewPagerFragment() { view = (inflater.inflate(R.layout.pager_photo_item, container, false) as ViewGroup).apply { subsampling_view.setOnClickListener { photoClicked() } photo_view.setOnClickListener { photoClicked() } + gif_view.setOnClickListener { photoClicked() } instant_prev_item.setOnClickListener { listener?.goToPrevItem() } instant_next_item.setOnClickListener { listener?.goToNextItem() } panorama_outline.setOnClickListener { openPanorama() } @@ -146,18 +158,30 @@ class PhotoFragment : ViewPagerFragment() { override fun onResume() { super.onResume() - if (wasInit && (context!!.config.showExtendedDetails != storedShowExtendedDetails || context!!.config.extendedDetails != storedExtendedDetails)) { + val config = context!!.config + if (wasInit && (config.showExtendedDetails != storedShowExtendedDetails || config.extendedDetails != storedExtendedDetails)) { initExtendedDetails() } - val allowPhotoGestures = context!!.config.allowPhotoGestures - val allowInstantChange = context!!.config.allowInstantChange + if (wasInit) { + if (config.allowZoomingImages != storedAllowDeepZoomableImages || config.showHighestQuality != storedShowHighestQuality || + config.oneFingerZoom != storedAllowOneFingerZoom) { + isSubsamplingVisible = false + view.subsampling_view.beGone() + loadImage() + } else if (medium.isGIF()) { + loadGif() + } + } + + val allowPhotoGestures = config.allowPhotoGestures + val allowInstantChange = config.allowInstantChange view.apply { photo_brightness_controller.beVisibleIf(allowPhotoGestures) instant_prev_item.beVisibleIf(allowInstantChange) instant_next_item.beVisibleIf(allowInstantChange) - photo_view.setAllowFingerDragZoom(activity!!.config.oneFingerZoom) + photo_view.setAllowFingerDragZoom(config.oneFingerZoom) } storeStateVariables() @@ -167,9 +191,7 @@ class PhotoFragment : ViewPagerFragment() { super.setMenuVisibility(menuVisible) isFragmentVisible = menuVisible if (wasInit) { - if (medium.isGIF()) { - gifFragmentVisibilityChanged(menuVisible) - } else { + if (!medium.isGIF()) { photoFragmentVisibilityChanged(menuVisible) } } @@ -179,6 +201,9 @@ class PhotoFragment : ViewPagerFragment() { context!!.config.apply { storedShowExtendedDetails = showExtendedDetails storedHideExtendedDetails = hideExtendedDetails + storedAllowDeepZoomableImages = allowZoomingImages + storedShowHighestQuality = showHighestQuality + storedAllowOneFingerZoom = oneFingerZoom storedExtendedDetails = extendedDetails } } @@ -197,18 +222,11 @@ class PhotoFragment : ViewPagerFragment() { } } - private fun gifFragmentVisibilityChanged(isVisible: Boolean) { - if (isVisible) { - gifDrawable?.start() - } else { - gifDrawable?.stop() - } - } - private fun photoFragmentVisibilityChanged(isVisible: Boolean) { if (isVisible) { scheduleZoomableView() } else { + isSubsamplingVisible = false view.subsampling_view.recycle() view.subsampling_view.beGone() loadZoomableViewHandler.removeCallbacksAndMessages(null) @@ -245,22 +263,18 @@ class PhotoFragment : ViewPagerFragment() { private fun loadGif() { try { val pathToLoad = getPathToLoad(medium) - gifDrawable = if (pathToLoad.startsWith("content://") || pathToLoad.startsWith("file://")) { - GifDrawable(context!!.contentResolver, Uri.parse(pathToLoad)) + val source = if (pathToLoad.startsWith("content://") || pathToLoad.startsWith("file://")) { + InputSource.UriSource(context!!.contentResolver, Uri.parse(pathToLoad)) } else { - GifDrawable(pathToLoad) + InputSource.FileSource(pathToLoad) } - if (!isFragmentVisible) { - gifDrawable!!.stop() - } - - view.photo_view.setImageDrawable(gifDrawable) + view.photo_view.beGone() + view.gif_view.beVisible() + view.gif_view.setInputSource(source) } catch (e: Exception) { - gifDrawable = null loadBitmap() } catch (e: OutOfMemoryError) { - gifDrawable = null loadBitmap() } } @@ -346,7 +360,7 @@ class PhotoFragment : ViewPagerFragment() { private fun scheduleZoomableView() { loadZoomableViewHandler.removeCallbacksAndMessages(null) loadZoomableViewHandler.postDelayed({ - if (isFragmentVisible && context?.config?.allowZoomingImages == true && medium.isImage() && view.subsampling_view.isGone()) { + if (isFragmentVisible && context?.config?.allowZoomingImages == true && medium.isImage() && !isSubsamplingVisible) { addZoomableView() } }, ZOOMABLE_VIEW_LOAD_DELAY) @@ -354,17 +368,20 @@ class PhotoFragment : ViewPagerFragment() { private fun addZoomableView() { val rotation = degreesForRotation(imageOrientation) + val path = getPathToLoad(medium) + isSubsamplingVisible = true view.subsampling_view.apply { - setMinimumTileDpi(getMinTileDpi()) + setMaxTileSize(if (context!!.config.showHighestQuality) Integer.MAX_VALUE else 4096) + setMinimumTileDpi(if (context!!.config.showHighestQuality) -1 else getMinTileDpi()) background = ColorDrawable(Color.TRANSPARENT) - setBitmapDecoderFactory { PicassoDecoder(medium.path, Picasso.get(), rotation) } + setBitmapDecoderFactory { PicassoDecoder(path, Picasso.get(), rotation) } setRegionDecoderFactory { PicassoRegionDecoder() } maxScale = 10f beVisible() isQuickScaleEnabled = context.config.oneFingerZoom setResetScaleOnSizeChange(context.config.screenRotation != ROTATE_BY_ASPECT_RATIO) - setImage(ImageSource.uri(getPathToLoad(medium))) + setImage(ImageSource.uri(path)) orientation = rotation setEagerLoadingEnabled(false) setOnImageEventListener(object : SubsamplingScaleImageView.OnImageEventListener { @@ -387,11 +404,13 @@ class PhotoFragment : ViewPagerFragment() { override fun onImageLoadError(e: Exception) { view.photo_view.isZoomable = true background = ColorDrawable(Color.TRANSPARENT) + isSubsamplingVisible = false beGone() } override fun onPreviewLoadError(e: Exception?) { background = ColorDrawable(Color.TRANSPARENT) + isSubsamplingVisible = false beGone() } }) @@ -401,9 +420,11 @@ class PhotoFragment : ViewPagerFragment() { private fun getMinTileDpi(): Int { val metrics = resources.displayMetrics val averageDpi = (metrics.xdpi + metrics.ydpi) / 2 + val device = "${Build.BRAND} ${Build.MODEL}".toLowerCase() return when { - averageDpi > 400 -> 320 - averageDpi > 300 -> 240 + WEIRD_DEVICES.contains(device) -> 240 + averageDpi > 400 -> 280 + averageDpi > 300 -> 220 else -> 160 } } @@ -466,6 +487,7 @@ class PhotoFragment : ViewPagerFragment() { fun rotateImageViewBy(degrees: Int) { loadZoomableViewHandler.removeCallbacksAndMessages(null) view.subsampling_view.beGone() + isSubsamplingVisible = false loadBitmap(degrees) } @@ -500,7 +522,18 @@ class PhotoFragment : ViewPagerFragment() { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - loadImage() + + // avoid GIFs being skewed, played in wrong aspect ratio + if (medium.isGIF()) { + view.onGlobalLayout { + Handler().postDelayed({ + loadGif() + }, 50) + } + } else { + loadImage() + } + initExtendedDetails() } @@ -523,8 +556,8 @@ class PhotoFragment : ViewPagerFragment() { private fun getExtendedDetailsY(height: Int): Float { val smallMargin = resources.getDimension(R.dimen.small_margin) - val fullscreenOffset = context!!.navigationBarHeight.toFloat() - smallMargin + val fullscreenOffset = smallMargin + if (isFullscreen) 0 else context!!.navigationBarHeight val actionsHeight = if (context!!.config.bottomActions && !isFullscreen) resources.getDimension(R.dimen.bottom_actions_height) else 0f - return context!!.usableScreenSize.y - height - actionsHeight + if (isFullscreen) fullscreenOffset else -smallMargin + return context!!.realScreenSize.y - height - actionsHeight - fullscreenOffset } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt index 2c6927ea9..470a061e0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt @@ -115,6 +115,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } mExoPlayer = ExoPlayerFactory.newSimpleInstance(context, DefaultTrackSelector()) + mExoPlayer!!.setSeekParameters(SeekParameters.CLOSEST_SYNC) initExoPlayerListeners() medium.path.getVideoResolution()?.apply { @@ -627,8 +628,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun getExtendedDetailsY(height: Int): Float { val smallMargin = resources.getDimension(R.dimen.small_margin) - val timeHolderHeight = mTimeHolder!!.height - context!!.navigationBarHeight.toFloat() - val fullscreenOffset = context!!.navigationBarHeight.toFloat() - smallMargin - return context!!.usableScreenSize.y - height + if (mIsFullscreen) fullscreenOffset else -(timeHolderHeight + smallMargin) + val fullscreenOffset = smallMargin + if (mIsFullscreen) 0 else mTimeHolder!!.height + return context!!.realScreenSize.y.toFloat() - height - fullscreenOffset } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt index d1c9a4253..bb37b58e2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt @@ -1,6 +1,6 @@ package com.simplemobiletools.gallery.fragments -import android.support.v4.app.Fragment +import androidx.fragment.app.Fragment import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.gallery.extensions.config diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt index e53e7f6f8..11474c421 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -388,4 +388,8 @@ class Config(context: Context) : BaseConfig(context) { var lastBinCheck: Long get() = prefs.getLong(LAST_BIN_CHECK, 0L) set(lastBinCheck) = prefs.edit().putLong(LAST_BIN_CHECK, lastBinCheck).apply() + + var showHighestQuality: Boolean + get() = prefs.getBoolean(SHOW_HIGHEST_QUALITY, false) + set(showHighestQuality) = prefs.edit().putBoolean(SHOW_HIGHEST_QUALITY, showHighestQuality).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt index 38761a2d2..0db9f3129 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -61,6 +61,7 @@ const val SHOW_RECYCLE_BIN_AT_FOLDERS = "show_recycle_bin_at_folders" const val ALLOW_ZOOMING_IMAGES = "allow_zooming_images" const val WAS_SVG_SHOWING_HANDLED = "was_svg_showing_handled" const val LAST_BIN_CHECK = "last_bin_check" +const val SHOW_HIGHEST_QUALITY = "show_highest_quality" // slideshow const val SLIDESHOW_INTERVAL = "slideshow_interval" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt index 69c758009..b96ed9deb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt @@ -10,7 +10,8 @@ class PicassoRegionDecoder : ImageRegionDecoder { private val decoderLock = Any() override fun init(context: Context, uri: Uri): Point { - val inputStream = context.contentResolver.openInputStream(uri) + val newUri = Uri.parse(uri.toString().replace("%", "%25").replace("#", "%23")) + val inputStream = context.contentResolver.openInputStream(newUri) decoder = BitmapRegionDecoder.newInstance(inputStream, false) return Point(decoder!!.width, decoder!!.height) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt index 6ca318f4d..ce55fa3f4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt @@ -1,9 +1,9 @@ package com.simplemobiletools.gallery.interfaces -import android.arch.persistence.room.Dao -import android.arch.persistence.room.Insert -import android.arch.persistence.room.OnConflictStrategy.REPLACE -import android.arch.persistence.room.Query +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy.REPLACE +import androidx.room.Query import com.simplemobiletools.gallery.helpers.RECYCLE_BIN import com.simplemobiletools.gallery.models.Directory diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt index ac653ccd4..ab8f76c48 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt @@ -1,10 +1,10 @@ package com.simplemobiletools.gallery.interfaces -import android.arch.persistence.room.Dao -import android.arch.persistence.room.Delete -import android.arch.persistence.room.Insert -import android.arch.persistence.room.OnConflictStrategy.REPLACE -import android.arch.persistence.room.Query +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy.REPLACE +import androidx.room.Query import com.simplemobiletools.gallery.models.Medium @Dao diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt index 3c748c50e..b6332d6f6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt @@ -1,9 +1,9 @@ package com.simplemobiletools.gallery.models -import android.arch.persistence.room.ColumnInfo -import android.arch.persistence.room.Entity -import android.arch.persistence.room.Index -import android.arch.persistence.room.PrimaryKey +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey import com.simplemobiletools.commons.extensions.formatDate import com.simplemobiletools.commons.extensions.formatSize import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt index 14d804178..aea443b78 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt @@ -1,9 +1,9 @@ package com.simplemobiletools.gallery.models -import android.arch.persistence.room.ColumnInfo -import android.arch.persistence.room.Entity -import android.arch.persistence.room.Index -import android.arch.persistence.room.PrimaryKey +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey import com.simplemobiletools.commons.extensions.formatDate import com.simplemobiletools.commons.extensions.formatSize import com.simplemobiletools.commons.extensions.getFilenameExtension diff --git a/app/src/main/res/drawable/actionbar_gradient_background.xml b/app/src/main/res/drawable/gradient_background_flipped.xml similarity index 100% rename from app/src/main/res/drawable/actionbar_gradient_background.xml rename to app/src/main/res/drawable/gradient_background_flipped.xml diff --git a/app/src/main/res/drawable/gradient_background_lighter.xml b/app/src/main/res/drawable/gradient_background_lighter.xml deleted file mode 100644 index ba3477dc5..000000000 --- a/app/src/main/res/drawable/gradient_background_lighter.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml index 7e0465221..b6db534a7 100644 --- a/app/src/main/res/layout/activity_edit.xml +++ b/app/src/main/res/layout/activity_edit.xml @@ -28,7 +28,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/bottom_editor_actions_shadow_height" android:layout_alignParentBottom="true" - android:background="@drawable/gradient_background_lighter"/> + android:background="@drawable/gradient_background"/> - - + diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index 629861b53..fe95394c1 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/res/layout/activity_medium.xml b/app/src/main/res/layout/activity_medium.xml index 63559ebf0..8de070d68 100644 --- a/app/src/main/res/layout/activity_medium.xml +++ b/app/src/main/res/layout/activity_medium.xml @@ -14,4 +14,10 @@ android:id="@+id/bottom_actions" layout="@layout/bottom_actions"/> + + diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index b543aaa68..41400e1cd 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -18,18 +18,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -40,18 +40,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -62,10 +62,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -86,10 +86,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -115,8 +115,8 @@ android:id="@+id/visibility_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/visibility" android:textAllCaps="true" @@ -128,18 +128,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -150,18 +150,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -172,18 +172,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -194,10 +194,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -218,10 +218,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -247,8 +247,8 @@ android:id="@+id/videos_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/videos" android:textAllCaps="true" @@ -260,10 +260,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -284,10 +284,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -308,10 +308,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -337,8 +337,8 @@ android:id="@+id/thumbnails_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/thumbnails" android:textAllCaps="true" @@ -350,10 +350,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -374,10 +374,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -398,10 +398,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -427,8 +427,8 @@ android:id="@+id/scrolling_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/scrolling" android:textAllCaps="true" @@ -440,10 +440,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -464,10 +464,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -488,10 +488,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -517,8 +517,8 @@ android:id="@+id/fullscreen_media_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/fullscreen_media" android:textAllCaps="true" @@ -530,10 +530,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -554,10 +554,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -578,10 +578,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> - - - - - - - - - - - - + android:paddingBottom="@dimen/activity_margin"> @@ -674,10 +626,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -698,18 +650,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/bigger_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/bigger_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/bigger_margin"> + android:paddingBottom="@dimen/bigger_margin"> @@ -727,6 +679,96 @@ + + + + + + + + + + + + + + + + + + + + + + + android:paddingBottom="@dimen/activity_margin"> @@ -774,10 +816,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -797,18 +839,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -824,8 +866,8 @@ android:id="@+id/security_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/security" android:textAllCaps="true" @@ -837,10 +879,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -861,10 +903,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -890,8 +932,8 @@ android:id="@+id/file_operations_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/file_operations" android:textAllCaps="true" @@ -903,10 +945,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -927,10 +969,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -951,10 +993,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -980,8 +1022,8 @@ android:id="@+id/bottom_actions_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/bottom_actions" android:textAllCaps="true" @@ -993,10 +1035,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -1017,18 +1059,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -1044,8 +1086,8 @@ android:id="@+id/recycle_bin_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginStart="@dimen/bigger_margin" + android:layout_marginLeft="@dimen/bigger_margin" android:layout_marginTop="@dimen/activity_margin" android:text="@string/recycle_bin" android:textAllCaps="true" @@ -1057,10 +1099,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -1081,10 +1123,10 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/activity_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> @@ -1105,18 +1147,18 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingBottom="@dimen/bigger_margin" android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/bigger_margin" android:paddingRight="@dimen/normal_margin" - android:paddingTop="@dimen/bigger_margin"> + android:paddingBottom="@dimen/bigger_margin"> diff --git a/app/src/main/res/layout/bottom_actions.xml b/app/src/main/res/layout/bottom_actions.xml index c3329af25..090a30d78 100644 --- a/app/src/main/res/layout/bottom_actions.xml +++ b/app/src/main/res/layout/bottom_actions.xml @@ -1,12 +1,12 @@ - - + diff --git a/app/src/main/res/layout/bottom_actions_aspect_ratio.xml b/app/src/main/res/layout/bottom_actions_aspect_ratio.xml index e2ccf6e00..4c3befbd5 100644 --- a/app/src/main/res/layout/bottom_actions_aspect_ratio.xml +++ b/app/src/main/res/layout/bottom_actions_aspect_ratio.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/res/layout/bottom_editor_crop_rotate_actions.xml b/app/src/main/res/layout/bottom_editor_crop_rotate_actions.xml index da48247b9..83a59fe49 100644 --- a/app/src/main/res/layout/bottom_editor_crop_rotate_actions.xml +++ b/app/src/main/res/layout/bottom_editor_crop_rotate_actions.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/res/layout/bottom_editor_primary_actions.xml b/app/src/main/res/layout/bottom_editor_primary_actions.xml index 2acfec635..282602483 100644 --- a/app/src/main/res/layout/bottom_editor_primary_actions.xml +++ b/app/src/main/res/layout/bottom_editor_primary_actions.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/res/layout/bottom_set_wallpaper_actions.xml b/app/src/main/res/layout/bottom_set_wallpaper_actions.xml index 1c8015458..44830df1b 100644 --- a/app/src/main/res/layout/bottom_set_wallpaper_actions.xml +++ b/app/src/main/res/layout/bottom_set_wallpaper_actions.xml @@ -1,12 +1,12 @@ - + android:background="@drawable/gradient_background"> - + diff --git a/app/src/main/res/layout/directory_item_grid.xml b/app/src/main/res/layout/directory_item_grid.xml index 31d52f574..5f2c99555 100644 --- a/app/src/main/res/layout/directory_item_grid.xml +++ b/app/src/main/res/layout/directory_item_grid.xml @@ -20,6 +20,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" + android:layout_alignRight="@+id/dir_shadow_holder" android:layout_margin="@dimen/small_margin" android:background="@drawable/circle_background" android:padding="@dimen/tiny_margin" diff --git a/app/src/main/res/layout/pager_photo_item.xml b/app/src/main/res/layout/pager_photo_item.xml index 96cb2b6c3..9be779d15 100644 --- a/app/src/main/res/layout/pager_photo_item.xml +++ b/app/src/main/res/layout/pager_photo_item.xml @@ -11,6 +11,12 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + + android:layout_alignParentStart="true" + android:layout_alignParentLeft="true"/> diff --git a/app/src/main/res/layout/photo_video_item_grid.xml b/app/src/main/res/layout/photo_video_item_grid.xml index fb1a67e51..08c1b4760 100644 --- a/app/src/main/res/layout/photo_video_item_grid.xml +++ b/app/src/main/res/layout/photo_video_item_grid.xml @@ -20,6 +20,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" + android:layout_alignRight="@+id/photo_name" android:layout_margin="@dimen/small_margin" android:background="@drawable/circle_background" android:padding="@dimen/tiny_margin" diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index b861865ce..fbae61223 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -5,7 +5,7 @@ android:id="@+id/search" android:icon="@drawable/ic_search" android:title="@string/search" - app:actionViewClass="android.support.v7.widget.SearchView" + app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="collapseActionView|ifRoom"/> قم بإجراء فحص إضافي لتجنب إظهار الملفات التالفة Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen المصغرات @@ -200,6 +203,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 0dffdfdcb..327be5e79 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -159,6 +159,9 @@ Do an extra check to avoid showing invalid files Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 80e702b27..37eb43858 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -159,6 +159,9 @@ Fer una verificació addicional per evitar que es mostrin fitxers no vàlids Mostra alguns botons d\'acció a la part inferior de la pantalla Mostra la paperera de reciclatge a la pantalla de carpetes + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniatures @@ -198,6 +201,10 @@ Si, només heu d\'utilitzar l\'ítem del menú \"Agrupar per\" mentre es troba a la vista en miniatura. Podeu agrupar fitxers amb diversos criteris, inclòs data de presa. Si utilitzeu la funció \"Mostra el contingut de totes les carpetes\", també podeu agrupar-les per carpetes. L\'ordenació per data que de presa no sembla funcionar correctament, com puc solucionar-ho? Probablement, els fitxers es copiïn en un lloc incorrecte. Podeu arreglar-ho si seleccioneu les miniatures del fitxer i seleccioneu \"Fixar data de presa\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 2649e53fb..97442b076 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -159,6 +159,9 @@ Do an extra check to avoid showing invalid files Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index aaa7023d8..8dbe74752 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -159,6 +159,9 @@ Tjek en ekstra gang for at undgå visning af ugyldige filer Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 92fc25072..bd8811a34 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -159,6 +159,9 @@ Zusätzliche Überprüfung, um ungültige Dateien nicht anzuzeigen Ausgewählte Funktionen am unteren Bildschirmrand anzeigen Papierkorb auf dem Ordnerbildschirm anzeigen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -197,6 +200,10 @@ Verwende dazu den Menüeintrag \"Gruppieren nach\" in der Miniaturansicht. Du kannst Dateien nach mehreren Kriterien gruppieren, einschließlich Aufnahmedatum. Wenn Du die Funktion \"Alle Ordnerinhalte anzeigen\" verwendest, kannst du sie auch nach Ordnern gruppieren. Die Sortierung nach Datum ist nicht korrekt, wie kann ich das korrigieren? Die wahrscheinliche Ursache ist, dass deine Bilder von woanders kopiert worden sind. In diesem Fall solltest du die Miniatur-Ansichten der Bilder durch etwas längeres Antippen markieren und dann im Menü oben rechts die Funktion \'Aufnahmedatum korrigieren\' ausführen. + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index e73d44a09..6bfd6483f 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -147,8 +147,7 @@ Αυτόματη απόκρυψη στοιχείων συστήματος σε πλήρη οθόνη Διαγραφή άδειων φακέλων, όταν διαγραφεί το περιεχόμενό τους Να επιτρέπεται ο έλεγχος φωτεινότητας με κατακόρυφες κινήσεις - Να επιτρέπεται ο έλεγχος έντασης του βίντεο και φωτεινότητας με κατακόρυφες - κινήσεις (gestures) + Να επιτρέπεται ο έλεγχος έντασης του βίντεο και φωτεινότητας με κατακόρυφες κινήσεις (gestures) Εμφάνιση του αριθμού πολυμέσων στον φάκελο, στην κύρια οθόνη Αντικατάσταση της "Κοινής χρήσης" με "Περιστροφή" στο μενού πλήρους οθόνης Εμφάνιση λεπτομερειών στα πολυμέσα σε κατάσταση πλήρους οθόνης @@ -160,6 +159,9 @@ Επιπλέον έλεγχος για την αποφυγή εμφάνισης λανθασμένων αρχείων Εμφάνιση μερικών κουμπιών λειτουργιών στο κάτω μέρος της οθόνης Εμφάνιση του κάδου ανακύκλωσης στην οθόνη φακέλων + Βαθιά μεγέθυνση εικόνων + Εμφάνιση εικόνων με την υψηλότερη δυνατή ποιότητα + Εμφάνιση του Κάδου ως τελευταίο στοιχείο στην κύρια οθόνη Εικονίδια @@ -199,6 +201,10 @@ Σίγουρα, απλά με την χρήση \"Ομαδοποίηση κατά\" Επέκταση ή Τύπο αρχείου. Μπορείτε την ομαδοποίηση με πολλά κριτήρια, συμπεριλαμβανομένης της ημερομηνίας λήψης. Εάν χρησιμοποιείτε τη λειτουργία \"Εμφάνιση όλων των περιεχομένων στο φάκελο\" μπορείτε να ομαδοποιήσετε και τους φακέλους επίσης. Η ταξινόμηση κατά ημερομηνία δεν φαίνεται να λειτουργεί σωστά, πώς μπορώ να τη διορθώσω? Αυτό πιθανότατα προκαλείται από την αντιγραφή των αρχείων από κάπου. Μπορείτε να το διορθώσετε επιλέγοντας τις μικρογραφίες αρχείων και επιλέγοντας \"Επιδιόρθωση ημερ. λήψης\". + Βλέπω κάποια χρωματική ζώνη στις εικόνες. Πώς μπορώ να βελτιώσω την ποιότητα? + Η τρέχουσα λύση για την εμφάνιση εικόνων λειτουργεί πολύ καλά στην πλειονότητα των περιπτώσεων, αλλά εάν θέλετε ακόμα καλύτερη ποιότητα εικόνας, μπορείτε να ενεργοποιήσετε την \"Εμφάνιση εικόνων με την υψηλότερη δυνατή ποιότητα\" στις ρυθμίσεις της εφαρμογής, στο πεδίο \"Βαθιά μεγέθυνση εικόνων\". + Έχω αποκρύψει ένα αρχείο/φάκελο. Πώς μπορώ να το επανεμφανίσω? + Μπορείτε είτε να επιλέξετε στο μενού \"Εμφάνιση προσωρινά κρυφών στοιχείων\" στην κύρια οθόνη, είτε να αλλάξετε σε \"Εμφάνιση κρυφών στοιχείων\" στις ρυθμίσεις της εφαρμογής για να δείτε το κρυφό στοιχείο. Αν θέλετε να το αποκρύψετε, πατήστε παρατεταμένα και επιλέξτε \"Απόκρυψη\". Οι φάκελοι αποκρύπτονται προσθέτοντας ένα κρυφό αρχείο \".nomedia\" , μπορείτε επίσης να διαγράψετε το αρχείο με οποιονδήποτε διαχειριστή αρχείων. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 5caf9fcc4..90057a8cf 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -159,6 +159,9 @@ Hacer una comprobación adicional para evitar mostrar archivos inválidos Mostrar algunos botones de acción en la parte inferior de la pantalla Mostrar la papelera de reciclaje en la pantalla de carpetas + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniaturas @@ -198,6 +201,10 @@ Claro, solo use el elemento de menú \"Agrupar por \" mientras esté en la vista de miniaturas. Puede agrupar archivos según varios criterios, incluida la Fecha de toma. Si usa la función \"Mostrar todo el contenido de las carpetas\" también puede agruparlas por carpetas. La ordenación por fecha tomada no parece funcionar correctamente, ¿cómo puedo solucionarlo? Lo más probable es que sea causado por los archivos que se copian de algún lugar. Puede solucionarlo seleccionando las miniaturas de archivo y seleccionando \"Fijar fecha de toma\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 323755c16..9084aa31a 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -159,6 +159,9 @@ Tee ylimääräinen tarkistus rikkinäisten tiedostojen varalta Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Esikatselukuvat @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index beca8a909..8f99120ed 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -160,10 +160,9 @@ Afficher quelques boutons d\'action en bas de l\'écran Afficher la corbeille à l\'écran Dossiers Deep zoomable images - Montrer des images de la plus haute qualité possible + Show images in the highest possible quality Show the Recycle Bin as the last item on the main screen - Vignettes Média plein écran @@ -208,8 +207,18 @@ Un album pour visionner photos et vidéos sans publicité. - Un simple outil pour visionner les photos et les vidéos. Elles peuvent être triées par dates, tailles, noms dans les deux sens (alphabétique comme désalphabétique), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la taille de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être tournées, rognées ou être définies comme fond d\'écran directement depuis l\'application. La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients email, etc… C\'est parfait pour un usage au quotidien. L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers cachés et/ou l\'application. L\'application ne contient ni publicité ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables. Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com - + + Un simple outil pour visionner les photos et les vidéos. Elles peuvent être triées par dates, tailles, noms dans les deux sens (alphabétique comme désalphabétique), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la taille de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être tournées, rognées ou être définies comme fond d\'écran directement depuis l\'application. + + La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients email, etc… C\'est parfait pour un usage au quotidien. + + L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers cachés et/ou l\'application. + + L\'application ne contient ni publicité ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables. + + Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com + + Iconas @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index c961c5e07..69780e427 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -159,6 +159,9 @@ Napravite dodatnu provjeru da biste izbjegli prikazivanje nevažećih datoteka Pokažite neke gumbe za radnju pri dnu zaslona Prikažite koš za smeće na zaslonu mapa + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Sličice @@ -198,6 +201,10 @@ Naravno, koristeći stavku izbornika \"Grupiraj po\" u prikazu sličica. Možete grupirati datoteke prema više kriterija, uključujući datum snimanja. Ako koristite funkciju "Prikaži sve sadržaje mape", možete ih grupirati i mapama. Sortiranje po datumu nije točno, kako to mogu ispraviti? Vjerojatno uzrok tome da su Vaše slike kopirane s drugih mjesta. U tom slučaju trebali biste dugo dodirnuti sličice prikazanih slika, a zatim u izborniku u gornjem desnom kutu, odabrati funkciju \'Ispravi vrijednost datuma snimanja\'. + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 6be796647..7d4198bbc 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -159,6 +159,9 @@ Do an extra check to avoid showing invalid files Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0ab2f220c..21cee6961 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -159,6 +159,9 @@ Fai un controllo ulteriore per evitare di mostrare file non validi Mostra alcuni pulsanti azione in fondo allo schermo Mostra il cestino nella schermata delle cartelle + Immagini ingrandibili a fondo + Mostra le immagini alla massima qualità possibile + Mostra il cestino come ultimo elemento nella schermata principale Miniature @@ -198,6 +201,10 @@ Certo, usa il menu \"Raggruppa per\" mentre visualizzi le miniature. Puoi raggruppare i file con diversi criteri, incluso la data di creazione. Se utilizzi la funzione \"Mostra tutti i contenuti\" puoi anche raggrupparli per cartelle. L\'ordinamento per data acquisizione sembra non funzionare bene, come posso risolvere? Probabilmente è causato dai file copiati da altre parti. Puoi risolvere selezionando le miniature dei file e scegliendo \"Correggi valore Data acquisizione\". + Vedo curvature di colore nelle immagini. Come posso migliorarne la qualità? + L\'attuale soluzione per visualizzare immagini funziona bene nella maggior parte dei casi, ma se vuoi una qualità ancora maggiore, puoi attivare \"Mostra le immagini alla massima qualità possibile\" nelle impostazioni dell\'app, nella sezione \"Immagini ingrandibili a fondo\". + Ho nascosto un file/una cartella. Come posso mostrarlo/a di nuovo? + Puoi premere \"Mostra temporaneamente nascosti\" nel menu della schermata principale, oppure attivare \"Mostra gli elementi nascosti\" nelle impostazioni dell\'app per vedere l\'elemento nascosto. Se vuoi che resti visibile, premilo a lungo e seleziona \"Non nascondere\". Le cartelle vengono nascoste aggiungendo un file nascosto \".nomedia\" all\'interno di esse, puoi anche eliminare il file con qualsiasi gestore di file. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 035a2df7f..ceba51c02 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -159,6 +159,9 @@ 無効なファイルを見せない調整を行う 画面下部にアクションボタンを表示する フォルダ画面にごみ箱を表示する + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen サムネイル設定 @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 2287242a1..3010341ef 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -159,6 +159,9 @@ 잘못된 파일 표시를 방지하기 위해 추가 검사 수행 Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen 섬네일 @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index d5c4ebb04..eb33a9d4b 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -5,6 +5,7 @@ Redaguoti Atidaryti fotoaparatą (paslėpta) + (excluded) Prisegti aplanką Atsegti aplanką Prisegti į viršų @@ -21,7 +22,6 @@ Naudoti numatytąjį Garsas Ryškumas - Šiame seanse daugiau neklausti Užrakinti orientaciją Atrakinti orientaciją Change orientation @@ -159,6 +159,9 @@ Atlikti papildomą patikrinimą, kad nebūtų rodomos sugadintos bylos Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniatiūros @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index c83c2b99d..540ccff27 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -159,6 +159,9 @@ Gjør en ekstra sjekk for å unngå visning av ugyldige filer Vis noen handlingsknapper nederst på skjermen Vis papirkurven på mappeskjermen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Minibilder @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 68b177cad..63b22808e 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -159,6 +159,9 @@ Ongeldige bestanden verbergen Enkele actieknoppen onderaan het scherm tonen Prullenbak weergeven in de mapweergave + Afbeeldingen ver inzoomen + Afbeeldingen in de hoogst mogelijke kwaliteit weergeven + Prullenbak als laatste item tonen Miniatuurvoorbeelden @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index dbc0a7494..eeaf4a66f 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -159,6 +159,9 @@    Dodatkowe sprawdzenie w celu uniknięcia pokazywania niewłaściwych plików Pokazuj niektóre przyciski akcji na dole ekranu Pokazuj kosz w widoku folderów + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen    Miniatury @@ -196,6 +199,10 @@ Tak. Użyj opcji \'Grupuj według\', gdy jesteś w widoku miniatur. Grupować je możesz według wielu kryteriów, włącznie z datą ich utworzenia. Ponadto, jeśli użyjesz opcji \'Pokazuj całą zawartość folderów\', możesz je także grupować według folderów. Sortowanie według daty utworzenia nie działa poprawnie. Dlaczego tak się dzieje i jak mogę to naprawić? Dzieje się tak, gdyż prawdopodobnie pliki zostały skądś do urządzenia skopiowane. Naprawić to można wybierając miniatury plików, a następnie opcję \'Napraw datę utworzenia\'. + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 5f9804afa..1e51da9ad 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -159,6 +159,9 @@ Realizar verificação extra para evitar mostrar arquivos inválidos Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniaturas @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c5f81d240..ab5bea9ed 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -159,6 +159,9 @@ Efetuar uma dupla verificação para evitar mostrar os ficheiros inválidos Mostrar alguns botões de ação na base do ecrã Mostrar reciclagem no ecrã de pastas + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniaturas @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index aaa79ff2e..f24adc37e 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -114,7 +114,7 @@ В обратном порядке Зациклить Слайдшоу завершилось - Медиафайлов для слайдшоу не было найдено + Медиафайлов для слайдшоу не найдено Вид @@ -159,6 +159,9 @@ Дополнительная проверка, чтобы избежать показа неподдерживаемых файлов Показывать кнопки действий в нижней части экрана Показывать корзину вместе с папками + Масштабируемые изображения + Показывать изображения с максимально высоким качеством + Show the Recycle Bin as the last item on the main screen Миниатюры @@ -198,6 +201,10 @@ Конечно, просто используйте пункт меню \"Группировать по…\" во время просмотра миниатюр. Вы можете группировать файлы по нескольким критериям, включая дату съёмки. Если вы используете функцию \"Отобразить все медиафайлы\", то также можете группировать их по папкам. Сортировка по дате, похоже, не работает должным образом. Как это можно исправить? Скорее всего, проблема вызвано тем, что файлы были откуда-то скопированы. Это можно исправить, выделив миниатюры файлов и выбрав \"Исправить дату\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index abec90613..4c0a92e53 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -159,6 +159,9 @@ Predísť zobrazovaniu neplatných súborov dodatočnou kontrolou Zobraziť niektoré akčné tlačidlá na spodku obrazovky Zobraziť odpadkový kôš na obrazovke s priečinkami + Hlboko priblížiteľné obrázky + Zobrazovať obrázky v najlepšej možnej kvalite + Zobraziť odpadkový kôš ako poslednú položku na hlavnej obrazovke Náhľady @@ -198,6 +201,10 @@ Áno, použitím funkcie \"Zoskupiť podľa\" na menu obrazovky s náhľadmi. Zoskupenie je možné na základe rozličných kritérií vrátane Dátumu vytvorenia. Ak použijete funkciu \"Zobraziť obsah všetkých priečinkov\", viete ich zoskupiť aj podľa priečinkov. Radenie podľa dátumu vytvorenia nefunguje správne, ako ho viem opraviť? Je to pravdepodobne spôsobené kopírovaním súborov. Viete to opraviť označením jednotlivých náhľadov súborov a zvoliť \"Opraviť dátum vytvorenia\". + Na obrázkoch vidno nejaké farebné pásy. Ako viem zlepšiť kvalitu obrázkov? + Súčasné riešenie funguje správne v drvivej väčšine prípadov, ak ale chcete zobraziť obrázky v lepšej kvalite, môžete povoliť možnosť \"Zobraziť obrázky v najlepšej možnej kvalite\" v nastaveniach aplikácie, v sekcií \"Hlboko priblížiteľné obrázky\". + Skryl som súbor/priečinok, ako ho viem odkryť? + Môžete buď použiť menu tlačidlo \"Dočasne zobraziť skryté položky\" na hlavnej obrazovke, alebo v nastaveniach aplikácie zapnúť možnosť \"Zobraziť skryté položky\", tým sa skryté položky zobrazia. Ak ich chcete odkryť, stačí ich dlho podržať a zvoliť možnosť \"Odkryť\". Priečinky sú skrývané pridaním skrytého súboru \".nomedia\", ten viete vymazať aj ľubovoľným správcom súborov. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 7f9a97d74..a5ee7bd35 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -159,6 +159,9 @@ Gör en extra kontroll för att hindra ogiltiga filer från att visas Visa några åtgärdsknappar längst ned på skärmen Visa Papperskorgen i mappvyn + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Miniatyrer @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 9db6e91dc..783118413 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -159,6 +159,9 @@ Do an extra check to avoid showing invalid files Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen Thumbnails @@ -198,6 +201,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 710d0ef86..9cd3d2a65 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -159,6 +159,9 @@ 额外检查以避免显示无效的文件 在屏幕底部显示一些操作按钮 Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen 缩略图 @@ -196,6 +199,10 @@ 当然,只需在缩略图视图中使用\"分组依据\"菜单项即可。您可以依据多个条件对文件进行分组,包括拍摄日期。如果您使用了\"显示所有文件夹内容\"功能,则可以按文件夹对它们进行分组。 Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e930cba69..9d2a97151 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -38,7 +38,7 @@ 影片 GIF RAW圖檔 - SVGs + SVG 選擇的篩選條件未發現媒體檔案。 更改篩選條件 @@ -154,11 +154,14 @@ 管理詳細資訊 全螢幕時允許單指縮放 允許點擊螢幕邊緣來快速切換媒體檔案 - Allow deep zooming images + 允許深度縮放圖片 狀態欄隱藏時,同時隱藏詳細資訊 進行額外檢查,避免顯示無效的檔案 在螢幕底部顯示一些操作按鈕 在資料夾畫面顯示回收桶 + 可深度縮放的圖片 + 以最高品質顯示圖片 + 回收桶顯示在主畫面最後一項 縮圖 @@ -198,6 +201,10 @@ 當然,只要在縮圖瀏覽中使用[歸類]選單項目就可以了。你能依多種條件歸類檔案,包含拍照日期。如果你使用了[資料夾內容全部顯示]功能,你還能以資料夾來歸類。 依拍照日期排序似乎沒正確運作,我該如何修復? 那很可能是由於檔案從某處複製過來所造成的。你可以選擇檔案縮圖,然後選擇\"修復拍照日期數值\"來進行修復。 + 我在圖片上看到一些色彩條紋。我如何提升品質? + 目前顯示圖片的處理方法,在大部分情況下都能正常運行。但如果你想要更好的圖片品質,你可以在程式設定中[可深度縮放的圖片]部分,啟用[以最高品質顯示圖片]。 + 我隱藏了一個檔案/資料夾。我如何取消隱藏? + 你可以在主畫面的選單項按[暫時顯示隱藏的項目],或者在程式設定中切換[顯示隱藏的項目]來看隱藏項目。如果你想要取消隱藏,只要長按然後選擇[取消隱藏]。以添加\".nomedia\"檔案進行隱藏的資料夾,你也可以用任何檔案管理器來刪除這檔案。 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 48cefcd32..f191d0266 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -14,4 +14,5 @@ 76dp 90dp 180dp + 86dp diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 26ab10e3d..f7e4703aa 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -2,6 +2,10 @@ + + Added a new settings toggle \"Show images in the highest possible quality\"\n + Allow faster video seeking by dragging a finger at the bottom seekbar + Added Panorama photo support\n Allow forcing portrait/landscape orientation at fullscreen view\n diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e22f466a0..c7c603683 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,6 +159,10 @@ Do an extra check to avoid showing invalid files Show some action buttons at the bottom of the screen Show the Recycle Bin at the folders screen + Deep zoomable images + Show images in the highest possible quality + Show the Recycle Bin as the last item on the main screen + Thumbnails @@ -198,6 +202,10 @@ Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". + I see some color banding on the images. How can I improve the quality? + The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. + I have hidden a file/folder. How can I unhide it? + You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. diff --git a/build.gradle b/build.gradle index 88334c771..5aab4c3d6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.70' + ext.kotlin_version = '1.2.71' repositories { google() @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f4113673a..3e009998b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Nov 07 16:59:29 CET 2017 +#Wed Sep 26 14:42:41 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip