diff --git a/app/src/main/java/app/grapheneos/camera/CamConfig.kt b/app/src/main/java/app/grapheneos/camera/CamConfig.kt index 128205f5..f289e000 100644 --- a/app/src/main/java/app/grapheneos/camera/CamConfig.kt +++ b/app/src/main/java/app/grapheneos/camera/CamConfig.kt @@ -640,6 +640,15 @@ class CamConfig(private val mActivity: MainActivity) { lastCapturedItem = item } + fun clearLastCapturedItem() { + commonPref.edit { + remove(SettingValues.Key.LAST_CAPTURED_ITEM_TYPE) + remove(SettingValues.Key.LAST_CAPTURED_ITEM_DATE_STRING) + remove(SettingValues.Key.LAST_CAPTURED_ITEM_URI) + } + lastCapturedItem = null + } + var requireLocation: Boolean = false get() { return mActivity.settingsDialog.locToggle.isChecked diff --git a/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt b/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt index 25c8a1e6..888fbe83 100644 --- a/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt +++ b/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt @@ -119,6 +119,7 @@ class GallerySliderAdapter( gActivity.showMessage( gActivity.getString(R.string.existing_no_image) ) + gActivity.setEmptyGalleryResult() gActivity.finish() } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt index 01a70bf9..1baabd0f 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt @@ -3,6 +3,7 @@ package app.grapheneos.camera.ui.activities import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.app.Activity import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent @@ -84,6 +85,7 @@ class InAppGallery : AppCompatActivity() { const val INTENT_KEY_LAST_CAPTURED_ITEM = "last_captured_item" const val LAST_VIEWED_ITEM_KEY = "LAST_VIEWED_ITEM_KEY" + const val EMPTY_GALLERY = "empty_gallery" @SuppressLint("SimpleDateFormat") fun convertTime(time: Long, showTimeZone: Boolean = true): String { @@ -559,6 +561,12 @@ class InAppGallery : AppCompatActivity() { showUI() } + fun setEmptyGalleryResult() { + val resultIntent = Intent() + resultIntent.putExtra(EMPTY_GALLERY, true) + setResult(Activity.RESULT_OK, resultIntent) + } + fun asyncResultReady(items: ArrayList) { if (isDestroyed) { return @@ -566,6 +574,7 @@ class InAppGallery : AppCompatActivity() { if (items.isEmpty()) { Toast.makeText(applicationContext, R.string.empty_gallery, Toast.LENGTH_SHORT).show() + setEmptyGalleryResult() finish() return } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index f965c009..2d7345e8 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -269,6 +269,19 @@ open class MainActivity : AppCompatActivity(), } } + private val galleryLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == RESULT_OK) { + val data = result.data + Log.i(TAG, "Gallery result: ${data?.getBooleanExtra(InAppGallery.EMPTY_GALLERY, false)}") + if (data?.getBooleanExtra(InAppGallery.EMPTY_GALLERY, false) == true) { + Log.i(TAG, "Gallery is empty.") + camConfig.clearLastCapturedItem() + } + } + } + // Used to request permission from the user private val requestPermissionLauncher = registerForActivityResult( RequestMultiplePermissions() @@ -421,6 +434,10 @@ open class MainActivity : AppCompatActivity(), } it.putParcelableArrayListExtra(InAppGallery.INTENT_KEY_LIST_OF_SECURE_MODE_CAPTURED_ITEMS, list) } else { + if(camConfig.lastCapturedItem == null) { + showMessage(R.string.no_image) + return + } it.putExtra(InAppGallery.INTENT_KEY_VIDEO_ONLY_MODE, requiresVideoModeOnly) } @@ -428,7 +445,7 @@ open class MainActivity : AppCompatActivity(), it.putExtra(InAppGallery.INTENT_KEY_LAST_CAPTURED_ITEM, camConfig.lastCapturedItem) } - startActivity(it) + galleryLauncher.launch(it) } }