From 04f1bbaffec620fab540da82735bec6816c82508 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 14:42:17 +0100 Subject: [PATCH 01/15] add a toggle for showing info bubble at fastscroller --- app/build.gradle | 2 +- .../gallery/activities/MainActivity.kt | 5 ++++- .../gallery/activities/MediaActivity.kt | 5 ++++- .../gallery/activities/SettingsActivity.kt | 9 +++++++++ .../gallery/dialogs/PickDirectoryDialog.kt | 5 ++++- .../gallery/dialogs/PickMediumDialog.kt | 5 ++++- app/src/main/res/layout/activity_settings.xml | 20 +++++++++++++++++++ 7 files changed, 46 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d54939b3c..6870b205f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.1.4' + implementation 'com.simplemobiletools:commons:3.1.7' implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.0' implementation 'com.android.support:multidex:1.0.2' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index aca94dfc4..af6e3b8ee 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -57,6 +57,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { private var mStoredCropThumbnails = true private var mStoredScrollHorizontally = true private var mStoredShowMediaCount = true + private var mStoredShowInfoBubble = true private var mStoredTextColor = 0 private var mLoadedInitialPhotos = false private var mIsPasswordProtectionPending = false @@ -113,7 +114,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { getDirectoryAdapter()?.updateShowMediaCount(config.showMediaCount) } - if (mStoredScrollHorizontally != config.scrollHorizontally) { + if (mStoredScrollHorizontally != config.scrollHorizontally || mStoredShowInfoBubble != config.showInfoBubble) { getDirectoryAdapter()?.updateScrollHorizontally(config.viewTypeFolders != VIEW_TYPE_LIST && config.scrollHorizontally) setupScrollDirection() } @@ -200,6 +201,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { mStoredCropThumbnails = cropThumbnails mStoredScrollHorizontally = scrollHorizontally mStoredShowMediaCount = showMediaCount + mStoredShowInfoBubble = showInfoBubble mStoredTextColor = textColor } } @@ -583,6 +585,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { if (allowHorizontalScroll) { directories_horizontal_fastscroller.setViews(directories_grid, directories_refresh_layout) } else { + directories_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble directories_vertical_fastscroller.setViews(directories_grid, directories_refresh_layout) { directories_vertical_fastscroller.updateBubbleText(mDirs[it].getBubbleText()) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 4f231fd42..0ec644665 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -53,6 +53,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { private var mStoredAnimateGifs = true private var mStoredCropThumbnails = true private var mStoredScrollHorizontally = true + private var mStoredShowInfoBubble = true private var mStoredTextColor = 0 private var mLastDrawnHashCode = 0 private var mLatestMediaId = 0L @@ -100,7 +101,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { getMediaAdapter()?.updateCropThumbnails(config.cropThumbnails) } - if (mStoredScrollHorizontally != config.scrollHorizontally) { + if (mStoredScrollHorizontally != config.scrollHorizontally || mStoredShowInfoBubble != config.showInfoBubble) { getMediaAdapter()?.updateScrollHorizontally(config.viewTypeFiles != VIEW_TYPE_LIST || !config.scrollHorizontally) setupScrollDirection() } @@ -140,6 +141,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { mStoredAnimateGifs = animateGifs mStoredCropThumbnails = cropThumbnails mStoredScrollHorizontally = scrollHorizontally + mStoredShowInfoBubble = showInfoBubble mStoredTextColor = textColor mShowAll = showAll } @@ -203,6 +205,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { if (allowHorizontalScroll) { media_horizontal_fastscroller.setViews(media_grid, media_refresh_layout) } else { + media_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble media_vertical_fastscroller.setViews(media_grid, media_refresh_layout) { media_vertical_fastscroller.updateBubbleText(mMedia[it].getBubbleText()) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt index 4bb90d013..6309dd18e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt @@ -55,6 +55,7 @@ class SettingsActivity : SimpleActivity() { setupAllowVideoGestures() setupShowMediaCount() setupKeepLastModified() + setupShowInfoBubble() setupShowExtendedDetails() setupManageExtendedDetails() updateTextColors(settings_holder) @@ -254,6 +255,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupShowInfoBubble() { + settings_show_info_bubble.isChecked = config.showInfoBubble + settings_show_info_bubble_holder.setOnClickListener { + settings_show_info_bubble.toggle() + config.showInfoBubble = settings_show_info_bubble.isChecked + } + } + private fun setupScreenRotation() { settings_screen_rotation.text = getScreenRotationText() settings_screen_rotation_holder.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt index 937f98e07..97c04955c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt @@ -86,7 +86,10 @@ class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: Stri if (scrollHorizontally) { directories_horizontal_fastscroller.setViews(directories_grid) } else { - directories_vertical_fastscroller.setViews(directories_grid) + directories_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble + directories_vertical_fastscroller.setViews(directories_grid) { + directories_vertical_fastscroller.updateBubbleText(dirs[it].getBubbleText()) + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt index ad579e02c..0a80c0316 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -76,7 +76,10 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c if (scrollHorizontally) { media_horizontal_fastscroller.setViews(media_grid) } else { - media_vertical_fastscroller.setViews(media_grid) + media_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble + media_vertical_fastscroller.setViews(media_grid) { + media_vertical_fastscroller.updateBubbleText(media[it].getBubbleText()) + } } } } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 509679282..a204da6cb 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -408,6 +408,26 @@ + + + + + + Date: Wed, 6 Dec 2017 12:24:05 -0200 Subject: [PATCH 02/15] PT-BR update --- app/src/main/res/values-pt-rBR/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index d63e956f6..c3eaaeaac 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -23,8 +23,8 @@ Volume Brilho Não perguntar novamente por enquanto - Lock orientation - Unlock orientation + Travar orientação + Destravar orientação Filtrar mídia @@ -41,7 +41,7 @@ Gerenciar pastas excluídas Esta ação irá excluir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas excuídas nas Configurações do aplicativo. Excluir antes a pasta raíz? - A exlusão de uma pasta apenas oculta o seu conteúdo da galeria, pois todos os outros aplicativos poderão acessá-las.\\n\\nSe quiser ocultar de todos os aplicativos, utilize a função ocultar. + A exclusão de uma pasta apenas oculta o seu conteúdo da galeria, pois todos os outros aplicativos poderão acessá-las.\\n\\nSe quiser ocultar de todos os aplicativos, utilize a função ocultar. Remover todas Remover todas as pastas da lista de exclusões? Esta ação não apaga as pastas. @@ -84,13 +84,13 @@ Falha ao definir como papel de parede Definir papel de parede com: Aplicativo não encontrado - Definindo como papel de parede; + Definindo como papel de parede Papel de parede com sucesso Retrato Paisagem - Home screen - Lock screen - Home and lock screen + Tela inicial + Tela de bloqueio + Tela inicial e de bloqueio Slideshow From fbcee2c7a030b812b3bbfc102ec83e1cfa992af4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 16:10:21 +0100 Subject: [PATCH 03/15] couple code style updates --- .../simplemobiletools/gallery/activities/MainActivity.kt | 4 ++-- .../gallery/activities/MediaActivity.kt | 6 +++--- .../gallery/activities/SetWallpaperActivity.kt | 4 ++-- .../gallery/activities/ViewPagerActivity.kt | 4 ++-- .../gallery/adapters/DirectoryAdapter.kt | 5 ++--- .../simplemobiletools/gallery/adapters/MediaAdapter.kt | 9 ++++----- app/src/main/res/layout/directory_item_list.xml | 2 +- 7 files changed, 16 insertions(+), 18 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index af6e3b8ee..89f8e1fbf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -598,7 +598,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { mLastMediaHandler.removeCallbacksAndMessages(null) mLastMediaHandler.postDelayed({ - Thread({ + Thread { val mediaId = getLatestMediaId() if (mLatestMediaId != mediaId) { mLatestMediaId = mediaId @@ -608,7 +608,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { } else { checkLastMediaChanged() } - }).start() + }.start() }, LAST_MEDIA_CHECK_PERIOD) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 0ec644665..9da4e2278 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -75,7 +75,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { mAllowPickingMultiple = getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false) } - media_refresh_layout.setOnRefreshListener({ getMedia() }) + media_refresh_layout.setOnRefreshListener { getMedia() } mPath = intent.getStringExtra(DIRECTORY) storeStateVariables() if (mShowAll) @@ -218,7 +218,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { mLastMediaHandler.removeCallbacksAndMessages(null) mLastMediaHandler.postDelayed({ - Thread({ + Thread { val mediaId = getLatestMediaId() if (mLatestMediaId != mediaId) { mLatestMediaId = mediaId @@ -228,7 +228,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } else { checkLastMediaChanged() } - }).start() + }.start() }, LAST_MEDIA_CHECK_PERIOD) } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt index 559d06452..9f149647c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SetWallpaperActivity.kt @@ -114,7 +114,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete if (result.error == null) { toast(R.string.setting_wallpaper) - Thread({ + Thread { val bitmap = result.bitmap val wantedHeight = wallpaperManager.desiredMinimumHeight val ratio = wantedHeight / bitmap.height.toFloat() @@ -132,7 +132,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete setResult(Activity.RESULT_CANCELED) } finish() - }).start() + }.start() } else { toast("${getString(R.string.image_editing_failed)}: ${result.error.message}") } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt index 47b0f6e53..428c1125b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -499,9 +499,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View SaveAsDialog(this, currPath, false) { val selectedFile = File(it) handleSAFDialog(selectedFile) { - Thread({ + Thread { saveImageToFile(currPath, it) - }).start() + }.start() } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt index dbd4cd7de..25a95566a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/adapters/DirectoryAdapter.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.gallery.adapters -import android.graphics.PorterDuff import android.view.Menu import android.view.View import android.view.ViewGroup @@ -342,8 +341,8 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: MutableList, } private fun toggleFileVisibility(hide: Boolean) { - Thread({ + Thread { getSelectedMedia().forEach { val oldFile = File(it.path) activity.toggleFileVisibility(oldFile, hide) @@ -151,7 +150,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, listener?.refreshItems() finishActMode() } - }).start() + }.start() } private fun shareMedia() { @@ -264,7 +263,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, if (isListViewType) { photo_name.setTextColor(textColor) - play_outline.setColorFilter(textColor, PorterDuff.Mode.SRC_IN) + play_outline.applyColorFilter(textColor) } } } diff --git a/app/src/main/res/layout/directory_item_list.xml b/app/src/main/res/layout/directory_item_list.xml index fb7e8e7d8..c5dca4520 100644 --- a/app/src/main/res/layout/directory_item_list.xml +++ b/app/src/main/res/layout/directory_item_list.xml @@ -4,9 +4,9 @@ android:id="@+id/dir_holder" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingLeft="@dimen/small_margin" android:clickable="true" android:focusable="true" + android:paddingLeft="@dimen/small_margin" android:paddingTop="@dimen/small_margin"> Date: Wed, 6 Dec 2017 16:42:06 +0100 Subject: [PATCH 04/15] showd fastscroller bubble at horizontal scrolling tii --- app/build.gradle | 2 +- .../simplemobiletools/gallery/activities/MainActivity.kt | 5 ++++- .../simplemobiletools/gallery/activities/MediaActivity.kt | 5 ++++- .../gallery/dialogs/PickDirectoryDialog.kt | 5 ++++- .../simplemobiletools/gallery/dialogs/PickMediumDialog.kt | 5 ++++- app/src/main/res/layout/activity_main.xml | 8 +------- app/src/main/res/layout/activity_media.xml | 8 +------- app/src/main/res/layout/dialog_directory_picker.xml | 8 +------- app/src/main/res/layout/dialog_medium_picker.xml | 8 +------- 9 files changed, 21 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6870b205f..f0f70f55e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.1.7' + implementation 'com.simplemobiletools:commons:3.1.9' implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.0' implementation 'com.android.support:multidex:1.0.2' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index 89f8e1fbf..97d94af1e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -583,7 +583,10 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { directories_horizontal_fastscroller.beVisibleIf(allowHorizontalScroll) if (allowHorizontalScroll) { - directories_horizontal_fastscroller.setViews(directories_grid, directories_refresh_layout) + directories_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble + directories_horizontal_fastscroller.setViews(directories_grid, directories_refresh_layout) { + directories_horizontal_fastscroller.updateBubbleText(mDirs[it].getBubbleText()) + } } else { directories_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble directories_vertical_fastscroller.setViews(directories_grid, directories_refresh_layout) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 9da4e2278..5561de9bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -203,7 +203,10 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { media_horizontal_fastscroller.beVisibleIf(allowHorizontalScroll) if (allowHorizontalScroll) { - media_horizontal_fastscroller.setViews(media_grid, media_refresh_layout) + media_horizontal_fastscroller.allowBubbleDisplay = config.showInfoBubble + media_horizontal_fastscroller.setViews(media_grid, media_refresh_layout) { + media_horizontal_fastscroller.updateBubbleText(mMedia[it].getBubbleText()) + } } else { media_vertical_fastscroller.allowBubbleDisplay = config.showInfoBubble media_vertical_fastscroller.setViews(media_grid, media_refresh_layout) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt index 97c04955c..de25c42e2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt @@ -84,7 +84,10 @@ class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: Stri directories_horizontal_fastscroller.beVisibleIf(scrollHorizontally) if (scrollHorizontally) { - directories_horizontal_fastscroller.setViews(directories_grid) + directories_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble + directories_horizontal_fastscroller.setViews(directories_grid) { + directories_horizontal_fastscroller.updateBubbleText(dirs[it].getBubbleText()) + } } else { directories_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble directories_vertical_fastscroller.setViews(directories_grid) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt index 0a80c0316..b24fbc62c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -74,7 +74,10 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c media_horizontal_fastscroller.beVisibleIf(scrollHorizontally) if (scrollHorizontally) { - media_horizontal_fastscroller.setViews(media_grid) + media_horizontal_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble + media_horizontal_fastscroller.setViews(media_grid) { + media_horizontal_fastscroller.updateBubbleText(media[it].getBubbleText()) + } } else { media_vertical_fastscroller.allowBubbleDisplay = activity.config.showInfoBubble media_vertical_fastscroller.setViews(media_grid) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 828d2689b..a01449b1a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -63,13 +63,7 @@ android:layout_alignParentStart="true" android:paddingTop="@dimen/normal_margin"> - + diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index 6741e00fe..918e39428 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -63,13 +63,7 @@ android:layout_alignParentStart="true" android:paddingTop="@dimen/normal_margin"> - + diff --git a/app/src/main/res/layout/dialog_directory_picker.xml b/app/src/main/res/layout/dialog_directory_picker.xml index 824e8db82..a86f68c21 100644 --- a/app/src/main/res/layout/dialog_directory_picker.xml +++ b/app/src/main/res/layout/dialog_directory_picker.xml @@ -37,13 +37,7 @@ android:layout_alignParentStart="true" android:paddingTop="@dimen/normal_margin"> - + diff --git a/app/src/main/res/layout/dialog_medium_picker.xml b/app/src/main/res/layout/dialog_medium_picker.xml index 01b630a1d..e854a7e60 100644 --- a/app/src/main/res/layout/dialog_medium_picker.xml +++ b/app/src/main/res/layout/dialog_medium_picker.xml @@ -36,13 +36,7 @@ android:layout_alignParentStart="true" android:paddingTop="@dimen/normal_margin"> - + From bb2659d018642032e4f504d12fc78daefe6b8551 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 16:44:54 +0100 Subject: [PATCH 05/15] reference the SupportActionBar title at updating it --- .../simplemobiletools/gallery/activities/MediaActivity.kt | 2 +- .../gallery/activities/PhotoVideoActivity.kt | 2 +- .../gallery/activities/ViewPagerActivity.kt | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 5561de9bb..e7aab694e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -151,7 +151,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { handlePermission(PERMISSION_WRITE_STORAGE) { if (it) { val dirName = getHumanizedFilename(mPath) - title = if (mShowAll) resources.getString(R.string.all_folders) else dirName + supportActionBar?.title = if (mShowAll) resources.getString(R.string.all_folders) else dirName getMedia() setupLayoutManager() checkIfColorChanged() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt index 4711f1c62..de41a30a8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/PhotoVideoActivity.kt @@ -79,7 +79,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList val bundle = Bundle() val file = File(mUri.toString()) mMedium = Medium(getFilenameFromUri(mUri!!), mUri.toString(), mIsVideo, 0, 0, file.length()) - title = mMedium!!.name + supportActionBar?.title = mMedium!!.name bundle.putSerializable(MEDIUM, mMedium) if (savedInstanceState == null) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt index 428c1125b..a551e96ff 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -185,7 +185,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View showSystemUI() mDirectory = File(mPath).parent - title = mPath.getFilenameFromPath() + supportActionBar?.title = mPath.getFilenameFromPath() view_pager.onGlobalLayout { if (!isActivityDestroyed()) { @@ -463,7 +463,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun toggleFileVisibility(hide: Boolean) { toggleFileVisibility(getCurrentFile(), hide) { val newFileName = it.absolutePath.getFilenameFromPath() - title = newFileName + supportActionBar?.title = newFileName getCurrentMedium()!!.apply { name = newFileName @@ -835,7 +835,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun updateActionbarTitle() { runOnUiThread { if (mPos < getCurrentMedia().size) { - title = getCurrentMedia()[mPos].path.getFilenameFromPath() + supportActionBar?.title = getCurrentMedia()[mPos].path.getFilenameFromPath() } } } From 5e9ac3aaaa45196852b17351458a8fe85b7c7bc5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 17:08:57 +0100 Subject: [PATCH 06/15] fix #448, update Commons to include Raw support --- app/build.gradle | 2 +- .../com/simplemobiletools/gallery/fragments/PhotoFragment.kt | 2 +- .../main/kotlin/com/simplemobiletools/gallery/models/Medium.kt | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f0f70f55e..eb4681c4d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.1.9' + implementation 'com.simplemobiletools:commons:3.1.12' implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.0' implementation 'com.android.support:multidex:1.0.2' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt index 599b17d3a..a7297449b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/fragments/PhotoFragment.kt @@ -223,7 +223,7 @@ class PhotoFragment : ViewPagerFragment() { } private fun addZoomableView() { - if ((medium.isImage()) && isFragmentVisible && view.subsampling_view.isGone()) { + if ((medium.isImage()) && isFragmentVisible && view.subsampling_view.isGone() && !medium.isDng()) { val exif = android.media.ExifInterface(medium.path) val orientation = exif.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, android.media.ExifInterface.ORIENTATION_NORMAL) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt index 638dc3f9b..6572cfacb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt @@ -18,6 +18,8 @@ data class Medium(var name: String, var path: String, val video: Boolean, val mo fun isImage() = !isGif() && !video + fun isDng() = path.isDng() + fun getMimeType() = path.getMimeTypeFromPath() override fun compareTo(other: Medium): Int { From 858865a9cb6181e0c170c630cd60ea9ece4ad879 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 18:07:05 +0100 Subject: [PATCH 07/15] use normal_text_size at every dialog edittext --- app/build.gradle | 2 +- app/src/main/res/layout/dialog_save_as.xml | 6 ++++-- app/src/main/res/layout/dialog_slideshow.xml | 3 ++- app/src/main/res/layout/resize_image.xml | 6 ++++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index eb4681c4d..6b843d589 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.1.12' + implementation 'com.simplemobiletools:commons:3.1.13' implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.0' implementation 'com.android.support:multidex:1.0.2' diff --git a/app/src/main/res/layout/dialog_save_as.xml b/app/src/main/res/layout/dialog_save_as.xml index c40bd92ad..7fa48abe4 100644 --- a/app/src/main/res/layout/dialog_save_as.xml +++ b/app/src/main/res/layout/dialog_save_as.xml @@ -29,7 +29,8 @@ android:layout_height="wrap_content" android:layout_marginBottom="@dimen/activity_margin" android:singleLine="true" - android:textCursorDrawable="@null"/> + android:textCursorDrawable="@null" + android:textSize="@dimen/normal_text_size"/> + android:textCursorDrawable="@null" + android:textSize="@dimen/normal_text_size"/> diff --git a/app/src/main/res/layout/dialog_slideshow.xml b/app/src/main/res/layout/dialog_slideshow.xml index dd17378d4..331b62ad4 100644 --- a/app/src/main/res/layout/dialog_slideshow.xml +++ b/app/src/main/res/layout/dialog_slideshow.xml @@ -33,7 +33,8 @@ android:imeOptions="actionDone" android:inputType="number" android:maxLength="2" - android:textCursorDrawable="@null"/> + android:textCursorDrawable="@null" + android:textSize="@dimen/normal_text_size"/> + android:textCursorDrawable="@null" + android:textSize="@dimen/normal_text_size"/> + android:textCursorDrawable="@null" + android:textSize="@dimen/normal_text_size"/> Date: Wed, 6 Dec 2017 18:44:56 +0100 Subject: [PATCH 08/15] use PhotoView at fullscreen media to allow zooming gifs and raws --- app/build.gradle | 1 + .../kotlin/com/simplemobiletools/gallery/extensions/Activity.kt | 2 +- app/src/main/res/layout/pager_photo_item.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6b843d589..b900311e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,6 +50,7 @@ dependencies { implementation 'com.google.code.gson:gson:2.8.2' implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.8' + implementation 'com.github.chrisbanes:PhotoView:2.1.3' debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt index 08b204cce..ec99f9352 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt @@ -70,7 +70,7 @@ fun Activity.launchCamera() { fun SimpleActivity.launchAbout() { startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_GLIDE or LICENSE_CROPPER or LICENSE_MULTISELECT or LICENSE_RTL - or LICENSE_SUBSAMPLING or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GIF_DRAWABLE, BuildConfig.VERSION_NAME) + or LICENSE_SUBSAMPLING or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GIF_DRAWABLE or LICENSE_PHOTOVIEW, BuildConfig.VERSION_NAME) } fun AppCompatActivity.showSystemUI() { diff --git a/app/src/main/res/layout/pager_photo_item.xml b/app/src/main/res/layout/pager_photo_item.xml index 6e2f333c8..017b03eb4 100644 --- a/app/src/main/res/layout/pager_photo_item.xml +++ b/app/src/main/res/layout/pager_photo_item.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - Date: Wed, 6 Dec 2017 18:57:37 +0100 Subject: [PATCH 09/15] replace the vector launcher with pngs --- .../res/mipmap-anydpi-v21/ic_launcher.xml | 16 ---------------- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2607 -> 2216 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3272 -> 2885 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 5861 -> 4244 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 6793 -> 5799 bytes 5 files changed, 16 deletions(-) delete mode 100644 app/src/main/res/mipmap-anydpi-v21/ic_launcher.xml diff --git a/app/src/main/res/mipmap-anydpi-v21/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v21/ic_launcher.xml deleted file mode 100644 index 7a579a35d..000000000 --- a/app/src/main/res/mipmap-anydpi-v21/ic_launcher.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index a92b5df689d8e49deec5e7f0b397563c5096c2f5..0b4c426d6418e9cafd381a59d25a5ea6795e120f 100644 GIT binary patch delta 2204 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 IM6N<$f?8i0&Hw-a diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 078605ea0aa7332dddc765df62af5b68c6ef6abf..7ec4a76151c5f782ab331368157907adcc3d78b3 100644 GIT binary patch delta 2878 zcmV-E3&Hfr8O0WmB!2{RLP=Bz2nYy#2xN!=000SaNLh0L01P|;01P|Nc6Jw6KmqaOSX2~TeSw^(GlaAVZXe)M(ZYWs++8Y_K z!8A>%Q;Kl{6Mqz(3Ya-e<08DR6nh2Uu!X%wf>+8n@MaKsyQO3VXkW{*noffTGZb75 zjPf|ddjikf!tSKbvo#S8dh9DCPe5@~ zD2f2>YdKcexe-_f99xVWKF3E0TM|00#W*Vh72r^W;eT3!Wxy(+Cdk+hh$`U`&F0=v z3;zl#XdnWpC77MVS*D;F2nP|f0Aj#>p*A+iCc6C&=DPr$O8CQfyCCa1L3<~B-Ce6>FO4#Fa|%R3Se43AQM% z47Ko!e2nwzysk#Z+VE#Z?}W%8M3YI*t=_<1w}!6o0V+ay5_S%D{t<+Aotbe( z3lNLb3QTfqHvpIzt7M~FBUhK8&UMt=!V7Ng1`x{Dm|1lv&pS16d+XJBG8$X>&(MbH{CrKw}>e$~&>35kaq;hcV?l zXd@?sW}-fRhvc58iT`OU^mOO&Xk19pS&(8s)qP7ztMOrOwyu8gh0%^qvjoB`toY64nze&($ca04jn- zZ|O*%!I*Nb^R{O$0;|%;Y*=x)4>OWgfX)PSD1P0JE3^?V-Vx0Tw4rtWB?Ciaaepq$ z)*$;C09SjPPXOpHi|dRsfAaVQEqfnk6re3aEo4`(6j2A?cF|b5Yo8B_x$SE+Uqvzs zpeL9I_l`!Wik$ZS;7#5?JJavti?zkf5gv6J-tY8m#sF9nm6Ff;S6G#oChay_|FN=W#4 z%$av$ob}Dm9yOJX{qBqO?79tm|0{v!qZ^DZkFf9P?P-T1G??apO8%mv@6+?l5_+Dy z5v_I%Se2-c-a^GbDoQ?yI2V9Z0eU|RDhZ6q*PuRrm*hVk53wIfyc7F_zkhj~R33;h zKHc`T0w{&AZzoQXAtz(bZiVi4x;CGM>il1^Q_3Gn-=}GB!a{nr0!1{eD}I8MRU_3W zU|#+}u`?=^w0)W)fQq0U{u;5U7}HjvpECWk-;)-jpXqsRY;Y*Xq$_7k5#V5NVXfmS zH9ydXO~9JjoU+}Ty9KElQGbMtJi%g3>YPf702T2f4?SxJ*8HD>nOfl?p`ln;Jlb0# z+Xv|gr}k}%00}8>X}LMQ32oH58TadBzKn6s^#Nw&9Y(@|0Jpihq%aHERRfaOWRV zYNO7HZbgQil()S$Y<~jQtPMHaSqPqynU&*|G(qi<9SAP0i8#x8z+@%G_b;-VT-;QR`pA3SQK zhBf~&q~e&=_GQ(Wm)_%9d&M=?dNXuzcvUk6fdXSo>qXv z3*5cuc@`pASARU3_LAUPi1Hy=Uwas9!4r;(v}EWw%xT~EEuX{eFK;GosYb?!Z^8Lz zHcm07-hh7EC0@HtK|gI4+A!zel9 z1OkVW29CyC98E)oBfPI*ePL-0AQX|R2p>9W>VJ41u+m^7Q2a9E(q~V_0q4uOITk=7 zBs5_;1+Eg<&rvq4$o1s&d0fqeSFGnn6dp}u^-H!^HS>ZS1J|VpA(Pd>Yi{iZ0Dld2 zxL;M*wEz;KOE*{qsYONum}n9f$&cuCYnWGQVtIspB3uX9`Pla}Y=LiAH|IBxo_B3% zXn#FB5pKxWzP})fn?lX}GGF_GigPR1vsHw<3-Qs%X$iGBd*RB2H;Z>SvK_dtP+xtF z?V)Ct7Jcz<0TpWIdf<*ief1TT@Sqo+4<0W;8EfPQ1rJb4-yL|1Qi_|yE!^*wL(f09 zimhWI!oz)OnKOs93tU^s4L2RWeC^iN$bZ-*?4*+U%lmGw#07*qoM6N<$g4fbtzW@LL delta 3268 zcmV;#3_J717RVWpB!3BTNLh0L01m_e01m_fl`9S#0000PbVXQnQ*UN;cVTj606}DL zVr3vnZDD6+Qe|Oed2z{QJOBU;RY^oaRCt{2oqKRp)g8ybzjN>1&FV?if2gs>o_+B$T6;EYVConn2|nSVNEoT;xVMW-{hTAU;h zBZ?)R(kWDf5R&X>cklW2kHkT;ue-bV?t|p>=RJ?#ch7J4>^Z;lxWE7d3^2d|{S`{L zfOu*4z&6!h>gwwDI|Nh}IRFO(x1V(&z;4f83asa zU@{Sn1~3?48-If|fJIMkk^~MiBLKn$0H+B!38EIM%O)quk7@hyv+4Xik;oVaaMdKc zuQ>NwR%8W0O8_bZpqNxU6VXX9AC^+S?bQ5-srtl4bLvixv^szR^6n{{%S87R;Z}f# zrNl0yorvFNT^@86+uo-wM+2#_8;-O%;LEB>_7TO-^?#($Ljc?WiFD`ym;tns#DVS( z`BLFi$G%Oqf|NRde=^F^J)~%pBvba@ayB@XD=JAEiY{Dz2@XV14j3XCR2 z=XLhF#%8mtHob8=cbCp2Mf?FoW6iERoe-m)i8nZF8s9XtUQ>sEUG?tUNEIJkX^js6 zOvnf54R5{s2{!SIYg$E}_3kYMdLDpgR-Ks%Gk=($a|D{Uk_R%`+Dvgk*BVLdpX~g)r8ux_)Xry8(FLD2LZqbbmb47gItY0WonQlxvoOipKRs5x)5fddvHe ztseoLbR;1>j4qOLx?@MvsaRQ6BlUHAi#CC>tnu@TVY_87#F&|&??=Q(mO?FC1O3$B z;D4(Y=(1oLnBat%^hr7N4Xrw9PQh_}W_WKV)6pf3TO`iE2-G9G( z5D0j!P!S+qULEUK5c5A^#Bk?&03%G3l>)TIRWTbM0K~9spf22OnGC7W)|eWiB{Dz+ zdMK+_wQ>reOkZUUPJeO@PM}PY1xk95p!=hxM{HcKnq+6ft>#Oz7WO5u z<FB6P|ELsI%OGX&=>#=*>(zg%X`op-UNc(snbK43*fJP zpNDmT5F&HN{z3(Wl2~H}x__X5d=UD_2XQIt!e**73;{F3JrCOj5ir$SImS`u+za)F zM@^`Sk*>xE0H*M58rA^}Otw~zF{ro%+I3r?&b$j^{I%(plN1b$=Ql#T^$4RN8e_Gf zm?#=-6}v&I9Yh3e#SXv`_nLRcAV4mhEDxEchd7|wGtEYXL8*}y8Gm)bX3)?}F&a@Y z9NN;y)2Jvp7_4>ZfgydLhd5vqkPEOaHL}7(Bg>%9d*Jeg6adP!l@L>IPLrx+A!3DN z{{mD5a{w~5Qf3L71GberK}x6uB7*IvCxG0m(jY8(1gp6r&q5!lDudHD2T-qn7-C4| z)lYI3!nR@uGU$xCVSk82dzR2Y;jk0t)F8&rfjaAlvGYw_2&Mdv6euzo4*k}IIDmrz z9UzOg3q--52W@2?$iVUg5kb4*5zyc)+Z`!5BupFfX&plN2pmj}qDyE?wn7vdU-u__ zF0=|yR;?EaqK=SfA-Vj%PG+R^?gTM;F_f}3ahFp@&44m*Lw|g>CSC`nd~Mve%s>zF z`M%FW96+8{9}_HHBDxI6AZW|ChYUH5qAmOpXy_DUnVo~6t=Iu=Q6*sEGGqjTqy$5* zK!_9z`nUCZdeClu0wOnLeqtC>?Xa!#0IEG^Ufazz5P4UDoQ2R9Ka#M`L?A|&Gay1@ z-;o?}(t1ff6Mrk^nq^7XBZ^C)E~<=ft85L#)tA6=-ORlpZybB|rzw7!9fOH$n`bmTWbaLv|OmrQ2d>i~|YzO0*kQqB_7{q`VKH zH5makd>YhiH>9lVNfxE#M)QWq%s!u#FGtG~{d~ZdqX7aABrHI&!B(*gq^5O=IWC9@ z+JDl=48@jWSB67Hwa25z)nW$IyW8bUiT)X@*FOx3vb>n7h{0o_&Wn1k!T`)H^=D$* zij|@FI^X^AnipecLY;kg)^t6WK?HT~1E4{p6R(2l9art~f5ggXXgSFl=-S83vG;p_ zhs_0TMIA__Z*xVmkj>H46(xo)MPR2PJAX!N?Aq(z2Es40>cnK4An?nMn#TK#T75#wO0ZQIEL<57P)F5Gr;X;1YfFKn_SlD# zVf~q&tc8y_Y8vBepSbsQxa?d5M#QOge}#cI^3w*Q_zoe&?ErebsZ-H;9hn%YyMF@E z0c>)38d~Emn9!~!dtGBQ6L07>+}~khxyM!0@W(_7C%mo9S=0C?forW?y37(@&j~c` zPPA}R`}%Tf8lML9b4cgmt29F3_u9VxW@9qhsfFmh!jR|G&UT1YwpHjSr;Yq<>pyec5Va z@f-+Qb)JZs&l6Dh^FZT%kBMDQUsCic!%6vG)%8;lJpzI=6*iMV2l!PeT;q%*s+lM$ z9j%=Alupo8QA>i>Bjet-#7s=@NIkIARo5JLBdryrWw_{lvTVFmXe$Bh0g8IBruDE7 zz#*3UGe*{M%_hAsboPuZ?0>cu+|_%v;~b>yk|<^ZwMfWUd{Vv~YwL)WWXy!={FBos z+7$H`1}X?x0Q28d5M<_00sfN)aYzd^G?_V`Pn3*t!1p=j8J9CmEtu7N&DRVNrZO;I zfLsjLV$8II#ORXX(*(2-p+RSS;%~qBQKT*6=_Df^5Ds1o1?A;~{XGa4>4FDKUCAS6 zn*sm|0?goS?zN4Y&v7q|^0000^Dr3qR%w*i60zu1);8@Yb4SaOJ zt-H_s0Vbf2?!JA`UAnoSDvGLi&-wkn(BF6a+;h+Q9Y{z>NJvOXNJvOXNJvOXs1YP; z0a2h_tgbx6@&<>BVi<5RMFt=Y0Qv&`b~Uwk{oMm7VB4-g?;(7E;w@#c#VWETW$~uC zZqNV!u&QM z;B25FYCS&bMDd_9xUQ*Eo66MV<6>{&h@Yw z;UZ$BD`qGZYtuQdkn8D)S`5VGgWA!`QKGmHI4Wu_wSWklRe`T$R`6ofT8yX#WS4QV zD4r)VPsJ$32n?RhF5{x8wM2FYQj2KJWmpTGAC-o>KyiE8<`Qw~j3Rv`2HJKd{cMZ> z1g1ohzYh7ILV>w0EBPSo#GxA~yM#d)JPsTkcJ8`H*d!)1(=Km^n>Iu`mvLADo&*jH zGw(jc)&k6ISAAXlUVwTQ-)%`ZqE)#Jbz%i`zC4QAzL zAO^~1SOZKBB6fmz1WxM6^P?bQYd27~m2U!H(;YX#9}3RPwsL{)xLOC%*;dA(couMU z#!b*hml95BYU5>H0kz$MluKIRUJ~=fnUui&Y7vdP0%|i*u7}l1F+x|ogn&?t%4PUh zUE#ERh2>hAtQ61aikA>Lst8|bUd~f~1NpuKDHlsA){vN|mJkuv>i8=2ZJ>@kmy*o) z)EuHXB9~#Y?>K%s?{GO#@@xkB_!W{637v+;$VQhf)dsM9rO$ICiFx+KbT9@_!02}< zSPiJ`Un#!xGHUxhGKyq01K-PQ1u;X*TDI=)%LG9q-6;9v{uY9XCn=t{hccQ z`2~8OSw&&vPe7>%6z&}nCZ^l?eKmcn9|IL>tGaKUVU7JVjsN@_*7ys1H4lJs&^S_O zKTPWUCy~bfAuBA6Qe0ha->U9F?N>3)DEfZ{tOu+UF2R{|Gf3tCmBsfq)3xqIR7ZTu z0vWG#6X76bAJ{{xPK%%&uWYQ4x@L3pxj`0=4p7Jl6 z)aXGJmwD~u$v_{u^u@;`Up--tobNk^G30opd5{J*+W3;!)r+1Cl*)5H=zEh}%NPf0 zn0yxlWB*vy25q!0zU-xgCj;%OhME9KM$aabnB9TE<7Zs4fp!hBV)g41C8~Reo;Y0} zYl)+gW7-!ps?x?48%UC|&mO34dR|SaZCka((TQPJ{#jRSAf;GPot*ll@WzwAW2hZ} zq4=)0)ulSoYoL#pab#SN4~UAw#-Bh>&R2~5AMV+?v@3p$>|9n^4TFjdWGQC*(^G$_ z_IK!c_J->FcYH+tnQJvF(n|qmRno2^1E~sw?Q8V>+NHRqidx{RNcT_w5tR$Q9+VgK z7)ZHTyN*ms_%wwcx*j--;#LoOsD79--qsO$+pF}*3-Fe3i+4s4N09ZTCyX`PurAz6DTk#Udx|iNTHjar(E*C zUxPXFbj;zWAbk%3rwP^m4#js~qVUK6pt#lZYKcgZo!iq(J|>nmkWxv-_)1aP_sBp0 zBl6D&vJE|aii|7Qq>@4OSPfF*gOkCTeO=TlY6B_%*_SksaZ+4WvsNs4LGfYX3yQzhNFW18e++0624QLi!JnSW)b0>>AC`QVmKPC=bK* z>WL0%=!{>)X9)K^G-0zKB?~0^yEudm@8=@siX3A&S`6rJ_qmdGvkoS*psh_ zNKtKIl(~tN8$=&m=6X$FjyfIls4w+;&7OX>p2cDHif~A&%cTvZ7^qcD1W5BBocZha z-oSKl7Tgb3-3;~gQe;4>%cTt@r90OG&ir*qdcTrwjQvMpPfzwq_J%6sfzo3j6&ig(wC`aI*0cJ=96l3k+&^iF1=R99Q}qTC@VD(CM2v&RVNd<8)|k%h>yQCQ_>N-? zoYWO3S+>Lfy6cro`gO1%BuT2b8bTR+qtFAIrWCUmcWZELTL|_ zHjoj21DT(jj&=Mcf#$G3?_vy|;JKeU@{4;cT$82)v8TBjm4$%#xdRd0QHeT`hCVoF z+#dYXl40STc^BA~SGJMN{y6h*{mjp;iI-vwI##E;peea|zw{VLcvG(yz1VYZM*5Uo zZJ-Tf;7FV=tf;K92+kRI^j-qSFn1bDYGVqns7ehw!TI8C zC11E214rV_D8J|3KIK{@6Z_>>9jT2zzQW`Y3cw$=O45KcZ!OYvKqR@PWia-fn|i-! z+7*wLq_IEtjFp>$tCBjy^M54M(5b>zs}~z0K3pnswaQ ztA6Pl60eqPP}V?V@PZyK{*jg;*t1qgEdv1Ov>)!VNZ%Mb#rpz%5uCZV=$`=9h45mz zCgrPhzE{&bqg%8EfN!F<28X4M3rP6y=XTC~KhfW?lgzuLNmL z`gZJ=oSKKtz?yI|_S`i{-;(?9N@7oQk(R+4m1$vH#$;o;MitG#WtZ|85?z%tW8erH zE`HI|L|$kVdbE566*fFV*F!O?V=DYtrj66eHLGYgO9cNFC9CC=H9m1P4`>^|m}3@{ zoI45~#p9JUtH?k`p|W5>V4u7cW61GQr4JQn&W*8IH)L9s-83pPP{T@ISHkQ5Bzeae zbS(DCOT$hZ8Pb2a_BBn_31L%%%bzM~>ZQ>5!__OQ0xN}c=H2mq#0?1hq{V?PO{th7 z4^`T1at0z?oks<#BakSUB_6gtfs@6%9NW2Jmd4<`rx}@k_7$ z%8_g*?j7Th$ympJHH=ihXl^V2?(5T3b!N3;u(GI_Sxw(w;|<(dNw~0~;-|-b3S;mD zcG8 zPC0yUk8FI6TYx|Kjgt^AN_ahOvC3~8-v*LLD2U=BAeP4uC-h3ugbT!_({CUx8?@8c z@V_X2s3TTFD6DC0E5GBS6145`PupBh1sl;4B1YJh&Z2GEqc#JHODDqll&Ptg5GkFi zz&UcgzIq2*Ym8*tcnP>nXUqhxe5+}N-bI1hi_~P6b1Q_f@GQYAw`P{>|6Bs8a+J3C z7Vz63VkdY#rf>JC4=0>e0 zBz}dk#Lte=u&4lT<)WehBSL7-I;F5YD0Y z$4DK({YByWYU=YuO-&l;6Fze3n<{XwQhWnACTcw%c?sdRZj<}_xonGCOtsXsfp({T zF{2EVg}_2!WYl_kMc9Pm;UYZjrIc=*sT%|BPUkWXE5Iyv{y7PVpk6Kj+Yx>PJYkwV zQR(pkwM1PSXm^y0k?m%T7)(WR9Ku*&H2TL*Ibaj;GQx`rp2?VO6t})>2GqTQdP6P1 z>>AC`e34;NE|i?ae!SbS^Cb0000b^P)Acmx&DKrjEX-FDc+VoHw zD0MMQnTBARG;O-1TaspJdwP1{w4^EJG);S;;Q%K+K(Mi5W6Z&Ejd6naMccf0fBj?3 z?vZABvq|ss=jh)1ewz24yZr9&{w~DC#KgqJ#KgqJ#Kgo@4ym>QwL%)q#x&mf$L3mE zTkT;+j0`!MIu#f;dT`KcN9shl`%o&Je_(eY4-r<|=2~FV2}sj;BqwAAns)B~4ISTgu0T5Rh)f9`Eh#PWbjxhpZG>DnhS9BZ#T8bt*6l zyrQrb^ci*T@l@*QfZVoksJgb5PF)K~H)2oqFJ5o0`G`|i3v?ke1+dk&?aZj6G6cF0 z*zS~XHwD4Nk{&o&ZOe+K?gXSa;h&njc#$!(9wXO-te|EEGajladw>T;gGWvTJU^q( z#8fu|(wp!z-AnpH)eku3IuTh2(ok)?B0<#wuR7I-5qWel6FgZjLaGY^X?j7&pr5?W zAXh8QM`!@43)>4M0QTebiO}&tv)j5u(zt3HH5N7d5)@?Qf!>}#&9w&eX`pk0isp{#DMIKM|ol`{`sC&l{)$2m}s3Z%5rX8hBw(EzFOq>}1PwJiU04-<-Hl)&6N# zJR-4p-cI)WP{bGHx7D{_9`XAwueMcC13l2_{r$@Wk-tP)GJ#iDQ4^xNSJd5;4BSIf z#R+!RUe=LxS6hSM`f-FifZ3QwojAF|p1y{*qza;aa@ zmp5{MUw@$Xelc~6f-1^hG`zL(?(N?$=Wtfmmw6)HKf`$Pw_@Z2#63@iQAOE>1~;Vc9{AsK zJ*8|z*pYNsn@z|)*$Hzjp2{PFut1Erg@!l+t}OhA5%f0c^)XdIGJ%ZO2Qji>hJ$Xbk|k<($Q{~OPH z>Va%@qjkD55o~+7)TqXid!R$<`7O>QH^t(q7qZcfp~!8ciNz%^?Mo7nf;1;m8$do> zsv$8IMr4`8Tz}y9{-#ozDM>&h5A^ng$Sv{diF!nn3cuRc>Mkm!m68PH)Lbj^lKs8- zDWrWKru#z7{B@Y_HORCs@RQZH>}`mE%yh=ytm)pOQ{Q;SRy?s~{&X;(R;X~^of^g_ zFy~*1J@-<~)UzSk0>*#~Vdxm{@Ls~5-^1;C3|!5m2zvi1U)BNNE2eT$J%`?eKiJv- z`yz5j-1`95$IM-dxArDX=ZZH!7I^dPQGF|-B7FG?f~UTYzBW(;LQ)m@uW&TDp*cNp zpwQYy4Plw?C4C0DIu=hBbMAV)4Vy8Y%Mn0Ckarzzd*d?^!S-BC;>yjKt~J#&`b|U> zS&nC~)O6u`D7b>&gdeJYKw*BNbtfXyb~gTHzlCY< zMntbX>FK&cYZfe^(8zkS$(<(s@MStLz|QV1+MO>Vn7K8==Peql(-69KmxBX2U&d3=w*drF*B1S8iNU=%$5JviEMqoRPu9jQ;DL1TXy$ zniI*&e3Yq`@BQihu z7JB?O)SdaDgSrrRcrTeJzee!*pTV*H6}GexM2s^l#`8*#8ef1Dl_&FmYmn5 z&>6L1RV6hQ)Au20on3*4Y2AtkKtx(Jkhx=(8B;*VGN}$k#+`}R6Q<`9{B<|uExESZ zrqn*7&0xm-rHv_|29Y_awnS@H6`4LC|MFXr)Kt6+KZ)sHOAXxiP`jv10mj^!A5%bq znvU$f>Jxy}H2e!cg(O?D!R^N4t^E|zKCwpVND+K7(mpW8xv?Vl`ZFUD<>r+5tFg@?XTX{Xm*kMc}f_MH0uuFa}>tu|13zbGulhfgxQyhmG zF(^Luy3TExja_jaGG#`7f$t4X*rnGZv(7KSZS{nxPY~q%1?Cix3^_r@`RUd$UjNTx z&smO`{5nt(!L)bbt@-4*J=UZ`vDie;UtrE}cj{C?>#_F{q;nPC+8eN8 zcGbrrcdtFEP(cW_Z~-xF)JUlTzg1xBT>P~+f|#PtY>5co(rb{jmr<{yca(@qI2uaM zUFVzvIyh(*AwvbPPb?Wfg}3;_m^u9=9r%;BIe066p++)iR2vNvHq6O`m_ z!;o8jwT3x&9o~wM7Cdyl2Qk=lFTq>&OK}bfVOS;18B&mY2s@MtHPj&}Est=;m@*UZ z!cV=|+gt?My)rL5l+9fpjeRzO%v=Nw^>wsPkU=F;gn$n04vcUTwDtw$HQ=qh9y7hC zWbwQmX=uh<`zdHCJ$6WDF2vvPyO?t#5@dyN=&8`08qM|h+{^ff2%X9il-iEHG#d??kHbqy5JbC`2hV3%I=j`qC14Vr_A7cKdcz_>EOzNN*xnB!W&Sm1dyXFb%Wf-ZD3gvJyo-MgX`A~F zflEhEc8@MKwH)R~hsY^W-9OfaEaUk3M_w1DCQrV}tVMV$uB+HGTSPGPFUBsqBER8B z40icPF=zFiF^t4?Ux=BvwoKMWgmMxmW9E(?Q$Wql92a3V}$*h7{4`8F+Q9GGkAoZ`nNpyb!5X5nz{I zi`RQqwkN2dqfbPTnTzn&-2!8zq?1|a;az$&GDiAd5y8wj7w^JfhTP#cRmCa$hr_UV z0RcFtTcb0nbY%Luco%#O@fylDaUS#eBG~RV*uD>)Ip0L%)a=mJ-aW2;B7!|{12VV2 zOxBi$2ro`&V9Z6-_^}R>d8THZiOJUNNs6ZSs+u9z!&`A3GQ00Re=`f$V;5eY_cC2t zXJZ%tY)$%xMBNX^yU}o50X5yV<26-wMrT%$cuBk!zkr=za5D9>ARXP=kdfB2-ui6D z0{lyFK?>PU5sSCz{g{Q9m&wwi3CUz0AFoip;i^v*o&YCW%-ki|{;RX;b!%XQQ^a7q zR$=>3U)I>vfp^hOZ=O5Lza0TTnccWe)zBee)xF8|&L59gEH42W^eKUy&ZM$q6L@QH zL|V_P3Guv%*MNU|D6_p+VY`bb5_}d5ZQg> zdE+(Ut^Jj3x|CWH52t&NWD5-+`4g}nB$|r0F&oJC^XN}@;$D7|YKCD645|i?=2JG$ zfZ@TPAUt3BVN5WctFV0^tn6b8K?G@TM;c4ti<2qSv5T*Urs@u5ite?c?8v8VUIJ6^V&`3i>AtXvR;U8cj(C~8(x>GmAW0LbbB}{o z&MR#!-kMKhyDywvQGtmR{w2QwQ)X7>@v0nC)yMz%&Yef{DWCU@EtNVtfUv!I(+b0M ztvS6FP+V|)y&@u*mRZq+<`!iDuewm4PUjhknzw-DwtYha->$?wNLuIMt@*^5TLBXq z5$vK3Rl0~yo@sVlU(C03L2Jh3Xz(z~o`P*E=pik5Yd(RQyR@v2sdc1n4tC`)R(2>; z9TgXRMbhM*m#-iJNqXQU@L)N&Hq87>FpI80tUsxSu6H9M*v^&M1?wyM*ykDpeWs8K z1$(VTgGU%=i@#`+E%w=qz4Le7#A#{69LaVrw>E^ z-CSNITkx;A9hr8{r0#j%fk^gR@k@TA%oA!=kf%JSj}%(7U;)iY51d5gQ6RcB>&C+_ zybSZM6m&7CS7kjHV>(w+uA|n13<8fPXZQuXX^Pr-8O#Jvf<949-7_KWo!Rh+2)wxy z5ow;D-L!2kPZ*1$yFxOL$ge$H@DZ+}1T-T(aMBtcP$Gzz_L6w(Zb4=&jKz}+G1&R< z%LcJUPiVyb^^`jYepF25qK`8qhPUnr{3ZW{a8pUHVn3O^9^gPx_D?Q`jz-?3I^8~O zd8pX>CH>?_KeuF6Ap8Tu{K>W7FfkAqavI#+bl3K;7u!Zj!6z>T!SjgxrK+5$cEDLo z!DPTan97WPr<6uY5>Rh?U=$bpGq@*9X(y%%sO}+j-<0&OgQYZ6a`;>0-P`vW(a%fN zexaDMBJlUgpAJ7AK|9efbpMjis>tocm-E&*>QH^6F|+N8LiW6J5nTYT({G6KI8c9i z6(JYx%m^^fc+_o>W(B#O^kR${55USq-9f`W_m|{@{o@&(5KZsI1PzC`>dSFx> zUj+GX%^ZoI+^DGR6c^kpckOsB>c-1*immaUZLb8O+oa0(;`vZ@5%eYJf=$VL1|BO% z`(--@*>cae7eVh-)t#}3s)NEY#C>+h|84(nKBr8Jp{(a3sw_hW z_l4w$d+36%lrPh6**8EHWaPfZmxtDVQPBQ))3p-l0hBF=4j%g2*D)gh{_V!PRa5uv2cu32i?8c~mOGk%4-;{nax+7MF+fiKeWm5HDyny~7-1?nRf?pT(Z>w!j&7=ARxKAHC zc=*fJ77x@w5A<#ZxAcDmm0J;61{%+evSd)*qsl*|f~{LBJy9Nun!B{Badg|ioV0xd zp0&TI@T)*|Qgzh`0z(e>pmFY-jXxcJTK>Ft!~-?h1HHk4+xwf^THQs?*qed(BQ#91 z-Y5ipL2!ST93A<$Qcq8mi<*BSn(j@U@@1VBvq>?_K&MXJ)tYMdl3U$n)cy6a;i0z8 zFXWZ0uv*l-fZpI_x_6fK?3F6!Lx^4pG*7G^Ni!f%0gr}c9x3*$dZnqW7ocej^mm-} zbe$FRF@?)Tm{Qk5QXR$cTo~|=9{NafhQF_vEE(0JZoha18A231v#A-oFmjJV({je$N>$^EM+sapZPfr1RB`{#rntF4jsC@X;l2(7i$GYJeT zx)*p>RUdbuJpJOnt-Hz@>{SVB<_nGjP4_mBG%zc0UJuF!5iS*>7f4h|Od+a!6?sAk z{@sSMW5mnspEA1h$awc~)e93!Kxg7ux_6qFFqaU@1!Cnqb##kJ3!=@aOhNDkjH0G6 zk*Pz)fd+`2LOCg-$DOiYgcn8K56NU6Po{VNxEh&b`OMTC02uxLtDv$|%@q6~laH#2kAa7y4-)ax0YD;=LQd{3 z-gXF22O*D_&(m>o%m6_DKtn~z&@ba)!6lXUXIjVcjd=<#4acNdftJz}x}QsIb%$I- zh3d8vAquv}Y^+ji8e62Ha?1^I%UBAHf=b?^l0c(SjUvYyN52|p9x&SpmHJud+FHCP zzE|{Up+kFWhH{8e;I->w@^4j=QK0Lpkk@( z7SZcF7v>HZ0rY>szQ8~pL#Rm$QI5^m4cIT&f03(|ABQ(DkTU{JB z_+~9@flX|OCqx-`8x#o+;@ou_AVK-)+ z+Au_kL1M(heuOGCd!zg5m!nAAvP0ggZxAK>a_5^T2!*cRKm8LiN)iZ?)^s4Cq+mPDqjA)2aV!H+${ky2ye`acb56}h`fzu{Mv+1yO z9gGWq^Cuohcx<}1aY8VAx?Cg@)sWf|-!BZ!du>n&|lClxrut0FXbx-F5)A)P36yxCi%nfpky zX{gNE&*IaCR?Z}s?jP6S7^W+@a_6(b&3-o>?Vp)iNPSD7JSL4yt|$kF6jHNkg|ItY z4z+LV+C%mIN%9rZIu-;Ld9n<7FWC|_8J>ZlNFk07&0sz6su)fa)RF%}6XQ5lW5eP~ zOI?s*N(p%T+{a&HQv+Il0mE4;a5hvaBkyPG8{mJIWp$=RM=}0bwtw_S5V~fItc9yw zCc|BVm=l7b`bf_@)tQcXvT|UAu=$JM_SO>RupHkxPPBGV6VZ{Z42`?%^afUp3((+5+65ivakHLPGsCSZA%-fkhOKJfmu7X|FalI!%JZGe)kwNU7 z{HDg%s}heA^K4iv0Q<_lLjd-IP^!89-oF(4YAY}ugNPCdH1Ul`d~C@&>Je{4GWY84 zT})W<=6g7OL+?x!>_ouEA;UVpM^ZW_=!Iy4T%0B^_8xZ8g30*GL@4a>;%Nnes8_dC zKn5G83*ig-cgJ_xWCW0$k6^k|^QqZ*4DUD z^r3vqv~#9Jv1rkXamZlL?2YukvThf%594jytVofo154x!0Q=Q0~9>?&@>X_k7~ zqpjbjdCsKb>j1O#M!wLe~JB0-g4-2dIj~Mle?#sbik_QaJU(N%S z$&jja!Zl#M6VDg|e+VNpTzic}W6h@Kd3on-$kVFGfxH6-sj<`P`+CLZ*#l3okr{)1 zMXw4``&^CEiA|}U9Q-baUBzF|cb3CB6b0rrjFaTIlsrq$OKB0$sxwb=$r!@oA>~%s z{Vo<3r|I0yNIMdZJ)xFn~*Y9oz z16$FfE83|X8Ui{LFW9fUu2LmDTPnL*zMv%`-4xWT9Ux(W3pC9hU~Jv5JUS z!76zAl|-Qph98|kj9Yifqcoo)dcNxLu2*L)b+S~Z`1@TthS22U%8-n*pai80ikOEO z@9vrEZXL9rg_%<w!pbLfQt&mND&JS7iwzmLV>BulGGcws9U36!8+lV4-csn9mV- zT=pyg#^qAPnm;;4O9f+g8?5IleILB%Vz1QLnl0oKn9q>U*W8xRDY9wL1jd876L(@ibwg`Potf(V7iPmLBYfm)1; zCgYN=Eoij%PYde>`Z*{OW~oq4FoU9($Xck9(j3#uL7@G;WX``=*FlTvP+0Iz)VrPu z*X&6wD|;R6Nb7EbQ`j6M9n9P+@8H-aH>SakUp7RVAsH>;$XB#%%+)CzHdIJyR(HJ` zFq>^@>3?^l+IzUkkHxx3&S<~{ZSV#|;xnAT`CjmJlWpi}Lx71SPD8MfH!S}6jO_?YKr2?&6j|q|kMA*g7{~Qn0$-jIkJCzYNd$DDsBXyN=u%v+bNc04s z`s1pVmt1@ass7#QKFj{G zLAdPHPDI2!TCP*p*+TG)ZDubg-Z$)2xrV&R%_DE|l4kKn{_Siv92wA0J-MFpGIFUa z+}$9+zGE$put=~Hw)pE4PW*c(nWXIanS4h<dG|IX`2X--l}GHdKr!vP(>$H`Tj0s;Q!T!EK}cNohe-?v;NXDnB>=aQ~i| zJgxyQgR!jZ93?InPjDe$p0FFcc=n89+1Ykad^nkvuh_Rsfya^pI2OrtGg~%KIb1hn zfj#B#?}o%%CqEmx2n;)yxMkb$Dc$3i;YVm(-+KQ@8%-I`cqQ=)5EW}<3(@Uy|1f)0 ze^guvJ{tJ<=4bOz-A33)-a7TnNU@4s-}Kl-IXVQ0C%e-*P2QDsH*x*vx!UYEWOZ+2ciQJ-64%HgIDB~D9gxc6tg^iwMWv^XjfdX_v(WO16D22GT?u!{*| zxWIjwnB8GvVU|-e0|I2i{$=2MF~wxZIBH~fV5o)MX<8O@j_=wF2j;3P_}AEc9bIeQ znz<^k@hJ&Cz+Ln_>Fm7U^v~XLi3vyUjeN}h)hwK%3;+G`UT9NI)y$~ZKOAWG8dB+>4YHfa97^6>vVJs}S$78?7k!t{#85Rr+3k>WflQy;(=g%pLCxg%8nIVNov1&YYuf(BR_yFhbLdh;q9+?<4&FpnrEFcMebgk2)<7c zASzyRY2d)kbm?{~)NKjurVK8-?6HJ+yh$;5GuuMhr+tmgZ~q4oE+gPldr3bq)JV6} zdb!{tR=CJ|gDKsq(jcW;Bt-hj+lv-Ea0F71j9ZUo_FT@>RAOh(w#N=Ky|(N)PSb>L zECUV`E>YOeYsOSdc0WTv#4O+JlZ^DI(ua0RSN*{>MqBTBq|T?dYNqt8g{S7%g!cj@ zc9=gOJu$i#j)mJj2ap$1Ut0{v`k5c0ht@Z3;uftF`g*m52k(hpr|c^(C<9*}Z9m=& z{ge}#Y7O~Q!HtE%L8C-XGNRr_;Rm-8viG87{hj*u^@mHB!VcL0{2py;{P19o<=AX< z_~^IH>Mh)Hv99B+j>)xpWJ1VqRg+67@q$7eZOg2PQ4opbJvBcrPc`0qct_Oz3PUo7 z`AXbdVppKsD)RpTVQ`ru_aZMhxp(B6xJE!1s(;02@|YKfeXsZG%+dH4LElg_XA-x} z(ToGaext&Fi2Mf47`8c~IWUDA<@y6S6^Wa^u+CkR*8*z$wfh=9p zV5a}p>b0YmKv+d4Cr5HdIE~b6JV4&RR^R_r8rWCJ87DYn)mYdq4iPskZ_*L50{4^7 z(q3_y=rYd;rHSDv{y0kb;=N0(9qPC{WlM6%8cczY!yal`-dsOTqcQq?on`nvLU!_5 zHHNb_9kaIMgqZp>s>J?Y8jFabSo6-}MTs#vzXvbUmj`qGuEafA$jds{Jh=t&riQ=! z$LYy!RUjL8MC%eRNpi)g6h@owM>fsySH5Rts{QMC@@wvQYFF*Pi2m?E9Y)FqnE#?kh;m|d z&i9dX4tS(JC*72N@%a0e;)2rz;Z6{M%P;jQT$#GoCvFHpY-ejacv(+lys9YE!o1hF zd<$U)^E4G5%#SpY%nSNQ*Hv!H_}sJ#TTVdCscXEv?$5wHMKag-j_e0WCE{l6JT|RY z+P_IsSOWST%8g>Kmpl%Rsq+47w&ZCM-sdyTKej*Fez^*LIlW1@Ac*eOBwq5T&EOpE zVh@TOp>@uZ{iBv&k$@9_)muA15FEkJ7ivM~@um$4#$Rjaod$h4Uzu{d!B6%x9e3%CVmiu|9xORRA?Up5 z8R=b*6Zz#~9$VkR{}S$k!DOR0+u6Eq+?yBHu^xqSn8lskR9Sg#FW_XK`!!MI- zN>nRLp382gl%8ri|K{khl=o}eu>1Ug1Z9JCXbM%pr0#9C?^eTZ_J(6=)|ROKQV~<7 zbZW4WvlC+{54Ijg9vtnLx8KsWup9yx>LT85y1IGkkqqJ#1bD}Aoevi{@auSE2KoQ) zBaruRJlm?%dZ~h0eJ%2OU+1i48syui$=LD>6>=X4d33vdJ-9PyRas4|XeqWAwznGX z_FEDCu^C*6rFx8M3YUp;NM*6jdpWvc;U3NJ=L)$Cd4=`_NmLbvevact$8_l;e{)XG ztTlbPGV2udIz>zfg>5v^XT{bgOs7Em+6Rq4OJa;gss9AFDjUpac3S~2$z$uEmwS=30QMjepfA<5zhI^>$EgwZWlvpGU$Rzyfq!nvkX zLjew6Tw_^yuIOCPD_vW$91?X_^ukmXgCLsJ+}InjZ?j_wRa zsLYvIblrLi*P{;@GBbvt{b{#Nief5uNdMjK|SEZAKNgp=hnYsC$#6)-*b2#s>=qAssL4tXU4!}9tLuH)GCthq_ch)0B=t;r-rC`@h|U=V2Qu5 zA=*Z^t`;mdVJ&$A3N*d?TrkZb{DgqTbbrz|MEe7C3tIOZqFq^p9Y$9$kte$4|Ugv&kB7@NGENH_GQ1 zq5Dwl;JGvFmEM=A(|DU~sm6M_`ze>r@5-%!n@lvYYg{3I1;pESuymSf-&)>)G24G{uI?v8LHJV@p_ zDHuaYeH2c#@b?TTGWr-F+T z`Ns74#LRdp7!av%KJ!FYl|H&qpBUz{34b#shzNi4XSKQ_m`M0RYldIB2;>eYJf~tp z?Fn=oD)YNm{=)yMS`J8&ml>ooO`2nq{$<(}Gc9o7iisHhBb5Grnt$;BDY9LUVwr#4 Z?6xWppGwN!#f!>-hN`Yg#Z#L%{{uI-7&8C> literal 6793 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 From e69703bd077b24d72d80bb39a4bec22002442b4d Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 19:05:47 +0100 Subject: [PATCH 10/15] call layoutInflater on the activity directly --- app/build.gradle | 2 +- .../simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt | 3 +-- .../simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt | 3 +-- .../simplemobiletools/gallery/dialogs/FilterMediaDialog.kt | 4 +--- .../gallery/dialogs/ManageExtendedDetailsDialog.kt | 5 +---- .../simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt | 3 +-- .../simplemobiletools/gallery/dialogs/PickMediumDialog.kt | 3 +-- .../com/simplemobiletools/gallery/dialogs/ResizeDialog.kt | 3 +-- .../com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt | 3 +-- .../com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt | 3 +-- 10 files changed, 10 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b900311e7..4b3f28805 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:3.1.13' + implementation 'com.simplemobiletools:commons:3.2.0' implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.8.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.0' implementation 'com.android.support:multidex:1.0.2' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt index 5ea179dad..d83d10237 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ChangeSortingDialog.kt @@ -2,7 +2,6 @@ package com.simplemobiletools.gallery.dialogs import android.content.DialogInterface import android.support.v7.app.AlertDialog -import android.view.LayoutInflater import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beVisibleIf @@ -20,7 +19,7 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, val isDirectorySorti private var view: View init { - view = LayoutInflater.from(activity).inflate(R.layout.dialog_change_sorting, null).apply { + view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null).apply { use_for_this_folder_divider.beVisibleIf(showFolderCheckbox) sorting_dialog_use_for_this_folder.beVisibleIf(showFolderCheckbox) sorting_dialog_use_for_this_folder.isChecked = config.hasCustomSorting(path) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt index e676fe0ad..0721683e0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ExcludeFolderDialog.kt @@ -1,7 +1,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.view.LayoutInflater import android.view.ViewGroup import android.widget.RadioButton import android.widget.RadioGroup @@ -18,7 +17,7 @@ class ExcludeFolderDialog(val activity: BaseSimpleActivity, val selectedPaths: L var radioGroup: RadioGroup? = null init { - val view = LayoutInflater.from(activity).inflate(R.layout.dialog_exclude_folder, null).apply { + val view = activity.layoutInflater.inflate(R.layout.dialog_exclude_folder, null).apply { exclude_folder_parent.beVisibleIf(alternativePaths.size > 1) radioGroup = exclude_folder_radio_group diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt index ce20eae97..b1f10323f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/FilterMediaDialog.kt @@ -1,8 +1,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.view.LayoutInflater -import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.gallery.R @@ -13,7 +11,7 @@ import com.simplemobiletools.gallery.helpers.VIDEOS import kotlinx.android.synthetic.main.dialog_filter_media.view.* class FilterMediaDialog(val activity: BaseSimpleActivity, val callback: (result: Int) -> Unit) { - private var view: View = LayoutInflater.from(activity).inflate(R.layout.dialog_filter_media, null) + private var view = activity.layoutInflater.inflate(R.layout.dialog_filter_media, null) init { val filterMedia = activity.config.filterMedia diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt index bbc70402a..812396346 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ManageExtendedDetailsDialog.kt @@ -1,18 +1,15 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.view.LayoutInflater -import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.gallery.R -import com.simplemobiletools.gallery.activities.SimpleActivity import com.simplemobiletools.gallery.extensions.config import com.simplemobiletools.gallery.helpers.* import kotlinx.android.synthetic.main.dialog_manage_extended_details.view.* class ManageExtendedDetailsDialog(val activity: BaseSimpleActivity, val callback: (result: Int) -> Unit) { - private var view: View = LayoutInflater.from(activity).inflate(R.layout.dialog_manage_extended_details, null) + private var view = activity.layoutInflater.inflate(R.layout.dialog_manage_extended_details, null) init { val details = activity.config.extendedDetails diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt index de25c42e2..cbaa30443 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt @@ -2,7 +2,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog import android.support.v7.widget.GridLayoutManager -import android.view.LayoutInflater import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.beGoneIf @@ -23,7 +22,7 @@ import kotlinx.android.synthetic.main.dialog_directory_picker.view.* class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: String, val callback: (path: String) -> Unit) { var dialog: AlertDialog var shownDirectories = ArrayList() - var view = LayoutInflater.from(activity).inflate(R.layout.dialog_directory_picker, null) + var view = activity.layoutInflater.inflate(R.layout.dialog_directory_picker, null) var isGridViewType = activity.config.viewTypeFolders == VIEW_TYPE_GRID init { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt index b24fbc62c..61264f169 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -2,7 +2,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog import android.support.v7.widget.GridLayoutManager -import android.view.LayoutInflater import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.beGoneIf import com.simplemobiletools.commons.extensions.beVisibleIf @@ -19,7 +18,7 @@ import kotlinx.android.synthetic.main.dialog_medium_picker.view.* class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val callback: (path: String) -> Unit) { var dialog: AlertDialog var shownMedia = ArrayList() - val view = LayoutInflater.from(activity).inflate(R.layout.dialog_medium_picker, null) + val view = activity.layoutInflater.inflate(R.layout.dialog_medium_picker, null) var isGridViewType = activity.config.viewTypeFiles == VIEW_TYPE_GRID init { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt index 7486849d6..33737957c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/ResizeDialog.kt @@ -4,7 +4,6 @@ import android.graphics.Point import android.support.v7.app.AlertDialog import android.text.Editable import android.text.TextWatcher -import android.view.LayoutInflater import android.view.WindowManager import android.widget.EditText import com.simplemobiletools.commons.activities.BaseSimpleActivity @@ -16,7 +15,7 @@ import kotlinx.android.synthetic.main.resize_image.view.* class ResizeDialog(val activity: BaseSimpleActivity, val size: Point, val callback: (newSize: Point) -> Unit) { init { - val view = LayoutInflater.from(activity).inflate(R.layout.resize_image, null) + val view = activity.layoutInflater.inflate(R.layout.resize_image, null) val widthView = view.image_width val heightView = view.image_height diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt index 8bd25c1ea..792ede406 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SaveAsDialog.kt @@ -1,7 +1,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.view.LayoutInflater import android.view.WindowManager import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog @@ -15,7 +14,7 @@ class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appen init { var realPath = File(path).parent.trimEnd('/') - val view = LayoutInflater.from(activity).inflate(R.layout.dialog_save_as, null).apply { + val view = activity.layoutInflater.inflate(R.layout.dialog_save_as, null).apply { save_as_path.text = activity.humanizePath(realPath) val fullName = path.getFilenameFromPath() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt index 5eda40879..2facd4654 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/SlideshowDialog.kt @@ -1,7 +1,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.view.LayoutInflater import android.view.View import android.view.WindowManager import com.simplemobiletools.commons.activities.BaseSimpleActivity @@ -17,7 +16,7 @@ class SlideshowDialog(val activity: BaseSimpleActivity, val callback: () -> Unit val view: View init { - view = LayoutInflater.from(activity).inflate(R.layout.dialog_slideshow, null).apply { + view = activity.layoutInflater.inflate(R.layout.dialog_slideshow, null).apply { interval_value.setOnClickListener { val text = interval_value.text if (text.isNotEmpty()) { From d4b7acaf4ed002de043e325773f1b2e54c121754 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 19:09:24 +0100 Subject: [PATCH 11/15] update version to 3.0.1 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4b3f28805..71bc9a97e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.simplemobiletools.gallery" minSdkVersion 16 targetSdkVersion 27 - versionCode 146 - versionName "3.0.0" + versionCode 147 + versionName "3.0.1" multiDexEnabled true setProperty("archivesBaseName", "gallery") } From 1101c16407e2135dd118505092c45ba8007f9d14 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 19:09:29 +0100 Subject: [PATCH 12/15] updating changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c63eabc11..77fb901d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 3.0.1 *(2017-12-06)* +---------------------------- + + * Fix missing launcher icon on some devices + * Added an info bubble at scrolling by dragging + * Allow zooming gifs + * Display raw .dng files + Version 3.0.0 *(2017-12-04)* ---------------------------- From eece8130cf6cfaa23508d285b24ce8e690ede6d8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 21:50:08 +0100 Subject: [PATCH 13/15] update fastscroller bubble colors on resume --- .../com/simplemobiletools/gallery/activities/MainActivity.kt | 2 ++ .../com/simplemobiletools/gallery/activities/MediaActivity.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index 97d94af1e..05baef15e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -123,6 +123,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { getDirectoryAdapter()?.updateTextColor(config.textColor) } + directories_horizontal_fastscroller.updateBubbleColors() + directories_vertical_fastscroller.updateBubbleColors() invalidateOptionsMenu() directories_empty_text_label.setTextColor(config.textColor) directories_empty_text.setTextColor(config.primaryColor) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index e7aab694e..c432843bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -110,6 +110,8 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { getMediaAdapter()?.updateTextColor(config.textColor) } + media_horizontal_fastscroller.updateBubbleColors() + media_vertical_fastscroller.updateBubbleColors() tryloadGallery() invalidateOptionsMenu() media_empty_text_label.setTextColor(config.textColor) From 527edf3914323ec993cb1b1f9427d0eb9df784cd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 6 Dec 2017 21:59:56 +0100 Subject: [PATCH 14/15] show proper bubble text at sorting by path --- .../com/simplemobiletools/gallery/models/Directory.kt | 5 +++-- .../kotlin/com/simplemobiletools/gallery/models/Medium.kt | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt index e545ff080..271f065ed 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Directory.kt @@ -41,9 +41,10 @@ data class Directory(val path: String, val tmb: String, val name: String, var me } fun getBubbleText() = when { + sorting and SORT_BY_NAME != 0 -> name + sorting and SORT_BY_PATH != 0 -> path sorting and SORT_BY_SIZE != 0 -> size.formatSize() sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate() - sorting and SORT_BY_DATE_TAKEN != 0 -> taken.formatDate() - else -> name + else -> taken.formatDate() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt index 6572cfacb..1d113e4aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/models/Medium.kt @@ -26,6 +26,7 @@ data class Medium(var name: String, var path: String, val video: Boolean, val mo var result: Int when { sorting and SORT_BY_NAME != 0 -> result = AlphanumericComparator().compare(name.toLowerCase(), other.name.toLowerCase()) + sorting and SORT_BY_PATH != 0 -> result = AlphanumericComparator().compare(path.toLowerCase(), other.path.toLowerCase()) sorting and SORT_BY_SIZE != 0 -> result = when { size == other.size -> 0 size > other.size -> 1 @@ -50,9 +51,10 @@ data class Medium(var name: String, var path: String, val video: Boolean, val mo } fun getBubbleText() = when { + sorting and SORT_BY_NAME != 0 -> name + sorting and SORT_BY_PATH != 0 -> path sorting and SORT_BY_SIZE != 0 -> size.formatSize() sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate() - sorting and SORT_BY_DATE_TAKEN != 0 -> taken.formatDate() - else -> name + else -> taken.formatDate() } } From 993853a8a6f4322b21189fd127ce9f6fbd4cee4c Mon Sep 17 00:00:00 2001 From: anthologist Date: Sat, 9 Dec 2017 17:36:38 +0100 Subject: [PATCH 15/15] updated italian --- app/src/main/res/values-it/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ae49dd641..bd4c0b927 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -38,7 +38,7 @@ Questa funzione nasconde la cartella aggiungendo un file \'.nomedia\' all\'interno, nasconderà anche tutte le sottocartelle. Puoi vederle attivando l\'opzione \'Mostra cartelle nascoste\' nelle impostazioni. Continuare? Escludi Cartelle escluse - Gestisci cartelle escluse + Gestisci le cartelle escluse Questo escluderà la selezione e le relative sottocartelle solo da Simple Gallery. Puoi gestire le cartelle escluse nelle impostazioni. Vuoi invece escluderne una superiore? L\'esclusione delle cartelle e delle sottocartelle le renderà nascoste solo in Simple Gallery, saranno ancora visibili in altre applicazioni.\\n\\nSe desideri nasconderle anche nelle altre app, usa la funzione Nascondi. @@ -47,7 +47,7 @@ Includi cartelle - Gestisci cartelle incluse + Gestisci le cartelle incluse Aggiungi cartella Se hai alcune cartelle che contengono media, ma non sono state riconosciute dall\'app, puoi aggiungerle manualmente qui. @@ -88,9 +88,9 @@ Sfondo impostato correttamente Proporzioni ritratto Proporzioni panorama - Home screen - Lock screen - Home and lock screen + Schermata principale + Schermata di blocco + Entrambe le schermate Presentazione @@ -111,19 +111,19 @@ Elenco - Mostra cartelle nascoste - Riproduci video automaticamente + Mostra le cartelle nascoste + Riproduci i video automaticamente Visibilità nome del file Ripeti i video Anima le GIF in miniatura - Luminosità max durante visualizzazione + Luminosità max durante la visualizzazione Ritaglia le miniature in quadrati Ruota schermo per Impostazione di sistema Rotazione dispositivo Proporzioni Sfondo scuro a schermo intero - Scorri miniature orizzontalmente + Scorri le miniature orizzontalmente Nascondi UI di sistema con media a schermo intero Elimina cartelle vuote dopo averne eliminato il contenuto Gestisci il volume e la luminosità dei video con gesti verticali