Skip to content

Commit 43997dd

Browse files
committed
_currentlyActive sentinel (trace only) added to the iOS image picker plugin
1 parent ff3653c commit 43997dd

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

Plugins/Cirrious/PictureChooser/Cirrious.MvvmCross.Plugins.PictureChooser.Touch/MvxImagePickerTask.cs

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class MvxImagePickerTask
2323
{
2424
private readonly UIImagePickerController _picker;
2525
private readonly IMvxTouchModalHost _modalHost;
26+
private bool _currentlyActive;
2627
private int _maxPixelDimension;
2728
private int _percentQuality;
2829
private Action<Stream> _pictureAvailable;
@@ -32,13 +33,11 @@ public MvxImagePickerTask()
3233
{
3334
_modalHost = Mvx.Resolve<IMvxTouchModalHost>();
3435
_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;
3839
}
3940

40-
#region IMvxPictureChooserTask Members
41-
4241
public void ChoosePictureFromLibrary(int maxPixelDimension, int percentQuality, Action<Stream> pictureAvailable,
4342
Action assumeCancelled)
4443
{
@@ -53,11 +52,10 @@ public void TakePicture(int maxPixelDimension, int percentQuality, Action<Stream
5352
ChoosePictureCommon(maxPixelDimension, percentQuality, pictureAvailable, assumeCancelled);
5453
}
5554

56-
#endregion
57-
5855
private void ChoosePictureCommon(int maxPixelDimension, int percentQuality,
5956
Action<Stream> pictureAvailable, Action assumeCancelled)
6057
{
58+
SetCurrentlyActive();
6159
_maxPixelDimension = maxPixelDimension;
6260
_percentQuality = percentQuality;
6361
_pictureAvailable = pictureAvailable;
@@ -68,6 +66,7 @@ private void ChoosePictureCommon(int maxPixelDimension, int percentQuality,
6866

6967
private void HandleImagePick(UIImage image)
7068
{
69+
ClearCurrentlyActive();
7170
if (image != null)
7271
{
7372
// resize the image
@@ -95,27 +94,42 @@ private void HandleImagePick(UIImage image)
9594
_modalHost.NativeModalViewControllerDisappearedOnItsOwn();
9695
}
9796

98-
void _picker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
97+
void Picker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
9998
{
10099
var image = e.EditedImage ?? e.OriginalImage;
101100
HandleImagePick(image);
102101

103102
}
104103

105-
void _picker_FinishedPickingImage(object sender, UIImagePickerImagePickedEventArgs e)
104+
void Picker_FinishedPickingImage(object sender, UIImagePickerImagePickedEventArgs e)
106105
{
107106
var image = e.Image;
108107
HandleImagePick(image);
109108
}
110109

111-
void _picker_Canceled(object sender, EventArgs e)
110+
void Picker_Canceled(object sender, EventArgs e)
112111
{
112+
ClearCurrentlyActive();
113113
if (_assumeCancelled != null)
114114
_assumeCancelled();
115115
_picker.DismissViewController(true, () => { });
116116
_modalHost.NativeModalViewControllerDisappearedOnItsOwn();
117117
}
118118

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+
119133
#region Nested type: CameraDelegate
120134

121135
private class CameraDelegate : UIImagePickerControllerDelegate

0 commit comments

Comments
 (0)