diff --git a/README.md b/README.md index d9e4fc0..c75cd46 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,11 @@ Used for selecting file to restore from Apache 2 License +### [Android Image Picker](https://github.com/esafirm/android-image-picker) +Used for selecting images + +[License](https://github.com/esafirm/android-image-picker/blob/master/LICENSE) + ### [M PLUS Rounded 1c Bold](https://fonts.google.com/specimen/M+PLUS+Rounded+1c) Used as the icon font diff --git a/app/build.gradle b/app/build.gradle index fee30bb..dcad404 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,8 +31,8 @@ android { minSdkVersion 23 //noinspection OldTargetApi targetSdkVersion 28 - versionCode 36 - versionName "1.4.0" + versionCode 37 + versionName "1.4.1" setProperty("archivesBaseName", "Hibi-v$versionName") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -59,8 +59,8 @@ dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.4' // AndroidX - implementation 'androidx.appcompat:appcompat:1.3.0-alpha01' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta8' + implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-rc1' implementation 'androidx.preference:preference:1.1.1' implementation 'com.google.android.material:material:1.2.0' // TODO Updating these anymore breaks non-LiveData Room queries @@ -106,9 +106,12 @@ dependencies { // Android-FilePicker implementation 'com.droidninja:filepicker:2.2.4' + // Android Image Picker + implementation 'com.github.esafirm:android-image-picker:2.3.2' + // Glide for image loading and caching - implementation 'com.github.bumptech.glide:glide:4.9.0' - kapt 'com.github.bumptech.glide:compiler:4.9.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' + kapt 'com.github.bumptech.glide:compiler:4.11.0' // Simple License Display implementation 'com.marcdonald:simplelicensedisplay:1.1.1' diff --git a/app/src/main/java/com/marcdonald/hibi/screens/about/OpenSourceLicencesFragment.kt b/app/src/main/java/com/marcdonald/hibi/screens/about/OpenSourceLicencesFragment.kt index eff7614..3912f13 100644 --- a/app/src/main/java/com/marcdonald/hibi/screens/about/OpenSourceLicencesFragment.kt +++ b/app/src/main/java/com/marcdonald/hibi/screens/about/OpenSourceLicencesFragment.kt @@ -55,6 +55,9 @@ class OpenSourceLicencesFragment : Fragment() { view.findViewById(R.id.license_android_file_picker) .setOnClickListener(openURLClickListener("https://github.com/DroidNinja/Android-FilePicker")) + view.findViewById(R.id.license_android_image_picker) + .setOnClickListener(openURLClickListener("https://github.com/esafirm/android-image-picker")) + view.findViewById(R.id.license_mplus) .setOnClickListener(openURLClickListener("https://fonts.google.com/specimen/M+PLUS+Rounded+1c")) diff --git a/app/src/main/java/com/marcdonald/hibi/screens/entries/ImageRecyclerAdapter.kt b/app/src/main/java/com/marcdonald/hibi/screens/entries/ImageRecyclerAdapter.kt index a834d85..f3d07c0 100644 --- a/app/src/main/java/com/marcdonald/hibi/screens/entries/ImageRecyclerAdapter.kt +++ b/app/src/main/java/com/marcdonald/hibi/screens/entries/ImageRecyclerAdapter.kt @@ -81,5 +81,6 @@ class ImageRecyclerViewHolder(itemView: View, .apply(RequestOptions().centerCrop()) .apply(RequestOptions().error(itemView.resources.getDrawable(R.drawable.ic_error_24dp, theme))) .into(imageDisplay) + imageDisplay.imageTintList = null } } \ No newline at end of file diff --git a/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryFragment.kt b/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryFragment.kt index 7158abb..4bdb46a 100644 --- a/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryFragment.kt +++ b/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryFragment.kt @@ -23,6 +23,7 @@ import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.content.res.Configuration +import android.net.Uri import android.os.Bundle import android.preference.PreferenceManager import android.view.* @@ -36,6 +37,8 @@ import androidx.lifecycle.Observer import androidx.navigation.Navigation import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.esafirm.imagepicker.features.ImagePicker +import com.esafirm.imagepicker.features.ReturnMode import com.google.android.material.button.MaterialButton import com.marcdonald.hibi.R import com.marcdonald.hibi.internal.* @@ -53,6 +56,7 @@ import com.marcdonald.hibi.uicomponents.TimePickerDialog import com.marcdonald.hibi.uicomponents.views.SearchBar import droidninja.filepicker.FilePickerBuilder import droidninja.filepicker.FilePickerConst +import timber.log.Timber class AddEntryFragment : HibiFragment() { @@ -439,11 +443,15 @@ class AddEntryFragment : HibiFragment() { if(ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { askForStoragePermissions() } else { - FilePickerBuilder.instance - .setActivityTheme(R.style.AppTheme) - .setActivityTitle(resources.getString(R.string.add_images)) - .setSelectedFiles(arrayListOf()) - .pickPhoto(this, CHOOSE_IMAGE_TO_ADD_REQUEST_CODE) + ImagePicker.create(this) + .includeVideo(false) + .includeAnimation(false) + .toolbarImageTitle(resources.getString(R.string.add_images)) + .toolbarFolderTitle(resources.getString(R.string.add_images)) + .showCamera(false) + .folderMode(true) + .theme(R.style.Hibi_ImagePicker) + .start() } } @@ -454,9 +462,9 @@ class AddEntryFragment : HibiFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) - if(requestCode == CHOOSE_IMAGE_TO_ADD_REQUEST_CODE && resultCode == Activity.RESULT_OK && data != null) { - val photoPathArray = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA) - viewModel.addImages(photoPathArray) + if(ImagePicker.shouldHandle(requestCode, resultCode, data)) { + val images = ImagePicker.getImages(data) + viewModel.addImages(images) } } diff --git a/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryViewModel.kt b/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryViewModel.kt index c2371dc..43cbfb0 100644 --- a/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryViewModel.kt +++ b/app/src/main/java/com/marcdonald/hibi/screens/entries/addentry/AddEntryViewModel.kt @@ -18,6 +18,7 @@ package com.marcdonald.hibi.screens.entries.addentry import android.app.Application import android.preference.PreferenceManager import androidx.lifecycle.* +import com.esafirm.imagepicker.model.Image import com.marcdonald.hibi.data.entity.Entry import com.marcdonald.hibi.data.entity.EntryImage import com.marcdonald.hibi.data.repository.* @@ -206,10 +207,10 @@ class AddEntryViewModel(application: Application, return ld } - fun addImages(pathList: List) { + fun addImages(imageList: List) { viewModelScope.launch { - pathList.forEach { path -> - val file = File(path) + imageList.forEach { image -> + val file = File(image.path) val entryImage = EntryImage(file.name, entryId) entryImageRepository.addEntryImage(entryImage) fileUtils.saveImage(file) diff --git a/app/src/main/java/com/marcdonald/hibi/screens/entries/viewentry/FullscreenImageFragment.kt b/app/src/main/java/com/marcdonald/hibi/screens/entries/viewentry/FullscreenImageFragment.kt index 015cd60..2ac5bf4 100644 --- a/app/src/main/java/com/marcdonald/hibi/screens/entries/viewentry/FullscreenImageFragment.kt +++ b/app/src/main/java/com/marcdonald/hibi/screens/entries/viewentry/FullscreenImageFragment.kt @@ -44,5 +44,6 @@ class FullscreenImageFragment : HibiFragment() { .apply(RequestOptions().fitCenter()) .apply(RequestOptions().error(resources.getDrawable(R.drawable.ic_error_24dp, requireActivity().theme))) .into(imageView) + imageView.imageTintList = null } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_oss.xml b/app/src/main/res/layout/fragment_oss.xml index 8815627..b472d70 100644 --- a/app/src/main/res/layout/fragment_oss.xml +++ b/app/src/main/res/layout/fragment_oss.xml @@ -96,6 +96,18 @@ app:sldLicense="@string/apache" app:sldTitle="@string/android_file_picker" /> + + Open Font License SIL Open Font License 1.1 BSD, part MIT and Apache 2.0. See the LICENSE file for details + See License File for Details Timber Used for logging @@ -329,6 +330,9 @@ Android File Picker Used for selecting file to restore from + Android Image Picker + Used for selecting images + M PLUS Rounded 1c Bold Used as the icon font diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 973994c..7c590c2 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -53,6 +53,13 @@ @color/iconTint + +