void SetActivityViewControllerCompletionHandler(UserInfo info) { activityViewController.SetCompletionHandler ((activityType, completed, returnedItems, error) => { CleanupActivity(); RestoreActivityForImageIdentifier(info); }); }
public void RestoreActivityForImageIdentifier (UserInfo userInfo) { if (userInfo == null) throw new ArgumentNullException ("userInfo"); if (activityViewController != null) { SetActivityViewControllerCompletionHandler (userInfo); return; } ImageIdentifier = userInfo.ImageId; image = null; // clear the old image UpdateImage (false, true); // apply the new image (based on ImageIdentifier) and apply the 2 filter values // setup our filters (if not already allocated) and assign their values float blurFilterValue = userInfo.BlurRadius; var blurFilter = (BlurFilter)CreateImageFilter (BlurFilter.Key); blurFilter.BlurRadius = blurFilterValue; // the blur has changed from the activity on the other device blurFilter.Dirty = blurFilterValue > 0 ? true : blurFilter.Dirty; var sepiaFilterValue = userInfo.Intensity; var sepiaFilter = (ModifyFilter)CreateImageFilter (ModifyFilter.Key); sepiaFilter.Intensity = sepiaFilterValue; // the sepia has changed from the activity on the other device sepiaFilter.Dirty = sepiaFilterValue > 0 ? true : sepiaFilter.Dirty; // providing a different image requires us to adjust our view constraints and zoom UpdateConstraints (); UpdateZoom (); // a different image means updating our current user activity UpdateActivity (); // dismiss either filter view controller if necessary if (currentFilterViewController != null) currentFilterViewController.DismissViewController (false, null); else if (activityViewController != null) activityViewController.DismissViewController (false, null); }
UserInfo GetFilterValues() { var info = new UserInfo (); // obtain the filter values and save them ImageFilter filter; if(filters.TryGetValue (BlurFilter.Key, out filter)) info.BlurRadius = ((BlurFilter)filter).BlurRadius; if (filters.TryGetValue (ModifyFilter.Key, out filter)) info.Intensity = ((ModifyFilter)filter).Intensity; return info; }
public bool HandleUserActivity(NSUserActivity userActivity) { var userInfo = new UserInfo (userActivity.UserInfo); bool rc = HandleActivityUserInfo (userInfo); ClearActivityContinuationInProgress (); return rc; }
bool HandleActivityUserInfo(UserInfo userInfo) { string imageIdentifier = userInfo.ImageId; if (string.IsNullOrEmpty (imageIdentifier)) { HandleActivityFailure (); return false; } int row = int.Parse (imageIdentifier); NSIndexPath indexPath = NSIndexPath.FromRowSection (row, 0); CollectionView.SelectItem (indexPath, false, UICollectionViewScrollPosition.None); CollectionView.ScrollToItem (indexPath, UICollectionViewScrollPosition.None, false); if (detailViewController == null) InstantiateAndPushDetailViewController (true); DispatchQueue.MainQueue.DispatchAsync (() => { detailViewController.RestoreActivityForImageIdentifier (userInfo); SaveActivity (); }); return true; }
public override void UpdateUserActivityState(NSUserActivity activity) { base.UpdateUserActivityState (activity); string imageIdentifier = detailViewController.ImageIdentifier; if (string.IsNullOrEmpty (imageIdentifier)) return; activity.Title = DataSource.GetTitleForIdentifier (imageIdentifier); var userInfo = new UserInfo { ImageId = imageIdentifier }; activity.AddUserInfoEntries (userInfo.Dictionary); }