示例#1
0
            public void InitializeCell(InfiniteScrollView <CalendarViewCell> infiniteScrollView, CalendarViewCell cell, int index)
            {
                cell.ControlDelegate.DatesInteracted += dateTimes =>
                {
                    CalendarView v;
                    if (_weakView.TryGetTarget(out v))
                    {
                        var date = dateTimes.ElementAt(0);
                        cell.ControlDelegate.HighlightedDates = new DateTime[] { date };
                        v.DateSelected?.Invoke(date);
                        v.SelectedDate = date;
                        cell.SetNeedsDisplay();
                    }
                };

                var weakCell = new WeakReference <CalendarViewCell>(cell);

                CalendarView view;

                if (_weakView.TryGetTarget(out view))
                {
                    view.SelectedDateChanged += dateTime =>
                    {
                        CalendarViewCell c;
                        if (weakCell.TryGetTarget(out c))
                        {
                            SelectDate(c, view.SelectedDate);
                        }
                    };
                }
            }
示例#2
0
        public CalendarView(CGRect frame) : base(frame)
        {
            var del = new CalendarViewDelegate(new WeakReference <CalendarView>(this));
            var infiniteScrollView = new InfiniteScrollView <CalendarViewCell>(del, frame);

            this.AddSubview(infiniteScrollView);

            Month = DateTime.Now.Date;             // default starting month is the current month
        }
        void RefreshVisibleCells(InfiniteScrollView <T> infiniteScrollView)
        {
            var visibleCells = infiniteScrollView.VisibleCells;

            foreach (var visibleCell in visibleCells)
            {
                var cell = visibleCell as T;

                var indexPath = infiniteScrollView.IndexPathForCell(cell);

                UpdateCell(infiniteScrollView, cell, indexPath);
            }
        }
        void UpdateCell(InfiniteScrollView <T> infiniteScrollView, T cell, NSIndexPath indexPath)
        {
            var i = 0;

            if (indexPath.Row == 0)
            {
                i = -1;
            }
            else if (indexPath.Row == 2)
            {
                i = 1;
            }

            _del.UpdateCell(infiniteScrollView, cell, this.CurrentIndex + i);
        }
示例#5
0
            public void OnCurrentIndexChanged(InfiniteScrollView <CalendarViewCell> infiniteScrollView, int currentIndex)
            {
                CalendarView view;

                if (_weakView.TryGetTarget(out view))
                {
                    if (view.CurrentIndex > infiniteScrollView.CurrentIndex)                     // left
                    {
                        view.Month = view.Month.AddMonths(-1);
                    }
                    else if (view.CurrentIndex < infiniteScrollView.CurrentIndex)                     // right
                    {
                        view.Month = view.Month.AddMonths(1);
                    }

                    view.CurrentIndex = infiniteScrollView.CurrentIndex;
                }
            }
示例#6
0
            public void UpdateCell(InfiniteScrollView <CalendarViewCell> infiniteScrollView, CalendarViewCell cell, int index)
            {
                CalendarView view;

                if (_weakView.TryGetTarget(out view))
                {
                    if (infiniteScrollView.CurrentIndex < index)                     // right
                    {
                        cell.ControlDelegate.Date = view.Month.AddMonths(1);
                    }
                    else if (infiniteScrollView.CurrentIndex == index)                     // middle
                    {
                        cell.ControlDelegate.Date = view.Month;
                    }
                    else                     // left
                    {
                        cell.ControlDelegate.Date = view.Month.AddMonths(-1);
                    }

                    SelectDate(cell, view.SelectedDate);
                    cell.SetNeedsDisplay();
                }
            }