diff --git a/CHANGELOG.md b/CHANGELOG.md index da47dde05..5bfefa9e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,46 @@ Changelog ========== +Version 3.2.3 *(2018-01-14)* +---------------------------- + + * An F-droid build only, fixing a compile error + +Version 3.2.2 *(2018-01-09)* +---------------------------- + + * Some scrolling issues fixed + * Improve new media file discovery + +Version 3.2.1 *(2018-01-08)* +---------------------------- + + * Adding a crashfix + * Couple scrollbar glitch fixes + +Version 3.2.0 *(2018-01-07)* +---------------------------- + + * Rewrote scrolling to improve the performance + * Disable "Delete empty folders" by default + * Added initial Search to media thumbnails screen + * Apply the hidden folder password protection to "Manage hidden folders" + * Replace Move with Copy/Delete on Android 7+ + * Improve SD card file support + +Version 3.1.2 *(2017-12-30)* +---------------------------- + + * Fixed some video related crashes + +Version 3.1.1 *(2017-12-29)* +---------------------------- + + * Added a new setting item for managing folders hidden with .nomedia + * Speed up image loading + * Use copy/delete instead of move on Android 8.x + * Improved double-tap zoom ratios + Version 3.1.0 *(2017-12-25)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index cd09b01ca..e3a1c5dd1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.simplemobiletools.gallery" minSdkVersion 16 targetSdkVersion 27 - versionCode 150 - versionName "3.1.0" + versionCode 156 + versionName "3.2.3" multiDexEnabled true setProperty("archivesBaseName", "gallery") } @@ -42,8 +42,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.4.2' - implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0' + implementation 'com.simplemobiletools:commons:3.7.2' implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0' implementation 'com.android.support:multidex:1.0.2' implementation 'com.google.code.gson:gson:2.8.2' @@ -51,6 +50,9 @@ dependencies { implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.8' implementation 'com.github.chrisbanes:PhotoView:2.1.3' + //implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0' + implementation 'com.github.tibbi:subsampling-scale-image-view:v3.9.0-fork' + debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a6e97ccb7..c49d7cf4d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -55,7 +55,17 @@ + android:parentActivityName=".activities.MainActivity"> + + + + + + + + + + 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 d41ba13c4..8e3d4d6c4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt @@ -184,18 +184,17 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } private fun saveBitmapToFile(bitmap: Bitmap, path: String) { - val file = File(path) - try { - getFileOutputStream(file) { - if (it != null) { - Thread { + Thread { + val file = File(path) + getFileOutputStream(file) { + if (it != null) { saveBitmap(file, bitmap, it) - }.start() - } else { - toast(R.string.image_editing_failed) + } else { + toast(R.string.image_editing_failed) + } } - } + }.start() } catch (e: Exception) { showErrorToast(e) } catch (e: OutOfMemoryError) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt index 0b1c722cf..f8d398eac 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt @@ -15,15 +15,17 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_manage_folders) - updateExcludedFolders() + updateFolders() } - private fun updateExcludedFolders() { + private fun updateFolders() { val folders = ArrayList() config.excludedFolders.mapTo(folders, { it }) - manage_folders_placeholder.text = getString(R.string.excluded_activity_placeholder) - manage_folders_placeholder.beVisibleIf(folders.isEmpty()) - manage_folders_placeholder.setTextColor(config.textColor) + manage_folders_placeholder.apply { + text = getString(R.string.excluded_activity_placeholder) + beVisibleIf(folders.isEmpty()) + setTextColor(config.textColor) + } val adapter = ManageFoldersAdapter(this, folders, true, this, manage_folders_list) {} adapter.setupDragListener(true) @@ -31,26 +33,26 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { } override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.menu_excluded_folders, menu) + menuInflater.inflate(R.menu.menu_add_folder, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.add_folder -> addExcludedFolder() + R.id.add_folder -> addFolder() else -> return super.onOptionsItemSelected(item) } return true } override fun refreshItems() { - updateExcludedFolders() + updateFolders() } - private fun addExcludedFolder() { + private fun addFolder() { FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { config.addExcludedFolder(it) - updateExcludedFolders() + updateFolders() } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt new file mode 100644 index 000000000..79ce030f4 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt @@ -0,0 +1,65 @@ +package com.simplemobiletools.gallery.activities + +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import com.simplemobiletools.commons.dialogs.FilePickerDialog +import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener +import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.adapters.ManageHiddenFoldersAdapter +import com.simplemobiletools.gallery.extensions.addNoMedia +import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.extensions.getNoMediaFolders +import kotlinx.android.synthetic.main.activity_manage_folders.* + +class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_manage_folders) + updateFolders() + } + + private fun updateFolders() { + getNoMediaFolders { + runOnUiThread { + manage_folders_placeholder.apply { + text = getString(R.string.hidden_folders_placeholder) + beVisibleIf(it.isEmpty()) + setTextColor(config.textColor) + } + + val adapter = ManageHiddenFoldersAdapter(this, it, this, manage_folders_list) {} + adapter.setupDragListener(true) + manage_folders_list.adapter = adapter + } + } + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.menu_add_folder, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.add_folder -> addFolder() + else -> return super.onOptionsItemSelected(item) + } + return true + } + + override fun refreshItems() { + updateFolders() + } + + private fun addFolder() { + FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { + Thread { + addNoMedia(it) { + updateFolders() + } + }.start() + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt index c9f67d621..cb565c6b3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt @@ -16,15 +16,17 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_manage_folders) - updateIncludedFolders() + updateFolders() } - private fun updateIncludedFolders() { + private fun updateFolders() { val folders = ArrayList() config.includedFolders.mapTo(folders, { it }) - manage_folders_placeholder.text = getString(R.string.included_activity_placeholder) - manage_folders_placeholder.beVisibleIf(folders.isEmpty()) - manage_folders_placeholder.setTextColor(config.textColor) + manage_folders_placeholder.apply { + text = getString(R.string.included_activity_placeholder) + beVisibleIf(folders.isEmpty()) + setTextColor(config.textColor) + } val adapter = ManageFoldersAdapter(this, folders, false, this, manage_folders_list) {} adapter.setupDragListener(true) @@ -32,26 +34,26 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { } override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.menu_included_folders, menu) + menuInflater.inflate(R.menu.menu_add_folder, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.add_folder -> addIncludedFolder() + R.id.add_folder -> addFolder() else -> return super.onOptionsItemSelected(item) } return true } override fun refreshItems() { - updateIncludedFolders() + updateFolders() } - private fun addIncludedFolder() { + private fun addFolder() { FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) { config.addIncludedFolder(it) - updateIncludedFolders() + updateFolders() Thread { scanPath(it) }.start() 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 9694a0348..d8423670e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -402,12 +402,16 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { } private fun increaseColumnCount() { + directories_vertical_fastscroller.measureRecyclerViewOnRedraw() + directories_horizontal_fastscroller.measureRecyclerViewOnRedraw() config.dirColumnCnt = ++(directories_grid.layoutManager as GridLayoutManager).spanCount invalidateOptionsMenu() directories_grid.adapter?.notifyDataSetChanged() } private fun reduceColumnCount() { + directories_vertical_fastscroller.measureRecyclerViewOnRedraw() + directories_horizontal_fastscroller.measureRecyclerViewOnRedraw() config.dirColumnCnt = --(directories_grid.layoutManager as GridLayoutManager).spanCount invalidateOptionsMenu() directories_grid.adapter?.notifyDataSetChanged() @@ -472,6 +476,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { inputStream = FileInputStream(File(path)) outputStream = contentResolver.openOutputStream(output) inputStream.copyTo(outputStream) + } catch (e: SecurityException) { + showErrorToast(e) } catch (ignored: FileNotFoundException) { } finally { inputStream?.close() @@ -523,9 +529,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { } private fun gotDirectories(newDirs: ArrayList, isFromCache: Boolean) { - Thread { - mLatestMediaId = getLatestMediaId() - }.start() + if (!isFromCache) { + Thread { + mLatestMediaId = getLatestMediaId() + }.start() + } val dirs = getSortedDirectories(newDirs) directories_refresh_layout.isRefreshing = false @@ -533,6 +541,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { directories_empty_text_label.beVisibleIf(dirs.isEmpty() && !isFromCache) directories_empty_text.beVisibleIf(dirs.isEmpty() && !isFromCache) + directories_grid.beVisibleIf(directories_empty_text_label.isGone()) + + val allowHorizontalScroll = config.scrollHorizontally && config.viewTypeFiles == VIEW_TYPE_GRID + directories_vertical_fastscroller.beVisibleIf(directories_grid.isVisible() && !allowHorizontalScroll) + directories_horizontal_fastscroller.beVisibleIf(directories_grid.isVisible() && allowHorizontalScroll) checkLastMediaChanged() if (dirs.hashCode() == mDirs.hashCode()) { @@ -559,7 +572,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { val currAdapter = directories_grid.adapter if (currAdapter == null) { initZoomListener() - DirectoryAdapter(this, mDirs, this, directories_grid, isPickIntent(intent) || isGetAnyContentIntent(intent)) { + val fastscroller = if (config.scrollHorizontally) directories_horizontal_fastscroller else directories_vertical_fastscroller + DirectoryAdapter(this, mDirs, this, directories_grid, isPickIntent(intent) || isGetAnyContentIntent(intent), fastscroller) { itemClicked((it as Directory).path) }.apply { setupZoomListener(mZoomListener) 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 5f0ab42fa..e8d13e7fb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -1,13 +1,17 @@ package com.simplemobiletools.gallery.activities import android.app.Activity +import android.app.SearchManager import android.app.WallpaperManager +import android.content.Context import android.content.Intent 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 @@ -60,6 +64,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { private var mLastMediaHandler = Handler() private var mCurrAsyncTask: GetMediaAsynctask? = null private var mZoomListener: MyRecyclerView.MyZoomListener? = null + private var mSearchMenuItem: MenuItem? = null companion object { var mMedia = ArrayList() @@ -130,6 +135,13 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } } + override fun onStop() { + super.onStop() + if (mSearchMenuItem != null) { + MenuItemCompat.collapseActionView(mSearchMenuItem) + } + } + override fun onDestroy() { super.onDestroy() if (config.showAll) @@ -138,6 +150,54 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { mMedia.clear() } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_media, menu) + + val isFolderHidden = File(mPath).containsNoMedia() + menu.apply { + findItem(R.id.hide_folder).isVisible = !isFolderHidden && !mShowAll + findItem(R.id.unhide_folder).isVisible = isFolderHidden && !mShowAll + findItem(R.id.exclude_folder).isVisible = !mShowAll + + findItem(R.id.folder_view).isVisible = mShowAll + findItem(R.id.open_camera).isVisible = mShowAll + findItem(R.id.about).isVisible = mShowAll + + findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden + findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden + + findItem(R.id.increase_column_count).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID && config.mediaColumnCnt < MAX_COLUMN_COUNT + findItem(R.id.reduce_column_count).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID && config.mediaColumnCnt > 1 + + findItem(R.id.toggle_filename).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID + } + + setupSearch(menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.sort -> showSortingDialog() + R.id.filter -> showFilterMediaDialog() + R.id.toggle_filename -> toggleFilenameVisibility() + R.id.open_camera -> launchCamera() + R.id.folder_view -> switchToFolderView() + R.id.change_view_type -> changeViewType() + R.id.hide_folder -> tryHideFolder() + R.id.unhide_folder -> unhideFolder() + R.id.exclude_folder -> tryExcludeFolder() + R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden() + R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden() + R.id.increase_column_count -> increaseColumnCount() + R.id.reduce_column_count -> reduceColumnCount() + R.id.settings -> launchSettings() + R.id.about -> launchAbout() + else -> return super.onOptionsItemSelected(item) + } + return true + } + private fun storeStateVariables() { config.apply { mStoredUseEnglish = useEnglish @@ -150,6 +210,33 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } } + private fun setupSearch(menu: Menu) { + val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager + mSearchMenuItem = menu.findItem(R.id.search) + (mSearchMenuItem!!.actionView as SearchView).apply { + setSearchableInfo(searchManager.getSearchableInfo(componentName)) + isSubmitButtonEnabled = false + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String) = false + + override fun onQueryTextChange(newText: String): Boolean { + searchQueryChanged(newText) + return true + } + }) + } + } + + private fun searchQueryChanged(text: String) { + Thread { + val filtered = mMedia.filter { it.name.contains(text, true) } as ArrayList + filtered.sortBy { !it.name.startsWith(text, true) } + runOnUiThread { + (media_grid.adapter as? MediaAdapter)?.updateMedia(filtered) + } + }.start() + } + private fun tryloadGallery() { handlePermission(PERMISSION_WRITE_STORAGE) { if (it) { @@ -176,13 +263,15 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } private fun setupAdapter() { - if (isDirEmpty()) + if (!mShowAll && isDirEmpty()) { return + } val currAdapter = media_grid.adapter if (currAdapter == null) { initZoomListener() - MediaAdapter(this, mMedia, this, mIsGetImageIntent || mIsGetVideoIntent || mIsGetAnyIntent, mAllowPickingMultiple, media_grid) { + val fastscroller = if (config.scrollHorizontally) media_horizontal_fastscroller else media_vertical_fastscroller + MediaAdapter(this, mMedia, this, mIsGetImageIntent || mIsGetVideoIntent || mIsGetAnyIntent, mAllowPickingMultiple, media_grid, fastscroller) { itemClicked((it as Medium).path) }.apply { setupZoomListener(mZoomListener) @@ -238,52 +327,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { }, LAST_MEDIA_CHECK_PERIOD) } - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_media, menu) - - val isFolderHidden = File(mPath).containsNoMedia() - menu.apply { - findItem(R.id.hide_folder).isVisible = !isFolderHidden && !mShowAll - findItem(R.id.unhide_folder).isVisible = isFolderHidden && !mShowAll - - findItem(R.id.folder_view).isVisible = mShowAll - findItem(R.id.open_camera).isVisible = mShowAll - findItem(R.id.about).isVisible = mShowAll - - findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden - findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden - - findItem(R.id.increase_column_count).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID && config.mediaColumnCnt < MAX_COLUMN_COUNT - findItem(R.id.reduce_column_count).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID && config.mediaColumnCnt > 1 - - findItem(R.id.toggle_filename).isVisible = config.viewTypeFiles == VIEW_TYPE_GRID - } - - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - R.id.sort -> showSortingDialog() - R.id.filter -> showFilterMediaDialog() - R.id.toggle_filename -> toggleFilenameVisibility() - R.id.open_camera -> launchCamera() - R.id.folder_view -> switchToFolderView() - R.id.change_view_type -> changeViewType() - R.id.hide_folder -> tryHideFolder() - R.id.unhide_folder -> unhideFolder() - R.id.exclude_folder -> tryExcludeFolder() - R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden() - R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden() - R.id.increase_column_count -> increaseColumnCount() - R.id.reduce_column_count -> reduceColumnCount() - R.id.settings -> launchSettings() - R.id.about -> launchAbout() - else -> return super.onOptionsItemSelected(item) - } - return true - } - private fun showSortingDialog() { ChangeSortingDialog(this, false, !config.showAll, mPath) { getMedia() @@ -367,8 +410,9 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } private fun getMedia() { - if (mIsGettingMedia) + if (mIsGettingMedia) { return + } mIsGettingMedia = true val media = getCachedMedia(mPath) @@ -466,12 +510,16 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } private fun increaseColumnCount() { + media_vertical_fastscroller.measureRecyclerViewOnRedraw() + media_horizontal_fastscroller.measureRecyclerViewOnRedraw() config.mediaColumnCnt = ++(media_grid.layoutManager as GridLayoutManager).spanCount invalidateOptionsMenu() media_grid.adapter?.notifyDataSetChanged() } private fun reduceColumnCount() { + media_vertical_fastscroller.measureRecyclerViewOnRedraw() + media_horizontal_fastscroller.measureRecyclerViewOnRedraw() config.mediaColumnCnt = --(media_grid.layoutManager as GridLayoutManager).spanCount invalidateOptionsMenu() media_grid.adapter?.notifyDataSetChanged() @@ -506,12 +554,11 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { .load(File(path)) .apply(options) .into(object : SimpleTarget() { - override fun onResourceReady(resource: Bitmap?, transition: Transition?) { + override fun onResourceReady(resource: Bitmap, transition: Transition?) { try { WallpaperManager.getInstance(applicationContext).setBitmap(resource) setResult(Activity.RESULT_OK) } catch (ignored: IOException) { - } finish() @@ -548,13 +595,17 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { media_empty_text_label.beVisibleIf(media.isEmpty() && !isFromCache) media_empty_text.beVisibleIf(media.isEmpty() && !isFromCache) + media_grid.beVisibleIf(media_empty_text_label.isGone()) + + val allowHorizontalScroll = config.scrollHorizontally && config.viewTypeFiles == VIEW_TYPE_GRID + media_vertical_fastscroller.beVisibleIf(media_grid.isVisible() && !allowHorizontalScroll) + media_horizontal_fastscroller.beVisibleIf(media_grid.isVisible() && allowHorizontalScroll) checkLastMediaChanged() - if (mLastDrawnHashCode == 0) - mLastDrawnHashCode = media.hashCode() - if (media.hashCode() == mMedia.hashCode() && media.hashCode() == mLastDrawnHashCode) + if (media.hashCode() == mMedia.hashCode() && media.hashCode() == mLastDrawnHashCode) { return + } mLastDrawnHashCode = media.hashCode() mMedia = media 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 950f356cf..ad9dc2043 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -38,7 +38,8 @@ class SettingsActivity : SimpleActivity() { setupUseEnglish() setupManageIncludedFolders() setupManageExcludedFolders() - setupShowHiddenFolders() + setupManageHiddenFolders() + setupShowHiddenItems() setupAutoplayVideos() setupLoopVideos() setupAnimateGifs() @@ -56,6 +57,7 @@ class SettingsActivity : SimpleActivity() { setupShowMediaCount() setupKeepLastModified() setupShowInfoBubble() + setupOneFingerZoom() setupShowExtendedDetails() setupManageExtendedDetails() updateTextColors(settings_holder) @@ -89,22 +91,30 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupShowHiddenFolders() { - settings_show_hidden_folders.isChecked = config.showHiddenMedia - settings_show_hidden_folders_holder.setOnClickListener { + private fun setupManageHiddenFolders() { + settings_manage_hidden_folders_holder.setOnClickListener { + handleHiddenFolderPasswordProtection { + startActivity(Intent(this, HiddenFoldersActivity::class.java)) + } + } + } + + private fun setupShowHiddenItems() { + settings_show_hidden_items.isChecked = config.showHiddenMedia + settings_show_hidden_items_holder.setOnClickListener { if (config.showHiddenMedia) { - toggleHiddenFolders() + toggleHiddenItems() } else { handleHiddenFolderPasswordProtection { - toggleHiddenFolders() + toggleHiddenItems() } } } } - private fun toggleHiddenFolders() { - settings_show_hidden_folders.toggle() - config.showHiddenMedia = settings_show_hidden_folders.isChecked + private fun toggleHiddenItems() { + settings_show_hidden_items.toggle() + config.showHiddenMedia = settings_show_hidden_items.isChecked } private fun setupAutoplayVideos() { @@ -263,27 +273,14 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupScreenRotation() { - settings_screen_rotation.text = getScreenRotationText() - settings_screen_rotation_holder.setOnClickListener { - val items = arrayListOf( - RadioItem(ROTATE_BY_SYSTEM_SETTING, res.getString(R.string.screen_rotation_system_setting)), - RadioItem(ROTATE_BY_DEVICE_ROTATION, res.getString(R.string.screen_rotation_device_rotation)), - RadioItem(ROTATE_BY_ASPECT_RATIO, res.getString(R.string.screen_rotation_aspect_ratio))) - - RadioGroupDialog(this@SettingsActivity, items, config.screenRotation) { - config.screenRotation = it as Int - settings_screen_rotation.text = getScreenRotationText() - } + private fun setupOneFingerZoom() { + settings_one_finger_zoom.isChecked = config.oneFingerZoom + settings_one_finger_zoom_holder.setOnClickListener { + settings_one_finger_zoom.toggle() + config.oneFingerZoom = settings_one_finger_zoom.isChecked } } - private fun getScreenRotationText() = getString(when (config.screenRotation) { - ROTATE_BY_SYSTEM_SETTING -> R.string.screen_rotation_system_setting - ROTATE_BY_DEVICE_ROTATION -> R.string.screen_rotation_device_rotation - else -> R.string.screen_rotation_aspect_ratio - }) - private fun setupShowExtendedDetails() { settings_show_extended_details.isChecked = config.showExtendedDetails settings_show_extended_details_holder.setOnClickListener { @@ -303,4 +300,25 @@ class SettingsActivity : SimpleActivity() { } } } + + private fun setupScreenRotation() { + settings_screen_rotation.text = getScreenRotationText() + settings_screen_rotation_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(ROTATE_BY_SYSTEM_SETTING, res.getString(R.string.screen_rotation_system_setting)), + RadioItem(ROTATE_BY_DEVICE_ROTATION, res.getString(R.string.screen_rotation_device_rotation)), + RadioItem(ROTATE_BY_ASPECT_RATIO, res.getString(R.string.screen_rotation_aspect_ratio))) + + RadioGroupDialog(this@SettingsActivity, items, config.screenRotation) { + config.screenRotation = it as Int + settings_screen_rotation.text = getScreenRotationText() + } + } + } + + private fun getScreenRotationText() = getString(when (config.screenRotation) { + ROTATE_BY_SYSTEM_SETTING -> R.string.screen_rotation_system_setting + ROTATE_BY_DEVICE_ROTATION -> R.string.screen_rotation_device_rotation + else -> R.string.screen_rotation_aspect_ratio + }) } 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 f901cb7c2..348b78881 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -177,6 +177,13 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View return } + val file = File(mPath) + if (!file.exists()) { + deleteFromMediaStore(file) + finish() + return + } + if (intent.extras?.containsKey(IS_VIEW_INTENT) == true) { if (isShowHiddenFlagNeeded()) { if (!config.isPasswordProtectionOn) { @@ -189,7 +196,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View showSystemUI() - mDirectory = File(mPath).parent + mDirectory = file.parent supportActionBar?.title = mPath.getFilenameFromPath() view_pager.onGlobalLayout { @@ -264,6 +271,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0f findItem(R.id.menu_hide).isVisible = !currentMedium.name.startsWith('.') findItem(R.id.menu_unhide).isVisible = currentMedium.name.startsWith('.') + findItem(R.id.menu_lock_orientation).isVisible = mRotationDegrees == 0f findItem(R.id.menu_lock_orientation).title = getString(if (mIsOrientationLocked) R.string.unlock_orientation else R.string.lock_orientation) findItem(R.id.menu_rotate).setShowAsAction( if (mRotationDegrees != 0f) { @@ -316,6 +324,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View view_pager.apply { adapter = pagerAdapter currentItem = mPos + removeOnPageChangeListener(this@ViewPagerActivity) addOnPageChangeListener(this@ViewPagerActivity) } } @@ -350,10 +359,16 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } override fun onAnimationEnd(animation: Animator?) { - view_pager.endFakeDrag() + if (view_pager.isFakeDragging) { + try { + view_pager.endFakeDrag() + } catch (ignored: Exception) { + stopSlideshow() + } - if (view_pager.currentItem == oldPosition) { - slideshowEnded(forward) + if (view_pager.currentItem == oldPosition) { + slideshowEnded(forward) + } } } @@ -373,7 +388,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val dragPosition = animation.animatedValue as Int val dragOffset = dragPosition - oldDragPosition oldDragPosition = dragPosition - view_pager.fakeDragBy(dragOffset * (if (forward) 1f else -1f)) + try { + view_pager.fakeDragBy(dragOffset * (if (forward) 1f else -1f)) + } catch (e: Exception) { + stopSlideshow() + } } } }) @@ -398,8 +417,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun stopSlideshow() { if (mIsSlideshowActive) { - showSystemUI() mIsSlideshowActive = false + showSystemUI() mSlideshowHandler.removeCallbacksAndMessages(null) window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } @@ -667,7 +686,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } else { - toast(R.string.no_map_application) + toast(R.string.no_app_found) } } } 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 a8ee3f75f..e1e0def89 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt @@ -11,6 +11,7 @@ import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.dialogs.ExcludeFolderDialog @@ -24,7 +25,8 @@ import java.io.File import java.util.* class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList, val listener: DirOperationsListener?, recyclerView: MyRecyclerView, - val isPickIntent: Boolean, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { + val isPickIntent: Boolean, fastScroller: FastScroller? = null, itemClick: (Any) -> Unit) : + MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { private val config = activity.config private val isListViewType = config.viewTypeFolders == VIEW_TYPE_LIST @@ -92,7 +94,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList, val isShowingExcludedFolders: Boolean, val listener: RefreshRecyclerViewListener?, - recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { + recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { private val config = activity.config - override fun getActionMenuId() = R.menu.cab_delete_only + override fun getActionMenuId() = R.menu.cab_remove_only override fun prepareActionMode(menu: Menu) {} @@ -30,7 +29,7 @@ class ManageFoldersAdapter(activity: BaseSimpleActivity, var folders: ArrayList< override fun actionItemPressed(id: Int) { when (id) { - R.id.cab_delete -> askConfirmDelete() + R.id.cab_remove -> removeSelection() } } @@ -57,13 +56,7 @@ class ManageFoldersAdapter(activity: BaseSimpleActivity, var folders: ArrayList< } } - private fun askConfirmDelete() { - ConfirmationDialog(activity) { - deleteSelection() - } - } - - private fun deleteSelection() { + private fun removeSelection() { val removeFolders = ArrayList(selectedPositions.size) selectedPositions.sortedDescending().forEach { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt new file mode 100644 index 000000000..8bc51ea3a --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt @@ -0,0 +1,94 @@ +package com.simplemobiletools.gallery.adapters + +import android.view.Menu +import android.view.View +import android.view.ViewGroup +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.extensions.isPathOnSD +import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener +import com.simplemobiletools.commons.views.MyRecyclerView +import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.extensions.removeNoMedia +import kotlinx.android.synthetic.main.item_manage_folder.view.* +import java.io.File +import java.util.* + +class ManageHiddenFoldersAdapter(activity: BaseSimpleActivity, var folders: ArrayList, val listener: RefreshRecyclerViewListener?, + recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { + + private val config = activity.config + + override fun getActionMenuId() = R.menu.cab_hidden_folders + + override fun prepareActionMode(menu: Menu) {} + + override fun prepareItemSelection(view: View) {} + + override fun markItemSelection(select: Boolean, view: View?) { + view?.manage_folder_holder?.isSelected = select + } + + override fun actionItemPressed(id: Int) { + when (id) { + R.id.cab_unhide -> tryUnhideFolders() + } + } + + override fun getSelectableItemCount() = folders.size + + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.item_manage_folder, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val folder = folders[position] + val view = holder.bindView(folder) { itemView, layoutPosition -> + setupView(itemView, folder) + } + bindViewHolder(holder, position, view) + } + + override fun getItemCount() = folders.size + + private fun setupView(view: View, folder: String) { + view.apply { + manage_folder_title.apply { + text = folder + setTextColor(config.textColor) + } + } + } + + private fun tryUnhideFolders() { + val removeFolders = ArrayList(selectedPositions.size) + + val sdCardPaths = ArrayList() + selectedPositions.forEach { + if (activity.isPathOnSD(folders[it])) { + sdCardPaths.add(folders[it]) + } + } + + if (sdCardPaths.isNotEmpty()) { + activity.handleSAFDialog(File(sdCardPaths.first())) { + unhideFolders(removeFolders) + } + } else { + unhideFolders(removeFolders) + } + } + + private fun unhideFolders(removeFolders: ArrayList) { + selectedPositions.sortedDescending().forEach { + val folder = folders[it] + removeFolders.add(folder) + activity.removeNoMedia(folder) + } + + folders.removeAll(removeFolders) + removeSelectedItems() + if (folders.isEmpty()) { + listener?.refreshItems() + } + } +} 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 f2c3dfb17..66df85b70 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt @@ -1,6 +1,8 @@ package com.simplemobiletools.gallery.adapters import android.net.Uri +import android.os.Handler +import android.os.Looper import android.view.Menu import android.view.View import android.view.ViewGroup @@ -12,28 +14,40 @@ import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.isActivityDestroyed +import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.dialogs.DeleteWithRememberDialog import com.simplemobiletools.gallery.extensions.* import com.simplemobiletools.gallery.helpers.VIEW_TYPE_LIST import com.simplemobiletools.gallery.models.Medium -import kotlinx.android.synthetic.main.photo_video_item_list.view.* +import kotlinx.android.synthetic.main.photo_video_item_grid.view.* import java.io.File import java.util.* class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, val listener: MediaOperationsListener?, val isAGetIntent: Boolean, - val allowMultiplePicks: Boolean, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { + val allowMultiplePicks: Boolean, recyclerView: MyRecyclerView, fastScroller: FastScroller? = null, + itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { + + private val INSTANT_LOAD_DURATION = 2000L + private val IMAGE_LOAD_DELAY = 100L private val config = activity.config private val isListViewType = config.viewTypeFiles == VIEW_TYPE_LIST private var skipConfirmationDialog = false + private var visibleItemPaths = ArrayList() + private var loadImageInstantly = false + private var delayHandler = Handler(Looper.getMainLooper()) private var scrollHorizontally = config.scrollHorizontally private var animateGifs = config.animateGifs private var cropThumbnails = config.cropThumbnails private var displayFilenames = config.displayFileNames + init { + enableInstantLoad() + } + override fun getActionMenuId() = R.menu.cab_media override fun prepareItemSelection(view: View) { @@ -51,6 +65,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { val medium = media[position] + visibleItemPaths.add(medium.path) val view = holder.bindView(medium, !allowMultiplePicks) { itemView, layoutPosition -> setupView(itemView, medium) } @@ -92,7 +107,9 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, override fun onViewRecycled(holder: ViewHolder?) { super.onViewRecycled(holder) if (!activity.isActivityDestroyed()) { - Glide.with(activity).clear(holder?.itemView?.medium_thumbnail) + val itemView = holder?.itemView + visibleItemPaths.remove(itemView?.photo_name?.tag) + Glide.with(activity).clear(itemView?.medium_thumbnail!!) } } @@ -230,12 +247,14 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, fun updateMedia(newMedia: ArrayList) { media = newMedia + enableInstantLoad() notifyDataSetChanged() finishActMode() } fun updateDisplayFilenames(displayFilenames: Boolean) { this.displayFilenames = displayFilenames + enableInstantLoad() notifyDataSetChanged() } @@ -254,12 +273,32 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, notifyDataSetChanged() } + private fun enableInstantLoad() { + loadImageInstantly = true + delayHandler.postDelayed({ + loadImageInstantly = false + }, INSTANT_LOAD_DURATION) + } + private fun setupView(view: View, medium: Medium) { view.apply { play_outline.beVisibleIf(medium.video) photo_name.beVisibleIf(displayFilenames || isListViewType) photo_name.text = medium.name - activity.loadImage(medium.path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails) + photo_name.tag = medium.path + + if (loadImageInstantly) { + activity.loadImage(medium.path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails) + } else { + medium_thumbnail.setImageDrawable(null) + medium_thumbnail.isHorizontalScrolling = scrollHorizontally + delayHandler.postDelayed({ + val isVisible = visibleItemPaths.contains(medium.path) + if (isVisible) { + activity.loadImage(medium.path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails) + } + }, IMAGE_LOAD_DELAY) + } if (isListViewType) { photo_name.setTextColor(textColor) 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 ec99f9352..9d3cd9335 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt @@ -64,7 +64,7 @@ fun Activity.launchCamera() { if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } else { - toast(R.string.no_camera_app_found) + toast(R.string.no_app_found) } } 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 d91b80885..62c8f95c7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt @@ -3,14 +3,19 @@ package com.simplemobiletools.gallery.extensions import android.content.Context import android.content.Intent import android.content.res.Configuration +import android.database.Cursor import android.graphics.Point import android.media.AudioManager import android.os.Build +import android.provider.MediaStore import android.view.WindowManager +import com.simplemobiletools.commons.extensions.getStringValue import com.simplemobiletools.commons.extensions.humanizePath import com.simplemobiletools.gallery.activities.SettingsActivity import com.simplemobiletools.gallery.helpers.Config +import com.simplemobiletools.gallery.helpers.NOMEDIA import com.simplemobiletools.gallery.models.Directory +import java.io.File val Context.portrait get() = resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT val Context.audioManager get() = getSystemService(Context.AUDIO_SERVICE) as AudioManager @@ -73,3 +78,34 @@ fun Context.getSortedDirectories(source: ArrayList): ArrayList) -> Unit) { + Thread { + val folders = ArrayList() + + val uri = MediaStore.Files.getContentUri("external") + val projection = arrayOf(MediaStore.Files.FileColumns.DATA) + val selection = "${MediaStore.Files.FileColumns.MEDIA_TYPE} = ? AND ${MediaStore.Files.FileColumns.TITLE} LIKE ?" + val selectionArgs = arrayOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%") + val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC" + + var cursor: Cursor? = null + + try { + cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder) + if (cursor?.moveToFirst() == true) { + do { + val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA) ?: continue + val noMediaFile = File(path) + if (noMediaFile.exists()) { + folders.add("${noMediaFile.parent}/") + } + } while (cursor.moveToNext()) + } + } finally { + cursor?.close() + } + + callback(folders) + }.start() +} 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 747742a59..7bdff57d6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt @@ -6,6 +6,7 @@ import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.Matrix import android.graphics.drawable.ColorDrawable +import android.media.ExifInterface.* import android.net.Uri import android.os.Bundle import android.view.LayoutInflater @@ -36,7 +37,7 @@ import java.io.File import java.io.FileOutputStream class PhotoFragment : ViewPagerFragment() { - private var DEFAULT_DOUBLE_TAP_ZOOM = 5f + private var DEFAULT_DOUBLE_TAP_ZOOM = 2f private var isFragmentVisible = false private var isFullscreen = false private var wasInit = false @@ -137,9 +138,9 @@ class PhotoFragment : ViewPagerFragment() { } private fun degreesForRotation(orientation: Int) = when (orientation) { - 8 -> 270 - 3 -> 180 - 6 -> 90 + ORIENTATION_ROTATE_270 -> 270 + ORIENTATION_ROTATE_180 -> 180 + ORIENTATION_ROTATE_90 -> 90 else -> 0 } @@ -245,6 +246,7 @@ class PhotoFragment : ViewPagerFragment() { view.subsampling_view.apply { maxScale = 10f beVisible() + isQuickScaleEnabled = context.config.oneFingerZoom setImage(ImageSource.uri(medium.path)) orientation = if (orient == -1) SubsamplingScaleImageView.ORIENTATION_USE_EXIF else degreesForRotation(orient) setOnImageEventListener(object : SubsamplingScaleImageView.OnImageEventListener { @@ -253,7 +255,9 @@ class PhotoFragment : ViewPagerFragment() { override fun onReady() { background = ColorDrawable(if (context.config.blackBackground) Color.BLACK else context.config.backgroundColor) - setDoubleTapZoomScale(getDoubleTapZoomScale(sWidth, sHeight)) + val useWidth = if (orient == ORIENTATION_ROTATE_90 || orient == ORIENTATION_ROTATE_270) sHeight else sWidth + val useHeight = if (orient == ORIENTATION_ROTATE_90 || orient == ORIENTATION_ROTATE_270) sWidth else sHeight + setDoubleTapZoomScale(getDoubleTapZoomScale(useWidth, useHeight)) } override fun onTileLoadError(e: Exception?) { @@ -277,22 +281,21 @@ class PhotoFragment : ViewPagerFragment() { } private fun getDoubleTapZoomScale(width: Int, height: Int): Float { - val bitmapAspectRatio = height / (width).toFloat() + val bitmapAspectRatio = height / width.toFloat() + val screenAspectRatio = ViewPagerActivity.screenHeight / ViewPagerActivity.screenWidth.toFloat() - return if (context == null) { - DEFAULT_DOUBLE_TAP_ZOOM - } else if (ViewPagerActivity.screenHeight / ViewPagerActivity.screenWidth.toFloat() == bitmapAspectRatio) { + return if (context == null || bitmapAspectRatio == screenAspectRatio) { DEFAULT_DOUBLE_TAP_ZOOM } else if (ViewPagerActivity.wasDecodedByGlide) { 1f - } else if (context!!.portrait && bitmapAspectRatio <= 1f) { + } else if (context!!.portrait && bitmapAspectRatio <= screenAspectRatio) { ViewPagerActivity.screenHeight / height.toFloat() - } else if (context!!.portrait && bitmapAspectRatio > 1f) { - ViewPagerActivity.screenHeight / width.toFloat() - } else if (!context!!.portrait && bitmapAspectRatio >= 1f) { + } else if (context!!.portrait && bitmapAspectRatio > screenAspectRatio) { ViewPagerActivity.screenWidth / width.toFloat() - } else if (!context!!.portrait && bitmapAspectRatio < 1f) { - ViewPagerActivity.screenWidth / height.toFloat() + } else if (!context!!.portrait && bitmapAspectRatio >= screenAspectRatio) { + ViewPagerActivity.screenWidth / width.toFloat() + } else if (!context!!.portrait && bitmapAspectRatio < screenAspectRatio) { + ViewPagerActivity.screenHeight / height.toFloat() } else { DEFAULT_DOUBLE_TAP_ZOOM } @@ -323,7 +326,8 @@ class PhotoFragment : ViewPagerFragment() { override fun onDestroyView() { super.onDestroyView() if (activity?.isActivityDestroyed() == false) { - Glide.with(context).clear(view.gif_view) + Glide.with(context!!).clear(view.gif_view) + view.subsampling_view.recycle() } } 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 8c2f7cdb1..e294f6da1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -168,6 +168,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(getDirectoryColumnsField(), getDefaultDirectoryColumnCount()) set(dirColumnCnt) = prefs.edit().putInt(getDirectoryColumnsField(), dirColumnCnt).apply() + var oneFingerZoom: Boolean + get() = prefs.getBoolean(ONE_FINGER_ZOOM, false) + set(oneFingerZoom) = prefs.edit().putBoolean(ONE_FINGER_ZOOM, oneFingerZoom).apply() + private fun getDirectoryColumnsField(): String { val isPortrait = context.resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT return if (isPortrait) { @@ -238,7 +242,7 @@ class Config(context: Context) : BaseConfig(context) { set(replaceShare) = prefs.edit().putBoolean(REPLACE_SHARE_WITH_ROTATE, replaceShare).apply() var deleteEmptyFolders: Boolean - get() = prefs.getBoolean(DELETE_EMPTY_FOLDERS, true) + get() = prefs.getBoolean(DELETE_EMPTY_FOLDERS, false) set(deleteEmptyFolders) = prefs.edit().putBoolean(DELETE_EMPTY_FOLDERS, deleteEmptyFolders).apply() var allowVideoGestures: Boolean @@ -300,4 +304,8 @@ class Config(context: Context) : BaseConfig(context) { var extendedDetails: Int get() = prefs.getInt(EXTENDED_DETAILS, EXT_RESOLUTION or EXT_LAST_MODIFIED or EXT_EXIF_PROPERTIES) set(extendedDetails) = prefs.edit().putInt(EXTENDED_DETAILS, extendedDetails).apply() + + var lastFileCleanup: Long + get() = prefs.getLong(LAST_FILE_CLEANUP, 0L) + set(lastFileCleanup) = prefs.edit().putLong(LAST_FILE_CLEANUP, lastFileCleanup).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 b9ebd1071..cf5bd0fa3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -42,6 +42,8 @@ val VIEW_TYPE_FOLDERS = "view_type_folders" val VIEW_TYPE_FILES = "view_type_files" val SHOW_EXTENDED_DETAILS = "show_extended_details" val EXTENDED_DETAILS = "extended_details" +val LAST_FILE_CLEANUP = "last_file_cleanup" +val ONE_FINGER_ZOOM = "one_finger_zoom" // slideshow val SLIDESHOW_INTERVAL = "slideshow_interval" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt index 8a48b23f4..aae7d66ca 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt @@ -17,6 +17,6 @@ class GlideRotateTransformation(context: Context, val rotateRotationAngle: Float return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) } - override fun updateDiskCacheKey(messageDigest: MessageDigest?) { + override fun updateDiskCacheKey(messageDigest: MessageDigest) { } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt index efad5c169..e0e199df2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt @@ -40,6 +40,16 @@ class MediaFetcher(val context: Context) { directories.remove(it) } + Thread { + val ONE_WEEK = 7 * 24 * 60 * 60 * 1000 + if (System.currentTimeMillis() - context.config.lastFileCleanup > ONE_WEEK) { + media.filter { !File(it.path).exists() }.forEach { + context.deleteFromMediaStore(File(it.path)) + } + context.config.lastFileCleanup = System.currentTimeMillis() + } + }.start() + return directories } @@ -140,9 +150,6 @@ class MediaFetcher(val context: Context) { if (size <= 0L) continue - if (!file.exists()) - continue - val dateTaken = cur.getLongValue(MediaStore.Images.Media.DATE_TAKEN) val dateModified = cur.getIntValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a01449b1a..033563bb1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -36,7 +36,7 @@ @@ -48,7 +48,8 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:paddingLeft="@dimen/normal_margin" - android:paddingStart="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin" + android:visibility="gone"> @@ -61,7 +62,8 @@ android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" - android:paddingTop="@dimen/normal_margin"> + android:paddingTop="@dimen/normal_margin" + android:visibility="gone"> diff --git a/app/src/main/res/layout/activity_manage_folders.xml b/app/src/main/res/layout/activity_manage_folders.xml index aaac86a7f..eaa902676 100644 --- a/app/src/main/res/layout/activity_manage_folders.xml +++ b/app/src/main/res/layout/activity_manage_folders.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" + android:scrollbars="vertical" app:layoutManager="android.support.v7.widget.LinearLayoutManager"/> @@ -48,7 +48,8 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:paddingLeft="@dimen/normal_margin" - android:paddingStart="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin" + android:visibility="gone"> @@ -61,7 +62,8 @@ android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" - android:paddingTop="@dimen/normal_margin"> + android:paddingTop="@dimen/normal_margin" + android:visibility="gone"> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 9437d049a..9dfdfacac 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -68,6 +68,25 @@ + + + + + + + + + + + + - + + + diff --git a/app/src/main/res/menu/menu_excluded_folders.xml b/app/src/main/res/menu/menu_add_folder.xml similarity index 100% rename from app/src/main/res/menu/menu_excluded_folders.xml rename to app/src/main/res/menu/menu_add_folder.xml diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index 978c684c0..de3b01776 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -2,15 +2,21 @@ + android:id="@+id/search" + android:icon="@drawable/ic_search" + android:title="@string/search" + app:actionViewClass="android.support.v7.widget.SearchView" + app:showAsAction="collapseActionView|ifRoom"/> + (مخفية) تثبيت المجلد ازالة تثبيت الملف + Pin to the top عرض كل محتوى المجلدات كل المجلدات التبديل إلى عرض المجلد مجلد آخر عرض على الخريطة موقع غير معروف - لم يتم العثور على أي تطبيق مع الخرائط - لم يتم العثور على تطبيق كاميرا زيادة عدد الأعمدة تقليل عدد الأعمدة تغيير صورة الغلاف @@ -46,7 +45,9 @@ إذا كنت تريد إخفاءها من تطبيقات أخرى أيضا، استخدم ميزة الإخفاء حذف الكل هل تريد إزالة جميع المجلدات من القائمة المستبعدة؟ لن يؤدي هذا إلى حذف المجلدات + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. المجلدات المضمنة @@ -88,7 +89,6 @@ تعيين كخلفية الشاشة فشل الإعداد كخلفية تعيين كخلفية بواسطة: - لم يتم العثور على أي تطبيق لأداء المهمة ... جار تعيين الخلفية ... تم تعيبن الخلفية بنجاح صورة نسبة العرض إلى الارتفاع @@ -135,6 +135,7 @@ استبدال خيار المشاركة مع خيار تدوير في القائمة ملء الشاشة عرض تفاصيل موسعة على وسائط ملء الشاشة إدارة المجلدات المستبعدة + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml new file mode 100644 index 000000000..4fdbd20e9 --- /dev/null +++ b/app/src/main/res/values-ca/strings.xml @@ -0,0 +1,155 @@ + + + Simple Gallery + Galeria + Editar + Obrir càmera + (ocult) + Fixar carpeta + No fixar carpeta + Ancorar a l\'inici + Mostrar el contingut de totes les carpetes + Tots els mitjans + Canviar a vista de carpeta + Un altre carpeta + Mostrar al mapa + Ubicació desconeguda + Augmentar el número de columnes + Reduir el número de columnes + Canviar imatge de portada + Sel·leccionar imatge + Us per defecte + Volum + Brillantor + No tornar a preguntar en aquesta sessió + Bloquejar orientació + Desbloquejar orientació + + + Filtre d\'arxius + Imatges + Vídeos + GIFs + No s\'han tronat arxius amb els filtres seleccionats. + Canviar filtres + + + Aquesta funció oculta les carpetes agregant un arxiu \'.nomedia\' dins d\'ella. També ocultarà les subcarpetes. Pots mostrar-les canviant la opció \'Mostrar carpetes ocultes\' als ajustaments. Continuar? + Excloure + Carpetes excloses + Gestionar carpetes excloses + Això exclou la selecció juntament amb les carpetes, només de Simple Gallery. Pots gestionar les carpetes excloses en els Ajustaments. + Excloure millor la carpeta superior? + Excloure les carpetes les ocultarà junt amb les seves subcarpetes, però només a Simple Gallery. Seguirant sent visibles a altres aplicacions.\\n\\nSi vols ocultar-les d'altres aplicacions fes servir la opció Ocultar. + Eliminar tot + Eliminar totes les carpetes de la llista d\'excloses? Això no eliminarà les carpetes. + Carpetes ocultes + Gestionar carpetes ocultes + Sembla que no tens cap carpeta amb l\'arxiu \".nomedia\". + + + Carpetes incloses + Gestionar carpetes incloses + Agregar carpeta + Si tens alguna carpeta que contingui multimèdia però no ha estat reconeguda per la aplicació, pots agregar-les manualment aquí. + + + Redimensionar + Redimensionar la selecció i desar + Ample + Alt + Mantenir proporcions + Si us plau, introdueix una resolució vàlida + + + Editor + Guardar + Rotar + Ruta + Ruta de imatge no vàlida + Ha fallat la edició de la imatge + Editar imatge utilitzant: + No s\'ha trobat cap editor d\'imatges + Ubicació de l\'arxiu desconeguda + No s\'ha pogut sobreescriure l\'arxiu d\'origen + Rotar a l\'esquerra + Rotar a la dreta + Rotar 180º + Girar + Horizontalment + Verticalment + Editar amb + + + Fons de pantalla de Simple Gallery + Establir com a fons de pantalla + Error a l\'establir com fons de pantalla + Establir com fons de pantalla amb: + Establint fons de pantalla… + Fons de pantalla establert correctament + Relació d\'aspecte tipus retrat + Relació d\'aspecte tipus paisatge + Pantalla principal + Pantalla de bloqueig + Pantalla principal i de bloqueig + + + Presentació de diapositives + Interval (segons): + Inclou imatges + Inclou vídeos + Inclou GIFs + Ordre aleatori + Utilitza animacions de desaparició + Moure cap enrere + Presentació de diapositives + S\'ha acabat la presentació de diapositives + No s\'han trobat mitjans per a la presentació de diapositives + + + Canviar el tipus de vista + Reixeta + Llista + + + Reproduir vídeos automàticament + Canviar la visibilitat del nom d\'arxiu + Reproducció continua de vídeos + Animar les miniatures dels GIFs + Brillantor màxima quan es mostra multimèdia + Retallar miniatures en quadrats + Gira els mitjans a pantalla completa segons + Configuració del sistema + Rotació del dispositiu + Relació d\'aspecte + Fons i barra d\'estat negre als mitjans de pantalla completa + Desplaçar miniatures horizontalment + Ocultar automàticament la interficie de usuari del sistema a pantalla complerta + Eliminar carpetes buides després d\'esborrar el seu contingut + Permet controlar el volum i la brillantor del vídeo amb gestos verticals + Mostrar el número de mitjans de les carpetes a la vista principal + Reemplaçar Compartir per Girar al menú de pantalla complerta + Mostrar detalls estesos sobre mitjans a pantalla complerta + Gestioneu els detalls ampliats + Allow one finger zoom at fullscreen media + + + + Una galeria per veure imatges i vídeos sense publicitat. + + Una eina senzilla que es pot fer servir per veure imatges i vídeos. Els elements es poden ordenar per data, mida o nom, tant ascendent com descendent. Es pot fer zoom a les imatges. Els arxius de mitjans es mostren en múltiples columnes depenent de la mida de la pantalla i es pot canviar el número de columnes mitjançant gestos. Permet canviar el nom, compartir, esborrar, i moure. Les imatges també es poden retalla, rotar o utilitzar com a fons de pantalla directament des de l\'aplicació. + + Gallery també s'ofereix per us de tercers, per visualitzar imatges/vídeos, agregar adjunts a clients de correu, etc. Es perfecta per l\'ús diari. + + El permís d\'empremtes dactilars és necessari per bloquejar la visibilitat d'elements ocults o tota l\'aplicació. + + No conté ni publicitat ni permisos innecessaris. Es totalment Lliure i proporciona colors personalitzables. + + Aquesta aplicació es només una peça d'una sèrie més gran d'aplicacions. Pots trobar la resta a http://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index c7dd015b0..a21f7f1cc 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -7,14 +7,13 @@ (skryté) Připnout složku Odepnout složku + Pin to the top Zobrazit obsah všech složek Všechny složky Přepnout na zobrazení složek Jiná složka Zobrazit na mapě Neznámá poloha - Nebyla nalezena žádná mapová aplikace - Nebyla nalezena žádná fotografická aplikace Zvýšit počet sloupců Snížit počet sloupců Change cover image @@ -44,7 +43,9 @@ Vyloučené složky budou spolu s podsložkami vyloučeny jen z Jednoduché Galerie, ostatní aplikace je nadále uvidí.\n\nPokud je chcete skrýt i před ostatními aplikacemi, použijte funkci Skrýt. Odstranit všechny Odstranit všechny složky ze seznamu vyloučených? Tato operace neodstraní obsah složek. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Přidané složky @@ -84,7 +85,6 @@ Nastavit jako tapetu Nastavení tapety selhalo Nastavit jako tapetu pomocí: - Nebyla nalezena žádná vhodná aplikace Nastavuje se tapeta… Tapeta byla úspěšně změněna Portrait aspect ratio @@ -131,6 +131,7 @@ Replace Share with Rotate at fullscreen menu Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ad8a1e6f6..fe08c5670 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7,14 +7,13 @@ (versteckt) Ordner anheften Ordner loslösen + An den Start anheften Ansicht: Alle Medien Alle Medien Ansicht: Als Ordner Ordner wählen Auf Karte zeigen Unbekannter Pfad - Keine Karten-App gefunden - Keine Kamera-App gefunden Kacheln verkleinern Kacheln vergrößern Coverbild ändern @@ -36,21 +35,23 @@ Diese Funktion versteckt die ausgewählten Ordner (auch für andere Apps), indem dort im Dateisystem eine \'.nomedia\'-Datei abgelegt wird. Dadurch werden auch deren Unterordner versteckt. Solche Ordner werden nur gezeigt, wenn die Einstellung \'Versteckte Ordner zeigen\' aktiv ist (auch andere Apps bieten üblicherweise eine solche Option). Fortfahren? - Ordner ausblenden - Ausgeblendete Ordner - Ausgeblendete Ordner verwalten - Diese Funktion blendet die ausgewählten Ordner und deren Unterordner aus (nur in dieser App). Ausgeblendete Ordner können in den Einstellungen verwaltet werden. - Möchten Sie stattdessen einen höherliegenden Ordner ausblenden? - \'Ordner ausblenden\' wird ausgewählte Ordner und deren Unterordner nur in dieser App ausblenden. Andere Apps werden solche Ordner weiterhin anzeigen.\\n\\nWenn Sie Ordner auch für andere Apps verstecken wollen, verwenden Sie dafür die Funktion \'Ordner verstecken\'. + Ordner ausschließen + Ausgeschlossene Ordner + Ausgeschlossene Ordner verwalten + Diese Funktion blendet die ausgewählten Ordner und deren Unterordner nur in dieser App aus. Ausgeschlossene Ordner können in den Einstellungen verwaltet werden. + Möchtest du stattdessen einen höherliegenden Ordner ausschließen? + \'Ordner ausschließen\' wird ausgewählte Ordner und deren Unterordner nur in dieser App ausblenden. Andere Apps werden solche Ordner weiterhin anzeigen.\\n\\nWenn du Ordner auch für andere Apps verstecken willst, verwende dafür die Funktion \'Ordner verstecken\'. Alle entfernen Alle Ordner aus der Ausgeblendet-Liste entfernen? Die Ordner selbst werden nicht gelöscht. + Versteckte Ordner Versteckte Ordner verwalten + Sieht so aus, als ob du keine Ordner mit einer \".nomedia\" Datei versteckt hast. Einbezogene Ordner Einbezogene Ordner verwalten Ordner hinzufügen - Sollten Sie weitere Medienordner haben, die von der App nicht erkannt wurden, können Sie diese hier manuell hinzufügen. + Solltest du weitere Mediendateien haben, die von der App nicht erkannt wurden, kannst du ihre Ordner hier manuell hinzufügen. Größe ändern @@ -84,7 +85,6 @@ Als Hintergrund festlegen Hintergrundbild festlegen fehlgeschlagen Als Hintergrund festlegen mit - Keine Hintergrundbild-App gefunden Hintergrund festlegen… Hintergrundbild erfolgreich festgelegt Hochformat @@ -131,18 +131,19 @@ Teilen/Drehen im Vollbild-Menü vertauschen Eigenschaften anzeigen im Vollbild Eigenschaften auswählen + Erlaube Ein-Finger-Zoom im Vollbild - Eine schlichte Galerie zum Betrachten von Bildern und Videos ohne Werbung. + Eine schlichte Galerie zum Betrachten von Bildern und Videos, ganz ohne Werbung. - Eine schlichte App zum Betrachten von Bildern und Videos. Die Medien können nach Datum, Größe, Name sowie auf- oder absteigend sortiert werden, in Bilder kann auch hineingezoomt werden. Die Vorschau-Kacheln werden in mehreren Spalten abhängig von der Displaygröße angezeigt, die Spaltenanzahl ist mit Zweifingergesten änderbar. Die Medien können umbenannt, geteilt, gelöscht, kopiert und verschoben werden. Bilder können direkt aus der App heraus zugeschnitten, gedreht oder als Hintergrund festgelegt werden. + Eine schlichte App zum Betrachten von Bildern und Videos. Alle Medien können nach Datum, Größe, Name sowie auf- oder absteigend sortiert werden, in Bilder kann auch hineingezoomt werden. Die Vorschau-Kacheln werden in mehreren Spalten abhängig von der Displaygröße angezeigt, die Spaltenanzahl ist mit Zweifingergesten änderbar. Die Medien können umbenannt, geteilt, gelöscht, kopiert und verschoben werden. Bilder können direkt aus der App heraus zugeschnitten, gedreht oder als Hintergrund festgelegt werden. - Diese Galerie bietet auch für Drittanbieter einige Funktionen an: zum Vorschauen von Bildern / Videos, zum Hinzufügen von Anhängen bei Email-Apps, etc. Sie ist perfekt für den täglichen Gebrauch. + Diese Galerie bietet auch für Drittanbieter einige Funktionen an: zur Vorschau von Bildern/Videos, zum Hinzufügen von Anhängen bei Email-Apps, etc. Sie ist perfekt für den täglichen Gebrauch. Die Berechtigung für Fingerabdrücke wird nur benötigt, um die Sichtbarkeit von versteckten Dateien oder die gesamte App zu sperren. - Beinhaltet keine Werbung oder unnötigen Berechtigungen. Sie ist komplett Open Source, verwendete Farben sind anpassbar. + Beinhaltet keine Werbung oder unnötige Berechtigungen. Sie ist komplett Open Source, alle verwendeten Farben sind anpassbar. Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf http://www.simplemobiletools.com diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index bfce999e1..bd2951f78 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -7,32 +7,31 @@ (oculto) Fijar carpeta No fijar carpeta + Anclar arriba Mostrar el contenido de todas las carpetas Todos los medios Cambiar a vista de carpeta Otra carpeta Mostrar en el mapa Ubicación desconocida - No se encontró aplicación de mapas - No se encontró aplicación de cámara Aumentar el número de columnas Reducir el número de columnas Cambiar imagen de portada Seleccionar imagen Uso por defecto - Volume - Brightness - Do not ask again in this session - Lock orientation - Unlock orientation + Volumen + Brillo + No volver a preguntar en esta sesión + Bloquear orientación + Desbloquear orientación Filtro de medios - Images - Videos + Imágenes + Vídeos GIFs - No media files have been found with the selected filters. - Change filters + No se han encontrado ficheros con los filtros seleccionados. + Ccambiar flitros Esta función oculta la carpeta agregando un archivo \'.nomedia\' en ella, y ocultará también las subcarpetas. Puede mostrarlas cambiando la opción \'Mostrar carpetas ocultas\' en los Ajustes. ¿Continuar? @@ -44,7 +43,9 @@ Excluir las carpetas las hará junto a sus subcarpetas ocultas sólo en Simple Gallery, estas seguirán siendo visibles en otras aplicaciones.\\n\\nSi desea ocultarlo de otras aplicaciones, utilice la función de Ocultar. Eliminar todo ¿Eliminar todas las carpetas de la lista de excluidas? Esto no borrará las carpetas. - Manage hidden folders + Carpetas ocultas + Gestionar carpetas ocultas + Parece que no tienes carpetas ocultas con \".nomedia\" ficheros. Carpetas incluidas @@ -84,32 +85,31 @@ Establecer como fondo de pantalla Error al establecer fondo de pantalla Establecer como fondo de pantalla con: - No se encontró aplicación para ello Estableciendo fondo de pantalla… Fondo de pantalla establecido correctamente Relación de aspecto tipo retrato Relación de aspecto tipo paisaje - Home screen - Lock screen - Home and lock screen + Pantalla de inicio + Pantalla de bloqueo + Pantalla de inicio y de bloqueo - Slideshow - Interval (seconds): - Include photos - Include videos - Include GIFs - Random order - Use fade animations - Move backwards - Loop slideshow - The slideshow ended - No media for the slideshow have been found + Diapositivas + Intervalo (segundos): + Incluir fotos + Incluir vídeos + Incluir GIFs + Orden aleatorio + Usar animaciones de desvanecimiento + Mover hacia atrás + Presentación de diapositivas + La diapositiva terminó + No se han encontrado medios para la presentación de diapositivas Cambiar tipo de vista - Grid - List + Cuadrícula + Lista Reproducir vídeos automáticamente @@ -122,7 +122,7 @@ Configuración del sistema Rotación del dispositivo Relación de aspecto - Black background and status bar at fullscreen media + Fondo y barra de estado negra en medios de pantalla completa Desplazar miniaturas horizontalmente Ocultar automáticamente la interfaz de usuario del sistema en medios de pantalla completa Eliminar carpetas vacias despues de borrar su contenido @@ -130,7 +130,8 @@ Mostrar el conteo de medios de las carpetas en la vista principal Reemplazar Compartir con Girar en el menú de pantalla completa Mostrar detalles extendidos sobre medios en pantalla completa - Manage extended details + Administrar detalles ampliados + Allow one finger zoom at fullscreen media @@ -140,7 +141,7 @@ Gallery también se ofrece para uso de terceros para previsualizar imágenes/vídeos, agregar adjuntos en clientes de correo, etc. Es perfecta para uso diario. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + El permiso de huella digital es necesario para bloquear la visibilidad de elementos ocultos o toda la aplicación. No contiene publicidad ni permisos innecesarios. Es totalmente libre, proporciona colores personalizables. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index c4a20e38d..a30a45fc7 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -7,14 +7,13 @@ (piilotettu) Kiinnitä kansio Poista kiinnitys + Pin to the top Näytä kaikkien kansioiden sisältö Kaikki kansiot Vaihda kansionäkymään Muu kansio Näytä kartalla Tuntematon sijainti - Karttasovellusta ei löytynyt - Kamerasovellusta ei löytynyt Increase column count Reduce column count Vaihda kansikuva @@ -44,7 +43,9 @@ Kansion poissulkeminen piilottaa kansion alikansioineen vain Simple Galleryssa, ne jäävät näkyviin muihin sovelluksiin.\n\nJos haluat piilottaa kansion myös muissa sovelluksissa, käytä piilota-funktiota. Poista kaikki Poista kaikki kansiot poissuljettujen listasta? Tämä ei poista kansioita. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Sisällytä kansiot @@ -84,7 +85,6 @@ Aseta taustakuvaksi Taustakuvan asetus epäonnistui Aseta taustakuvaksi sovelluksella: - Toimivaa sovellusta ei löydetty Asetetaan taustakuvaa… Taustakuva asetettu onnistuneesti Kuvasuhde pystyssä @@ -131,6 +131,7 @@ Korvaa jakaminen kääntämisellä koko näytön tilassa Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7701830bc..8397e54da 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,14 +7,13 @@ (caché) Épingler le dossier Désépingler le dossier + Épingler en haut Afficher le contenu de tous les dossiers Tous les dossiers Permuter vers la vue du dossier Autre dossier Afficher sur la carte Position inconnue - Aucune application de carte n\'a été trouvée - Aucune application d\'appareil photo n\'a été trouvée Augmenter le nombre de colonnes Réduire le nombre de colonnes Changer l\'image de couverture @@ -23,8 +22,8 @@ Volume Luminosité Ne pas redemander pour cette session - Lock orientation - Unlock orientation + Verrouiller la rotation + Déverrouiller la rotation Filtrer les médias @@ -40,11 +39,13 @@ Dossiers exclus Gérer les dossiers exclus Cela va exclure la sélection ainsi que ses sous-dossiers depuis Simple Galerie uniquement. Vous pouvez gérer les dossiers exclus depuis les Paramètres. - Exclure un parent plutôt ? + Exclure un dossier parent ? Exclure des dossiers les masquera ainsi que leurs sous-dossiers uniquement dans Simple Galerie, ils seront toujours visibles depuis d\'autres applications.\\n\\nSi vous voulez aussi les masquer ailleurs, utilisez la fonction Masquer. Tout supprimer Supprimer tous les dossiers de la liste des exclusions ? Ceci n\'effacera pas les dossiers. - Manage hidden folders + Dossiers masqués + Gérer les dossiers masqués + Il semblerait que vous n\'ayez pas de dossier cachés avec un fichier \".nomedia\". Dossiers inclus @@ -84,14 +85,13 @@ Définir comme fond d\'écran Échec de la définition en tant que fond d\'écran. Définir comme fond d\'écran avec : - Aucune application trouvée pour continuer cette action Paramètres de fond d\'écran… Fond d\'écran défini avec succès Ratio d\'aspect portrait Ratio d\'aspect paysage - Home screen - Lock screen - Home and lock screen + Page d\'accueil + Écran de verouillage + Page d\'accueil et écran de verrouillage Diaporama @@ -122,7 +122,7 @@ Paramètres système Rotation de l\'appareil Ratio d\'aspect - Black background and status bar at fullscreen media + Fond et barre de statur noir en plein écran Défilement des miniatures horizontalement Masquer automatiquement l\'interface utilisateur si média plein écran Supprimer les dossiers vides après avoir supprimé leur contenu @@ -131,6 +131,7 @@ Remplacer Partager par Pivoter si menu en plein écran Afficher les détails supplémentaires par dessus le média en plein écran Gérer les détails supplémentaires + Allow one finger zoom at fullscreen media @@ -140,11 +141,11 @@ 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. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + 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 aussi fournie avec des couleurs personnalisables. - Cette application est juste l\'une des applications d\'une plus grande suite. Vous pouvez trouver les autres sur http://www.simplemobiletools.com + Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur http://www.simplemobiletools.com Cartafoles incluídos @@ -84,7 +85,6 @@ Establecer como fondo de pantalla Fallou establecer fondo de pantalla Establecer fondo de pantalla con: - Non se atopou ningún applicativo válido Establecendo fondo de pantalla… fondo de pantalla establecido con éxito Proporción de Retrato @@ -131,6 +131,7 @@ Substituír Compartir con Rotar no menú de pantalla completa Mostrar información pormenorizada sobre medios a pantalla completa Xestionar información polo miúdo + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 0ba59c891..9eb2d8e13 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -7,14 +7,13 @@ (skriveno) Prikači direktorij Otkači direktorij + Pin to the top Prikaži cijeli sadržaj direktorija Svi direktoriji Prebaci se na pogled direktorija Ostali direktoriji Prikaži na karti Nepoznata lokacija - Nije pronađena aplikacija za kartame - Nije pronađena aplikacija za kameru Povećaj broj stupaca Smanji broj stupaca Promjeni naslovnu sliku @@ -44,7 +43,9 @@ Izostavljanje direktorija učiniti će ih nevidljivim zajedno s njihovim poddirektorijima samo u Simple Gallery, ali će oni biti vidljivi u drugim aplikacijama.\n\nAko ih želite sakriti od drugih aplikacija također, koristite Sakrij opciju. Ukloni sve Ukloni sve direktorije iz liste izostavljenih? Ovo neće izbrisati direktorije. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Dodaj direktorije @@ -84,7 +85,6 @@ Postavi kao pozadinu Neuspješno postavljanje pozadine Postavi kao pozadinu s: - Nije pronađena aplikacija s ovim mogućnostima Postavljanje pozadine… Uspješno postavljanje pozadine Portretni omjer slike @@ -131,6 +131,7 @@ Zamjeni Dijeli s Rotiraj pri pregledu datoteka Prikaži detaljne informacije pri pregledu datoteka Upravljaj detaljnim informacijama + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index aff4967b1..ea1320d45 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -7,14 +7,13 @@ (hidden) Pin folder Unpin folder + Pin to the top Show all folders content All folders Switch to folder view Other folder Show on map Unknown location - No application with maps has been found - No Camera app has been found Increase column count Reduce column count Change cover image @@ -44,7 +43,9 @@ Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\\n\\nIf you want to hide them from other apps too, use the Hide function. Remove all Remove all folders from the list of excluded? This will not delete the folders. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Included folders @@ -84,7 +85,6 @@ Set as Wallpaper Setting as Wallpaper failed Set as wallpaper with: - No app capable of it has been found Setting wallpaper… Wallpaper set successfully Portrait aspect ratio @@ -131,6 +131,7 @@ Replace Share with Rotate at fullscreen menu Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b969dfde5..ec978160c 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -7,14 +7,13 @@ (nascosta) Blocca cartella Sblocca cartella + Pin to the top Mostra tutti i contenuti Tutti i media Visualizza a cartelle Altra cartella Mostra sulla mappa Posizione sconosciuta - Nessuna app con mappe trovata - Nessuna app fotocamera trovata Aumenta numero colonne Riduci numero colonne Cambia immagine copertina @@ -44,7 +43,9 @@ L\'esclusione delle cartelle e delle sottocartelle le renderà nascoste solo in Simple Gallery, saranno ancora visibili in altre applicazioni.\\n\\nSe desideri nasconderle anche nelle altre app, usa la funzione Nascondi. Rimuovi tutte Rimuovere tutte le cartelle dalla lista delle esclusioni? Ciò non eliminerà le cartelle. - Manage hidden folders + Cartelle nascoste + Gestisci le cartelle nascoste + Pare che tu non abbia alcuna cartella nascosta con un file \".nomedia\". Includi cartelle @@ -84,7 +85,6 @@ Imposta come sfondo Impostazione sfondo non riuscita Imposta come sfondo con: - Non sono disponibili app compatibili Impostazione sfondo… Sfondo impostato correttamente Proporzioni ritratto @@ -122,7 +122,7 @@ Impostazione di sistema Rotazione dispositivo Proporzioni - Black background and status bar at fullscreen media + Sfondo e barra di stato neri con media a schermo intero Scorri le miniature orizzontalmente Nascondi UI di sistema con media a schermo intero Elimina cartelle vuote dopo averne eliminato il contenuto @@ -131,6 +131,7 @@ Sostituisci Condividi con Ruota a schermo intero Mostra informazioni estese su media a schermo intero Gestisci le informazioni estese + Allow one finger zoom at fullscreen media @@ -140,7 +141,7 @@ Simple Gallery è anche offerta per utilizzo di terze parti per anteprime di immagini / video, aggiunta di allegati ai client email, ecc. È perfetta per un uso quotidiano. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + L\'autorizzazione per le impronte è necessaria per bloccare la visibilità di alcuni elementi o dell\'intera app. Non contiene pubblicità o autorizzazioni non necessarie. È completamente opensource, offre colori personalizzabili. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index aae7cccbf..6fb2c015a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -7,14 +7,13 @@ (非表示) フォルダーをピン留めする フォルダーのピン留めを外す + Pin to the top 全てを表示 すべてのフォルダー フォルダーを選択する その他のフォルダー 地図で表示 位置情報がありません - 地図アプリが見つかりません - カメラアプリが見つかりません 列数を増やす 列数を減らす カバー画像を変更 @@ -44,7 +43,9 @@ フォルダーを除外すると、サブフォルダーも含めSimple Galleyの一覧から除外します。他のアプリでは引き続き表示されます。\\n\\n他のアプリでも非表示にしたい場合は、「非表示」機能を使用してください。 すべて解除 除外するフォルダーの登録をすべて解除しますか? フォルダー自体は削除されません。 + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. 追加フォルダー @@ -84,7 +85,6 @@ 壁紙に設定 壁紙の設定に失敗しました 壁紙に設定: - 対応できるアプリが見つかりません 壁紙に設定中… 壁紙を正常に設定しました 縦向きの縦横比 @@ -131,6 +131,7 @@ フルスクリーンメニューの「共有」を「回転」に置き換える Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 202baecaa..d07e4c6a5 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -7,14 +7,13 @@ (숨기기) 폴더 고정 폴더 고정 해제 + Pin to the top 모든 폴더의 컨텐츠 보기 모든 폴더 폴더 보기로 변경 다른 폴더 지도에서 보기 위치정보 없음 - 연결 가능한 지도 애플리케이션이 없습니다. - 연결 가능한 카메라 애플리케이션이 없습니다. 섬네일크기 축소 섬네일크기 확대 Change cover image @@ -44,7 +43,9 @@ Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\n\nIf you want to hide them from other apps too, use the Hide function. 모두 제거 제외 목록을 모두 삭제 하시겠습니다? 목록을 삭제해도 폴더가 삭제되지는 않습니다. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. 포함된 폴더 @@ -84,7 +85,6 @@ Set as Wallpaper Setting as Wallpaper failed Set as wallpaper with: - No app capable of it has been found Setting wallpaper… Wallpaper set successfully Portrait aspect ratio @@ -131,6 +131,7 @@ 전체화면 메뉴의 공유 아이콘을 회전 아이콘으로 변경 전체화면 모드에서 세부정보 표시 확장된 세부정보 관리 + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 3d1b245e1..df73c1423 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -7,14 +7,13 @@ (skjult) Fest mappe Løsne mappe + Fest til toppen Vis alle mappers innhold Alle mapper Skift til mappevisning Annen mappe Vis på kart Ukjent plassering - Ingen app med kart er funnet - Ingen kamera-app er funnet Øk antall kolonner Reduser antall kolonner Endre omslagsbilde @@ -44,7 +43,9 @@ Ekskludering av mapper vil gjøre dem sammen med deres undermapper, skjulte bare i denne appen. De vil fortsatt være synlige i andre apper.\n\nHvis du vil skjule dem fra andre apper, bruk Skjul-funksjonen. Fjern alle Fjerne alle mapper fra listen av ekskluderte? Dette sletter ikke mappene. - Manage hidden folders + Skjulte mapper + Håndter skjulte mapper + Ser ut til at du ikke har skjult noen mapper med en \".nomedia\"-fil. Inkluderte mapper @@ -84,7 +85,6 @@ Sett som bakgrunnsbilde Å sette som bakgrunnsbilde feilet Sett som bakgrunnsbilde med: - Ingen app i stand til det er funnet Stiller inn bakgrunnsbilde… Bakgrunnsbilde vellykket stilt inn Portrett-sideforhold @@ -131,6 +131,7 @@ Erstatt Del med Roter i meny ved mediavisning Vis flere detaljer i mediavisningen Velg detaljer + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index fc3dd2d0b..b7259b32f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -7,31 +7,30 @@ (verborgen) Map vastzetten Map losmaken - Platte weergave + Bovenaan vastzetten + Alles weergeven Alle mappen Mapweergave Andere map Op kaart tonen Locatie onbekend - Geen app voor kaarten gevonden - Geen app voor camera gevonden Meer kolommen Minder kolommen - Afbeelding voor omslag veranderen + Afbeelding omslag wijzigen Foto selecteren Standaard gebruiken Volume Helderheid Onthouden voor deze sessie - Schermrotatie vergrendelen - Schermrotatie ontgrendelen + Schermoriëntatie vergrendelen + Schermoriëntatie ontgrendelen - Filter media + Media filteren Afbeeldingen Video\'s GIF-bestanden - Geen bestanden gevonden met de huidige filters. + Er zijn geen bestanden gevonden met de huidige filters. Filters aanpassen @@ -40,24 +39,26 @@ Uitgesloten mappen Uitgesloten mappen beheren De selectie en submappen uitsluiten van deze galerij. Uitgesloten mappen kunnen worden beheerd in de instellingen. - Map die dit item bevat uitsluiten? + De map met dit item uitsluiten? Uitsluiten zal mappen en hun submappen verbergen voor deze galerij, maar niet voor andere apps.\n\nAls u de mappen ook in andere apps wilt verbergen, kies dan voor de functie Verbergen. Alles verwijderen - Verwijder alles uit de lijst van uitgesloten mappen? Dit zal de mappen zelf niet verwijderen. + De lijst van uitgesloten mappen leegmaken. Dit zal de mappen zelf niet verwijderen. + Verborgen mappen Verborgen mappen beheren + Er zijn geen mappen gevonden die zijn verborgen door bestand \".nomedia\". Toegevoegde mappen Toegevoegde mappen beheren Map toevoegen - Als er mappen zijn die wel media bevatten, maar niet niet door de galerij worden herkend, voeg deze mappen dan hier handmatig toe.\n\nHet hier toevoegen van mappen zal andere mappen niet uitsluiten. + Als er mappen zijn die wel media bevatten, maar niet door de galerij worden herkend, voeg deze mappen dan hier handmatig toe.\n\nHet hier toevoegen van mappen zal andere mappen niet uitsluiten. Grootte aanpassen Grootte aanpassen en opslaan Breedte Hoogte - Verhouding vergrendelen + Beeldverhouding vergrendelen Voer geldige afmetingen in @@ -68,9 +69,9 @@ Ongeldig pad naar afbeelding Fout bij bewerken van afbeelding Afbeelding bewerken met: - Geen app gevonden voor bewerking + Geen app gevonden voor fotobewerking Onbekende bestandslocatie - Kan het bronbestand niet overschrijven + Bronbestand kan niet worden overschreven Linksom draaien Rechtsom draaien 180º draaien @@ -84,13 +85,12 @@ Als achtergrond instellen Achtergrond instellen mislukt Achtergrond instellen met: - Geen app gevonden voor instellen achtergrond Achtergrond instellen… Achtergrond is ingesteld Verhouding in portretmodus Verhouding in landschapsmodus Startscherm - Vergrendelingsscherm + Vergrendelscherm Start- en vergrendelingsscherm @@ -108,7 +108,7 @@ Weergave - Rooster + Raster Lijst @@ -117,20 +117,21 @@ Video\'s herhalen GIF-bestanden afspelen in overzicht Maximale helderheid in volledige weergave - Voorbeelden vierkant bijsnijden + Miniatuurvoorbeelden bijsnijden Media in volledige weergave roteren volgens Systeeminstelling - Rotatie van apparaat + Oriëntatie van apparaat Afmetingen van bestand Zwarte achtergrond en statusbalk bij volledige weergave Horizontaal scrollen - Automatisch de statusbalk verbergen in volledige weergave - Lege mappen verwijderen na het verwijderen van hun inhoud - Volume en helderheid aanpassen met verticale sleepgebaren + Statusbalk automatisch verbergen in volledige weergave + Lege mappen verwijderen na leegmaken + Volume en helderheid aanpassen met verticale gebaren Aantallen in mappen tonen Menu-item Draaien vastzetten in volledige weergave (in plaats van Delen) Uitgebreide informatie tonen in volledige weergave Uitgebreide informatie + Allow one finger zoom at fullscreen media @@ -140,9 +141,9 @@ De galerij kan ook worden gebruikt voor het bekijken van afbeeldingen of video\'s vanuit andere apps, om bijlagen toe te voegen in e-mail, etc. Perfect voor dagelijks gebruik. - De permissie voor het uitlezen van vingerafdrukken is benodigd voor het vergendelen van verborgen items of de gehele app. + De machtiging voor het uitlezen van vingerafdrukken is benodigd voor het vergendelen van verborgen items of de gehele app. - Bevat geen advertenties of onnodige permissies. Volledig open-source. Kleuren van de app kunnen worden aangepast. + Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast. Deze app is onderdeel van een grotere verzameling. Vind de andere apps op http://www.simplemobiletools.com diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7a707b80a..f86a8195c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -7,14 +7,13 @@ (ukryty) Przypnij folder Wypakuj folder + Pin to the top Pokaż wszystko Wszystkie foldery Przełącz na widok folderów Inny folder Pokaż na mapie Nieznana lokalizacja - Brak aplikacji powiązanej z mapami - Brak aplikacji powiązanej z aparatem Zwiększ liczbę kolumn Zmniejsz liczbę kolumn Zmień okładkę @@ -44,7 +43,9 @@ Wykluczenie folderów ukryje je tylko w aplikacji Simple Gallery, w innych aplikacjach będą one wciąż widoczne.\n\nJeśli chcesz je ukryć także w innych aplikacjach, użyj funkcji ukrywania. Usuń wszystko Usunąć wszystkie foldery z listy wykluczonych? Foldery nie zostaną fizycznie usunięte. +   Ukryte foldery    Zarządzaj ukrytymi folderami +    Zdaje się, że nie masz żadnych folderów z plikiem \".nomedia\". Dołączone foldery @@ -84,7 +85,6 @@ Ustaw jako tapetę Ustawienie tapety nie powiodło się Ustaw jako tapetę w: - Brak odpowiednich ustawień Ustawiam tapetę… Tapeta została ustawiona Proporcje ekranu w trybie pionowym @@ -131,6 +131,7 @@ Zamień funkcję udostępniania na obracanie w menu pełnoekranowym Dodatkowe szczegóły przy podglądzie pełnoekranowym Zarządzaj dodatkowymi szczegółami + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e9bf84b18..2ba181d63 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -7,14 +7,13 @@ (oculto) Fixar pasta Desfixar pasta + Pin to the top Mostrar conteúdo de todas as pastas Todas as pastas Alternar para a visualização de pastas Outra pasta Mostrar no mapa Localização desconhecida - Nenhum aplicativo de mapa encontrado - Nenhum aplicativo de câmera encontrado Aumentar número de colunas Reduzir número de colunas Trocar imagem de capa @@ -44,7 +43,9 @@ A exclusão de uma pasta apenas oculta o seu conteúdo da galeria, pois todos os outros aplicativos poderão acessá-las.\\n\\nSe quiser ocultar de todos os aplicativos, utilize a função ocultar. Remover todas Remover todas as pastas da lista de exclusões? Esta ação não apaga as pastas. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Pastas incluídas @@ -84,7 +85,6 @@ Definir como papel de parede Falha ao definir como papel de parede Definir papel de parede com: - Aplicativo não encontrado Definindo como papel de parede Papel de parede com sucesso Retrato @@ -131,6 +131,7 @@ Substituir botão "Compartilhar" por "Rotação de tela" quando em tela cheia Exibir detalhes extendidos quando em tela cheia Gerenciar detalhes extendidos + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 199672bdd..cb9013d1c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -7,14 +7,13 @@ (oculta) Fixar pasta Desafixar pasta + Fixar no topo Mostrar conteúdo de todas as pastas Todas as pastas Alternar para a vista de pastas Outra pasta Mostrar no mapa Localização desconhecida - Não existe uma aplicação adequada - Não existe uma aplicação adequeada Aumentar número de colunas Diminuir número de colunas Alterar imagem de capa @@ -44,7 +43,9 @@ A exclusão de uma pasta apenas oculta o seu conteúdo do Simple Gallery porque as outras aplicações continuarão a poder aceder-lhes.\\n\\nSe quiser ocultar também das outras aplicações, utilize a função Ocultar. Remover todas Remover todas as pastas de lista de exclusões? Esta ação não apaga as pastas. - Manage hidden folders + Pastas ocultas + Gerir pastas ocultas + Parece que não existem pastas ocultas com ficheiros \".nomedia\". Pastas incluídas @@ -84,7 +85,6 @@ Definir como fundo do ecrã Falha ao definir como fundo de ecrã Definir como fundo com: - Aplicação não encontrada A definir como fundo de ecrã… Fundo definido com sucesso Proporção na vertical @@ -122,7 +122,7 @@ Definições do sistema Rotação do dispositivo Proporção - Black background and status bar at fullscreen media + Fundo escuro e barra de estado no modo de ecrã completo Deslocação horizontal de miniaturas Ocultar interface do sistema se em ecrã completo Apagar as pastas vazias depois de remover o seu conteúdo @@ -131,6 +131,7 @@ Substituir a opção Partilhar pela opção Rodar se em ecrã completo Mostrar detalhes se em ecrã completo Gerir detalhes exibidos + Allow one finger zoom at fullscreen media @@ -140,7 +141,7 @@ Também pode ser utilizada para pré-visualizar imagens e vídeos ou para adicionar como anexos ao e-mail, entre outros. É perfeita para a utilização diária. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + A permissão Impressão digital é necessária para bloquear a visualização dos itens ocultos ou de toda a aplicação. Não contém anúncios nem permissões desnecessárias. Disponibiliza um tema escuro e é totalmente \'open source\'. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1a6e4bff4..bbaebfbcf 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -7,14 +7,13 @@ (Скрытый) Закрепить папку Открепить папку + Закрепить наверху Отобразить все медиафайлы Все медиафайлы Переключиться к виду с папками Другая папка Показать место съёмки Место съёмки не указано - Не найдено приложений с картами - Не найдено приложения камеры Добавить столбец Убрать столбец Изменить обложку @@ -35,22 +34,24 @@ Изменить фильтры - Эта функция скрывает папку, добавляя в неё файл \'.nomedia\'; будут скрыты все подпапки. Можно показывать их, переключая \'Показывать скрытые папки\' в настройках. Продолжить? + Эта функция скрывает папку, добавляя в неё файл \".nomedia\"; будут скрыты все подпапки. Можно показывать их, переключая \"Показывать скрытые папки\" в настройках. Продолжить? Исключить Исключённые папки Управление исключёнными папками Эта функция исключит выбранные папки вместе с подпапками только для Simple Gallery. Можно управлять исключёнными папками из настроек. Исключить только родительский каталог? - Исключая папки, вы сделаете их скрытыми вместе с подпапками в Simple Gallery, но они будут видны в других приложениях. Если вы хотите скрыть их в других приложениях, используйте функцию Скрыть. + Исключая папки, вы сделаете их скрытыми вместе с подпапками в Simple Gallery, но они будут видны в других приложениях. Если вы хотите скрыть их и в других приложениях, используйте функцию \"Скрыть\". Удалить всё Очистить список исключённых? Сами папки не будут удалены. + Скрытые папки Управление скрытыми папками + Похоже, у вас нет папок, скрытых файлом \".nomedia\". Включённые папки Управление включёнными папками Добавление папки - Если у вас есть папки, содержащие медиафайлы, но не распознанные Simple Gallery. Вы можете добавить их вручную. + Если у вас есть папки, содержащие медиафайлы, но не распознанные приложением, вы можете добавить их вручную.\n\nДобавление папки не приводит к исключению каких-либо других. Изменить размер @@ -84,7 +85,6 @@ Установить в качестве обоев Не удалось установить Установить в качестве обоев в: - Приложение не найдено Установка обоев… Обои успешно установлены Портрет @@ -128,9 +128,10 @@ Удалять пустые папки после удаления их содержимого Управлять громкостью и яркостью видео с помощью вертикальных жестов Показывать количество файлов в папках - Заменить \'Поделиться\' на \'Повернуть\' в меню полноэкранного режима + Заменить \"Поделиться\" на \"Повернуть\" в меню полноэкранного режима Показывать детали файла Выбрать детали файла + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index ed93d39ab..c99b6ecfc 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -7,14 +7,13 @@ (skryté) Pripnúť priečinok Odopnúť priečinok + Pripnúť na vrch Zobraziť obsah všetkých priečinkov Všetky priečinky Prepnúť na zobrazenie priečinkov Iný priečinok Zobraziť na mape Neznáma poloha - Nenašla sa žiadna mapová aplikácia - Nenašla sa žiadna aplikácia pre fotoaparát Zvýšiť počet stĺpcov Znížiť počet stĺpcov Zmeniť obal albumu @@ -44,7 +43,9 @@ Vylúčené priečinky budú spolu s podpriečinkami ukryté iba pred Jednoduchou Galériou, ostatné aplikácie ich budú stále vidieť.\\n\\nAk ich chcete ukryť aj pred ostatnými aplikáciami, použite funkciu Skryť. Odstrániť všetky Odstrániť všetky priečinky zo zoznamu vylúčených? Táto operácia neodstráni samotný obsah priečinkov. + Skryté priečinky Spravovať skryté priečinky + Zdá sa, že nemáte žiadne priečinky skryté pomocou súboru \".nomedia\". Pridané priečinky @@ -84,7 +85,6 @@ Nastaviť ako tapetu Nastavovanie ako tapeta zlyhalo Nastaviť ako tapetu s: - Nenašla sa žiadna vhodná aplikácia Nastavuje sa tapeta… Tapeta bola úspešne zmenená Orientácia nastojato @@ -131,6 +131,7 @@ Nahradiť Zdieľanie s Otočením v celoobrazovkovom menu Zobraziť rozšírené vlastnosti ponad celoobrazovkové médiá Spravovať rozšírené vlastnosti + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 431ab1bc9..743b21321 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -7,14 +7,13 @@ (dold) Fäst mappen Släpp mappen + Pin to the top Visa alla mappars innehåll Alla mappar Byt till mappvy - Andra mappar + Annan mapp Visa på karta Okänd plats - Ingen app med kartor hittades - Ingen Kamera-app hittades Öka antalet kolumner Minska antalet kolumner Byt omslagsbild @@ -22,9 +21,9 @@ Använd standard Volym Ljusstyrka - Do not ask again in this session - Lock orientation - Unlock orientation + Fråga inte igen i denna session + Aktivera rotationslås + Inaktivera rotationslås Filtrera media @@ -35,7 +34,7 @@ Ändra filter - Denna funktion döljer mappen och alla dess undermappar genom att lägga till en \'.nomedia\'-fil i den. Du kan se dem genom att växla \'Visa dolda mappar\'-alternativet i Inställningar. Vill du fortsätta? + Denna funktion döljer mappen och alla dess undermappar genom att lägga till en \'.nomedia\'-fil i den. Du kan se dem genom att växla \'Visa dolda objekt\'-alternativet i Inställningar. Vill du fortsätta? Uteslut Uteslutna mappar Hantera uteslutna mappar @@ -44,7 +43,9 @@ Uteslutning av mappar döljer bara dem och deras undermappar i Simple Gallery, de visas fortfarande i andra appar.\\n\\nAnvänd Dölj-funktionen om du även vill dölja dem från andra appar. Ta bort alla Vill du ta bort alla mappar från uteslutningslistan? Detta raderar inte mapparna. - Manage hidden folders + Dolda mappar + Hantera dolda mappar + Det verkar som att inga mappar har dolts med \".nomedia\"-filer. Inkluderade mappar @@ -84,14 +85,13 @@ Ange som bakgrundsbild Det gick inte att byta bakgrundsbild Ange som bakgrundsbild med: - Hittade ingen app som klarar av detta Inställningar för bakgrundsbild… Bakgrundsbilden är ändrad Stående bildförhållande Liggande bildförhållande - Home screen - Lock screen - Home and lock screen + Startskärm + Låsskärm + Startskärm och låsskärm Bildspel @@ -107,14 +107,14 @@ Ingen media hittades för bildspelet - Change view type - Grid - List + Ändra vy + Rutnät + Lista - Spela upp videos automatiskt + Spela upp videor automatiskt Visa/dölj filnamnen - Återspela videos + Spela upp videor om och om igen Animera GIF-bilders miniatyrer Maximal ljusstyrka när media visas Beskär miniatyrer till kvadrater @@ -122,29 +122,30 @@ Systeminställning Enhetens rotation Bildförhållande - Black background and status bar at fullscreen media + Svart bakgrund och statusfält när media visas i helskärmsläge Rulla horisontellt genom miniatyrer Dölj systemanvändargränssnittet automatiskt när media visas i helskärmsläge Ta bort tomma mappar när deras innehåll tas bort Tillåt styrning av videovolym och videoljusstyrka med vertikala gester - Show folder media count on the main view + Visa antalet mediefiler i varje mapp i huvudvyn Ersätt Dela med Rotera i helskärmsmenyn - Show extended details over fullscreen media - Manage extended details + Visa utökad information över media i helskärmsläge + Hantera utökad information + Allow one finger zoom at fullscreen media - Ett Galleri för att visa bilder och videos utan en massa reklam. + Ett galleri för att visa foton och videor utan reklam. - Ett enkelt verktyg för att visa bilder och videos. Objekten kan sorteras efter datum, storlek, namn både stigande och fallande, bilder kan zoomas in. Mediafiler visas i flera kolumner beroende av skärmens storlek, du kan ändra antalet kolumner genom en nyp-rörelse. De går att döpa om, dela, ta bort, kopiera, flytta. Bilder kan också beskäras, roteras och anges som bakgrundsbild direkt från appen. + Ett enkelt verktyg för att visa foton och videor. Det kan zooma in på foton och sortera objekt i stigande eller fallande ordning efter datum, storlek eller namn. Mediefiler visas i flera kolumner. Antalet kolumner beror på skärmens storlek och kan ändras med nypgester. Mediefiler kan döpas om, delas, tas bort, kopieras eller flyttas. Bilder kan även beskäras, roteras, vändas eller anges som bakgrundsbilder direkt i appen. - Galleriet kan också användas av tredjepartsappar för förhandsgranskning av bilder / videos, bifoga bilagor i e-postklienter etc. Den är perfekt för det dagliga användandet. + Galleriet kan även användas av tredjepartsappar för att förhandsgranska bilder och videor, lägga till bilagor i e-postklienter etc. Det är perfekt för daglig användning. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Fingeravtrycksbehörigheten behövs för att låsa hela appen eller synligheten för dolda objekt. - Innehåller ingen reklam eller onödiga behörigheter. Det är helt och hållet opensource, innehåller anpassningsbara färger. + Innehåller ingen reklam eller onödiga behörigheter. Det har helt öppen källkod och anpassningsbara färger. - Detta är bara en app i en serie av appar. Du hittar resten av dem här http://www.simplemobiletools.com + Denna app är bara en del av en större serie appar. Du hittar resten av dem på http://www.simplemobiletools.com Dahil edilen klasörler @@ -84,7 +85,6 @@ Duvar kağıdı olarak ayarla Duvar Kağıdı Olarak Ayarlanılamıyor İle duvar kağıdı olarak ayarla: - Mümkün olan herhangi bir uygulama bulunamadı Duvar kağıdını ayarlama… Duvar kağıdı başarıyla ayarlandı Portrait aspect ratio @@ -131,6 +131,7 @@ Replace Share with Rotate at fullscreen menu Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ecd589bf3..c08640744 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -7,14 +7,13 @@ (隐藏) 锁定目录 解除锁定目录 + 锁定到顶部 文件视图 所有目录 目录视图 其他目录 在地图中显示 未知位置 - 未找到地图应用 - 未找到相机应用 增加一栏 减少一栏 更改封面图片 @@ -44,7 +43,9 @@ 此目录及其子目录中的媒体将不会在“简约图库”中显示,但是其它应用可以访问。如果您想对其它应用隐藏,请使用隐藏功能。 移除全部 是否删除排除列表中的所有项目?此操作不会删除文件夹本身。 + 隐藏目录 管理隐藏目录 + 看起来你没有任何使用“.nomedia”文件隐藏的目录。 包含目录 @@ -84,7 +85,6 @@ 设为壁纸 壁纸设置失败 设为壁纸... - 未找到可用应用 正在设置壁纸… 壁纸设置成功 纵向长宽比 @@ -131,6 +131,7 @@ 替换全屏时菜单栏的“分享”为“旋转” 全屏浏览媒体时显示详细信息 要显示的详细信息项目 + 单指缩放 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2415e0830..91fc82f8d 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -7,14 +7,13 @@ (隱藏) 釘選資料夾 取消釘選資料夾 + Pin to the top 資料夾內容全部顯示 全部資料夾 切換成資料夾檢視 其他資料夾 在地圖上顯示 未知的位置 - 找不到地圖程式 - 找不到相機程式 增加欄數 減少欄數 更換封面圖片 @@ -44,7 +43,9 @@ 「排除資料夾」只會將選擇的資料夾與子資料夾一起從簡易相簿中隱藏,他們仍會出現在其他應用程式中。\n\n如果您要在其他應用程式中也隱藏,請使用「隱藏」功能。 移除全部 是否將排除列表中的所有資料夾都移除?這不會刪除資料夾。 + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. 包含資料夾 @@ -84,7 +85,6 @@ 設為桌布 設為桌布失敗 用其他程式設為桌布: - 找不到可用的應用程式 桌布設定中… 成功設為桌布 直向長寬比 @@ -131,6 +131,7 @@ 將全螢幕選單的分享取代為旋轉 全螢幕時顯示詳細資訊 管理詳細資訊 + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e2127294e..29d275ace 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,14 +7,13 @@ (hidden) Pin folder Unpin folder + Pin to the top Show all folders content All folders Switch to folder view Other folder Show on map Unknown location - No application with maps has been found - No Camera app has been found Increase column count Reduce column count Change cover image @@ -44,7 +43,9 @@ Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\n\nIf you want to hide them from other apps too, use the Hide function. Remove all Remove all folders from the list of excluded? This will not delete the folders. + Hidden folders Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. Included folders @@ -84,7 +85,6 @@ Set as Wallpaper Setting as Wallpaper failed Set as wallpaper with: - No app capable of it has been found Setting wallpaper… Wallpaper set successfully Portrait aspect ratio @@ -131,6 +131,7 @@ Replace Share with Rotate at fullscreen menu Show extended details over fullscreen media Manage extended details + Allow one finger zoom at fullscreen media diff --git a/app/src/main/res/xml/searchable.xml b/app/src/main/res/xml/searchable.xml new file mode 100644 index 000000000..892fa25a7 --- /dev/null +++ b/app/src/main/res/xml/searchable.xml @@ -0,0 +1,5 @@ + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c3b78705a..f4113673a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip diff --git a/screenshots/app.jpg b/screenshots/app.jpg index b94084498..6ad6c5a78 100644 Binary files a/screenshots/app.jpg and b/screenshots/app.jpg differ diff --git a/screenshots/app_2.jpg b/screenshots/app_2.jpg index 684f3d19e..9c3f1883c 100644 Binary files a/screenshots/app_2.jpg and b/screenshots/app_2.jpg differ diff --git a/screenshots/app_3.jpg b/screenshots/app_3.jpg index 9be7f39f4..4d8bd9a12 100644 Binary files a/screenshots/app_3.jpg and b/screenshots/app_3.jpg differ diff --git a/screenshots/app_4.jpg b/screenshots/app_4.jpg index ef66891d0..30c7aec25 100644 Binary files a/screenshots/app_4.jpg and b/screenshots/app_4.jpg differ diff --git a/screenshots/app_5.jpg b/screenshots/app_5.jpg index 061aa7e6f..f4298c2fa 100644 Binary files a/screenshots/app_5.jpg and b/screenshots/app_5.jpg differ diff --git a/screenshots/app_6.jpg b/screenshots/app_6.jpg index 984381c01..0507ca9db 100644 Binary files a/screenshots/app_6.jpg and b/screenshots/app_6.jpg differ diff --git a/screenshots/tablet-10.jpg b/screenshots/tablet-10.jpg index 2ad593ae0..ac60bce67 100644 Binary files a/screenshots/tablet-10.jpg and b/screenshots/tablet-10.jpg differ diff --git a/screenshots/tablet-7.jpg b/screenshots/tablet-7.jpg index ffa5183b7..a17c6e5e9 100644 Binary files a/screenshots/tablet-7.jpg and b/screenshots/tablet-7.jpg differ