Skip to content

Commit e04c5db

Browse files
committed
Fix CropAdjustmentFragment result relay
1 parent 8373615 commit e04c5db

File tree

4 files changed

+33
-12
lines changed

4 files changed

+33
-12
lines changed

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/fragments/adjustment/CropAdjustmentFragment.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import android.os.Bundle
88
import android.text.SpannableStringBuilder
99
import android.view.View
1010
import androidx.annotation.ColorInt
11+
import androidx.core.os.bundleOf
1112
import androidx.core.text.color
1213
import androidx.core.util.lruCache
14+
import androidx.fragment.app.setFragmentResult
1315
import androidx.fragment.app.viewModels
1416
import androidx.lifecycle.LiveData
1517
import androidx.lifecycle.MutableLiveData
@@ -47,6 +49,8 @@ class CropAdjustmentFragment
4749
: AppFragment<CropAdjustmentBinding>(CropAdjustmentBinding::class.java) {
4850

4951
companion object {
52+
const val REQUEST_KEY = "com.w2sv.autocrop.request_key.CROP_ADJUSTMENT_FRAGMENT_RESULT"
53+
5054
fun getInstance(cropBundlePosition: Int): CropAdjustmentFragment =
5155
getFragment(
5256
CropAdjustmentFragment::class.java,
@@ -213,20 +217,13 @@ class CropAdjustmentFragment
213217
}
214218

215219
cancelButton.setOnClickListener {
216-
parentFragmentManager.popBackStack()
220+
requireActivity().supportFragmentManager.popBackStack()
217221
}
218222
applyButton.setOnClickListener {
219-
parentFragmentManager.popBackStackImmediate() // TODO
220-
221-
// notify ResultListener
222-
(requireViewBoundFragmentActivity().getCurrentFragment() as ResultListener)
223-
.onApplyAdjustedCropEdges(viewModel.cropEdgesLive.value!!)
223+
setFragmentResult(REQUEST_KEY, bundleOf(CropEdges.EXTRA to viewModel.cropEdgesLive.value))
224+
requireActivity().supportFragmentManager.popBackStack()
224225
}
225226
}
226-
227-
interface ResultListener {
228-
fun onApplyAdjustedCropEdges(cropEdges: CropEdges)
229-
}
230227
}
231228

232229
private fun formattedUnitText(

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/fragments/pager/CropPagerFragment.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ import android.text.SpannableStringBuilder
66
import android.view.View
77
import android.widget.PopupMenu
88
import android.widget.Toast
9+
import androidx.core.app.BundleCompat
10+
import androidx.core.content.IntentCompat
11+
import androidx.core.os.ParcelableCompat
912
import androidx.core.text.bold
1013
import androidx.core.text.color
1114
import androidx.fragment.app.activityViewModels
15+
import androidx.fragment.app.setFragmentResultListener
1216
import androidx.fragment.app.viewModels
1317
import androidx.lifecycle.Lifecycle
1418
import androidx.lifecycle.LiveData
@@ -53,6 +57,7 @@ import com.w2sv.autocrop.ui.views.visualize
5357
import com.w2sv.autocrop.utils.extensions.holdingSingularElement
5458
import com.w2sv.autocrop.utils.getFragment
5559
import com.w2sv.bidirectionalviewpager.recyclerview.ImageViewHolder
60+
import com.w2sv.common.extensions.getParcelableCompat
5661
import com.w2sv.cropbundle.Crop
5762
import com.w2sv.cropbundle.CropBundle
5863
import com.w2sv.cropbundle.cropping.CropEdges
@@ -75,7 +80,6 @@ class CropPagerFragment :
7580
AppFragment<CropPagerBinding>(CropPagerBinding::class.java),
7681
CropSavingDialogFragment.ResultListener,
7782
SaveAllCropsDialogFragment.ResultListener,
78-
CropAdjustmentFragment.ResultListener,
7983
RecropDialogFragment.Listener {
8084

8185
companion object {
@@ -191,6 +195,14 @@ class CropPagerFragment :
191195

192196
private lateinit var cropPager: CropPager
193197

198+
override fun onCreate(savedInstanceState: Bundle?) {
199+
super.onCreate(savedInstanceState)
200+
201+
setFragmentResultListener(CropAdjustmentFragment.REQUEST_KEY){ _, bundle ->
202+
applyAdjustedCropEdges(bundle.getParcelableCompat(CropEdges.EXTRA)!!)
203+
}
204+
}
205+
194206
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
195207
super.onViewCreated(view, savedInstanceState)
196208

@@ -365,7 +377,7 @@ class CropPagerFragment :
365377
}
366378
}
367379

368-
override fun onApplyAdjustedCropEdges(cropEdges: CropEdges) {
380+
private fun applyAdjustedCropEdges(cropEdges: CropEdges) {
369381
viewModel.dataSet.liveElement.let {
370382
it.crop = Crop.fromScreenshot(
371383
it.screenshot.getBitmap(requireContext().contentResolver),
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.w2sv.common.extensions
2+
3+
import android.os.Bundle
4+
import android.os.Parcelable
5+
6+
@Suppress("DEPRECATION")
7+
inline fun <reified T : Parcelable> Bundle.getParcelableCompat(name: String): T? =
8+
getParcelable(name) as? T

cropbundle/src/main/kotlin/com/w2sv/cropbundle/cropping/CropEdges.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import kotlinx.parcelize.Parcelize
66
@Parcelize
77
data class CropEdges(val top: Int, val bottom: Int) : Parcelable {
88

9+
companion object {
10+
const val EXTRA = "com.w2sv.autocrop.extra.CROP_EDGES"
11+
}
12+
913
constructor(edges: Pair<Int, Int>)
1014
: this(edges.first, edges.second)
1115

0 commit comments

Comments
 (0)