예제 #1
0
        /// <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);
                }
            }
        }
예제 #2
0
            /// <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;
                }
            }