/// <summary> /// Shows the event editor. /// </summary> /// <param name="TheEvent">The event.</param> /// <param name="CalendarView">Calendar view.</param> /// <param name="targetView">Target view.</param> private void ShowEventEditor(EKEvent TheEvent, DSCalendarView CalendarView, object targetView) { if (targetView is DSCalendarCell) { mCenterDate = ((DSCalendarCell)targetView).CellInfo.Date; } else if (targetView is UIBarButtonItem) { mButton = (UIBarButtonItem)targetView; } mCalendarView = CalendarView; var eventController = new MonoTouch.EventKitUI.EKEventEditViewController(); eventController.ModalPresentationStyle = UIModalPresentationStyle.FormSheet; eventController.EventStore = EventStore; eventController.Event = TheEvent; eventController.EditViewDelegate = new CreateEventEditViewDelegate(eventController, CalendarView, this); if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) { //use the popoverview to present it if (PopController != null) { //dissmis the existing one PopController.Dismiss(true); } PopController = new UIPopoverController(eventController); PopController.PopoverContentSize = eventController.ContentSizeForViewInPopover; PopController.DidDismiss += (object sender, EventArgs e) => { PopController = null; }; if (targetView is UIBarButtonItem) { PopController.PresentFromBarButtonItem((UIBarButtonItem)targetView, UIPopoverArrowDirection.Any, true); } else if (targetView is UIView) { var aView = targetView as UIView; var inset = new RectangleF(aView.Frame.Left, aView.Frame.Top, aView.Frame.Size.Width, 25); //if (targetView is DSEventView) inset = aView.ConvertRectToView (aView.Frame, mCalendarView.CalendarGrid); PopController.PresentFromRect(inset, mCalendarView.CalendarGrid, UIPopoverArrowDirection.Any, true); } } else { //present modally on the phone if (CalendarView.ParentViewController != null) { CalendarView.ParentViewController.PresentViewController(eventController, true, null); } } }
/// <Docs>To be added.</Docs> /// <summary> /// Completion Handler /// </summary> /// <param name="controller">Controller.</param> /// <param name="action">Action.</param> public override void Completed(MonoTouch.EventKitUI.EKEventEditViewController controller, EKEventEditViewAction action) { if (mDatasource.PopController != null) { mDatasource.PopController.Dismiss(true); mDatasource.PopController = null; mDatasource.ClearViews(); } else { eventController.DismissViewController(true, null); } switch (action) { case EKEventEditViewAction.Canceled: break; case EKEventEditViewAction.Deleted: { //reload the calendar view mCalendarView.ReloadData(); } break; case EKEventEditViewAction.Saved: { NSError e; eventController.EventStore.SaveEvent(controller.Event, EKSpan.ThisEvent, out e); //reload the calendar view mCalendarView.ReloadData(); } break; } }