|
18 | 18 | package com.ichi2.anki.multimedia |
19 | 19 |
|
20 | 20 | import android.os.Bundle |
21 | | -import android.view.LayoutInflater |
22 | 21 | import android.view.View |
23 | | -import android.view.ViewGroup |
24 | 22 | import android.widget.LinearLayout |
25 | | -import androidx.annotation.IdRes |
26 | 23 | import androidx.fragment.app.activityViewModels |
27 | 24 | import com.google.android.material.bottomsheet.BottomSheetBehavior |
28 | 25 | import com.google.android.material.bottomsheet.BottomSheetDialogFragment |
29 | 26 | import com.ichi2.anki.R |
30 | 27 | import com.ichi2.anki.common.annotations.NeedsTest |
| 28 | +import com.ichi2.anki.databinding.BottomsheetMultimediaBinding |
31 | 29 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.OPEN_CAMERA |
32 | 30 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.OPEN_DRAWING |
33 | 31 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.SELECT_AUDIO_FILE |
34 | 32 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.SELECT_AUDIO_RECORDING |
35 | 33 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.SELECT_IMAGE_FILE |
36 | 34 | import com.ichi2.anki.multimedia.MultimediaBottomSheet.MultimediaAction.SELECT_VIDEO_FILE |
| 35 | +import dev.androidbroadcast.vbpd.viewBinding |
37 | 36 |
|
38 | 37 | /** |
39 | 38 | * A BottomSheetDialogFragment class that provides options for selecting multimedia actions. |
40 | 39 | */ |
41 | 40 | @NeedsTest("Test to ensure correct option is selected") |
42 | | -class MultimediaBottomSheet : BottomSheetDialogFragment() { |
| 41 | +class MultimediaBottomSheet : BottomSheetDialogFragment(R.layout.bottomsheet_multimedia) { |
43 | 42 | private val viewModel: MultimediaViewModel by activityViewModels() |
44 | 43 |
|
45 | | - override fun onCreateView( |
46 | | - inflater: LayoutInflater, |
47 | | - container: ViewGroup?, |
| 44 | + private val binding by viewBinding(BottomsheetMultimediaBinding::bind) |
| 45 | + |
| 46 | + override fun onViewCreated( |
| 47 | + view: View, |
48 | 48 | savedInstanceState: Bundle?, |
49 | | - ): View? { |
50 | | - val view = inflater.inflate(R.layout.bottomsheet_multimedia, container, false) |
| 49 | + ) { |
| 50 | + super.onViewCreated(view, savedInstanceState) |
51 | 51 |
|
52 | 52 | /** setup a click on the listener to emit [MultimediaViewModel.multimediaAction] */ |
53 | 53 | fun setupListener( |
54 | | - @IdRes id: Int, |
| 54 | + layout: LinearLayout, |
55 | 55 | action: MultimediaAction, |
56 | | - ) = view.findViewById<LinearLayout>(id).setOnClickListener { |
| 56 | + ) = layout.setOnClickListener { |
57 | 57 | viewModel.setMultimediaAction(action) |
58 | 58 | dismiss() |
59 | 59 | } |
60 | 60 |
|
61 | | - setupListener(R.id.multimedia_action_image, SELECT_IMAGE_FILE) |
62 | | - setupListener(R.id.multimedia_action_audio, SELECT_AUDIO_FILE) |
63 | | - setupListener(R.id.multimedia_action_drawing, OPEN_DRAWING) |
64 | | - setupListener(R.id.multimedia_action_recording, SELECT_AUDIO_RECORDING) |
65 | | - setupListener(R.id.multimedia_action_video, SELECT_VIDEO_FILE) |
66 | | - setupListener(R.id.multimedia_action_camera, OPEN_CAMERA) |
67 | | - |
68 | | - return view |
| 61 | + setupListener(binding.multimediaActionImage, SELECT_IMAGE_FILE) |
| 62 | + setupListener(binding.multimediaActionAudio, SELECT_AUDIO_FILE) |
| 63 | + setupListener(binding.multimediaActionDrawing, OPEN_DRAWING) |
| 64 | + setupListener(binding.multimediaActionRecording, SELECT_AUDIO_RECORDING) |
| 65 | + setupListener(binding.multimediaActionVideo, SELECT_VIDEO_FILE) |
| 66 | + setupListener(binding.multimediaActionCamera, OPEN_CAMERA) |
69 | 67 | } |
70 | 68 |
|
71 | 69 | override fun onStart() { |
72 | 70 | super.onStart() |
73 | | - BottomSheetBehavior.from(requireView().parent as View).state = BottomSheetBehavior.STATE_EXPANDED |
| 71 | + BottomSheetBehavior.from(binding.root.parent as View).state = BottomSheetBehavior.STATE_EXPANDED |
74 | 72 | } |
75 | 73 |
|
76 | 74 | /** |
|
0 commit comments