@@ -23,6 +23,7 @@ public class MvxImagePickerTask
23
23
{
24
24
private readonly UIImagePickerController _picker ;
25
25
private readonly IMvxTouchModalHost _modalHost ;
26
+ private bool _currentlyActive ;
26
27
private int _maxPixelDimension ;
27
28
private int _percentQuality ;
28
29
private Action < Stream > _pictureAvailable ;
@@ -32,13 +33,11 @@ public MvxImagePickerTask()
32
33
{
33
34
_modalHost = Mvx . Resolve < IMvxTouchModalHost > ( ) ;
34
35
_picker = new UIImagePickerController ( ) ;
35
- _picker . FinishedPickingMedia += _picker_FinishedPickingMedia ;
36
- _picker . FinishedPickingImage += _picker_FinishedPickingImage ;
37
- _picker . Canceled += _picker_Canceled ;
36
+ _picker . FinishedPickingMedia += Picker_FinishedPickingMedia ;
37
+ _picker . FinishedPickingImage += Picker_FinishedPickingImage ;
38
+ _picker . Canceled += Picker_Canceled ;
38
39
}
39
40
40
- #region IMvxPictureChooserTask Members
41
-
42
41
public void ChoosePictureFromLibrary ( int maxPixelDimension , int percentQuality , Action < Stream > pictureAvailable ,
43
42
Action assumeCancelled )
44
43
{
@@ -53,11 +52,10 @@ public void TakePicture(int maxPixelDimension, int percentQuality, Action<Stream
53
52
ChoosePictureCommon ( maxPixelDimension , percentQuality , pictureAvailable , assumeCancelled ) ;
54
53
}
55
54
56
- #endregion
57
-
58
55
private void ChoosePictureCommon ( int maxPixelDimension , int percentQuality ,
59
56
Action < Stream > pictureAvailable , Action assumeCancelled )
60
57
{
58
+ SetCurrentlyActive ( ) ;
61
59
_maxPixelDimension = maxPixelDimension ;
62
60
_percentQuality = percentQuality ;
63
61
_pictureAvailable = pictureAvailable ;
@@ -68,6 +66,7 @@ private void ChoosePictureCommon(int maxPixelDimension, int percentQuality,
68
66
69
67
private void HandleImagePick ( UIImage image )
70
68
{
69
+ ClearCurrentlyActive ( ) ;
71
70
if ( image != null )
72
71
{
73
72
// resize the image
@@ -95,27 +94,42 @@ private void HandleImagePick(UIImage image)
95
94
_modalHost . NativeModalViewControllerDisappearedOnItsOwn ( ) ;
96
95
}
97
96
98
- void _picker_FinishedPickingMedia ( object sender , UIImagePickerMediaPickedEventArgs e )
97
+ void Picker_FinishedPickingMedia ( object sender , UIImagePickerMediaPickedEventArgs e )
99
98
{
100
99
var image = e . EditedImage ?? e . OriginalImage ;
101
100
HandleImagePick ( image ) ;
102
101
103
102
}
104
103
105
- void _picker_FinishedPickingImage ( object sender , UIImagePickerImagePickedEventArgs e )
104
+ void Picker_FinishedPickingImage ( object sender , UIImagePickerImagePickedEventArgs e )
106
105
{
107
106
var image = e . Image ;
108
107
HandleImagePick ( image ) ;
109
108
}
110
109
111
- void _picker_Canceled ( object sender , EventArgs e )
110
+ void Picker_Canceled ( object sender , EventArgs e )
112
111
{
112
+ ClearCurrentlyActive ( ) ;
113
113
if ( _assumeCancelled != null )
114
114
_assumeCancelled ( ) ;
115
115
_picker . DismissViewController ( true , ( ) => { } ) ;
116
116
_modalHost . NativeModalViewControllerDisappearedOnItsOwn ( ) ;
117
117
}
118
118
119
+ private void SetCurrentlyActive ( )
120
+ {
121
+ if ( _currentlyActive )
122
+ Mvx . Warning ( "MvxImagePickerTask called when task already active" ) ;
123
+ _currentlyActive = true ;
124
+ }
125
+
126
+ private void ClearCurrentlyActive ( )
127
+ {
128
+ if ( ! _currentlyActive )
129
+ Mvx . Warning ( "Tried to clear currently active - but already cleared" ) ;
130
+ _currentlyActive = false ;
131
+ }
132
+
119
133
#region Nested type: CameraDelegate
120
134
121
135
private class CameraDelegate : UIImagePickerControllerDelegate
0 commit comments