Skip to content

Commit dbd15b9

Browse files
committed
Fix & polish stuff
1 parent bff7e3e commit dbd15b9

22 files changed

+227
-191
lines changed

app/src/main/kotlin/com/w2sv/autocrop/activities/crop/CropActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import com.w2sv.autocrop.activities.crop.fragments.cropping.CropFragment
66
import com.w2sv.autocrop.activities.crop.fragments.croppingfailed.CroppingFailedFragment
77
import com.w2sv.autocrop.activities.main.MainActivity
88
import com.w2sv.common.extensions.getParcelableArrayListExtraCompat
9+
import dagger.hilt.android.AndroidEntryPoint
910

11+
@AndroidEntryPoint // java.lang.IllegalStateException: Hilt Fragments must be attached to an @AndroidEntryPoint Activity
1012
class CropActivity : AppActivity() {
1113

1214
override fun getRootFragment(): Fragment =

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/ExaminationActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ class ExaminationActivity : AppActivity() {
119119

120120
override fun getRootFragment(): Fragment =
121121
CropPagerFragment.getInstance(
122-
intent.getParcelableExtraCompat(CropResults.EXTRA)!!,
122+
intent.getParcelableExtraCompat(CropResults.EXTRA)!!
123123
)
124124

125125
private val viewModel: ViewModel by viewModels()
126126

127-
override val lifecycleObservers: List<LifecycleObserver> by viewModel::lifecycleObservers
127+
override val lifecycleObservers: List<LifecycleObserver> get() = viewModel.lifecycleObservers
128128

129129
fun invokeExitFragment() {
130130
fragmentReplacementTransaction(

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/fragments/comparison/ComparisonFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class ComparisonFragment
8787
private fun onEnterTransitionCompleted() {
8888
launchAfterShortDelay {
8989
if (!viewModel.globalFlags.comparisonInstructionsShown) {
90-
ComparisonInstructionDialog().show(childFragmentManager)
90+
ComparisonScreenInstructionDialogFragment().show(childFragmentManager)
9191
}
9292
else
9393
// trigger display of displayedImageTv

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/fragments/comparison/ComparisonInstructionDialog.kt

Lines changed: 0 additions & 36 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.w2sv.autocrop.activities.examination.fragments.comparison
2+
3+
import androidx.appcompat.app.AlertDialog
4+
import androidx.fragment.app.viewModels
5+
import com.w2sv.androidutils.extensions.getColoredDrawable
6+
import com.w2sv.autocrop.R
7+
import com.w2sv.autocrop.ui.views.RoundedDialogFragment
8+
import com.w2sv.preferences.GlobalFlags
9+
import dagger.hilt.android.AndroidEntryPoint
10+
import dagger.hilt.android.lifecycle.HiltViewModel
11+
import javax.inject.Inject
12+
13+
@AndroidEntryPoint
14+
internal class ComparisonScreenInstructionDialogFragment : RoundedDialogFragment() {
15+
16+
@HiltViewModel
17+
class ViewModel @Inject constructor(val globalFlags: GlobalFlags) : androidx.lifecycle.ViewModel()
18+
19+
override fun AlertDialog.Builder.build(): AlertDialog.Builder =
20+
apply {
21+
setCancelable(false)
22+
setTitle("Comparison Screen")
23+
setIcon(
24+
context.getColoredDrawable(
25+
R.drawable.ic_crop_original_24,
26+
com.w2sv.common.R.color.magenta_saturated
27+
)
28+
)
29+
setMessage(getString(R.string.comparison_instruction))
30+
setPositiveButton(resources.getString(R.string.got_it))
31+
{ _, _ ->
32+
viewModels<ViewModel>().value.globalFlags.comparisonInstructionsShown = true
33+
}
34+
}
35+
}

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ import com.w2sv.autocrop.activities.crop.domain.CropResults
3434
import com.w2sv.autocrop.activities.examination.ExaminationActivity
3535
import com.w2sv.autocrop.activities.examination.fragments.adjustment.CropAdjustmentFragment
3636
import com.w2sv.autocrop.activities.examination.fragments.comparison.ComparisonFragment
37-
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.CropSavingDialog
38-
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.RecropDialog
39-
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.SaveAllCropsDialog
40-
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.SaveCropDialog
37+
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.AbstractCropSavingDialogFragment
38+
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.RecropDialogFragment
39+
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.SaveAllCropsDialogFragment
40+
import com.w2sv.autocrop.activities.examination.fragments.pager.dialogs.CropSavingDialogFragment
4141
import com.w2sv.autocrop.activities.examination.fragments.pager.model.CropProcedure
4242
import com.w2sv.autocrop.activities.examination.fragments.saveall.SaveAllFragment
4343
import com.w2sv.autocrop.databinding.CropPagerBinding
@@ -75,10 +75,10 @@ import javax.inject.Inject
7575
@AndroidEntryPoint
7676
class CropPagerFragment :
7777
AppFragment<CropPagerBinding>(CropPagerBinding::class.java),
78-
SaveCropDialog.ResultListener,
79-
SaveAllCropsDialog.ResultListener,
78+
CropSavingDialogFragment.ResultListener,
79+
SaveAllCropsDialogFragment.ResultListener,
8080
CropAdjustmentFragment.ResultListener,
81-
RecropDialog.Listener {
81+
RecropDialogFragment.Listener {
8282

8383
companion object {
8484
fun getInstance(cropResults: CropResults): CropPagerFragment =
@@ -99,18 +99,18 @@ class CropPagerFragment :
9999
* CropSavingDialogs
100100
*/
101101

102-
fun getCropSavingDialogOnClick(click: Click): CropSavingDialog? =
102+
fun getCropSavingDialogOnClick(click: Click): AbstractCropSavingDialogFragment? =
103103
when {
104104
doAutoScrollLive.value == true -> null
105105
click == Click.Single || dataSet.holdingSingularElement -> getSaveCropDialog(true)
106106
else -> getSaveAllCropsDialog(true)
107107
}
108108

109-
fun getSaveCropDialog(showDismissButton: Boolean): SaveCropDialog =
110-
SaveCropDialog.getInstance(dataSet.livePosition.value!!, showDismissButton)
109+
fun getSaveCropDialog(showDismissButton: Boolean): CropSavingDialogFragment =
110+
CropSavingDialogFragment.getInstance(dataSet.livePosition.value!!, showDismissButton)
111111

112-
fun getSaveAllCropsDialog(showDismissButton: Boolean): SaveAllCropsDialog =
113-
SaveAllCropsDialog.getInstance(dataSet.size, showDismissButton)
112+
fun getSaveAllCropsDialog(showDismissButton: Boolean): SaveAllCropsDialogFragment =
113+
SaveAllCropsDialogFragment.getInstance(dataSet.size, showDismissButton)
114114

115115
/**
116116
* AutoScroll
@@ -192,8 +192,8 @@ class CropPagerFragment :
192192
* Other
193193
*/
194194

195-
fun getRecropDialog(): RecropDialog =
196-
RecropDialog.getInstance(
195+
fun getRecropDialog(): RecropDialogFragment =
196+
RecropDialogFragment.getInstance(
197197
dataSet.livePosition.value!!,
198198
dataSet.liveElement.adjustedEdgeThreshold
199199
?: intPreferences.edgeCandidateThreshold
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.w2sv.autocrop.activities.examination.fragments.pager.dialogs
22

3-
import android.app.AlertDialog
4-
import androidx.fragment.app.DialogFragment
3+
import androidx.appcompat.app.AlertDialog
54
import androidx.fragment.app.viewModels
65
import com.w2sv.autocrop.activities.examination.fragments.pager.CropPagerFragment
6+
import com.w2sv.autocrop.ui.views.RoundedDialogFragment
77

8-
abstract class CropSavingDialog : DialogFragment() {
8+
abstract class AbstractCropSavingDialogFragment : RoundedDialogFragment() {
99

1010
companion object {
1111
const val EXTRA_SHOW_DISCARD_BUTTON = "com.w2sv.autocrop.extra.SHOW_DISMISS_BUTTON"
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.w2sv.autocrop.activities.examination.fragments.pager.dialogs
2+
3+
import androidx.appcompat.app.AlertDialog
4+
import com.w2sv.autocrop.R
5+
import com.w2sv.autocrop.utils.getFragment
6+
7+
class CropSavingDialogFragment : AbstractCropSavingDialogFragment() {
8+
9+
companion object {
10+
private const val EXTRA_DATA_SET_POSITION = "com.w2sv.autocrop.extra.DATA_SET_POSITION"
11+
12+
fun getInstance(dataSetPosition: Int, showDismissButton: Boolean): CropSavingDialogFragment =
13+
getFragment(
14+
CropSavingDialogFragment::class.java,
15+
EXTRA_DATA_SET_POSITION to dataSetPosition,
16+
EXTRA_SHOW_DISCARD_BUTTON to showDismissButton
17+
)
18+
}
19+
20+
override fun AlertDialog.Builder.build(): AlertDialog.Builder =
21+
apply {
22+
setTitle("Save crop?")
23+
setIcon(R.drawable.ic_save_24)
24+
setDeleteCorrespondingScreenshotsOption("Delete corresponding screenshot")
25+
setNegativeButton(getString(R.string.no)) { _, _ -> }
26+
setPositiveButton(getString(R.string.yes)) { _, _ ->
27+
(requireParentFragment() as ResultListener)
28+
.onSaveCrop(
29+
requireArguments().getInt(EXTRA_DATA_SET_POSITION)
30+
)
31+
}
32+
if (requireArguments().getBoolean(EXTRA_SHOW_DISCARD_BUTTON))
33+
setNeutralButton("No, discard crop") { _, _ ->
34+
(parentFragment as ResultListener)
35+
.onDiscardCrop(
36+
requireArguments().getInt(EXTRA_DATA_SET_POSITION)
37+
)
38+
}
39+
}
40+
41+
interface ResultListener {
42+
fun onSaveCrop(dataSetPosition: Int)
43+
fun onDiscardCrop(dataSetPosition: Int)
44+
}
45+
}
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,33 @@ package com.w2sv.autocrop.activities.examination.fragments.pager.dialogs
33
import androidx.fragment.app.viewModels
44
import androidx.lifecycle.SavedStateHandle
55
import com.w2sv.autocrop.R
6-
import com.w2sv.autocrop.ui.CropSettingsDialog
6+
import com.w2sv.autocrop.ui.AbstractCropSettingsDialogFragment
77
import com.w2sv.autocrop.utils.getFragment
88
import com.w2sv.cropbundle.CropBundle
99
import dagger.hilt.android.AndroidEntryPoint
1010
import dagger.hilt.android.lifecycle.HiltViewModel
1111
import javax.inject.Inject
1212

1313
@AndroidEntryPoint
14-
class RecropDialog : CropSettingsDialog(R.string.recrop_with_adjusted_settings, R.string.recrop) {
14+
class RecropDialogFragment : AbstractCropSettingsDialogFragment(
15+
R.string.recrop_with_adjusted_settings,
16+
R.drawable.ic_autorenew_24,
17+
R.string.recrop
18+
) {
1519

1620
companion object {
1721
private const val EXTRA_INITIAL_THRESHOLD = "com.w2sv.autocrop.extra.INITIAL_THRESHOLD"
1822

19-
fun getInstance(cropBundlePosition: Int, initialThreshold: Int): RecropDialog =
23+
fun getInstance(cropBundlePosition: Int, initialThreshold: Int): RecropDialogFragment =
2024
getFragment(
21-
RecropDialog::class.java,
25+
RecropDialogFragment::class.java,
2226
CropBundle.EXTRA_POSITION to cropBundlePosition,
2327
EXTRA_INITIAL_THRESHOLD to initialThreshold
2428
)
2529
}
2630

2731
@HiltViewModel
28-
class ViewModel @Inject constructor(savedStateHandle: SavedStateHandle) : CropSettingsDialog.ViewModel(
32+
class ViewModel @Inject constructor(savedStateHandle: SavedStateHandle) : AbstractCropSettingsDialogFragment.ViewModel(
2933
savedStateHandle[EXTRA_INITIAL_THRESHOLD]!!
3034
) {
3135
val cropBundlePosition: Int = savedStateHandle[CropBundle.EXTRA_POSITION]!!

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

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)