diff --git a/.gitignore b/.gitignore index dc267ae29..a1c018bec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ *.iml +*.aab .gradle /local.properties +/gradle.properties /.idea/ .DS_Store /build /captures -release.keystore +keystore.jks signing.properties diff --git a/CHANGELOG.md b/CHANGELOG.md index a4f494494..3e27c64a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,34 @@ Changelog ========== +Version 6.0.0 *(2018-11-04)* +---------------------------- + + * Initial Pro version + +Version 5.1.3 *(2018-11-04)* +---------------------------- + + * Adding an option to store last video playback position (by mathevs) + * Adding a "Keep both" conflict resolution at copy/move (by Doubl3MM) + * Improved panoramic video detection + * Remove some glitches related to third party file opening + * Do not exclude the Data folder by default + * Removed the "Avoid showing Whats New at app startup" option + * This version of the app is no longer maintained. Please upgrade to the Pro version. It is free till Nov 12 2018. You can find the Upgrade button at the top of the app Settings. + +Version 5.1.2 *(2018-10-30)* +---------------------------- + + * Added a new option for password protecting file deletion/move + * Improved panorama video detection + * Improved the opening of media files without file extension + * Disabled move operation on Recycle bin items, use Restore + * Fixed handling of some third party image picker intents + * Fixed slideshow looping and a couple other UX glitches + * Improved the stability of retrieving cached files + * Hi + Version 5.1.1 *(2018-10-23)* ---------------------------- diff --git a/README.md b/README.md index b804ef6d6..62eb04481 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,33 @@ A gallery for viewing photos and videos. -A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. +A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. -The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It's perfect for everyday usage. +It is open source, contains no ads or unnecessary permissions. -Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. +Let's list some of its features worth mentioning: +1. Search +2. Slideshow +3. Notch support +4. Pinning folders to the top +5. Filtering media files by type +6. Recycle bin for easy file recovery +7. Fullscreen view orientation locking +8. Marking favorite files for easy access +9. Quick fullscreen media closing with down gesture +10. An editor for modifying images and applying filters +11. Password protection for protecting hidden items or the whole app +12. Changing the thumbnail column count with gestures or menu buttons +13. Customizable bottom actions at the fullscreen view for quick access +14. Showing extended details over fullscreen media with desired file properties +15. Several different ways of sorting or grouping items, both ascending and descending +16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) -This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com +The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. -Get it on Google Play +This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + +Get it on Google Play Get it on F-Droid
diff --git a/app/build.gradle b/app/build.gradle index 0fc90d3d4..fec06abda 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,11 +8,11 @@ android { buildToolsVersion "28.0.3" defaultConfig { - applicationId "com.simplemobiletools.gallery" + applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 205 - versionName "5.1.1" + versionCode 208 + versionName "6.0.0" multiDexEnabled true setProperty("archivesBaseName", "gallery") } @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.2.8' + implementation 'com.simplemobiletools:commons:5.3.9' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'androidx.multidex:multidex:2.0.0' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 86ed4b512..a33b0c153 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailItem.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailItem.kt deleted file mode 100644 index f53c5df10..000000000 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailItem.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.simplemobiletools.gallery.models - -open class ThumbnailItem diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/App.kt similarity index 88% rename from app/src/main/kotlin/com/simplemobiletools/gallery/App.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/App.kt index 8bb567298..670ba17a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/App.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/App.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery +package com.simplemobiletools.gallery.pro import androidx.multidex.MultiDexApplication import com.github.ajalt.reprint.core.Reprint diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt similarity index 97% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt index 2ab28c6c4..b71a979e7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/EditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.app.Activity import android.content.Intent @@ -9,10 +9,10 @@ import android.graphics.Point import android.net.Uri import android.os.Bundle import android.provider.MediaStore -import androidx.recyclerview.widget.LinearLayoutManager import android.view.Menu import android.view.MenuItem import android.widget.RelativeLayout +import androidx.recyclerview.widget.LinearLayoutManager import com.bumptech.glide.Glide import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.DiskCacheStrategy @@ -25,14 +25,14 @@ import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.REAL_FILE_PATH import com.simplemobiletools.commons.models.FileDirItem -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.FiltersAdapter -import com.simplemobiletools.gallery.dialogs.ResizeDialog -import com.simplemobiletools.gallery.dialogs.SaveAsDialog -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.extensions.openEditor -import com.simplemobiletools.gallery.helpers.FilterThumbnailsManager -import com.simplemobiletools.gallery.models.FilterItem +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.FiltersAdapter +import com.simplemobiletools.gallery.pro.dialogs.ResizeDialog +import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.openEditor +import com.simplemobiletools.gallery.pro.helpers.FilterThumbnailsManager +import com.simplemobiletools.gallery.pro.models.FilterItem import com.theartofdev.edmodo.cropper.CropImageView import com.zomato.photofilters.FilterPack import com.zomato.photofilters.imageprocessors.Filter diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt similarity index 88% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt index 4d3a1883a..0d3f96fdc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ExcludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.os.Bundle import android.view.Menu @@ -6,9 +6,9 @@ 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.ManageFoldersAdapter -import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.ManageFoldersAdapter +import com.simplemobiletools.gallery.pro.extensions.config import kotlinx.android.synthetic.main.activity_manage_folders.* class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt similarity index 83% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt index c46135c98..98d5eb9d9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/HiddenFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/HiddenFoldersActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.os.Bundle import android.view.Menu @@ -6,11 +6,11 @@ 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 com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.ManageHiddenFoldersAdapter +import com.simplemobiletools.gallery.pro.extensions.addNoMedia +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.getNoMediaFolders import kotlinx.android.synthetic.main.activity_manage_folders.* class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt similarity index 89% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt index 4a4d1339e..b6be4add2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/IncludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/IncludedFoldersActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.os.Bundle import android.view.Menu @@ -7,9 +7,9 @@ import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.scanPathRecursively import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.ManageFoldersAdapter -import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.ManageFoldersAdapter +import com.simplemobiletools.gallery.pro.extensions.config import kotlinx.android.synthetic.main.activity_manage_folders.* class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index de25bfda5..5a8925adc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.app.Activity import android.app.SearchManager @@ -27,20 +27,20 @@ import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.models.Release import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.commons.views.MyRecyclerView -import com.simplemobiletools.gallery.BuildConfig -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.DirectoryAdapter -import com.simplemobiletools.gallery.databases.GalleryDatabase -import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog -import com.simplemobiletools.gallery.dialogs.FilterMediaDialog -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.interfaces.DirectoryDao -import com.simplemobiletools.gallery.interfaces.DirectoryOperationsListener -import com.simplemobiletools.gallery.interfaces.MediumDao -import com.simplemobiletools.gallery.models.AlbumCover -import com.simplemobiletools.gallery.models.Directory -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.BuildConfig +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.DirectoryAdapter +import com.simplemobiletools.gallery.pro.databases.GalleryDatabase +import com.simplemobiletools.gallery.pro.dialogs.ChangeSortingDialog +import com.simplemobiletools.gallery.pro.dialogs.FilterMediaDialog +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao +import com.simplemobiletools.gallery.pro.interfaces.DirectoryOperationsListener +import com.simplemobiletools.gallery.pro.interfaces.MediumDao +import com.simplemobiletools.gallery.pro.models.AlbumCover +import com.simplemobiletools.gallery.pro.models.Directory +import com.simplemobiletools.gallery.pro.models.Medium import kotlinx.android.synthetic.main.activity_main.* import java.io.* import java.util.* @@ -117,7 +117,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { showFilterMediaDialog() } - mIsPasswordProtectionPending = config.appPasswordProtectionOn + mIsPasswordProtectionPending = config.isAppPasswordProtectionOn setupLatestMediaId() // notify some users about the Clock app @@ -664,14 +664,22 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (resultCode == Activity.RESULT_OK) { if (requestCode == PICK_MEDIA && resultData != null) { val resultIntent = Intent() + var resultUri: Uri? = null if (mIsThirdPartyIntent) { when { - intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> fillExtraOutput(resultData) + intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true -> { + resultUri = fillExtraOutput(resultData) + } resultData.extras?.containsKey(PICKED_PATHS) == true -> fillPickedPaths(resultData, resultIntent) else -> fillIntentPath(resultData, resultIntent) } } + if (resultUri != null) { + resultIntent.data = resultUri + resultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } + setResult(Activity.RESULT_OK, resultIntent) finish() } else if (requestCode == PICK_WALLPAPER) { @@ -682,22 +690,25 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { super.onActivityResult(requestCode, resultCode, resultData) } - private fun fillExtraOutput(resultData: Intent) { - val path = resultData.data.path + private fun fillExtraOutput(resultData: Intent): Uri? { + val file = File(resultData.data.path) var inputStream: InputStream? = null var outputStream: OutputStream? = null try { val output = intent.extras.get(MediaStore.EXTRA_OUTPUT) as Uri - inputStream = FileInputStream(File(path)) + inputStream = FileInputStream(file) outputStream = contentResolver.openOutputStream(output) inputStream.copyTo(outputStream) } catch (e: SecurityException) { showErrorToast(e) } catch (ignored: FileNotFoundException) { + return getFilePublicUri(file, BuildConfig.APPLICATION_ID) } finally { inputStream?.close() outputStream?.close() } + + return null } private fun fillPickedPaths(resultData: Intent, resultIntent: Intent) { @@ -1228,6 +1239,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { add(Release(184, R.string.release_184)) add(Release(201, R.string.release_201)) add(Release(202, R.string.release_202)) + add(Release(206, R.string.release_206)) checkWhatsNew(this, BuildConfig.VERSION_CODE) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt index 0d37b2013..4dca15ec7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.app.Activity import android.app.SearchManager @@ -31,21 +31,21 @@ import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.views.MyGridLayoutManager import com.simplemobiletools.commons.views.MyRecyclerView -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.MediaAdapter -import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask -import com.simplemobiletools.gallery.dialogs.ChangeGroupingDialog -import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog -import com.simplemobiletools.gallery.dialogs.ExcludeFolderDialog -import com.simplemobiletools.gallery.dialogs.FilterMediaDialog -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.interfaces.DirectoryDao -import com.simplemobiletools.gallery.interfaces.MediaOperationsListener -import com.simplemobiletools.gallery.interfaces.MediumDao -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem -import com.simplemobiletools.gallery.models.ThumbnailSection +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.MediaAdapter +import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.dialogs.ChangeGroupingDialog +import com.simplemobiletools.gallery.pro.dialogs.ChangeSortingDialog +import com.simplemobiletools.gallery.pro.dialogs.ExcludeFolderDialog +import com.simplemobiletools.gallery.pro.dialogs.FilterMediaDialog +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao +import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener +import com.simplemobiletools.gallery.pro.interfaces.MediumDao +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.models.ThumbnailSection import kotlinx.android.synthetic.main.activity_media.* import java.io.File import java.io.IOException @@ -249,6 +249,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden() R.id.increase_column_count -> increaseColumnCount() R.id.reduce_column_count -> reduceColumnCount() + R.id.slideshow -> startSlideshow() R.id.settings -> launchSettings() R.id.about -> launchAbout() else -> return super.onOptionsItemSelected(item) @@ -256,6 +257,19 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { return true } + private fun startSlideshow() { + if (mMedia.isNotEmpty()) { + Intent(this, ViewPagerActivity::class.java).apply { + val item = mMedia.firstOrNull { it is Medium } as? Medium + ?: return + putExtra(PATH, item.path) + putExtra(SHOW_ALL, mShowAll) + putExtra(SLIDESHOW_START_ON_ENTER, true) + startActivity(this) + } + } + } + private fun storeStateVariables() { config.apply { mStoredAnimateGifs = animateGifs @@ -838,7 +852,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { return } - if (config.useRecycleBin && !filtered.first().path.startsWith(filesDir.absolutePath)) { + if (config.useRecycleBin && !filtered.first().path.startsWith(recycleBinPath)) { val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) toast(movingItems) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaPhotoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaPhotoActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt index a1dfb2664..0af37fd0b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaPhotoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaPhotoActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.content.res.Configuration import android.graphics.Bitmap @@ -17,9 +17,9 @@ import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.isPiePlus -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.PATH +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.PATH import kotlinx.android.synthetic.main.activity_panorama_photo.* open class PanoramaPhotoActivity : SimpleActivity() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaVideoActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt index 3e65534ff..7518add3c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PanoramaVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PanoramaVideoActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.content.res.Configuration import android.graphics.Color @@ -19,12 +19,12 @@ import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.isPiePlus -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.HIDE_PLAY_PAUSE_DELAY -import com.simplemobiletools.gallery.helpers.MIN_SKIP_LENGTH -import com.simplemobiletools.gallery.helpers.PATH -import com.simplemobiletools.gallery.helpers.PLAY_PAUSE_VISIBLE_ALPHA +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.HIDE_PLAY_PAUSE_DELAY +import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH +import com.simplemobiletools.gallery.pro.helpers.PATH +import com.simplemobiletools.gallery.pro.helpers.PLAY_PAUSE_VISIBLE_ALPHA import kotlinx.android.synthetic.main.activity_panorama_video.* import kotlinx.android.synthetic.main.bottom_video_time_holder.* import java.io.File diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoActivity.kt similarity index 79% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoActivity.kt index 44e83dbfd..95c439d3a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.os.Bundle diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt similarity index 82% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt index 5a2cafd4b..7199811e9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.content.Intent import android.content.res.Configuration @@ -9,18 +9,20 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View +import android.view.WindowManager import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.IS_FROM_GALLERY import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.REAL_FILE_PATH -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.fragments.PhotoFragment -import com.simplemobiletools.gallery.fragments.VideoFragment -import com.simplemobiletools.gallery.fragments.ViewPagerFragment -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.commons.helpers.isPiePlus +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.fragments.PhotoFragment +import com.simplemobiletools.gallery.pro.fragments.VideoFragment +import com.simplemobiletools.gallery.pro.fragments.ViewPagerFragment +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium import kotlinx.android.synthetic.main.bottom_actions.* import kotlinx.android.synthetic.main.fragment_holder.* import java.io.File @@ -60,22 +62,31 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList private fun checkIntent(savedInstanceState: Bundle? = null) { mUri = intent.data ?: return + var filename = getFilenameFromUri(mUri!!) if (intent.extras?.containsKey(REAL_FILE_PATH) == true) { val realPath = intent.extras.getString(REAL_FILE_PATH) - sendViewPagerIntent(realPath) - finish() - return + if (realPath != null) { + if (realPath.getFilenameFromPath().contains('.') || filename.contains('.')) { + sendViewPagerIntent(realPath) + finish() + return + } else { + filename = realPath.getFilenameFromPath() + } + } } mIsFromGallery = intent.getBooleanExtra(IS_FROM_GALLERY, false) if (mUri!!.scheme == "file") { - scanPathRecursively(mUri!!.path) - sendViewPagerIntent(mUri!!.path) - finish() - return + if (filename.contains('.')) { + scanPathRecursively(mUri!!.path) + sendViewPagerIntent(mUri!!.path) + finish() + return + } } else { val path = applicationContext.getRealPathFromURI(mUri!!) ?: "" - if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms") { + if (path != mUri.toString() && path.isNotEmpty() && mUri!!.authority != "mms" && filename.contains('.')) { scanPathRecursively(mUri!!.path) sendViewPagerIntent(path) finish() @@ -83,10 +94,14 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } } + if (isPiePlus()) { + window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + } + showSystemUI(true) val bundle = Bundle() val file = File(mUri.toString()) - val filename = getFilenameFromUri(mUri!!) val type = when { filename.isVideoFast() -> TYPE_VIDEOS filename.isGif() -> TYPE_GIFS @@ -95,6 +110,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList else -> TYPE_IMAGES } + mIsVideo = type == TYPE_VIDEOS mMedium = Medium(null, filename, mUri.toString(), mUri!!.path.getParentPath(), 0, 0, file.length(), type, false, 0L) supportActionBar?.title = mMedium!!.name bundle.putSerializable(MEDIUM, mMedium) @@ -181,7 +197,8 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } private fun initBottomActionButtons() { - arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, bottom_toggle_file_visibility).forEach { + arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, + bottom_toggle_file_visibility, bottom_rename).forEach { it.beGone() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt similarity index 98% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt index 8fd8dcfb5..946e0176f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.annotation.SuppressLint import android.app.Activity @@ -13,7 +13,7 @@ import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.isNougatPlus import com.simplemobiletools.commons.models.RadioItem -import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.pro.R import com.theartofdev.edmodo.cropper.CropImageView import kotlinx.android.synthetic.main.activity_set_wallpaper.* import kotlinx.android.synthetic.main.bottom_set_wallpaper_actions.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt similarity index 81% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt index f58789dd1..71a424365 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt @@ -1,7 +1,6 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.content.Intent -import android.content.res.Resources import android.os.Bundle import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog @@ -11,40 +10,37 @@ import com.simplemobiletools.commons.helpers.PROTECTION_FINGERPRINT import com.simplemobiletools.commons.helpers.SHOW_ALL_TABS import com.simplemobiletools.commons.helpers.sumByLong import com.simplemobiletools.commons.models.RadioItem -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.dialogs.ManageBottomActionsDialog -import com.simplemobiletools.gallery.dialogs.ManageExtendedDetailsDialog -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.extensions.emptyTheRecycleBin -import com.simplemobiletools.gallery.extensions.galleryDB -import com.simplemobiletools.gallery.extensions.showRecycleBinEmptyingDialog -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.dialogs.ManageBottomActionsDialog +import com.simplemobiletools.gallery.pro.dialogs.ManageExtendedDetailsDialog +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.emptyTheRecycleBin +import com.simplemobiletools.gallery.pro.extensions.galleryDB +import com.simplemobiletools.gallery.pro.extensions.showRecycleBinEmptyingDialog +import com.simplemobiletools.gallery.pro.helpers.* import kotlinx.android.synthetic.main.activity_settings.* import java.util.* class SettingsActivity : SimpleActivity() { - lateinit var res: Resources private var mRecycleBinContentSize = 0L override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_settings) - res = resources } override fun onResume() { super.onResume() - setupPurchaseThankYou() setupCustomizeColors() setupUseEnglish() - setupAvoidWhatsNew() setupManageIncludedFolders() setupManageExcludedFolders() setupManageHiddenFolders() setupShowHiddenItems() setupDoExtraCheck() setupAutoplayVideos() + setupRememberLastVideo() setupLoopVideos() setupAnimateGifs() setupMaxBrightness() @@ -53,8 +49,9 @@ class SettingsActivity : SimpleActivity() { setupScrollHorizontally() setupScreenRotation() setupHideSystemUI() - setupPasswordProtection() + setupHiddenItemPasswordProtection() setupAppPasswordProtection() + setupFileDeletionPasswordProtection() setupDeleteEmptyFolders() setupAllowPhotoGestures() setupAllowVideoGestures() @@ -89,13 +86,6 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupPurchaseThankYou() { - settings_purchase_thank_you_holder.beVisibleIf(config.appRunCount > 10 && !isThankYouInstalled()) - settings_purchase_thank_you_holder.setOnClickListener { - launchPurchaseThankYouIntent() - } - } - private fun setupCustomizeColors() { settings_customize_colors_holder.setOnClickListener { startCustomizationActivity() @@ -112,14 +102,6 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupAvoidWhatsNew() { - settings_avoid_whats_new.isChecked = config.avoidWhatsNew - settings_avoid_whats_new_holder.setOnClickListener { - settings_avoid_whats_new.toggle() - config.avoidWhatsNew = settings_avoid_whats_new.isChecked - } - } - private fun setupManageIncludedFolders() { settings_manage_included_folders_holder.setOnClickListener { startActivity(Intent(this, IncludedFoldersActivity::class.java)) @@ -174,6 +156,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupRememberLastVideo() { + settings_remember_last_video_position.isChecked = config.rememberLastVideoPosition + settings_remember_last_video_position_holder.setOnClickListener { + settings_remember_last_video_position.toggle() + config.rememberLastVideoPosition = settings_remember_last_video_position.isChecked + } + } + private fun setupLoopVideos() { settings_loop_videos.isChecked = config.loopVideos settings_loop_videos_holder.setOnClickListener { @@ -235,20 +225,20 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupPasswordProtection() { - settings_password_protection.isChecked = config.isPasswordProtectionOn - settings_password_protection_holder.setOnClickListener { - val tabToShow = if (config.isPasswordProtectionOn) config.protectionType else SHOW_ALL_TABS - SecurityDialog(this, config.passwordHash, tabToShow) { hash, type, success -> + private fun setupHiddenItemPasswordProtection() { + settings_hidden_item_password_protection.isChecked = config.isHiddenPasswordProtectionOn + settings_hidden_item_password_protection_holder.setOnClickListener { + val tabToShow = if (config.isHiddenPasswordProtectionOn) config.hiddenProtectionType else SHOW_ALL_TABS + SecurityDialog(this, config.hiddenPasswordHash, tabToShow) { hash, type, success -> if (success) { - val hasPasswordProtection = config.isPasswordProtectionOn - settings_password_protection.isChecked = !hasPasswordProtection - config.isPasswordProtectionOn = !hasPasswordProtection - config.passwordHash = if (hasPasswordProtection) "" else hash - config.protectionType = type + val hasPasswordProtection = config.isHiddenPasswordProtectionOn + settings_hidden_item_password_protection.isChecked = !hasPasswordProtection + config.isHiddenPasswordProtectionOn = !hasPasswordProtection + config.hiddenPasswordHash = if (hasPasswordProtection) "" else hash + config.hiddenProtectionType = type - if (config.isPasswordProtectionOn) { - val confirmationTextId = if (config.protectionType == PROTECTION_FINGERPRINT) + if (config.isHiddenPasswordProtectionOn) { + val confirmationTextId = if (config.hiddenProtectionType == PROTECTION_FINGERPRINT) R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } } @@ -258,18 +248,18 @@ class SettingsActivity : SimpleActivity() { } private fun setupAppPasswordProtection() { - settings_app_password_protection.isChecked = config.appPasswordProtectionOn + settings_app_password_protection.isChecked = config.isAppPasswordProtectionOn settings_app_password_protection_holder.setOnClickListener { - val tabToShow = if (config.appPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS + val tabToShow = if (config.isAppPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS SecurityDialog(this, config.appPasswordHash, tabToShow) { hash, type, success -> if (success) { - val hasPasswordProtection = config.appPasswordProtectionOn + val hasPasswordProtection = config.isAppPasswordProtectionOn settings_app_password_protection.isChecked = !hasPasswordProtection - config.appPasswordProtectionOn = !hasPasswordProtection + config.isAppPasswordProtectionOn = !hasPasswordProtection config.appPasswordHash = if (hasPasswordProtection) "" else hash config.appProtectionType = type - if (config.appPasswordProtectionOn) { + if (config.isAppPasswordProtectionOn) { val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT) R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } @@ -279,6 +269,28 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupFileDeletionPasswordProtection() { + settings_file_deletion_password_protection.isChecked = config.isDeletePasswordProtectionOn + settings_file_deletion_password_protection_holder.setOnClickListener { + val tabToShow = if (config.isDeletePasswordProtectionOn) config.deleteProtectionType else SHOW_ALL_TABS + SecurityDialog(this, config.deletePasswordHash, tabToShow) { hash, type, success -> + if (success) { + val hasPasswordProtection = config.isDeletePasswordProtectionOn + settings_file_deletion_password_protection.isChecked = !hasPasswordProtection + config.isDeletePasswordProtectionOn = !hasPasswordProtection + config.deletePasswordHash = if (hasPasswordProtection) "" else hash + config.deleteProtectionType = type + + if (config.isDeletePasswordProtectionOn) { + val confirmationTextId = if (config.deleteProtectionType == PROTECTION_FINGERPRINT) + R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully + ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { } + } + } + } + } + } + private fun setupDeleteEmptyFolders() { settings_delete_empty_folders.isChecked = config.deleteEmptyFolders settings_delete_empty_folders_holder.setOnClickListener { @@ -424,9 +436,9 @@ class SettingsActivity : SimpleActivity() { 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))) + RadioItem(ROTATE_BY_SYSTEM_SETTING, getString(R.string.screen_rotation_system_setting)), + RadioItem(ROTATE_BY_DEVICE_ROTATION, getString(R.string.screen_rotation_device_rotation)), + RadioItem(ROTATE_BY_ASPECT_RATIO, getString(R.string.screen_rotation_aspect_ratio))) RadioGroupDialog(this@SettingsActivity, items, config.screenRotation) { config.screenRotation = it as Int diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SimpleActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/SimpleActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt index 627ff7da9..603355ac0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SimpleActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SimpleActivity.kt @@ -1,7 +1,7 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import com.simplemobiletools.commons.activities.BaseSimpleActivity -import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.pro.R open class SimpleActivity : BaseSimpleActivity() { override fun getAppIconIDs() = arrayListOf( diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt similarity index 83% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/SplashActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt index a0d0c7acd..20c9c9387 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.content.Intent import com.simplemobiletools.commons.activities.BaseSplashActivity diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/VideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoActivity.kt similarity index 79% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/VideoActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoActivity.kt index 7ca92e902..78fa61955 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/VideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.os.Bundle diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 56cec98fb..55dc39a86 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.activities +package com.simplemobiletools.gallery.pro.activities import android.animation.Animator import android.animation.ValueAnimator @@ -25,6 +25,7 @@ import android.view.MenuItem import android.view.View import android.view.WindowManager import android.view.animation.DecelerateInterpolator +import android.widget.Toast import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.simplemobiletools.commons.dialogs.PropertiesDialog @@ -32,19 +33,19 @@ import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FileDirItem -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.MyPagerAdapter -import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask -import com.simplemobiletools.gallery.dialogs.DeleteWithRememberDialog -import com.simplemobiletools.gallery.dialogs.SaveAsDialog -import com.simplemobiletools.gallery.dialogs.SlideshowDialog -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.fragments.PhotoFragment -import com.simplemobiletools.gallery.fragments.VideoFragment -import com.simplemobiletools.gallery.fragments.ViewPagerFragment -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.MyPagerAdapter +import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.dialogs.DeleteWithRememberDialog +import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog +import com.simplemobiletools.gallery.pro.dialogs.SlideshowDialog +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.fragments.PhotoFragment +import com.simplemobiletools.gallery.pro.fragments.VideoFragment +import com.simplemobiletools.gallery.pro.fragments.ViewPagerFragment +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem import kotlinx.android.synthetic.main.activity_medium.* import kotlinx.android.synthetic.main.bottom_actions.* import java.io.File @@ -68,6 +69,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private var mSlideshowMoveBackwards = false private var mSlideshowMedia = mutableListOf() private var mAreSlideShowMediaVisible = false + private var mIsOrientationLocked = false private var mMediaFiles = ArrayList() @@ -154,6 +156,78 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_viewpager, menu) + val currentMedium = getCurrentMedium() ?: return true + currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) + val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 + + menu.apply { + findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 + findItem(R.id.menu_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0 + findItem(R.id.menu_properties).isVisible = visibleBottomActions and BOTTOM_ACTION_PROPERTIES == 0 + findItem(R.id.menu_delete).isVisible = visibleBottomActions and BOTTOM_ACTION_DELETE == 0 + findItem(R.id.menu_share).isVisible = visibleBottomActions and BOTTOM_ACTION_SHARE == 0 + findItem(R.id.menu_edit).isVisible = visibleBottomActions and BOTTOM_ACTION_EDIT == 0 && !currentMedium.isSVG() + findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 + findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 + findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 + findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() + findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 + findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 + findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) + findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 + findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) + findItem(R.id.menu_rotate).setShowAsAction( + if (mRotationDegrees != 0) { + MenuItem.SHOW_AS_ACTION_ALWAYS + } else { + MenuItem.SHOW_AS_ACTION_IF_ROOM + }) + } + + if (visibleBottomActions != 0) { + updateBottomActionIcons(currentMedium) + } + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (getCurrentMedium() == null) + return true + + when (item.itemId) { + R.id.menu_set_as -> setAs(getCurrentPath()) + R.id.menu_slideshow -> initSlideshow() + R.id.menu_copy_to -> copyMoveTo(true) + R.id.menu_move_to -> moveFileTo() + R.id.menu_open_with -> openPath(getCurrentPath(), true) + R.id.menu_hide -> toggleFileVisibility(true) + R.id.menu_unhide -> toggleFileVisibility(false) + R.id.menu_share -> shareMediumPath(getCurrentPath()) + R.id.menu_delete -> checkDeleteConfirmation() + R.id.menu_rename -> renameFile() + R.id.menu_edit -> openEditor(getCurrentPath()) + R.id.menu_properties -> showProperties() + R.id.menu_show_on_map -> showOnMap() + R.id.menu_rotate_right -> rotateImage(90) + R.id.menu_rotate_left -> rotateImage(270) + R.id.menu_rotate_one_eighty -> rotateImage(180) + R.id.menu_add_to_favorites -> toggleFavorite() + R.id.menu_remove_from_favorites -> toggleFavorite() + R.id.menu_restore_file -> restoreFile() + R.id.menu_force_portrait -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) + R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) + R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) + R.id.menu_save_as -> saveImageAs() + R.id.menu_settings -> launchSettings() + else -> return super.onOptionsItemSelected(item) + } + return true + } + private fun initViewPager() { measureScreen() val uri = intent.data @@ -196,7 +270,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (intent.extras?.containsKey(IS_VIEW_INTENT) == true) { if (isShowHiddenFlagNeeded()) { - if (!config.isPasswordProtectionOn) { + if (!config.isHiddenPasswordProtectionOn) { config.temporarilyShowHidden = true } } @@ -222,6 +296,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (!isDestroyed) { if (mMediaFiles.isNotEmpty()) { gotMedia(mMediaFiles as ArrayList) + checkSlideshowOnEnter() } } } @@ -285,78 +360,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_viewpager, menu) - val currentMedium = getCurrentMedium() ?: return true - currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) - val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 - - menu.apply { - findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 - findItem(R.id.menu_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0 - findItem(R.id.menu_properties).isVisible = visibleBottomActions and BOTTOM_ACTION_PROPERTIES == 0 - findItem(R.id.menu_delete).isVisible = visibleBottomActions and BOTTOM_ACTION_DELETE == 0 - findItem(R.id.menu_share).isVisible = visibleBottomActions and BOTTOM_ACTION_SHARE == 0 - findItem(R.id.menu_edit).isVisible = visibleBottomActions and BOTTOM_ACTION_EDIT == 0 && !currentMedium.isSVG() - findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 - findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 - findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 - findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() - findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 - findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(filesDir.absolutePath) - findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 - findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) - findItem(R.id.menu_rotate).setShowAsAction( - if (mRotationDegrees != 0) { - MenuItem.SHOW_AS_ACTION_ALWAYS - } else { - MenuItem.SHOW_AS_ACTION_IF_ROOM - }) - } - - if (visibleBottomActions != 0) { - updateBottomActionIcons(currentMedium) - } - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (getCurrentMedium() == null) - return true - - when (item.itemId) { - R.id.menu_set_as -> setAs(getCurrentPath()) - R.id.menu_slideshow -> initSlideshow() - R.id.menu_copy_to -> copyMoveTo(true) - R.id.menu_move_to -> copyMoveTo(false) - R.id.menu_open_with -> openPath(getCurrentPath(), true) - R.id.menu_hide -> toggleFileVisibility(true) - R.id.menu_unhide -> toggleFileVisibility(false) - R.id.menu_share -> shareMediumPath(getCurrentPath()) - R.id.menu_delete -> checkDeleteConfirmation() - R.id.menu_rename -> renameFile() - R.id.menu_edit -> openEditor(getCurrentPath()) - R.id.menu_properties -> showProperties() - R.id.menu_show_on_map -> showOnMap() - R.id.menu_rotate_right -> rotateImage(90) - R.id.menu_rotate_left -> rotateImage(270) - R.id.menu_rotate_one_eighty -> rotateImage(180) - R.id.menu_add_to_favorites -> toggleFavorite() - R.id.menu_remove_from_favorites -> toggleFavorite() - R.id.menu_restore_file -> restoreFile() - R.id.menu_force_portrait -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - R.id.menu_force_landscape -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) - R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) - R.id.menu_save_as -> saveImageAs() - R.id.menu_settings -> launchSettings() - else -> return super.onOptionsItemSelected(item) - } - return true - } - private fun updatePagerItems(media: MutableList) { val pagerAdapter = MyPagerAdapter(this, supportFragmentManager, media) if (!isDestroyed) { @@ -369,6 +372,12 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun checkSlideshowOnEnter() { + if (intent.getBooleanExtra(SLIDESHOW_START_ON_ENTER, false)) { + initSlideshow() + } + } + private fun initSlideshow() { SlideshowDialog(this) { startSlideshow() @@ -444,9 +453,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun slideshowEnded(forward: Boolean) { if (config.loopSlideshow) { if (forward) { - view_pager.setCurrentItem(view_pager.adapter!!.count - 1, false) - } else { view_pager.setCurrentItem(0, false) + } else { + view_pager.setCurrentItem(view_pager.adapter!!.count - 1, false) } } else { stopSlideshow() @@ -514,8 +523,19 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun moveFileTo() { + handleDeletePasswordProtection { + copyMoveTo(false) + } + } + private fun copyMoveTo(isCopyOperation: Boolean) { val currPath = getCurrentPath() + if (!isCopyOperation && currPath.startsWith(recycleBinPath)) { + toast(R.string.moving_recycle_bin_items_disabled, Toast.LENGTH_LONG) + return + } + val fileDirItems = arrayListOf(FileDirItem(currPath, currPath.getFilenameFromPath())) tryCopyMoveFilesTo(fileDirItems, isCopyOperation) { config.tempFolderPath = "" @@ -586,7 +606,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } - val tmpPath = "${filesDir.absolutePath}/.tmp_${newPath.getFilenameFromPath()}" + val tmpPath = "$recycleBinPath/.tmp_${newPath.getFilenameFromPath()}" val tmpFileDirItem = FileDirItem(tmpPath, tmpPath.getFilenameFromPath()) try { getFileOutputStream(tmpFileDirItem) { @@ -904,7 +924,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View return } - if (config.tempSkipDeleteConfirmation || config.skipDeleteConfirmation) { + if (config.isDeletePasswordProtectionOn) { + handleDeletePasswordProtection { + deleteConfirmed() + } + } else if (config.tempSkipDeleteConfirmation || config.skipDeleteConfirmation) { deleteConfirmed() } else { askConfirmDelete() @@ -990,7 +1014,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun gotMedia(thumbnailItems: ArrayList) { - val media = thumbnailItems.filter { it is Medium }.map { it as Medium } as ArrayList + val media = thumbnailItems.asSequence().filter { it is Medium }.map { it as Medium }.toMutableList() as ArrayList if (isDirEmpty(media) || media.hashCode() == mPrevHashcode) { return } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index b40908788..30c358160 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.adapters +package com.simplemobiletools.gallery.pro.adapters import android.view.Menu import android.view.View @@ -16,14 +16,14 @@ import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.dialogs.ExcludeFolderDialog -import com.simplemobiletools.gallery.dialogs.PickMediumDialog -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.interfaces.DirectoryOperationsListener -import com.simplemobiletools.gallery.models.AlbumCover -import com.simplemobiletools.gallery.models.Directory +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.dialogs.ExcludeFolderDialog +import com.simplemobiletools.gallery.pro.dialogs.PickMediumDialog +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.interfaces.DirectoryOperationsListener +import com.simplemobiletools.gallery.pro.models.AlbumCover +import com.simplemobiletools.gallery.pro.models.Directory import kotlinx.android.synthetic.main.directory_item_list.view.* import java.io.File @@ -96,7 +96,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList toggleFoldersVisibility(false) R.id.cab_exclude -> tryExcludeFolder() R.id.cab_copy_to -> copyMoveTo(true) - R.id.cab_move_to -> copyMoveTo(false) + R.id.cab_move_to -> moveFilesTo() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() R.id.cab_select_photo -> changeAlbumCover(false) @@ -310,6 +310,12 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList() val showHidden = activity.config.shouldShowHidden @@ -343,24 +349,28 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList activity.handleDeletePasswordProtection { deleteFolders() } + config.skipDeleteConfirmation -> deleteFolders() + else -> { + val itemsCnt = selectedKeys.size + val items = resources.getQuantityString(R.plurals.delete_items, itemsCnt, itemsCnt) + val fileDirItem = getFirstSelectedItem() ?: return + val baseString = if (!config.useRecycleBin || (isOneItemSelected() && fileDirItem.isRecycleBin()) || (isOneItemSelected() && fileDirItem.areFavorites())) { + R.string.deletion_confirmation + } else { + R.string.move_to_recycle_bin_confirmation + } + + var question = String.format(resources.getString(baseString), items) + val warning = resources.getQuantityString(R.plurals.delete_warning, itemsCnt, itemsCnt) + question += "\n\n$warning" + ConfirmationDialog(activity, question) { + deleteFolders() + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/FiltersAdapter.kt similarity index 92% rename from app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/FiltersAdapter.kt index db8aa9c7d..b614787b8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/FiltersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/FiltersAdapter.kt @@ -1,12 +1,12 @@ -package com.simplemobiletools.gallery.adapters +package com.simplemobiletools.gallery.pro.adapters import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.models.FilterItem +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.models.FilterItem import kotlinx.android.synthetic.main.editor_filter_item.view.* import java.util.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageFoldersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageFoldersAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt index 592c00d79..ed6b8a1c4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageFoldersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.adapters +package com.simplemobiletools.gallery.pro.adapters import android.view.Menu import android.view.View @@ -7,8 +7,8 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter 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.pro.R +import com.simplemobiletools.gallery.pro.extensions.config import kotlinx.android.synthetic.main.item_manage_folder.view.* import java.util.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageHiddenFoldersAdapter.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageHiddenFoldersAdapter.kt index 95e2c053f..209ce1e40 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/ManageHiddenFoldersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageHiddenFoldersAdapter.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.adapters +package com.simplemobiletools.gallery.pro.adapters import android.view.Menu import android.view.View @@ -8,9 +8,9 @@ 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 com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.removeNoMedia import kotlinx.android.synthetic.main.item_manage_folder.view.* import java.util.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index 52d40caf8..df1cb2e51 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.adapters +package com.simplemobiletools.gallery.pro.adapters import android.content.ContentProviderOperation import android.media.ExifInterface @@ -8,6 +8,7 @@ import android.provider.MediaStore import android.view.Menu import android.view.View import android.view.ViewGroup +import android.widget.Toast import com.bumptech.glide.Glide import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter @@ -19,14 +20,14 @@ import com.simplemobiletools.commons.helpers.OTG_PATH import com.simplemobiletools.commons.models.FileDirItem 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.interfaces.MediaOperationsListener -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem -import com.simplemobiletools.gallery.models.ThumbnailSection +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.dialogs.DeleteWithRememberDialog +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_LIST +import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.models.ThumbnailSection import kotlinx.android.synthetic.main.photo_video_item_grid.view.* import kotlinx.android.synthetic.main.thumbnail_section.view.* import java.text.SimpleDateFormat @@ -81,7 +82,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList if (tmbItem is Medium) { setupThumbnail(itemView, tmbItem) @@ -115,7 +116,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList restoreFiles() R.id.cab_share -> shareMedia() R.id.cab_copy_to -> copyMoveTo(true) - R.id.cab_move_to -> copyMoveTo(false) + R.id.cab_move_to -> moveFilesTo() R.id.cab_select_all -> selectAll() R.id.cab_open_with -> openPath() R.id.cab_fix_date_taken -> fixDateTaken() @@ -274,12 +275,27 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList) : FragmentStatePagerAdapter(fm) { private val fragments = HashMap() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetMediaAsynctask.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt similarity index 76% rename from app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetMediaAsynctask.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt index 26004f645..d33bf5335 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/asynctasks/GetMediaAsynctask.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/asynctasks/GetMediaAsynctask.kt @@ -1,16 +1,16 @@ -package com.simplemobiletools.gallery.asynctasks +package com.simplemobiletools.gallery.pro.asynctasks import android.content.Context import android.os.AsyncTask import com.simplemobiletools.commons.helpers.SORT_BY_DATE_TAKEN -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.extensions.getFavoritePaths -import com.simplemobiletools.gallery.helpers.FAVORITES -import com.simplemobiletools.gallery.helpers.MediaFetcher -import com.simplemobiletools.gallery.helpers.RECYCLE_BIN -import com.simplemobiletools.gallery.helpers.SHOW_ALL -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.getFavoritePaths +import com.simplemobiletools.gallery.pro.helpers.FAVORITES +import com.simplemobiletools.gallery.pro.helpers.MediaFetcher +import com.simplemobiletools.gallery.pro.helpers.RECYCLE_BIN +import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem import java.util.* class GetMediaAsynctask(val context: Context, val mPath: String, val isPickImage: Boolean = false, val isPickVideo: Boolean = false, diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt similarity index 76% rename from app/src/main/kotlin/com/simplemobiletools/gallery/databases/GalleryDatabase.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index 104a250cf..54c3b1d0f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -1,14 +1,14 @@ -package com.simplemobiletools.gallery.databases +package com.simplemobiletools.gallery.pro.databases import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase -import com.simplemobiletools.gallery.objects.MyExecutor -import com.simplemobiletools.gallery.interfaces.DirectoryDao -import com.simplemobiletools.gallery.interfaces.MediumDao -import com.simplemobiletools.gallery.models.Directory -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.objects.MyExecutor +import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao +import com.simplemobiletools.gallery.pro.interfaces.MediumDao +import com.simplemobiletools.gallery.pro.models.Directory +import com.simplemobiletools.gallery.pro.models.Medium @Database(entities = [(Directory::class), (Medium::class)], version = 4) abstract class GalleryDatabase : RoomDatabase() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeGroupingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeGroupingDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt index 614759165..90d1bdf6c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeGroupingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeGroupingDialog.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import android.content.DialogInterface import android.view.View @@ -6,9 +6,9 @@ import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.* import kotlinx.android.synthetic.main.dialog_change_grouping.view.* class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = "", val callback: () -> Unit) : diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt index aebce7915..5dfbe80cb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ChangeSortingDialog.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import android.content.DialogInterface import android.view.View @@ -7,9 +7,9 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.* -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.SHOW_ALL +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL import kotlinx.android.synthetic.main.dialog_change_sorting.view.* class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorting: Boolean, showFolderCheckbox: Boolean, diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/DeleteWithRememberDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/DeleteWithRememberDialog.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/DeleteWithRememberDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/DeleteWithRememberDialog.kt index ab702845b..c570820b8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/DeleteWithRememberDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/DeleteWithRememberDialog.kt @@ -1,9 +1,9 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import android.app.Activity import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.pro.R import kotlinx.android.synthetic.main.dialog_delete_with_remember.view.* class DeleteWithRememberDialog(val activity: Activity, val message: String, val callback: (remember: Boolean) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ExcludeFolderDialog.kt similarity index 88% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ExcludeFolderDialog.kt index 6cb546a04..8575f75a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ExcludeFolderDialog.kt @@ -1,15 +1,15 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs -import androidx.appcompat.app.AlertDialog import android.view.ViewGroup import android.widget.RadioButton import android.widget.RadioGroup +import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getBasePath import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config import kotlinx.android.synthetic.main.dialog_exclude_folder.view.* class ExcludeFolderDialog(val activity: BaseSimpleActivity, val selectedPaths: List, val callback: () -> Unit) { @@ -34,11 +34,11 @@ class ExcludeFolderDialog(val activity: BaseSimpleActivity, val selectedPaths: L } AlertDialog.Builder(activity) - .setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() }) + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } .setNegativeButton(R.string.cancel, null) .create().apply { - activity.setupDialogStuff(view, this) - } + activity.setupDialogStuff(view, this) + } } private fun dialogConfirmed() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt similarity index 89% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt index 4d5387c58..0802d5c67 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.* import kotlinx.android.synthetic.main.dialog_filter_media.view.* class FilterMediaDialog(val activity: BaseSimpleActivity, val callback: (result: Int) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageBottomActionsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageBottomActionsDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt index 42b99ee2c..94a16c3be 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageBottomActionsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.* import kotlinx.android.synthetic.main.dialog_manage_bottom_actions.view.* class ManageBottomActionsDialog(val activity: BaseSimpleActivity, val callback: (result: Int) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageExtendedDetailsDialog.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageExtendedDetailsDialog.kt index 8ee6eb1d8..e1d6dbf18 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageExtendedDetailsDialog.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.* import kotlinx.android.synthetic.main.dialog_manage_extended_details.view.* class ManageExtendedDetailsDialog(val activity: BaseSimpleActivity, val callback: (result: Int) -> Unit) { @@ -31,8 +31,8 @@ class ManageExtendedDetailsDialog(val activity: BaseSimpleActivity, val callback .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } .setNegativeButton(R.string.cancel, null) .create().apply { - activity.setupDialogStuff(view, this) - } + activity.setupDialogStuff(view, this) + } } private fun dialogConfirmed() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt similarity index 88% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt index dae7ed654..3bf2aa3d4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.RecyclerView @@ -6,14 +6,14 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.views.MyGridLayoutManager -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.DirectoryAdapter -import com.simplemobiletools.gallery.extensions.addTempFolderIfNeeded -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.extensions.getCachedDirectories -import com.simplemobiletools.gallery.extensions.getSortedDirectories -import com.simplemobiletools.gallery.helpers.VIEW_TYPE_GRID -import com.simplemobiletools.gallery.models.Directory +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.DirectoryAdapter +import com.simplemobiletools.gallery.pro.extensions.addTempFolderIfNeeded +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.getCachedDirectories +import com.simplemobiletools.gallery.pro.extensions.getSortedDirectories +import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID +import com.simplemobiletools.gallery.pro.models.Directory import kotlinx.android.synthetic.main.dialog_directory_picker.view.* class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: String, val callback: (path: String) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt similarity index 86% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt index 056603a3a..ae5675356 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.RecyclerView @@ -7,15 +7,15 @@ import com.simplemobiletools.commons.extensions.beGoneIf import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.views.MyGridLayoutManager -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.adapters.MediaAdapter -import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.extensions.getCachedMedia -import com.simplemobiletools.gallery.helpers.SHOW_ALL -import com.simplemobiletools.gallery.helpers.VIEW_TYPE_GRID -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.adapters.MediaAdapter +import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.getCachedMedia +import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL +import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem import kotlinx.android.synthetic.main.dialog_medium_picker.view.* class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val callback: (path: String) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeDialog.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeDialog.kt index e34ead6c6..c7c10050e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeDialog.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import android.graphics.Point import android.widget.EditText import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.pro.R import kotlinx.android.synthetic.main.resize_image.view.* class ResizeDialog(val activity: BaseSimpleActivity, val size: Point, val callback: (newSize: Point) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt similarity index 97% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt index 35dc95274..614fb7bfc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.gallery.R +import com.simplemobiletools.gallery.pro.R import kotlinx.android.synthetic.main.dialog_save_as.view.* class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appendFilename: Boolean, val callback: (savePath: String) -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt index 16e38f058..486b8886d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SlideshowDialog.kt @@ -1,14 +1,14 @@ -package com.simplemobiletools.gallery.dialogs +package com.simplemobiletools.gallery.pro.dialogs -import androidx.appcompat.app.AlertDialog import android.view.View +import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.hideKeyboard import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.toast -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.SLIDESHOW_DEFAULT_INTERVAL +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.SLIDESHOW_DEFAULT_INTERVAL import kotlinx.android.synthetic.main.dialog_slideshow.view.* class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt index d70cd507f..83f1bc600 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import android.app.Activity import android.content.Intent @@ -11,12 +11,12 @@ import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FAQItem import com.simplemobiletools.commons.models.FileDirItem -import com.simplemobiletools.gallery.BuildConfig -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.SimpleActivity -import com.simplemobiletools.gallery.dialogs.PickDirectoryDialog -import com.simplemobiletools.gallery.helpers.NOMEDIA -import com.simplemobiletools.gallery.interfaces.MediumDao +import com.simplemobiletools.gallery.pro.BuildConfig +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.SimpleActivity +import com.simplemobiletools.gallery.pro.dialogs.PickDirectoryDialog +import com.simplemobiletools.gallery.pro.helpers.NOMEDIA +import com.simplemobiletools.gallery.pro.interfaces.MediumDao import java.io.File import java.io.InputStream import java.io.OutputStream @@ -208,7 +208,7 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao var pathsCnt = paths.size paths.forEach { val file = File(it) - val internalFile = File(filesDir.absolutePath, it) + val internalFile = File(recycleBinPath, it) try { if (file.copyRecursively(internalFile, true)) { mediumDao.updateDeleted(it, System.currentTimeMillis()) @@ -229,7 +229,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa Thread { paths.forEach { val source = it - val destination = it.removePrefix(filesDir.absolutePath) + val destination = it.removePrefix(recycleBinPath) var inputStream: InputStream? = null var out: OutputStream? = null @@ -256,7 +256,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { Thread { - filesDir.deleteRecursively() + recycleBin.deleteRecursively() galleryDB.MediumDao().clearRecycleBin() galleryDB.DirectoryDao().deleteRecycleBin() toast(R.string.recycle_bin_emptied) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/ArrayList.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/ArrayList.kt similarity index 72% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/ArrayList.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/ArrayList.kt index b72d4cf52..27289c37f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/ArrayList.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/ArrayList.kt @@ -1,7 +1,7 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium fun ArrayList.getDirMediaTypes(): Int { var types = 0 diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt index 0a54abf6a..dfb74bc2f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import android.content.Context import android.content.Intent @@ -18,18 +18,18 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.bumptech.glide.request.RequestOptions import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.SettingsActivity -import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask -import com.simplemobiletools.gallery.databases.GalleryDatabase -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.interfaces.DirectoryDao -import com.simplemobiletools.gallery.interfaces.MediumDao -import com.simplemobiletools.gallery.models.Directory -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem -import com.simplemobiletools.gallery.svg.SvgSoftwareLayerSetter -import com.simplemobiletools.gallery.views.MySquareImageView +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.SettingsActivity +import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask +import com.simplemobiletools.gallery.pro.databases.GalleryDatabase +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao +import com.simplemobiletools.gallery.pro.interfaces.MediumDao +import com.simplemobiletools.gallery.pro.models.Directory +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter +import com.simplemobiletools.gallery.pro.views.MySquareImageView import pl.droidsonroids.gif.GifDrawable import java.io.File @@ -104,6 +104,10 @@ val Context.config: Config get() = Config.newInstance(applicationContext) val Context.galleryDB: GalleryDatabase get() = GalleryDatabase.getInstance(applicationContext) +val Context.recycleBin: File get() = filesDir + +val Context.recycleBinPath: String get() = filesDir.absolutePath + fun Context.movePinnedDirectoriesToFront(dirs: ArrayList): ArrayList { val foundFolders = ArrayList() val pinnedFolders = config.pinnedFolders @@ -430,7 +434,6 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag val grouped = mediaFetcher.groupMedia(media, pathToUse) callback(grouped.clone() as ArrayList) - val recycleBinPath = filesDir.absolutePath val mediaToDelete = ArrayList() media.filter { !getDoesFilePathExist(it.path) }.forEach { if (it.path.startsWith(recycleBinPath)) { @@ -470,7 +473,7 @@ fun Context.getFavoritePaths() = galleryDB.MediumDao().getFavoritePaths() as Arr fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { val media = mediumDao.getDeletedMedia() as ArrayList media.forEach { - it.path = File(filesDir.absolutePath, it.path).toString() + it.path = File(recycleBinPath, it.path).toString() } return media } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/File.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/File.kt similarity index 78% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/File.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/File.kt index 024a3ff63..90b02aac1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/File.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/File.kt @@ -1,6 +1,6 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions -import com.simplemobiletools.gallery.helpers.NOMEDIA +import com.simplemobiletools.gallery.pro.helpers.NOMEDIA import java.io.File fun File.containsNoMedia() = isDirectory && File(this, NOMEDIA).exists() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/FileDirItem.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt similarity index 81% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/FileDirItem.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt index b9f637574..726fcc8a9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/FileDirItem.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import android.os.Environment import com.simplemobiletools.commons.models.FileDirItem diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Resources.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Resources.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Resources.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Resources.kt index 73a56c5ba..d086fb7a5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Resources.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Resources.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import android.content.Context import android.content.res.Resources diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/String.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt index ad9a4ec58..4e5808a33 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/String.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import com.bumptech.glide.signature.ObjectKey import com.simplemobiletools.commons.helpers.OTG_PATH diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/View.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/View.kt similarity index 87% rename from app/src/main/kotlin/com/simplemobiletools/gallery/extensions/View.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/View.kt index cf1459c54..24107d2a2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/View.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/View.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.extensions +package com.simplemobiletools.gallery.pro.extensions import android.os.SystemClock import android.view.MotionEvent diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt index ed82b721c..0580e2a48 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.fragments +package com.simplemobiletools.gallery.pro.fragments import android.content.Intent import android.content.res.Configuration @@ -28,17 +28,17 @@ import com.davemorrissey.labs.subscaleview.ImageSource import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.OTG_PATH -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.PanoramaPhotoActivity -import com.simplemobiletools.gallery.activities.PhotoActivity -import com.simplemobiletools.gallery.activities.ViewPagerActivity -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.MEDIUM -import com.simplemobiletools.gallery.helpers.PATH -import com.simplemobiletools.gallery.helpers.PicassoDecoder -import com.simplemobiletools.gallery.helpers.PicassoRegionDecoder -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.svg.SvgSoftwareLayerSetter +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.PanoramaPhotoActivity +import com.simplemobiletools.gallery.pro.activities.PhotoActivity +import com.simplemobiletools.gallery.pro.activities.ViewPagerActivity +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.MEDIUM +import com.simplemobiletools.gallery.pro.helpers.PATH +import com.simplemobiletools.gallery.pro.helpers.PicassoDecoder +import com.simplemobiletools.gallery.pro.helpers.PicassoRegionDecoder +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter import com.squareup.picasso.Callback import com.squareup.picasso.Picasso import it.sephiroth.android.library.exif2.ExifInterface @@ -162,6 +162,7 @@ class PhotoFragment : ViewPagerFragment() { initExtendedDetails() wasInit = true checkIfPanorama() + updateInstantSwitchWidths() return view } @@ -542,6 +543,7 @@ class PhotoFragment : ViewPagerFragment() { } initExtendedDetails() + updateInstantSwitchWidths() } private fun hideZoomableView() { @@ -557,6 +559,12 @@ class PhotoFragment : ViewPagerFragment() { listener?.fragmentClicked() } + private fun updateInstantSwitchWidths() { + val newWidth = resources.getDimension(R.dimen.instant_change_bar_width) + if (activity?.portrait == false) activity!!.navigationBarWidth else 0 + view.instant_prev_item.layoutParams.width = newWidth.toInt() + view.instant_next_item.layoutParams.width = newWidth.toInt() + } + override fun fullscreenToggled(isFullscreen: Boolean) { this.isFullscreen = isFullscreen view.photo_details.apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt similarity index 75% rename from app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index b4a09d681..7618cdf9d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.fragments +package com.simplemobiletools.gallery.pro.fragments import android.content.Intent import android.content.res.Configuration @@ -26,24 +26,27 @@ import com.google.android.exoplayer2.upstream.DataSpec import com.google.android.exoplayer2.upstream.FileDataSource import com.google.android.exoplayer2.video.VideoListener import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.PanoramaVideoActivity -import com.simplemobiletools.gallery.activities.VideoActivity -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.views.MediaSideScroll +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.PanoramaVideoActivity +import com.simplemobiletools.gallery.pro.activities.VideoActivity +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.views.MediaSideScroll import kotlinx.android.synthetic.main.bottom_video_time_holder.view.* import kotlinx.android.synthetic.main.pager_video_item.view.* import java.io.File +import java.io.FileInputStream +import java.nio.ByteBuffer +import java.nio.channels.FileChannel class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, SeekBar.OnSeekBarChangeListener { private val PROGRESS = "progress" + private val FILE_CHANNEL_CONTAINERS = arrayListOf("moov", "trak", "mdia", "minf", "udta", "stbl") private var mTextureView: TextureView? = null private var mCurrTimeView: TextView? = null private var mSeekBar: SeekBar? = null - private var mView: View? = null private var mExoPlayer: SimpleExoPlayer? = null private var mVideoSize = Point(0, 0) private var mTimerHandler = Handler() @@ -56,6 +59,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mWasFragmentInit = false private var mIsExoPlayerInitialized = false private var mIsPanorama = false + private var mWasVideoStarted = false private var mCurrTime = 0 private var mDuration = 0 @@ -63,11 +67,15 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private var mStoredHideExtendedDetails = false private var mStoredBottomActions = true private var mStoredExtendedDetails = 0 + private var mStoredRememberLastVideoPosition = false + private var mStoredLastVideoPath = "" + private var mStoredLastVideoPosition = 0 private lateinit var mTimeHolder: View private lateinit var mBrightnessSideScroll: MediaSideScroll private lateinit var mVolumeSideScroll: MediaSideScroll + lateinit var mView: View lateinit var medium: Medium override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -103,7 +111,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S storeStateVariables() medium = arguments!!.getSerializable(MEDIUM) as Medium - Glide.with(context!!).load(medium.path).into(mView!!.video_preview) + Glide.with(context!!).load(medium.path).into(mView.video_preview) // setMenuVisibility is not called at VideoActivity (third party intent) if (!mIsFragmentVisible && activity is VideoActivity) { @@ -112,12 +120,13 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mIsFullscreen = activity!!.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN initTimeHolder() + checkIfPanorama() + medium.path.getVideoResolution()?.apply { mVideoSize.x = x mVideoSize.y = y - mIsPanorama = x == y * 2 if (mIsPanorama) { - mView!!.apply { + mView.apply { panorama_outline.beVisible() video_play_outline.beGone() mVolumeSideScroll.beGone() @@ -144,7 +153,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setVideoSize() } - mView!!.apply { + mView.apply { mBrightnessSideScroll.initialize(activity!!, slide_info, true, container) { x, y -> video_holder.performClick() } @@ -162,17 +171,22 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } setupVideoDuration() + if (mStoredRememberLastVideoPosition) { + setLastVideoSavedPosition() + } + + updateInstantSwitchWidths() return mView } override fun onResume() { super.onResume() - activity!!.updateTextColors(mView!!.video_holder) + activity!!.updateTextColors(mView.video_holder) val config = context!!.config val allowVideoGestures = config.allowVideoGestures val allowInstantChange = config.allowInstantChange - mView!!.apply { + mView.apply { video_volume_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) video_brightness_controller.beVisibleIf(allowVideoGestures && !mIsPanorama) @@ -195,6 +209,10 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onPause() { super.onPause() pauseVideo() + if (mStoredRememberLastVideoPosition && mIsFragmentVisible && mWasVideoStarted) { + saveVideoProgress() + } + storeStateVariables() } @@ -222,6 +240,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S setVideoSize() initTimeHolder() checkExtendedDetails() + updateInstantSwitchWidths() } private fun storeStateVariables() { @@ -230,6 +249,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mStoredHideExtendedDetails = hideExtendedDetails mStoredExtendedDetails = extendedDetails mStoredBottomActions = bottomActions + mStoredRememberLastVideoPosition = rememberLastVideoPosition + mStoredLastVideoPath = lastVideoPath + mStoredLastVideoPosition = lastVideoPosition } } @@ -237,15 +259,27 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S if (activity == null) return - mView!!.video_play_outline.setOnClickListener { togglePlayPause() } + mView.video_play_outline.setOnClickListener { togglePlayPause() } - mTextureView = mView!!.video_surface + mTextureView = mView.video_surface mTextureView!!.setOnClickListener { toggleFullscreen() } mTextureView!!.surfaceTextureListener = this checkExtendedDetails() } + private fun saveVideoProgress() { + if (!videoEnded()) { + mStoredLastVideoPosition = mExoPlayer!!.currentPosition.toInt() / 1000 + mStoredLastVideoPath = medium.path + } + + context!!.config.apply { + lastVideoPosition = mStoredLastVideoPosition + lastVideoPath = mStoredLastVideoPath + } + } + private fun initExoPlayer() { val isContentUri = medium.path.startsWith("content://") val uri = if (isContentUri) Uri.parse(medium.path) else Uri.fromFile(File(medium.path)) @@ -309,15 +343,20 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S listener?.fragmentClicked() } + private fun setLastVideoSavedPosition() { + if (mStoredLastVideoPath == medium.path && mStoredLastVideoPosition > 0) { + setPosition(mStoredLastVideoPosition) + } + } + private fun initTimeHolder() { - val res = resources val left = 0 val top = 0 var right = 0 var bottom = 0 if (hasNavBar()) { - if (res.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { + if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { bottom += context!!.navigationBarHeight } else { right += context!!.navigationBarWidth @@ -331,7 +370,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mTimeHolder.setPadding(left, top, right, bottom) - mSeekBar = mView!!.video_seekbar + mSeekBar = mView.video_seekbar mSeekBar!!.setOnSeekBarChangeListener(this) mTimeHolder.beInvisibleIf(mIsFullscreen) } @@ -356,7 +395,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun setupTimeHolder() { mSeekBar!!.max = mDuration - mView!!.video_duration.text = mDuration.getFormattedDuration() + mView.video_duration.text = mDuration.getFormattedDuration() setupTimer() } @@ -417,21 +456,36 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S return } - if (mView!!.video_preview.isVisible()) { - mView!!.video_preview.beGone() + if (mView.video_preview.isVisible()) { + mView.video_preview.beGone() initExoPlayer() } - if (videoEnded()) { - setProgress(0) + val wasEnded = videoEnded() + if (wasEnded) { + setPosition(0) } + if (mStoredRememberLastVideoPosition) { + setLastVideoSavedPosition() + clearLastVideoSavedProgress() + } + + if (!wasEnded || context?.config?.loopVideos == false) { + mView.video_play_outline.setImageResource(R.drawable.ic_pause) + mView.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA + } + + schedulePlayPauseFadeOut() + mWasVideoStarted = true mIsPlaying = true mExoPlayer?.playWhenReady = true - mView!!.video_play_outline.setImageResource(R.drawable.ic_pause) - mView!!.video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - schedulePlayPauseFadeOut() + } + + private fun clearLastVideoSavedProgress() { + mStoredLastVideoPosition = 0 + mStoredLastVideoPath = "" } private fun pauseVideo() { @@ -444,22 +498,26 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mExoPlayer?.playWhenReady = false } - mView?.video_play_outline?.setImageResource(R.drawable.ic_play) - mView?.video_play_outline?.alpha = PLAY_PAUSE_VISIBLE_ALPHA - activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + mView.video_play_outline?.setImageResource(R.drawable.ic_play) + mView.video_play_outline?.alpha = PLAY_PAUSE_VISIBLE_ALPHA schedulePlayPauseFadeOut() + activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } private fun schedulePlayPauseFadeOut() { mHidePlayPauseHandler.removeCallbacksAndMessages(null) mHidePlayPauseHandler.postDelayed({ - mView!!.video_play_outline.animate().alpha(0f).start() + mView.video_play_outline.animate().alpha(0f).start() }, HIDE_PLAY_PAUSE_DELAY) } - private fun videoEnded() = mExoPlayer?.currentPosition ?: 0 >= mExoPlayer?.duration ?: 0 + private fun videoEnded(): Boolean { + val currentPos = mExoPlayer?.currentPosition ?: 0 + val duration = mExoPlayer?.duration ?: 0 + return currentPos != 0L && currentPos >= duration + } - private fun setProgress(seconds: Int) { + private fun setPosition(seconds: Int) { mExoPlayer?.seekTo(seconds * 1000L) mSeekBar!!.progress = seconds mCurrTimeView!!.text = seconds.getFormattedDuration() @@ -474,14 +532,14 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } setupTimeHolder() - setProgress(0) + setPosition(0) } private fun videoPrepared() { if (mDuration == 0) { mDuration = (mExoPlayer!!.duration / 1000).toInt() setupTimeHolder() - setProgress(mCurrTime) + setPosition(mCurrTime) if (mIsFragmentVisible && (context!!.config.autoplayVideos)) { playVideo() @@ -564,7 +622,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S private fun checkExtendedDetails() { if (context!!.config.showExtendedDetails) { - mView!!.video_details.apply { + mView.video_details.apply { beInvisible() // make it invisible so we can measure it, but not show yet text = getMediumExtendedDetails(medium) onGlobalLayout { @@ -579,7 +637,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } } else { - mView!!.video_details.beGone() + mView.video_details.beGone() } } @@ -593,7 +651,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S val newProgress = if (forward) curr + twoPercents else curr - twoPercents val roundProgress = Math.round(newProgress / 1000f) val limitedProgress = Math.max(Math.min(mExoPlayer!!.duration.toInt(), roundProgress), 0) - setProgress(limitedProgress) + setPosition(limitedProgress) if (!mIsPlaying) { togglePlayPause() } @@ -601,7 +659,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { if (mExoPlayer != null && fromUser) { - setProgress(progress) + setPosition(progress) } } @@ -614,6 +672,11 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } override fun onStopTrackingTouch(seekBar: SeekBar) { + if (mIsPanorama) { + openPanorama() + return + } + if (mExoPlayer == null) return @@ -626,6 +689,70 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mIsDragged = false } + private fun checkIfPanorama() { + try { + val fis = FileInputStream(File(medium.path)) + parseFileChannel(fis.channel, 0, 0, 0) + } catch (ignored: Exception) { + } catch (ignored: OutOfMemoryError) { + } + } + + // based on https://github.com/sannies/mp4parser/blob/master/examples/src/main/java/com/google/code/mp4parser/example/PrintStructure.java + private fun parseFileChannel(fc: FileChannel, level: Int, start: Long, end: Long) { + try { + var iteration = 0 + var currEnd = end + fc.position(start) + if (currEnd <= 0) { + currEnd = start + fc.size() + } + + while (currEnd - fc.position() > 8) { + // just a check to avoid deadloop at some videos + if (iteration++ > 50) { + return + } + + val begin = fc.position() + val byteBuffer = ByteBuffer.allocate(8) + fc.read(byteBuffer) + byteBuffer.rewind() + val size = IsoTypeReader.readUInt32(byteBuffer) + val type = IsoTypeReader.read4cc(byteBuffer) + val newEnd = begin + size + + if (type == "uuid") { + val fis = FileInputStream(File(medium.path)) + fis.skip(begin) + + val sb = StringBuilder() + val buffer = ByteArray(1024) + while (true) { + val n = fis.read(buffer) + if (n != -1) { + sb.append(String(buffer, 0, n)) + } else { + break + } + } + + val xmlString = sb.toString().toLowerCase() + mIsPanorama = xmlString.contains("gspherical:projectiontype>equirectangular") || + xmlString.contains("gspherical:projectiontype=\"equirectangular\"") + return + } + + if (FILE_CHANNEL_CONTAINERS.contains(type)) { + parseFileChannel(fc, level + 1, begin + 8, newEnd) + } + + fc.position(newEnd) + } + } catch (ignored: Exception) { + } + } + private fun openPanorama() { Intent(context, PanoramaVideoActivity::class.java).apply { putExtra(PATH, medium.path) @@ -633,10 +760,16 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } } + private fun updateInstantSwitchWidths() { + val newWidth = resources.getDimension(R.dimen.instant_change_bar_width) + if (activity?.portrait == false) activity!!.navigationBarWidth else 0 + mView.instant_prev_item.layoutParams.width = newWidth.toInt() + mView.instant_next_item.layoutParams.width = newWidth.toInt() + } + override fun fullscreenToggled(isFullscreen: Boolean) { mIsFullscreen = isFullscreen checkFullscreen() - mView!!.video_details.apply { + mView.video_details.apply { if (mStoredShowExtendedDetails && isVisible()) { animate().y(getExtendedDetailsY(height)) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt index 3a999e10d..26e42fcc2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/ViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt @@ -1,12 +1,12 @@ -package com.simplemobiletools.gallery.fragments +package com.simplemobiletools.gallery.pro.fragments import android.view.MotionEvent import androidx.fragment.app.Fragment import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.OTG_PATH -import com.simplemobiletools.gallery.extensions.config -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium import java.io.File abstract class ViewPagerFragment : Fragment() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index 40838d5cd..cb8be5ace 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.content.Context import android.content.res.Configuration @@ -8,8 +8,8 @@ import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.helpers.BaseConfig import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED import com.simplemobiletools.commons.helpers.SORT_DESCENDING -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.models.AlbumCover +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.models.AlbumCover import java.util.* class Config(context: Context) : BaseConfig(context) { @@ -117,17 +117,9 @@ class Config(context: Context) : BaseConfig(context) { } var excludedFolders: MutableSet - get() = prefs.getStringSet(EXCLUDED_FOLDERS, getDataFolder()) + get() = prefs.getStringSet(EXCLUDED_FOLDERS, HashSet()) set(excludedFolders) = prefs.edit().remove(EXCLUDED_FOLDERS).putStringSet(EXCLUDED_FOLDERS, excludedFolders).apply() - private fun getDataFolder(): Set { - val folders = HashSet() - val dataFolder = context.externalCacheDir?.parentFile?.parent?.trimEnd('/') ?: "" - if (dataFolder.endsWith("data")) - folders.add(dataFolder) - return folders - } - fun addIncludedFolder(path: String) { val currIncludedFolders = HashSet(includedFolders) currIncludedFolders.add(path) @@ -365,6 +357,18 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(BOTTOM_ACTIONS, true) set(bottomActions) = prefs.edit().putBoolean(BOTTOM_ACTIONS, bottomActions).apply() + var rememberLastVideoPosition: Boolean + get() = prefs.getBoolean(REMEMBER_LAST_VIDEO_POSITION, false) + set(rememberLastVideoPosition) = prefs.edit().putBoolean(REMEMBER_LAST_VIDEO_POSITION, rememberLastVideoPosition).apply() + + var lastVideoPath: String + get() = prefs.getString(LAST_VIDEO_PATH, "") + set(lastVideoPath) = prefs.edit().putString(LAST_VIDEO_PATH, lastVideoPath).apply() + + var lastVideoPosition: Int + get() = prefs.getInt(LAST_VIDEO_POSITION, 0) + set(lastVideoPosition) = prefs.edit().putInt(LAST_VIDEO_POSITION, lastVideoPosition).apply() + var visibleBottomActions: Int get() = prefs.getInt(VISIBLE_BOTTOM_ACTIONS, DEFAULT_BOTTOM_ACTIONS) set(visibleBottomActions) = prefs.edit().putInt(VISIBLE_BOTTOM_ACTIONS, visibleBottomActions).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt index 29c738dfa..ab2e18712 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import com.simplemobiletools.commons.helpers.MONTH_SECONDS @@ -10,6 +10,7 @@ const val SHOW_HIDDEN_MEDIA = "show_hidden_media" const val TEMPORARILY_SHOW_HIDDEN = "temporarily_show_hidden" const val IS_THIRD_PARTY_INTENT = "is_third_party_intent" const val AUTOPLAY_VIDEOS = "autoplay_videos" +const val REMEMBER_LAST_VIDEO_POSITION = "remember_last_video_position" const val LOOP_VIDEOS = "loop_videos" const val ANIMATE_GIFS = "animate_gifs" const val MAX_BRIGHTNESS = "max_brightness" @@ -51,6 +52,8 @@ const val LAST_FILEPICKER_PATH = "last_filepicker_path" const val WAS_OTG_HANDLED = "was_otg_handled" const val TEMP_SKIP_DELETE_CONFIRMATION = "temp_skip_delete_confirmation" const val BOTTOM_ACTIONS = "bottom_actions" +const val LAST_VIDEO_PATH = "last_video_path" +const val LAST_VIDEO_POSITION = "last_video_position" const val VISIBLE_BOTTOM_ACTIONS = "visible_bottom_actions" const val WERE_FAVORITES_PINNED = "were_favorites_pinned" const val WAS_RECYCLE_BIN_PINNED = "was_recycle_bin_pinned" @@ -76,6 +79,7 @@ const val SLIDESHOW_MOVE_BACKWARDS = "slideshow_move_backwards" const val SLIDESHOW_LOOP = "loop_slideshow" const val SLIDESHOW_DEFAULT_INTERVAL = 5 const val SLIDESHOW_SCROLL_DURATION = 500L +const val SLIDESHOW_START_ON_ENTER= "slideshow_start_on_enter" const val NOMEDIA = ".nomedia" const val FAVORITES = "favorites" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/FilterThumbnailsManager.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FilterThumbnailsManager.kt similarity index 86% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/FilterThumbnailsManager.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FilterThumbnailsManager.kt index 204f54f3b..ae043ddde 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/FilterThumbnailsManager.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/FilterThumbnailsManager.kt @@ -1,7 +1,7 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.graphics.Bitmap -import com.simplemobiletools.gallery.models.FilterItem +import com.simplemobiletools.gallery.pro.models.FilterItem import java.util.* class FilterThumbnailsManager { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/GlideRotateTransformation.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/GlideRotateTransformation.kt index 5f34c6ced..619694642 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/GlideRotateTransformation.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/GlideRotateTransformation.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.graphics.Bitmap import android.graphics.Matrix diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/IsoTypeReader.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/IsoTypeReader.kt new file mode 100644 index 000000000..d8c33e72d --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/IsoTypeReader.kt @@ -0,0 +1,27 @@ +package com.simplemobiletools.gallery.pro.helpers + +import java.io.UnsupportedEncodingException +import java.nio.ByteBuffer +import java.nio.charset.Charset + +// file taken from the https://github.com/sannies/mp4parser project, used at determining if a video is a panoramic one +object IsoTypeReader { + fun readUInt32(bb: ByteBuffer): Long { + var i = bb.int.toLong() + if (i < 0) { + i += 1L shl 32 + } + return i + } + + fun read4cc(bb: ByteBuffer): String? { + val codeBytes = ByteArray(4) + bb.get(codeBytes) + + return try { + String(codeBytes, Charset.forName("ISO-8859-1")) + } catch (e: UnsupportedEncodingException) { + null + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt similarity index 98% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt index eaa1b7be5..4dab1cf17 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/MediaFetcher.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.content.Context import android.database.Cursor @@ -7,11 +7,11 @@ import android.provider.MediaStore import android.text.format.DateFormat import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.extensions.* -import com.simplemobiletools.gallery.models.Medium -import com.simplemobiletools.gallery.models.ThumbnailItem -import com.simplemobiletools.gallery.models.ThumbnailSection +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.* +import com.simplemobiletools.gallery.pro.models.Medium +import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.models.ThumbnailSection import java.io.File import java.util.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoDecoder.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoDecoder.kt similarity index 92% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoDecoder.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoDecoder.kt index 16dd85760..1ff60708d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoDecoder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoDecoder.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.content.Context import android.graphics.Bitmap diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoRegionDecoder.kt similarity index 96% rename from app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoRegionDecoder.kt index b96ed9deb..d0f8a7f41 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/PicassoRegionDecoder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/PicassoRegionDecoder.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.helpers +package com.simplemobiletools.gallery.pro.helpers import android.content.Context import android.graphics.* diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryDao.kt similarity index 88% rename from app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryDao.kt index ce55fa3f4..78641ebf9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryDao.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.interfaces +package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy.REPLACE import androidx.room.Query -import com.simplemobiletools.gallery.helpers.RECYCLE_BIN -import com.simplemobiletools.gallery.models.Directory +import com.simplemobiletools.gallery.pro.helpers.RECYCLE_BIN +import com.simplemobiletools.gallery.pro.models.Directory @Dao interface DirectoryDao { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryOperationsListener.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryOperationsListener.kt similarity index 67% rename from app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryOperationsListener.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryOperationsListener.kt index 760ed78f4..b4f265969 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryOperationsListener.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DirectoryOperationsListener.kt @@ -1,6 +1,6 @@ -package com.simplemobiletools.gallery.interfaces +package com.simplemobiletools.gallery.pro.interfaces -import com.simplemobiletools.gallery.models.Directory +import com.simplemobiletools.gallery.pro.models.Directory import java.io.File interface DirectoryOperationsListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediaOperationsListener.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediaOperationsListener.kt similarity index 81% rename from app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediaOperationsListener.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediaOperationsListener.kt index 77e877fd8..7e384003c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediaOperationsListener.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediaOperationsListener.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.interfaces +package com.simplemobiletools.gallery.pro.interfaces import com.simplemobiletools.commons.models.FileDirItem diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 5a02476b0..bf2d68d9f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -1,11 +1,11 @@ -package com.simplemobiletools.gallery.interfaces +package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.REPLACE import androidx.room.Query -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.models.Medium @Dao interface MediumDao { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/AlbumCover.kt similarity index 54% rename from app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/AlbumCover.kt index f5937ad08..c4afd11b1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/AlbumCover.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/AlbumCover.kt @@ -1,3 +1,3 @@ -package com.simplemobiletools.gallery.models +package com.simplemobiletools.gallery.pro.models data class AlbumCover(val path: String, val tmb: String) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt similarity index 86% rename from app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt index b6332d6f6..c5b90b860 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Directory.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.models +package com.simplemobiletools.gallery.pro.models import androidx.room.ColumnInfo import androidx.room.Entity @@ -10,11 +10,11 @@ import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED import com.simplemobiletools.commons.helpers.SORT_BY_NAME import com.simplemobiletools.commons.helpers.SORT_BY_PATH import com.simplemobiletools.commons.helpers.SORT_BY_SIZE -import com.simplemobiletools.gallery.helpers.FAVORITES -import com.simplemobiletools.gallery.helpers.RECYCLE_BIN +import com.simplemobiletools.gallery.pro.helpers.FAVORITES +import com.simplemobiletools.gallery.pro.helpers.RECYCLE_BIN import java.io.Serializable -@Entity(tableName = "directories", indices = [Index(value = "path", unique = true)]) +@Entity(tableName = "directories", indices = [Index(value = ["path"], unique = true)]) data class Directory( @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo(name = "path") var path: String, diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/FilterItem.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/FilterItem.kt similarity index 75% rename from app/src/main/kotlin/com/simplemobiletools/gallery/models/FilterItem.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/FilterItem.kt index f2dd7f2d6..ce826e57e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/FilterItem.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/FilterItem.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.models +package com.simplemobiletools.gallery.pro.models import android.graphics.Bitmap import com.zomato.photofilters.imageprocessors.Filter diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt index aea443b78..68f8008a8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Medium.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.models +package com.simplemobiletools.gallery.pro.models import androidx.room.ColumnInfo import androidx.room.Entity @@ -11,11 +11,11 @@ import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED import com.simplemobiletools.commons.helpers.SORT_BY_NAME import com.simplemobiletools.commons.helpers.SORT_BY_PATH import com.simplemobiletools.commons.helpers.SORT_BY_SIZE -import com.simplemobiletools.gallery.helpers.* +import com.simplemobiletools.gallery.pro.helpers.* import java.io.Serializable import java.util.* -@Entity(tableName = "media", indices = [(Index(value = "full_path", unique = true))]) +@Entity(tableName = "media", indices = [(Index(value = ["full_path"], unique = true))]) data class Medium( @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo(name = "filename") var name: String, diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailItem.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailItem.kt new file mode 100644 index 000000000..4d2deaa31 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailItem.kt @@ -0,0 +1,3 @@ +package com.simplemobiletools.gallery.pro.models + +open class ThumbnailItem diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailSection.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailSection.kt similarity index 57% rename from app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailSection.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailSection.kt index fc501383f..1655cad89 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/ThumbnailSection.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/ThumbnailSection.kt @@ -1,3 +1,3 @@ -package com.simplemobiletools.gallery.models +package com.simplemobiletools.gallery.pro.models data class ThumbnailSection(val title: String) : ThumbnailItem() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/objects/MyExecutor.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/objects/MyExecutor.kt similarity index 70% rename from app/src/main/kotlin/com/simplemobiletools/gallery/objects/MyExecutor.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/objects/MyExecutor.kt index c4ff990a9..bc2d57129 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/objects/MyExecutor.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/objects/MyExecutor.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.objects +package com.simplemobiletools.gallery.pro.objects import java.util.concurrent.Executors diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/receivers/RefreshMediaReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/receivers/RefreshMediaReceiver.kt similarity index 81% rename from app/src/main/kotlin/com/simplemobiletools/gallery/receivers/RefreshMediaReceiver.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/receivers/RefreshMediaReceiver.kt index d9ece1f20..01e4591e2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/receivers/RefreshMediaReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/receivers/RefreshMediaReceiver.kt @@ -1,13 +1,13 @@ -package com.simplemobiletools.gallery.receivers +package com.simplemobiletools.gallery.pro.receivers import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.REFRESH_PATH -import com.simplemobiletools.gallery.extensions.galleryDB -import com.simplemobiletools.gallery.helpers.* -import com.simplemobiletools.gallery.models.Medium +import com.simplemobiletools.gallery.pro.extensions.galleryDB +import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.Medium import java.io.File class RefreshMediaReceiver : BroadcastReceiver() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDecoder.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDecoder.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDecoder.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDecoder.kt index 3765db0e3..7bc47c9f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDecoder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDecoder.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.svg +package com.simplemobiletools.gallery.pro.svg import com.bumptech.glide.load.Options import com.bumptech.glide.load.ResourceDecoder diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDrawableTranscoder.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDrawableTranscoder.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDrawableTranscoder.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDrawableTranscoder.kt index 96dbe3492..e447136e9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgDrawableTranscoder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgDrawableTranscoder.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.svg +package com.simplemobiletools.gallery.pro.svg import android.graphics.drawable.PictureDrawable import com.bumptech.glide.load.Options diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgModule.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgModule.kt similarity index 93% rename from app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgModule.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgModule.kt index a6e4f3efb..ee15a2274 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgModule.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgModule.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.svg +package com.simplemobiletools.gallery.pro.svg import android.content.Context import android.graphics.drawable.PictureDrawable diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgSoftwareLayerSetter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgSoftwareLayerSetter.kt similarity index 95% rename from app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgSoftwareLayerSetter.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgSoftwareLayerSetter.kt index 043d26e27..c766ab651 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/svg/SvgSoftwareLayerSetter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/svg/SvgSoftwareLayerSetter.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.svg +package com.simplemobiletools.gallery.pro.svg import android.graphics.drawable.PictureDrawable import android.widget.ImageView diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/views/InstantItemSwitch.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/InstantItemSwitch.kt similarity index 92% rename from app/src/main/kotlin/com/simplemobiletools/gallery/views/InstantItemSwitch.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/InstantItemSwitch.kt index bdfe1264a..c21e2f642 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/views/InstantItemSwitch.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/InstantItemSwitch.kt @@ -1,12 +1,12 @@ -package com.simplemobiletools.gallery.views +package com.simplemobiletools.gallery.pro.views import android.content.Context import android.util.AttributeSet import android.view.MotionEvent import android.view.ViewGroup import android.widget.RelativeLayout -import com.simplemobiletools.gallery.helpers.CLICK_MAX_DURATION -import com.simplemobiletools.gallery.helpers.DRAG_THRESHOLD +import com.simplemobiletools.gallery.pro.helpers.CLICK_MAX_DURATION +import com.simplemobiletools.gallery.pro.helpers.DRAG_THRESHOLD // handle only one finger clicks, pass other events to the parent view and ignore it when received again class InstantItemSwitch(context: Context, attrs: AttributeSet) : RelativeLayout(context, attrs) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/views/MediaSideScroll.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MediaSideScroll.kt similarity index 94% rename from app/src/main/kotlin/com/simplemobiletools/gallery/views/MediaSideScroll.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MediaSideScroll.kt index bfb394eeb..916550f21 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/views/MediaSideScroll.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MediaSideScroll.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.views +package com.simplemobiletools.gallery.pro.views import android.app.Activity import android.content.Context @@ -10,11 +10,11 @@ import android.view.MotionEvent import android.view.ViewGroup import android.widget.RelativeLayout import android.widget.TextView -import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.ViewPagerActivity -import com.simplemobiletools.gallery.extensions.audioManager -import com.simplemobiletools.gallery.helpers.CLICK_MAX_DURATION -import com.simplemobiletools.gallery.helpers.DRAG_THRESHOLD +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.ViewPagerActivity +import com.simplemobiletools.gallery.pro.extensions.audioManager +import com.simplemobiletools.gallery.pro.helpers.CLICK_MAX_DURATION +import com.simplemobiletools.gallery.pro.helpers.DRAG_THRESHOLD // allow horizontal swipes through the layout, else it can cause glitches at zoomed in images class MediaSideScroll(context: Context, attrs: AttributeSet) : RelativeLayout(context, attrs) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/views/MySquareImageView.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MySquareImageView.kt similarity index 92% rename from app/src/main/kotlin/com/simplemobiletools/gallery/views/MySquareImageView.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MySquareImageView.kt index 39a2f74be..24cde1c2a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/views/MySquareImageView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/views/MySquareImageView.kt @@ -1,4 +1,4 @@ -package com.simplemobiletools.gallery.views +package com.simplemobiletools.gallery.pro.views import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 27fd9bd44..97c1633a3 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -12,28 +12,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - - - - - - - - - + + + + + + + + + + + + - diff --git a/app/src/main/res/layout/directory_item_list.xml b/app/src/main/res/layout/directory_item_list.xml index 7e125cf5c..a22820f5b 100644 --- a/app/src/main/res/layout/directory_item_list.xml +++ b/app/src/main/res/layout/directory_item_list.xml @@ -9,7 +9,7 @@ android:paddingLeft="@dimen/small_margin" android:paddingTop="@dimen/small_margin"> - diff --git a/app/src/main/res/layout/pager_photo_item.xml b/app/src/main/res/layout/pager_photo_item.xml index 4bb227f80..f99e39b8c 100644 --- a/app/src/main/res/layout/pager_photo_item.xml +++ b/app/src/main/res/layout/pager_photo_item.xml @@ -47,7 +47,7 @@ android:visibility="gone" tools:text="My image\nAnother line"/> - - - - - - - - diff --git a/app/src/main/res/layout/photo_video_item_list.xml b/app/src/main/res/layout/photo_video_item_list.xml index 8e8046e0a..e24bbfa2f 100644 --- a/app/src/main/res/layout/photo_video_item_list.xml +++ b/app/src/main/res/layout/photo_video_item_list.xml @@ -9,7 +9,7 @@ android:paddingLeft="@dimen/small_margin" android:paddingTop="@dimen/small_margin"> - diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index fbae61223..4693f03f1 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -79,6 +79,10 @@ android:id="@+id/reduce_column_count" android:title="@string/reduce_column_count" app:showAsAction="never"/> + تشغيل الفديوهات تلقائيا + Remember last video playback position تبديل رؤية اسم الملف حلقة الفيديو عرض صور GIF المتحركة في الصور المصغرة @@ -212,8 +213,33 @@ استوديو لعرض الصور والفيديو بدون اعلانات. - أداة بسيطة تستخدام لعرض الصور ومقاطع الفيديو. يمكن فرز العناصر حسب التاريخ والحجم والاسم على حد سواء تصاعدي أو تنازلي، يمكن تكبير الصور. يتم عرض ملفات الوسائط في أعمدة متعددة اعتمادا على حجم الشاشة، يمكنك تغيير عدد الأعمدة عبر إيماءاة القرص . يمكن إعادة تسميته، مشاركة، حذف، نسخ، نقل. ويمكن أيضا اقتصاص الصور، استدارة، او قلب أو تعيين كخلفية مباشرة من التطبيق. يتم عرض المحتوى أيضا للاستخدام طرف ثالث لمعاينة الصور / الفيديو، إضافة المرفقات في برامج البريد الإلكتروني الخ انه مثالي للاستخدام اليومي. لا يحتوي على إعلانات أو أذونات لا حاجة لها. مفتوح المصدر بشكل كلي ، ويوفر الألوان للتخصيص. هذا التطبيق هو مجرد قطعة واحدة من سلسلة أكبر من التطبيقات. يمكنك العثور على بقيتهم هنا\n - https://www.simplemobiletools.com + + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + + It is open source, contains no ads or unnecessary permissions. + + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Play videos automatically + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails @@ -211,13 +212,29 @@ Şəkil və videolara baxmaq üçün reklamsız qalereya. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 07c2011a0..a5272db32 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -133,6 +133,7 @@ Reproduir vídeos automàticament + Recordeu la posició de la darrera reproducció de vídeo Canviar la visibilitat del nom d\'arxiu Reproducció continua de vídeos Animar les miniatures dels GIFs @@ -211,15 +212,31 @@ 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ó. + Una galeria molt personalitzable capaç de mostrar molts tipus d\'imatge i de vídeo diferents, inclosos SVGs, RAWs, fotos panoràmiques i vídeos. - 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. + És de codi obert, no conté anuncis ni permisos innecessaris. - El permís d\'empremtes dactilars és necessari per bloquejar la visibilitat d\'elements ocults o tota l\'aplicació. + Anem a enumerar algunes de les seves característiques que val la pena esmentar: + 1. Cerca + 2. Presentació de diapositives + 3. Suport per notch + 4. Enganxar carpetes a la part superior + 5. Filtrar fitxers multimèdia per tipus + 6. Paperera de reciclatge per a una fàcil recuperació d\'arxius + 7. Bloqueig d\'orientació de la vista en pantalla completa + 8. Marcatge dels fitxers preferits per facilitar l\'accés + 9. Tancament ràpid de mitjans de pantalla amb gest d\'avall + 10. Un editor per modificar imatges i aplicar filtres + 11. Protecció per contrasenya per protegir elements ocults o tota l\'aplicació + 12. Canviar el número de columnes en miniatura amb gestos o botons de menú + 13. Botons inferiors personalitzables a la vista de pantalla completa per a un accés ràpid + 14. Mostrar detalls ampliats sobre els suports de pantalla completa amb les propietats del fitxer desitjades + 15. Diverses maneres diferents de classificar o agrupar elements, tant ascendents com descendents + 16. Ocultació de carpetes (també afecta altres aplicacions), eExclusió de carpetes (afecta només a la Galeria simple) - No conté ni publicitat ni permisos innecessaris. Es totalment Lliure i proporciona colors personalitzables. + El permís d\'empremtes dactilars és necessari per bloquejar la visibilitat d\'elements ocults, l\'aplicació sencera o la protecció dels fitxers. - Aquesta aplicació es només una peça d\'una sèrie més gran d\'aplicacions. Pots trobar la resta a https://www.simplemobiletools.com + Aquesta aplicació és només una part d\'una sèrie més gran d\'aplicacions. Podeu trobar la resta a https://www.simplemobiletools.com Automaticky přehrávat videa + Remember last video playback position Přepnout viditelnost názvů souborů Přehrávat videa ve smyčce Animovat náhledy souborů GIF @@ -211,15 +212,31 @@ Galerie na prohlížení obrázků a videí bez reklam. - Jednoduchý nástroj použitelný na prohlížení obrázků a videí. Položky mohou být seřazeny podle data, velikosti či názvu vzestupně i sestupně. Obrázky lze přiblížit. Položky jsou zobrazeny ve více sloupcích v závislosti na velikosti displeje, počet sloupců je možné měnit gestem. Soubory můžete přejmenovávat, sdílet, mazat, kopírovat i přesouvat. Obrázky lze ořezávat, otáčen, nebo nastavit jako tapetu přímo v aplikaci. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerie je též k disposici ostatním aplikacím za účelem zobrazení fotografií a videí a přidávání příloh v e-mailových klientech. Je vhodná ke každodennímu použití. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Neobsahuje žádné reklamy ani nepotřebná oprávnění a má otevřený zdrojový kód. Poskytuje možnost změny barev rozhraní. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Táto aplikace je jen jednou ze skupiny aplikací. Všechny tyto aplikace naleznete na https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Afspil automatisk videoer + Remember last video playback position Toggle filename visibility Kør videoer i sløjfe Animér GIF\'er i miniaturer @@ -211,13 +212,29 @@ A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1339b5dda..ca0c2ac16 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -133,6 +133,7 @@ Videos automatisch abspielen + Remember last video playback position Beschriftungen ein/aus Videos in Endlosschleife abspielen Kacheln von GIFs animieren @@ -210,15 +211,31 @@ Eine schlichte Galerie zum Betrachten von Bildern und Videos, ganz ohne Werbung. - 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. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 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. + It is open source, contains no ads or unnecessary permissions. - Die Berechtigung für Fingerabdrücke wird nur benötigt, um die Sichtbarkeit von versteckten Dateien oder die gesamte App zu sperren. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Beinhaltet keine Werbung oder unnötige Berechtigungen. Sie ist komplett Open Source, alle verwendeten Farben sind anpassbar. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Diese App ist nur eine aus einer größeren Serie von schlichten Apps. Der Rest davon findet sich auf https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Αυτόματη αναπαραγωγή βίντεο + Remember last video playback position Αλλαγή προβολής ονόματος αρχείων Επανάληψη βίντεο Εμφάνιση κινούμενων GIFs στα εικονίδια @@ -211,15 +212,31 @@ Μία Gallery για την προβολή φωτογραφιών και βίντεο χωρίς διαφημίσεις. - Μία απλή εφαρμογή για την προβολή φωτογραφιών και βίντεο. Τα αντικείμενα μπορούνα να ταξινομηθούν με βάση την ημερ/νία, το μέγεθος και το όνομα με αύξουσα ή φθήνουσα σειρά, οι φωτογραφίες μπορούν να μεγεθυνθούν. Τα αρχεία πολυμέσων εμφανίζονται σε πολλαπλές στήλες ανάλογα με τον μέγεθος της οθόνης και μπορείτε να αλλάξετε τον αριθμό των στηλών με τα 2 δάχτυλα (pintch). Μπορούν να μετονομαστούν, να μοιραστούν, να διαγραφούν, να αντιγραφούν και να μετακινηθούν. Οι εικόνες επίσης μπορούν να κοπούν, να περιστραφούν, να αντιστραφούν ή να οριστούν ως ταπετσαρίες κατευθείαν από την εφαρμογή. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Η Gallery επίσης μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές για προεμφάνιση φωτογραφιών / βίντεο, να μπουν ως επισυνάψεις σε εφαρμογές email κλπ. Είναι τέλεια για καθημερινή χρήση. + It is open source, contains no ads or unnecessary permissions. - Η εξουσιοδότηση δαχτυλικού αποτυπώματος χρειάζεται για το κλείδωμα των κρυφών αντικειμένων ή ολόκληρης της εφαρμογής. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Δεν περιέχει διαφημίσεις ή περιττά δικαιώματα. Έιναι όλη ανοιχτού κώδικα και παρέχει προσαρμόσιμα χρώματα για την εφαρμογή. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Αυτή η εφαρμογή είναι μέρος μιας σειράς εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Reproducir vídeos automáticamente + Recuerde la última posición de reproducción de video Cambiar la visibilidad del nombre de archivo Reproducción continua de vídeos Animar las miniaturas de GIFs @@ -211,15 +212,31 @@ Una galería para ver fotos y vídeos sin publicidad. - Una herramienta sencilla que se puede usar para ver fotos y vídeos. Los elementos se pueden ordenar por fecha, tamaño, nombre tanto ascendente como descendente; se puede hacer zoom en las fotos. Los archivos de medios se muestran en múltiples columnas dependiendo del tamaño de la pantalla, y se puede cambiar el número de columnas mediante gestos. Permite renombrar, compartir, borrar, mover. Las imágenes también se pueden recortar, rotar o usarse como fondo de pantalla directamente desde la aplicación. + Una galería altamente personalizable capaz de mostrar diferentes tipos de imágenes y videos, incluyendo SVG, RAW, fotos panorámicas y videos. - 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. + Es de código abierto, no contiene anuncios o permisos innecesarios. - El permiso de huella digital es necesario para bloquear la visibilidad de elementos ocultos o toda la aplicación. + Vamos a enumerar algunas de sus características que vale la pena mencionar: + 1. Buscar + 2. Presentación de diapositivas + 3. Soporte de muesca + 4. Fijado de carpetas en la parte superior. + 5. Filtrado de archivos multimedia por tipo + 6. Papelera de reciclaje para una fácil recuperación de archivos + 7. Bloqueo de orientación de vista de pantalla completa + 8. Marcar los archivos favoritos para facilitar el acceso + 9. Cierre rápido de medios a pantalla completa con gesto hacia abajo. + 10. Un editor para modificar imágenes y aplicar filtros. + 11. Protección de contraseña para proteger elementos ocultos o la aplicación completa + 12. Cambiar el número de la columna de miniaturas con gestos o botones de menú + 13. Acciones inferiores personalizables en la vista de pantalla completa para un acceso rápido + 14. Mostrar detalles extendidos en medios de pantalla completa con las propiedades de archivo deseadas + 15. Varias formas diferentes de clasificar o agrupar elementos, tanto ascendentes como descendentes + 16. Ocultar carpetas (afecta también a otras aplicaciones), excluyendo carpetas (afecta solo a Simple Gallery) - No contiene publicidad ni permisos innecesarios. Es totalmente libre, proporciona colores personalizables. + El permiso de huella digital es necesario para bloquear la visibilidad de los elementos ocultos, la aplicación completa o proteger los archivos para evitar que se eliminen. - Esta aplicación es solamente una pieza de una serie más grande de aplicaciones. Puede encontrar el resto en https://www.simplemobiletools.com + Esta aplicación es solo una parte de una serie más grande de aplicaciones. Puede encontrar el resto de ellos en https://www.simplemobiletools.com Toista videot automaattisesti + Remember last video playback position Tiedostonimien näkyvyys Jatkuvat videot Animoi GIFit pienoiskuvissa @@ -211,15 +212,31 @@ Galleria kuvien ja videoiden katsomiseen ilman mainoksia. - Yksinkertainen työkalu kuvien ja videoiden katsomiseen. Kohteita voidaan lajitella päivän, koon, nimen mukaan, nousevassa ja laskevassa järjestyksessä. Kuvia voidaan zoomata. Mediatiedostot näkyvät useissa sarakkeissa joiden määrää muutetaan nipistys-eleellä. Tiedostoja voidaan uudelleennimetä, jakaa, poistaa, kopioida. Kuvia voi rajata, pyörittää tai asettaa taustakuvaksi suoraan sovelluksesta. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galleriaa tarjotaan myös kolmansille osapuolille kuvien / videoiden tarkasteluun, liitteiden lisäämiseksi sähköpostiin yms. Täydellinen jokapäiväiseen käyttöön. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Ei sisällä mainoksia tai turhia käyttöoikeuksia. Täysin avointa lähdekoodia, tarjoaa muokattavat värit. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Tämä sovellus on vain yksi osa suurempaa kokoelmaa. Löydät loput osoitteesta https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Lecture automatique des vidéos + Remember last video playback position Permuter la visibilité des noms de fichier Lecture en boucle des vidéos GIFs animés sur les miniatures @@ -158,7 +158,6 @@ Utiliser le zoom maximal des images Ne pas afficher les informations supplémentaires si la barre d\'état est masquée Éviter l\'affichage de fichiers non conformes - Afficher les éléments masqués Afficher les boutons d\'action Afficher la corbeille en vue \"Dossier\" Niveau de zoom maximal des images @@ -211,17 +210,33 @@ Une galerie pour visionner photos et vidéos sans publicité. - Un outil simple pour visionner les photos et les vidéos. Elles peuvent être triées par dates, dimensions, noms dans les deux ordres (alphabétique ou alphabétique inversé), il est possible de zoomer sur les photos. Les fichiers sont affichés sur de multiples colonnes en fonction de la dimension de l\'écran, vous pouvez changer le nombre de colonnes par pincement. Elles peuvent être renommées, partagées, supprimées, copiées et déplacées. Les images peuvent en plus être pivotées, rognées ou être définies comme fond d\'écran directement depuis l\'application. - - La galerie est également proposée pour une utilisation comme tierce partie pour la prévisualisation des images/vidéos, ajouter des pièces jointes aux clients de courriel, etc… C\'est parfait pour un usage au quotidien. - - L\'autorisation d\'empreinte digitale est nécessaire pour verrouiller les dossiers masqués et/ou l\'application. - - L\'application ne contient ni publicité, ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables. - - Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. + + It is open source, contains no ads or unnecessary permissions. + + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - + Reproducir vídeos automticamente + Remember last video playback position Mudar a visibilidade do ficheiro videos en bucle Animar os GIFs na icona @@ -211,15 +212,31 @@ Unha galería para ver fotos e videos, pero non publicidade. - Unha simple ferramenta para ver fotos e vídeos. Pode organizar os elementos por data, tamaño, nome tanto ascendentes como descendentes, pode facer zoom nas fotografías. Os ficheiros de medios móstranse en múltiples columnas dependendo do tamaño da pantalla, pode mudar o número de columnas con xestos de belisco. Poden ser renomeados, compartidos, eliminados, copiados, movidos. As imaxes tamén se poden recortar, rotar, voltear ou establecer como fondo de pantalla directamente no aplicativo. - - A Galería tamén se ofrece como aplicación de terceiros para vista previa de imaxes / vídeos, engadir anexos en correos etc. É perfecta para o uso diario. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - O permiso de pegada é preciso para bloquear a visibilidade de elementos ocultos ou o aplicativo completo. + It is open source, contains no ads or unnecessary permissions. - Non contén anuncios nin solicita permisos innecesarios. É de código aberto, con cores personalizadas. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Este aplicativo é só unha das pezas de unha grande familia. Pode atopar o resto en https://www.simplemobiletools.com + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Automatsko pokretanje videa + Remember last video playback position Uključi prikaz naziva datoteka Ponavljanje videa Prikaz animacije GIF-ova na sličicama @@ -211,15 +212,31 @@ Galerija za gledanje fotografija i videozapisa bez oglasa. - Jednostavan alat za pregled slika, GIFova i videa. Datoteke možete sortirati po datumu, veličini, imenu i to uzlazno i silazno. Također možete zumirati slike. Medijski sadržaj se prikazuje u višestrukim stupcima ovisno o veličini ekrana, a vi samo možete birati broj stupaca s gestom štipkanja. Možete preimenovati, dijeliti, brisati, kopirati, premještati datoteke. Slike također možete izrezati, rotirati ili postaviki kao pozadinu ekrana, odmah iz aplikacije. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerija se također može koristiti za pregledavanje slika i videa u drugim aplikacijama, prikačivanja datoteka u e-mail aplikacije itd. Savršeno za svakodnevno korištenje. + It is open source, contains no ads or unnecessary permissions. - Dopuštenje otiska prsta je potrebno za zaključavanje prikaza skrivene stavke ili cijele aplikacije. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Ne sadrži oglase ili nepotrebne dozvole. Aplikacije je otvorenog koda, pruža prilagodljive boje. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Ova je aplikacija samo dio većeg broja aplikacija. Možete pronaći ostatak na https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com - Filter media - Images - Videos - GIFs - RAW images - SVGs - No media files have been found with the selected filters. - Change filters + Média szűrő + Kép + Videó + GIF + RAW kép + SVG + A kiválasztott szűrők nem találtak médiafájlokat. + Szűrők változtatása - This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden folders\' option in Settings. Continue? - Exclude - Excluded folders - Manage excluded folders - This will exclude the selection together with its subfolders from Simple Gallery only. You can manage excluded folders in Settings. - Exclude a parent instead? - 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. + Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? + Kizárás + Kizárt mappák + Kizárt mappák kezelése + Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti. + Kizárja a szülő mappát? + A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót. + Összes eltávolítása + Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat. + Rejtett mappák + Rejtett mappák kezelése + Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. - Included folders - Manage included folders - Add folder - If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. + Befoglalt mappák + Befoglalt mappák kezelése + Mappa hozzáadása + Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. - Resize - Resize selection and save - Width - Height - Keep aspect ratio - Please enter a valid resolution + Átméretezés + Kiválasztás átméretezése és mentés + Szélesség + Magasság + Képarány megtartása + Írjon be érvényes felbontást - Editor - Save - Rotate - Path - Invalid image path - Image editing failed - Edit image with: - No image editor found - Unknown file location - Could not overwrite the source file - Rotate left - Rotate right - Rotate by 180º - Flip - Flip horizontally - Flip vertically - Edit with - Free + Szerkesztő + Mentés + Forgatás + Elérési útvonal + Érvénytelen kép elérési útvonal + Sikertelen kép szerkesztés + Kép szerkesztés ezzel: + Nem található kép szerkesztő + Ismeretlen fájl hely + Nem lehet felülírni a forrás fájlt + Forgatás balra + Forgatás jobbra + 180º-os forgatás + Tükrözés + Tükrözés vízszintesen + Tükrözés függőlegesen + Szerkesztés ezzel + Szabad + Simple Wallpaper - Set as Wallpaper - Setting as Wallpaper failed - Set as wallpaper with: - Setting wallpaper… - Wallpaper set successfully - Portrait aspect ratio - Landscape aspect ratio - Home screen - Lock screen - Home and lock screen + Beállítás háttérképként + Nem sikerült a beállítás háttérképként + Beállítás háttérképként ezzel: + Beállítás háttérképként… + Sikeresen beállítva háttérképnek + Álló képarány + Fekvő képarány + Kezdő képernyő + Zárolás képernyő + Kezdő és zárolás képernyő - 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 + Diavetítés + Időköz (másodperc): + Fotók befoglalása + Videók befoglalása + GIF befoglalása + Véletlen sorrend + Halványuló animáció használat + Áthelyezés hátra + Diavetítés ismétlése + A diavetítés vége + A diavetítéshez nem található média - Change view type - Grid - List - Group direct subfolders + Nézet típus változtatása + Rács + Lista + Közvetlen almappa csoport - Group by - Do not group files - Folder - Last modified - Date taken - File type - Extension + Csoport + Nincsenek csoportosított fájlok + Mappa + Utolsó módosítás + Dátum + Fájl típus + Kiterjesztés - Play videos automatically - Toggle filename visibility - Loop videos - Animate GIFs at thumbnails - Max brightness when viewing media - Crop thumbnails into squares - Rotate fullscreen media by - System setting - Device rotation - Aspect ratio - Black background and status bar at fullscreen media - Scroll thumbnails horizontally - Automatically hide system UI at fullscreen media - Delete empty folders after deleting their content - Allow controlling photo brightness with vertical gestures - Allow controlling video volume and brightness with vertical gestures - Show folder media count on the main view - Replace Share with Rotate at fullscreen menu - Show extended details over fullscreen media - Manage extended details - Allow one finger zoom at fullscreen media - Allow instantly changing media by clicking on screen sides - Allow deep zooming images - Hide extended details when status bar is hidden - Do an extra check to avoid showing invalid files - Show some action buttons at the bottom of the screen - Show the Recycle Bin at the folders screen - Deep zoomable images - Show images in the highest possible quality - Show the Recycle Bin as the last item on the main screen - Allow closing the fullscreen view with a down gesture + Automatikus videó lejátszás + Emlékezzen a videó utolsó lejátszási pozícióra + Fájlnév láthatóság módosítása + Videók ismétlése + Animált GIF miniatűr + Maximális fényerő a teljes képernyős médiánál + Miniatűrök négyzet alakúra vágva + Teljes képernyős média forgatása + Rendszer beállítások + Eszköz elforgatás + Képarány + Fekete háttérszín és állapotsáv teljes képernyős médiánál + Miniatűrök görgetése vízszintesen + Automatikusan elrejti a rendszer UI-t teljes képernyőn + Az üres mappák törlése a tartalom törlése után + Engedélyezi a kép fényerő módosítást függőleges gesztusokkal + Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal + Mutassa be a mappák számát a főnézetben + Cserélje meg a Megosztást a Forgatással a teljes képernyős menüben + Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül + Bővített részletek kezelése + Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában + Engedélyezi a azonnali média váltást a képernyő oldalára kattintva + Engedélyezi a képek mély nagyítását + Bővített részletek elrejtése az állapotsor rejtett állapotában + Végezzen extra ellenőrzést, hogy elkerülje az érvénytelen fájlok mutatását + Mutassa a művelet gombokat a képernyő alján + Mutassa a Lomtárat a mappák képernyőjén + Mély nagyítású képek + Mutassa a képeket a lehető legjobb minőségben + Mutassa a Lomtárat a fő képernyő utolsó elemeként + Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal - Thumbnails - Fullscreen media - Extended details - Bottom actions + Miniatűrök + Teljes képernyős média + Bővített részletek + Gomb műveletek - Manage visible bottom actions - Toggle favorite - Toggle file visibility + Látható gomb műveletek kezelése + Kedvencek módosítása + Fájl láthatóság módosítása - How can I make Simple Gallery the default device gallery? - First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\". - The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app. - I locked the app with a password, but I forgot it. What can I do? - You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files. - How can I make an album always appear at the top? - You can long press the desired album and select the Pin icon at the actionmenu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method. - How can I fast-forward videos? - You can click on the current or max duration texts near the seekbar, that will move the video either backward, or forward. - What is the difference between hiding and excluding a folder? - Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too. - Why do folders with music cover art or stickers show up? - It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too. - A folder with images isn\'t showing up, what can I do? - That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder. - What if I want just a few particular folders visible? - Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. - That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up. - Fullscreen images have weird artifacts, can I somehow improve the quality? - Yea, there is a toggle in Settings saying \"Replace deep zoomable images with better quality ones\", you can use that. It will improve the quality of the images, but they will get blurred once you try zooming in too much. - Can I crop images with this app? - Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view. - Can I somehow group media file thumbnails? - Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. - Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? - It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". - I see some color banding on the images. How can I improve the quality? - The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. - I have hidden a file/folder. How can I unhide it? - You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. + Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? + Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. +A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót, megjelenik egy alkalmazásválasztó, ahol kiválaszthatja a Simple Gallery lehetőséget, és beállíthatja alapértelmezett alkalmazásnak. + Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek? + 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat. + Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen? + Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi. + Hogyan tudom előre tekerni a videókat? + A keresősáv közelében lévő aktuális vagy maximális időtartamú szövegekre kattintva előre vagy hátra mozgathatja a videót. + Mi a különbség a mappa elrejtése és kizárása között? + A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is. + Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák? + Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen. + A képek mappája nem jelenik meg, mit tehetek? + Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát. + Mi van, ha csak néhány különleges mappát szeretnék látni? + A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban. +Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglalás rekurzív. Ha egy mappát hozzáadunk mindkettőhöz, akkor megjelenik. + A teljes képernyős képek furcsán néznek ki, tudnám valahogy javítani a minőséget? + Igen, van egy kapcsoló a Beállításokban: \"Cserélje le a mély nagyítású képeket jobb minőségűekre\", akkor használhatja. Javítja a képek minőségét, de elmosódik, ha túl nagy zoomolást használ. + Tudom vágni a képeket ezzel az alkalmazással? + Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben. + Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit? + Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket. + A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani? + Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg. + Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget? + Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban. + Elrejtettem egy fájlt/mappát. Hogyan tudom látni? + A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. - A gallery for viewing photos and videos without ads. + Galéria a fotók és videók hirdetések nélküli megtekintéséhez. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated or set as Wallpaper directly from the app. + Nagyon testreszabható galéria, amely alkalmas számos különböző kép- és videotípus megjelenítésére, beleértve az SVG-ket, RAW-t, panorámaképeket és videókat. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + Nyitott forráskódú, nem tartalmaz hirdetéseket vagy szükségtelen engedélyeket. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Lista néhány fontosabb funkcióról + 1. Keresés + 2. Diavetítés + 3. Notch támogatás + 4. Mappa kitűzés felülre + 5. Médiafájlok szűrése típus szerint + 6. Lomtár a törölt fájlok könnyű helyreállításához + 7. Teljes képernyős nézet tájolás zárolása + 8. Kedvenc fájlok megjelölése az egyszerű eléréshez + 9. Teljes képernyős média gyors bezárása lefelé mozdulattal + 10. Szerkesztő a képek módosításához és szűrők alkalmazásához + 11. Jelszavas védelem a rejtett elemekhez vagy az egész alkalmazáshoz + 12. Az indexkép oszlop módosítása mozdulatokkal vagy a menüben + 13. Testreszabható gomb műveletek a teljes képernyős nézetben a gyors elérés érdekében + 14. Bővített részletek mutatása a teljes képernyős nézetben a kívánt fájlok tulajdonságainál + 15. Az elemek rendezése vagy csoportosítása különböző növekvő és csökkenő módon + 16. Mappák elrejtése (más alkalmazásokra is hatással van), kivéve a mappákat (csak a Simple Gallery-t érinti) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + Az ujjlenyomat engedély szükséges a rejtett elemek láthatóságának, az egész alkalmazásnak és a fájlok törlésének védelme érdekében. - This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Ez az alkalmazás csak egy része egy nagyobb alkalmazás sorozatnak. A többi megtalálható a https://www.simplemobiletools.com címen. Riproduci i video automaticamente + Remember last video playback position Visibilità nome del file Ripeti i video Anima le GIF in miniatura @@ -211,15 +212,31 @@ Una galleria per visualizzare foto e video senza pubblicità. - Un semplice strumento per visualizzare foto e video. Gli elementi possono essere ordinati per data, dimensioni, nome sia ascendente che discendente; le foto possono essere ingrandite. I file sono mostrati in colonne multiple a seconda delle dimensioni dello schermo, puoi modificare il numero di colonne con il tocco. Possono essere rinominate, condivise, eliminate, copiate, spostate. Le immagini possono anche essere ritagliate, ruotate o impostate come sfondo direttamente dalla app. + Una galleria altamente personalizzabile e capace di visualizzare tipi di file immagini e video differenti, fra cui SVG, RAW, foto panoramiche e video. - 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. + È open source, non contiene pubblicità e permessi superflui. - L\'autorizzazione per le impronte è necessaria per bloccare la visibilità di alcuni elementi o dell\'intera app. + Alcune funzionalità che vale la pena accennare: + 1. Ricerca + 2. Presentazione + 3. Supporto al notch + 4. Fissare le cartelle in alto + 5. Filtro dei file per tipo + 6. Cestino per un recupero facile dei file + 7. Blocco dell\'orientamento nella vista a schermo intero + 8. Selezionare file preferiti per un accesso facile + 9. Chisura rapida della vista schermo intero con un movimento verso il basso + 10. Un editor per modificare le immagini ed applicare filtri + 11. Protezione con password per proteggere elementi nascosti o l\'intera applicazione + 12. Cambio delle colonne delle anteprime con un movimento o tramite dei pulsanti nel menu + 13. Pulsanti rapidi per azioni personalizzabili nella vista schermo intero + 14. Visualizzazione di determinati dettagli aggiuntivi nella vista a schermo intero + 15. Molti modi per ordinare o raggruppare gli elementi, sia in ordine crescente che decrescente + 16. Cartelle nascoste (anche per altre applicazioni), cartelle escluse (solo per Simple Gallery) - Non contiene pubblicità o autorizzazioni non necessarie. È completamente opensource, offre colori personalizzabili. - - Questa app è solo una piccola parte di una grande serie di altre app. Puoi trovarle tutte su https://www.simplemobiletools.com + Il permesso di leggere le impronte digitali è necessario per il blocco della visibilità degli elementi, dell\'intera applicazione o per proteggere alcuni file dalla loro eliminazione. + + Questa applicazione è solamente una di una serie più grande. Si possono trovare le altre su https://www.simplemobiletools.com ビデオを自動再生 + Remember last video playback position ファイル名の表示を切り替え ビデオを繰り返し再生 アニメーションGIFを動かす @@ -211,15 +212,31 @@ 写真やビデオを見るためのギャラリー。広告はありません。 - 写真やビデオを見るためのシンプルなツール。 日付、サイズ、名前で、昇順または降順にアイテムを並べ替えることができ、写真は拡大表示できます。 メディアファイルは、画面のサイズに応じて最適な列数で表示されます。 名前の変更、共有、削除、コピー、移動が可能です。 画像をトリミング、回転、または壁紙としてアプリから直接設定することもできます。 + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - ギャラリーは、画像やビデオのプレビュー、メールクライアントで添付ファイルの追加など、サードパーティの用途にも提供されます。 日々の使用には最適です。 + It is open source, contains no ads or unnecessary permissions. - 隠しアイテムを表示したりアプリそのものをロックするには指紋認証の許可が必要です。 + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - 広告や不要なアクセス許可は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。 + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com 비디오 자동재생 + Remember last video playback position 파일이름 보기 비디오 반복 섬네일에서 GIFs 애니메이션 활성화 @@ -211,19 +212,31 @@ 광고없이 사진과 동영상을 볼 수 있는 갤러리. - 사진과 동영상을 간편하게 관리 할 수 있는 툴입니다. - - 날짜, 크기, 이름을 기준으로 정렬 할 수 있으며 사진을 확대 할 수 있습니다. 미디어 파일은 디스플레이의 크기에 맞춰 여러 열로 표시되며 핀치 제스처를 이용하여 변경 할 수도 있습니다. - - 이름변경, 공유, 삭제, 복사, 이동, 이미지편집, 배경화면 설정 등의 기능을 제공합니다. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 갤러리는 \'이미지/비디오 미리보기\', \'이메일 클라이언트에서 첨부파일 추가하기\' 등의 기능을 서드파티 애플리케이션에 제공합니다. 언제나 완벽하게 사용할 수 있습니다. + It is open source, contains no ads or unnecessary permissions. - 앱을 잠그거나 숨김파일을 보기위하여 지문인식 기능을 사용하는 경우 지문사용 권한이 필요합니다. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - 광고가 포함되어 있거나, 불필요한 권한을 요청하지 않습니다. 이 앱의 모든 소스는 오픈소스이며, 사용자가 직접 애플리케이션의 컬러를 설정 할 수 있습니다. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - 이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 https://www.simplemobiletools.com 에서 찾아보실 수 있습니다. + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Groti vaizdo įrašus automatiškai + Remember last video playback position Perjungti bylos pavadinimo matomumą Klipuoti vaizdo įrašus Animuoti GIF\'us miniatiūrose @@ -211,15 +212,31 @@ Galerija, skirta peržiūrėti nuotraukas ir vaizdo įrašus be reklamų. - Paprastas įrankis, naudojamas peržiūrėti nuotraukas ir vaizdo įrašus. Elementus galima suskirstyti pagal datą, dydį, pavadinimą tiek didėjančia, tiek mažėjančia tvarka, nuotraukos gali būti priartintos. Vaizdo bylos rodomos keliuose stulpeliuose, priklausomai nuo ekrano dydžio, kolonėlių skaičių galite keisti naudodami gesinimo gestus. Jas galima pervardyti, bendrinti, ištrinti, kopijuoti, perkelti. Vaizdus taip pat galima apkarpyti, pasukti, apversti arba nustatyti kaip "Darbalaukio paveikslėliu" tiesiai iš programėlės. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galerija taip pat siūloma trečiosioms šalims peržiūrėti atvaizdus / vaizdo įrašus, pridėti priedus el. Pašto klientams ir pan. Tai idealu kasdieniam naudojimui. + It is open source, contains no ads or unnecessary permissions. - Pirštų atspaudų leidimas reikalingas norint užblokuoti paslėptą elemento matomumą arba visą programą. - - Neturi reklamų ar nereikalingų leidimų. Programėlė visiškai atviro kodo, yra galimybė keisti spalvas. - - Ši programėle yra vienina iš keletos mūsų programėlių. Likusias Jūs galite rasti čia http://www.simplemobiletools.com + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Avspill videoer automatisk + Husk siste videoavspillingsposisjon Vis/skjul filnavn Gjenta videoer Animert GIF i minibildevisning @@ -159,10 +160,10 @@ Gjør en ekstra sjekk for å unngå visning av ugyldige filer Vis noen handlingsknapper nederst på skjermen Vis papirkurven på mappeskjermen - Deep zoomable images - Show images in the highest possible quality - Show the Recycle Bin as the last item on the main screen - Allow closing the fullscreen view with a down gesture + Dyp zoombare bilder + Vis bilder i høyest mulig kvalitet + Vis papirkurven som siste element på hovedskjermen + Tillat lukking av mediavisningen med en nedoverbevegelse Minibilder @@ -211,13 +212,29 @@ A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a6b0b62da..f62a9bf3f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -133,6 +133,7 @@ Video\'s automatisch afspelen + Laatste positie in video\'s onthouden Bestandsnamen tonen Video\'s herhalen GIF-bestanden afspelen in overzicht @@ -211,15 +212,31 @@ Een galerij voor afbeeldingen en video\'s, zonder advertenties. - Een eenvoudige galerij voor afbeeldingen en video\'s. Bestanden kunnen worden gesorteerd op datum, grootte en naam. Afbeeldingen kunnen in- en uitgezoomd worden. Bestanden worden afhankelijk van de schermgrootte weergegeven in kolommen, waarbij het aantal kolommen kan worden aangepast via knijpgebaren. Bestanden kunnen worden gedeeld, hernoemd, gekopieerd, verplaatst en verwijderd. Afbeeldingen kunnen ook worden bijgesneden, gedraaid, gekanteld of direct vanuit de app als achtergrond worden ingesteld. + Een zeer goed aan te passen galerij voor afbeeldingen en video\'s in vele bestandsformaten, waaronder SVG, RAW, panoramafoto\'s en -video\'s. - 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. + Deze app is open-source, bevat geen advertenties en vraagt niet om onnodige machtigingen. - De machtiging voor het uitlezen van vingerafdrukken is benodigd voor het vergendelen van verborgen items of de gehele app. + Een lijst met de belangrijkste mogelijkheden: + 1. Zoeken + 2. Diavoorstelling + 3. Ondersteuning voor schermen met een inkeping + 4. Mappen bovenaan vastzetten + 5. Media filteren op bestandstype + 6. Een prullenbak + 7. Oriëntatie vastzetten voor volledig scherm + 8. Favorieten + 9. Veeggebaren in volledig scherm + 10. Afbeeldingen bewerken en filters toepassen + 11. Verborgen items of de gehele app beveiligen met een wachtwoord + 12. Het aantal kolommen aanpassen via veeggebaren of menuknoppen + 13. De acties op de werkbalk in volledig scherm aanpassen + 14. Uitgebreide informatie tonen over de bestanden in volledig scherm + 15. Items sorteren en groeperen op verschillende manieren + 16. Mappen verbergen (ook voor andere apps), of mappen uitsluiten (alleen voor deze app) - Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast. + De machtiging voor vingerafdrukken is benodigd voor het beveiligen van verborgen items, of de hele app, of om te voorkomen dat bestanden kunnen worden verwijderd. - Deze app is onderdeel van een grotere verzameling. Vind de andere apps op https://www.simplemobiletools.com + Deze app is onderdeel van een grotere collectie. De andere apps zijn te vinden op https://www.simplemobiletools.com @@ -133,6 +133,7 @@ Odtwarzaj filmy automatycznie + Remember last video playback position Pokazuj / ukrywaj nazwy plików Zapętlaj odtwarzanie filmów Animowane miniatury GIFów @@ -209,13 +210,31 @@ Prosta galeria bez reklam do przeglądania obrazów i filmów. -       Prosta aplikacja galerii do oglądania obrazów i filmów. Pliki mogą być sortowane według daty, rozmiaru i nazwy, zarówno w porządku rosnącym, jak i malejącym. W zależności od wielkości ekranu, wyświetlane mogą być w wielu kolumnach. Liczbę kolumn można zmieniać za pomocą gestów, a zdjęcia mogą być powiększane, przycinane, obracane lub ustawiane jako tapeta bezpośrednio z poziomu aplikacji. Jej kolorystykę można dowolnie modyfikować. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. -       Uprawnienie od odcisków palców potrzebne jest w celu blokowania widoczności elementów, bądź też całej aplikacji. + It is open source, contains no ads or unnecessary permissions. -       Nie zawiera żadnych reklam, nie potrzebuje wielu uprawnień i jest w pełni otwartoźródłowa. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) -       Jest ona tylko częścią naszej kolekcji prostych narzędzi. Ta, jak i pozostałe, dostępne są na stronie https://www.simplemobiletools.com + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Reproduzir vídeos automaticamente + Remember last video playback position Mostrar/ocultar nome do arquivo Reproduzir vídeos em ciclo Animação de GIFs nas miniaturas @@ -211,15 +212,31 @@ Um aplicativo para visualizar fotos e vídeos. - Uma ferramenta simples para ver fotos e vídeos. Pode organizar os itens por data, tamanho, nome e ampliar as fotografias. As pastas são mostradas em colunas, e a sua exibição dependerá do tamanho da tela, aonde o usuário poderá alterar o número de colunas através de gestos. Você pode renomear, compartilhar, apagar, copiar e mover os arquivos. Também pode recortar, girar e definir as imagens como fundo de tela. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 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. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Não contém anúncios, nem permissões desnecessárias. Disponibiliza um tema escuro, e é totalmente \'open source\'. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Reproduzir vídeos automaticamente + Remember last video playback position Mostrar/ocultar nome do ficheiro Vídeos em ciclo Animação de GIF nas miniaturas @@ -211,15 +212,31 @@ Uma aplicação para ver fotografias e vídeos. - Uma ferramenta simples para ver fotos e vídeos. Pode organizar os itens por data, tamanho, nome e ampliar as fotografias. Os ficheiros multimédia são mostrados em colunas e a sua exibição está dependente do tamanho do ecrã, podendo alterar o número de colunas através de gestos. Pode renomear, partilhar, apagar, copiar e mover as fotografias. Também pode recortar, rodar e definir as imagens como fundo do ecrã a partir da aplicação. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 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. + It is open source, contains no ads or unnecessary permissions. - A permissão Impressão digital é necessária para bloquear a visualização dos itens ocultos ou de toda a aplicação. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Não contém anúncios nem permissões desnecessárias. Disponibiliza um tema escuro e é totalmente \'open source\'. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Воспроизводить видео автоматически + Remember last video playback position Переключить отображение имени файла Повтор видео Анимировать эскизы GIF @@ -211,15 +212,31 @@ Галерея для просмотра изображений и видео. Без рекламы. - Простое приложение для просмотра изображений и видеозаписей. Отображаемые файлы могут быть отсортированы как по возрастанию, так и по убыванию даты, размера или имени. Фотографии можно масштабировать. В зависимости от размера экрана, медиафайлы располагаются в несколько столбцов, можно изменять число столбцов щипком двумя пальцами. Можно переименовывать, удалять, копировать, перемещать и делиться файлами из галереи. В приложении есть возможность обрезать и поворачивать изображения или устанавливать их в качестве обоев. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Галерея идеальна для повседневных задач (предпросмотр фото/видео, добавление вложений в почтовых клиентах и т.д.). + It is open source, contains no ads or unnecessary permissions. - Разрешение \"Отпечаток пальца\" необходимо для блокировки видимости скрытых объектов или всего приложения. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Это приложение не будет показывать рекламу или запрашивать ненужные разрешения. У него полностью открытый исходный код и настраиваемые цвета оформления. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Simple Gallery — это приложение из серии Simple Mobile Tools. Остальные приложения из этой серии можно найти здесь: https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Spúšťať videá automaticky + Zapamätať si pozíciu posledného prehraného videa Prepnúť viditeľnosť názvov súborov Automaticky reštartovať videá Animovať GIF súbory pri náhľade @@ -211,13 +212,29 @@ Galéria na prezeranie obrázkov a videí bez reklám. - Jednoduchá nástroj použiteľný na prezeranie obrázkov a videí. Položky môžu byť zoradené podľa dátumu, veľkosti, názvu oboma smermi, obrázky je možné aj priblížiť. Položky sú zobrazované vo viacerých stĺpcoch v závislosti od veľkosti displeja, počet stĺpcov je možné meniť pomocou gesta prstami. Súbory môžete premenovať, zdieľať, mazať, kopírovať, premiestňovať. Obrázky môžete orezať, otočiť, alebo nastaviť ako tapeta priamo v aplikácií. + Nastaviteľná galéria na zobrazovanie množstva rozličných druhov obrázkov a videí, vrátane SVG, RAW súborov, panoramatických fotiek a videí. - Galéria je tiež poskytovaná pre použitie treťou stranou pre prehliadanie fotiek a videí, pridávanie príloh v emailových klientoch. Je perfektná na každodenné použitie. + Je open source, neobsahuje reklamy, ani nepotrebné oprávnenia. - Prístup ku odtlačkom prstov je potrebný pre uzamykanie skrytých položiek, alebo celej apky. + Tu je niekoľko funkcií hodných spomenutia: + 1. Vyhľadávanie + 2. Slideshow + 3. Podpora pre zárez v displeji + 4. Pripínanie priečinkov na vrch + 5. Filtrovanie médií podľa typu + 6. Odpadkový kôš pre jednoduchú obnovu súborov + 7. Uzamykanie orientácie celoobrazovkového režimu + 8. Označovanie obľúbených položiek pre jednoduchý prístup + 9. Rýchle ukončovanie celoobrazovkového režimu pomocou potiahnutia prstom dole + 10. Editor na úpravu obrázkov a aplikáciu filtrov + 11. Ochrana heslom pre zobrazovanie skrytých súborov, alebo celej aplikácie + 12. Zmena počtu stĺpcov s náhľadmi buď gestúrami, alebo pomocou menu tlačidiel + 13. Nastaviteľné spodné akcie na celoobrazovkovom režime pre rýchly prístup + 14. Zobrazenie nastaviteľných rozšírených vlastností ponad celoobrazovkové médiá + 15. Niekoľko rozličných spôsobov radenia a zoskupovania položiek vzostupne, alebo zostupne + 16. Ukrývanie priečinkov (ovplyvňuje aj iné aplikácie), alebo ich vylúčenie (ovplyvní iba Jednoduchú galériu) - Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb. + Prístup k odtlačkom prstov je potrebný pre ochranu zobrazenia skrytých položiek, celej aplikácie, alebo ochranu súborov pred ich odstránením. Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 0eeff1265..3137d4210 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -133,6 +133,7 @@ Spela upp videor automatiskt + Remember last video playback position Visa/dölj filnamn Spela upp videor om och om igen Animera GIF-bilders miniatyrer @@ -211,15 +212,31 @@ Ett galleri för att visa foton och videor utan reklam. - 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. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 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. + It is open source, contains no ads or unnecessary permissions. - Fingeravtrycksbehörigheten behövs för att låsa hela appen eller synligheten för dolda objekt. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Innehåller ingen reklam eller onödiga behörigheter. Det har helt öppen källkod och anpassningsbara färger. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Denna app är bara en del av en större serie appar. Du hittar resten av dem på https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Videoları otomatik olarak oynat + Remember last video playback position Dosya adı görünürlüğünü değiştir Videolar döngüsü Küçük resimlerde GIF\'leri canlandırın @@ -211,15 +212,31 @@ Fotoğrafları ve videoları reklamsız görüntülemek için kullanılan bir galeri. - Fotoğrafları ve videoları görüntülemek için kullanılabilecek basit bir araç. Öğeler tarihine, boyutuna, adına göre artan veya azalan olarak sıralanabilir, fotoğraflar yakınlaştırılabilir. Medya dosyaları, ekranın boyutuna bağlı olarak birden fazla sütunda gösterilir, sıkıştırma hareketleriyle sütun sayısını değiştirebilirsiniz. Yeniden adlandırılabilir, paylaşılabilir, silinebilir, kopyalanabilir, taşınabilirler. Resimler ayrıca kırpılabilir, döndürülebilir veya doğrudan uygulama\'dan Duvar kağıdı olarak ayarlanabilir. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - Galeri, görüntüleri/videoları önizlemek, e-posta istemcilerine ek ekler yapmak için üçüncü taraf kullanımı için de önerilir. Bu\'s günlük kullanım için mükemmel. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Reklam içermeyen veya gereksiz izinler. Tamamen açık kaynaktır, özelleştirilebilir renkler sağlar. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. - Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanını şu adresten bulabilirsiniz https://www.simplemobiletools.com + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com Відтворювати відео автоматично + Запам\'ятовувати місце зупинки перегляду Перемкнути відображення імені файлу Зациклити відео Анімувати ескізи GIF-файлів @@ -211,15 +212,31 @@ Галерея для перегляду фото та відео без реклами. - Простий інструмент для перегляду фотографій і відео. Елементи можна сортувати за датою, розміром, ім\'ям як за зростанням, так і за спаданням, фотографії можна масштабувати. Медіафайли показуються у кілька колонок залежно від розміру екрану, їх кількість може бути змінена жестом \"щипок екрану\". Медіафайли можна перейменовувати, копіювати, переміщувати, видаляти або ділитися ними. Зображення також можна обрізати, обертати, віддзеркалювати або встановлювати як шпалери безпосередньо з додатку. + Тонко налаштовувана галерея, здатна відображати зображення та відео різноманітних типів, включаючи SVG-зображення, RAW-зображення,панорамні фото і відео. - Галерея також пропонується для використання третіми сторонами для перегляду зображень / відео, додавання долучень до клієнтів електронної пошти тощо. Вона ідеально підходить для щоденного використання. + Джерельний код галереї відкритий, вона не містить реклами та не вимагає зайвих дозволів. - Дозвіл на доступ до відбитків пальців потрібен для блокування відображення прихованих елементів або для блокування всього застосунку. + Ось кілька її переваг, які варто згадати: + 1. Пошук + 2. Слайдшоу + 3. Підтримка закладок (Notch) + 4. Закріплення тек вгорі екрану + 5. Фільтрування медіафайлів за типом + 6. Кошик для легкого відновлення файлів + 7. Фіксація повороту екрану при повноекранному перегляді + 8. Позначення улюблених файлів для швидкого доступу + 9. Швидке закриття повноекранного перегляду жестом згори вниз + 10. Редактор для редагування зображень та накладання фільтрів + 11. Захист паролем для захисту прихованих елементів або всього додатку + 12. Зміна кількості колонок піктограм жестом чи через меню + 13. Налаштовувані кнопки швидких дій внизу екрану при повноекранному перегляді + 14. Показ детальної інформації з обраними властивостями файлу при повноекранному перегляді + 15. Кілька різних способів сортування або групування елементів - як за зростанням, так і за спаданням + 16. Приховування тек (і в інших додатках також), виключення тек (тільки в Simple Gallery) - Не містить реклами або непотрібних дозволів. Додаток повністю OpenSource, забезпечує налаштування кольорів. + Дозвіл на доступ до відбитку пальця потрібен для блокування або видимості прихованих елементів, або всього додатку, або для захисту файлів від видалення. - Цей додаток є частиною великої серії схожих додатків. Ви можете знайти решту з них на https://www.simplemobiletools.com + Цей додаток входить в велику серію додатків. Ви можете знайти їх на https://www.simplemobiletools.com 自动播放 + 记住上次视频播放位置 显示文件名 循环播放视频 GIF 缩略图 @@ -209,15 +210,31 @@ 一个没有广告,用来观看照片及视频的相册。 - 一个观看照片和视频的简单实用工具。项目可以根据日期、大小、名称来递增或递减排序,照片可以缩放。媒体文件根据屏幕的大小排列在多个方格中,您可以使用缩放手势来调整每一列的方格数量。媒体文件可以被重命名、分享、删除、复制以及移动。照片亦可被剪切、旋转或是直接在应用中设为壁纸。 + 一个高度可定制的图库,支持很多的图像和视频类型,包括SVG,RAW,全景照片和视频。 - 相册亦提供能让第三方应用预览图片/视频、向电子邮件客户端添加附件等的功能。非常适合日常使用。 + 本应用是开源的,没有广告以及不必要的权限。 - 这个应用需要指纹权限来锁定隐藏的项目或是整个应用。 + 列举一些值得一提的功能: + 1.搜索 + 2.幻灯片 + 3.支持留海屏 + 4.固定文件夹到顶部 + 5.按类型过滤媒体文件 + 6.回收站(便于恢复文件) + 7.全屏视图方向锁定 + 8.标记收藏文件以便于访问 + 9.使用下滑手势关闭全屏视图 + 10.图片编辑器,可用于修改图像和应用滤镜 + 11.密码保护,可用于保护应用和隐藏项目 + 12.可使用手势或菜单按钮来更改缩略图列数 + 13.可自定义全屏视图中的底栏操作按钮,方便快速 + 14.在全屏视图下显示文件属性具有的扩展详细信息 + 15.按照不同的方式对项目进行排序或分组,包括升序和降序 + 16.隐藏文件夹(会影响其他应用),排除文件夹(仅影响本应用) - 应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。 + 如需锁定隐藏项目的可见性,或是锁定本应用,或是保护文件不被删除,则需要指纹权限。 - 这个应用只是一系列应用中的一小部份。您可以在 https://www.simplemobiletools.com 找到其余的应用。 + 这个应用只是一个更大的应用系列的一小部分。您可以在https://www.simplemobiletools.com找到其余的应用。 自動播放影片 + Remember last video playback position 顯示檔案名稱 影片循環播放 縮圖顯示GIF動畫 @@ -211,15 +212,31 @@ 一個用來瀏覽相片和影片,且沒有廣告的相簿。 - 一個用來瀏覽相片和影片的簡單工具。可以根據日期、大小、名稱來遞增或遞減排序項目,相片能被縮放。媒體檔案會依畫面大小呈現在數個欄位內,你可以使用縮放手勢來改變欄數。媒體檔案可以重新命名、分享、刪除、複製、移動;圖片還能縮放、旋轉、翻轉,或者直接設為桌布。 - - 這相簿也支援第三方使用,像是預覽圖片/影片、添加電子信箱附件…等功能,日常使用上相當適合。 + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - 指紋權限用來鎖定隱藏的項目或是整個程式。 + It is open source, contains no ads or unnecessary permissions. - 不包含廣告及非必要的權限,而且完全開放原始碼,並提供自訂顏色。 - - 這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 https://www.simplemobiletools.com + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) + + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + Added a new option for password protecting file deletion/move Added a new option for showing the Recycle Bin as the last folder Added a new settings toggle \"Show images in the highest possible quality\"\n diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 24264a8ba..ef69c4da9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -133,6 +133,7 @@ Play videos automatically + Remember last video playback position Toggle filename visibility Loop videos Animate GIFs at thumbnails @@ -211,13 +212,29 @@ A gallery for viewing photos and videos without ads. - A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. + A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. - The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It\'s perfect for everyday usage. + It is open source, contains no ads or unnecessary permissions. - The fingerprint permission is needed for locking either hidden item visibility, or the whole app. + Let\'s list some of its features worth mentioning: + 1. Search + 2. Slideshow + 3. Notch support + 4. Pinning folders to the top + 5. Filtering media files by type + 6. Recycle bin for easy file recovery + 7. Fullscreen view orientation locking + 8. Marking favorite files for easy access + 9. Quick fullscreen media closing with down gesture + 10. An editor for modifying images and applying filters + 11. Password protection for protecting hidden items or the whole app + 12. Changing the thumbnail column count with gestures or menu buttons + 13. Customizable bottom actions at the fullscreen view for quick access + 14. Showing extended details over fullscreen media with desired file properties + 15. Several different ways of sorting or grouping items, both ascending and descending + 16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) - Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com diff --git a/build.gradle b/build.gradle index 0b0dbc07b..17a20ee31 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.0' repositories { google() diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 4f5d71596..74f1472e3 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,9 +1,25 @@ -A simple tool usable for viewing photos and videos. Items can be sorted by date, size, name both ascending or descending, photos can be zoomed in. Media files are shown in multiple columns depending on the size of the display, you can change the column count by pinch gestures. They can be renamed, shared, deleted, copied, moved. Images can also be cropped, rotated, flipped or set as Wallpaper directly from the app. +A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. -The Gallery is also offered for third party usage for previewing images / videos, adding attachments at email clients etc. It's perfect for everyday usage. +It is open source, contains no ads or unnecessary permissions. -The fingerprint permission is needed for locking either hidden item visibility, or the whole app. +Let's list some of its features worth mentioning: +1. Search +2. Slideshow +3. Notch support +4. Pinning folders to the top +5. Filtering media files by type +6. Recycle bin for easy file recovery +7. Fullscreen view orientation locking +8. Marking favorite files for easy access +9. Quick fullscreen media closing with down gesture +10. An editor for modifying images and applying filters +11. Password protection for protecting hidden items or the whole app +12. Changing the thumbnail column count with gestures or menu buttons +13. Customizable bottom actions at the fullscreen view for quick access +14. Showing extended details over fullscreen media with desired file properties +15. Several different ways of sorting or grouping items, both ascending and descending +16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) -Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. +The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com