示例#1
0
        void ReleaseDesignerOutlets()
        {
            if (CalendarCollectionView != null)
            {
                CalendarCollectionView.Dispose();
                CalendarCollectionView = null;
            }

            if (GetStartedButton != null)
            {
                GetStartedButton.Dispose();
                GetStartedButton = null;
            }

            if (OnboardingView != null)
            {
                OnboardingView.Dispose();
                OnboardingView = null;
            }

            if (DescriptionLabel != null)
            {
                DescriptionLabel.Dispose();
                DescriptionLabel = null;
            }

            if (TitleLabel != null)
            {
                TitleLabel.Dispose();
                TitleLabel = null;
            }
        }
示例#2
0
        void ReleaseDesignerOutlets()
        {
            if (CalendarCollectionView != null)
            {
                CalendarCollectionView.Dispose();
                CalendarCollectionView = null;
            }

            if (DescriptionLabel != null)
            {
                DescriptionLabel.Dispose();
                DescriptionLabel = null;
            }

            if (GetStartedButton != null)
            {
                GetStartedButton.Dispose();
                GetStartedButton = null;
            }

            if (OnboardingView != null)
            {
                OnboardingView.Dispose();
                OnboardingView = null;
            }

            if (TitleLabel != null)
            {
                TitleLabel.Dispose();
                TitleLabel = null;
            }

            if (ExtendedNavbarView != null)
            {
                ExtendedNavbarView.Dispose();
                ExtendedNavbarView = null;
            }

            if (TimeTrackedTodayLabel != null)
            {
                TimeTrackedTodayLabel.Dispose();
                TimeTrackedTodayLabel = null;
            }

            if (CurrentDateLabel != null)
            {
                CurrentDateLabel.Dispose();
                CurrentDateLabel = null;
            }
        }
        private void selectGoodScrollPoint(TimeSpan timeOfDay)
        {
            var frameHeight =
                CalendarCollectionView.Frame.Height
                - CalendarCollectionView.ContentInset.Top
                - CalendarCollectionView.ContentInset.Bottom;
            var hoursOnScreen = frameHeight / (CalendarCollectionView.ContentSize.Height / 24);
            var centeredHour  = calculateCenteredHour(timeOfDay.TotalHours, hoursOnScreen);

            var offsetY      = (centeredHour / 24) * CalendarCollectionView.ContentSize.Height - (frameHeight / 2);
            var scrollPointY = offsetY.Clamp(0, CalendarCollectionView.ContentSize.Height - frameHeight);
            var offset       = new CGPoint(0, scrollPointY);

            CalendarCollectionView.SetContentOffset(offset, false);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            settingsButton.SetImage(UIImage.FromBundle("icSettings"), UIControlState.Normal);

            ViewModel
            .ShouldShowOnboarding
            .FirstAsync()
            .Subscribe(
                shouldShowOnboarding => OnboardingView.Alpha = shouldShowOnboarding ? 1: 0)
            .DisposedBy(DisposeBag);

            this.Bind(ViewModel.ShouldShowOnboarding, OnboardingView.Rx().IsVisibleWithFade());
            this.Bind(GetStartedButton.Rx().Tap(), ViewModel.GetStartedAction);

            var timeService = Mvx.Resolve <ITimeService>();

            dataSource = new CalendarCollectionViewSource(
                CalendarCollectionView,
                ViewModel.Date,
                ViewModel.TimeOfDayFormat,
                ViewModel.CalendarItems);

            layout = new CalendarCollectionViewLayout(timeService, dataSource);

            editItemHelper       = new CalendarCollectionViewEditItemHelper(CalendarCollectionView, dataSource, layout);
            createFromSpanHelper = new CalendarCollectionViewCreateFromSpanHelper(CalendarCollectionView, dataSource, layout);

            CalendarCollectionView.SetCollectionViewLayout(layout, false);
            CalendarCollectionView.Delegate     = dataSource;
            CalendarCollectionView.DataSource   = dataSource;
            CalendarCollectionView.ContentInset = new UIEdgeInsets(20, 0, 20, 0);

            this.Bind(dataSource.ItemTapped, ViewModel.OnItemTapped);
            this.Bind(settingsButton.Rx().Tap(), ViewModel.SelectCalendars);
            this.Bind(editItemHelper.EditCalendarItem, ViewModel.OnUpdateTimeEntry);
            this.Bind(ViewModel.SettingsAreVisible, settingsButton.Rx().IsVisible());
            this.Bind(createFromSpanHelper.CreateFromSpan, ViewModel.OnDurationSelected);

            CalendarCollectionView.LayoutIfNeeded();
            var currentTimeY     = layout.FrameForCurrentTime().Y;
            var scrollPointY     = currentTimeY - View.Frame.Height / 2;
            var currentTimePoint = new CGPoint(0, scrollPointY.Clamp(0, CalendarCollectionView.ContentSize.Height));

            CalendarCollectionView.SetContentOffset(currentTimePoint, false);
        }
        public override void ViewDidLayoutSubviews()
        {
            base.ViewDidLayoutSubviews();

            if (calendarInitialized)
            {
                return;
            }

            calendarCollectionViewSource.DecelerationEndedObservable
            .Subscribe(ViewModel.SetCurrentPage)
            .DisposedBy(disposeBag);

            ViewModel.CurrentPageObservable
            .Subscribe(CalendarCollectionView.Rx().CurrentPageObserver())
            .DisposedBy(disposeBag);

            calendarInitialized = true;
        }
        public override void ViewDidLayoutSubviews()
        {
            base.ViewDidLayoutSubviews();

            if (calendarInitialized) return;

            calendarCollectionViewSource.CurrentPageNotScrollingObservable
                .Subscribe(ViewModel.SetCurrentPage)
                .DisposedBy(disposeBag);

            calendarCollectionViewSource.CurrentPageWhileScrollingObservable
                .Subscribe(ViewModel.UpdateMonth)
                .DisposedBy(disposeBag);

            ViewModel.CurrentPageObservable
                .Subscribe(CalendarCollectionView.Rx().CurrentPageObserver())
                .DisposedBy(disposeBag);

            calendarInitialized = true;
        }
示例#7
0
        void ReleaseDesignerOutlets()
        {
            if (GetStartedButton != null)
            {
                GetStartedButton.Dispose();
                GetStartedButton = null;
            }

            if (OnboardingView != null)
            {
                OnboardingView.Dispose();
                OnboardingView = null;
            }

            if (CalendarCollectionView != null)
            {
                CalendarCollectionView.Dispose();
                CalendarCollectionView = null;
            }
        }
示例#8
0
        public override void ViewDidLayoutSubviews()
        {
            base.ViewDidLayoutSubviews();

            if (calendarInitialized)
            {
                return;
            }

            calendarCollectionViewSource.CurrentPageNotScrollingObservable
            .Subscribe(ViewModel.SetCurrentPage)
            .DisposedBy(DisposeBag);

            calendarCollectionViewSource.CurrentPageWhileScrollingObservable
            .Subscribe(ViewModel.UpdateMonth)
            .DisposedBy(DisposeBag);

            ViewModel.CurrentPageObservable
            .ObserveOn(IosDependencyContainer.Instance.SchedulerProvider.MainScheduler)
            .Subscribe(CalendarCollectionView.Rx().CurrentPageObserver())
            .DisposedBy(DisposeBag);

            calendarInitialized = true;
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            ExtendedNavbarView.BackgroundColor = NavigationController.NavigationBar.BackgroundColor;
            TimeTrackedTodayLabel.Font         = TimeTrackedTodayLabel.Font.GetMonospacedDigitFont();

            TitleLabel.Text       = Resources.Welcome;
            DescriptionLabel.Text = Resources.CalendarFeatureDescription;
            GetStartedButton.SetTitle(Resources.GetStarted, UIControlState.Normal);

            settingsButton.SetImage(UIImage.FromBundle("icSettings"), UIControlState.Normal);

            ViewModel
            .ShouldShowOnboarding
            .FirstAsync()
            .Subscribe(
                shouldShowOnboarding => OnboardingView.Alpha = shouldShowOnboarding ? 1: 0)
            .DisposedBy(DisposeBag);

            ViewModel.ShouldShowOnboarding
            .Subscribe(OnboardingView.Rx().IsVisibleWithFade())
            .DisposedBy(DisposeBag);

            GetStartedButton.Rx()
            .BindAction(ViewModel.GetStarted)
            .DisposedBy(DisposeBag);

            ViewModel.TimeTrackedToday
            .Subscribe(TimeTrackedTodayLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.CurrentDate
            .Subscribe(CurrentDateLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            dataSource = new CalendarCollectionViewSource(
                timeService,
                CalendarCollectionView,
                ViewModel.TimeOfDayFormat,
                ViewModel.CalendarItems);

            layout = new CalendarCollectionViewLayout(timeService, dataSource);

            editItemHelper       = new CalendarCollectionViewEditItemHelper(CalendarCollectionView, timeService, dataSource, layout);
            createFromSpanHelper = new CalendarCollectionViewCreateFromSpanHelper(CalendarCollectionView, dataSource, layout);
            zoomHelper           = new CalendarCollectionViewZoomHelper(CalendarCollectionView, layout);

            CalendarCollectionView.SetCollectionViewLayout(layout, false);
            CalendarCollectionView.Delegate     = dataSource;
            CalendarCollectionView.DataSource   = dataSource;
            CalendarCollectionView.ContentInset = new UIEdgeInsets(20, 0, 20, 0);

            dataSource.ItemTapped
            .Subscribe(ViewModel.OnItemTapped.Inputs)
            .DisposedBy(DisposeBag);

            settingsButton.Rx()
            .BindAction(ViewModel.SelectCalendars)
            .DisposedBy(DisposeBag);

            editItemHelper.EditCalendarItem
            .Subscribe(ViewModel.OnUpdateTimeEntry.Inputs)
            .DisposedBy(DisposeBag);

            editItemHelper.LongPressCalendarEvent
            .Subscribe(ViewModel.OnCalendarEventLongPressed.Inputs)
            .DisposedBy(DisposeBag);

            ViewModel.SettingsAreVisible
            .Subscribe(settingsButton.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            createFromSpanHelper.CreateFromSpan
            .Subscribe(ViewModel.OnDurationSelected.Inputs)
            .DisposedBy(DisposeBag);

            CalendarCollectionView.LayoutIfNeeded();
        }
        void ReleaseDesignerOutlets()
        {
            if (CalendarCollectionView != null)
            {
                CalendarCollectionView.Dispose();
                CalendarCollectionView = null;
            }

            if (CurrentMonthLabel != null)
            {
                CurrentMonthLabel.Dispose();
                CurrentMonthLabel = null;
            }

            if (DayHeader0 != null)
            {
                DayHeader0.Dispose();
                DayHeader0 = null;
            }

            if (DayHeader1 != null)
            {
                DayHeader1.Dispose();
                DayHeader1 = null;
            }

            if (DayHeader2 != null)
            {
                DayHeader2.Dispose();
                DayHeader2 = null;
            }

            if (DayHeader3 != null)
            {
                DayHeader3.Dispose();
                DayHeader3 = null;
            }

            if (DayHeader4 != null)
            {
                DayHeader4.Dispose();
                DayHeader4 = null;
            }

            if (DayHeader5 != null)
            {
                DayHeader5.Dispose();
                DayHeader5 = null;
            }

            if (DayHeader6 != null)
            {
                DayHeader6.Dispose();
                DayHeader6 = null;
            }

            if (QuickSelectCollectionView != null)
            {
                QuickSelectCollectionView.Dispose();
                QuickSelectCollectionView = null;
            }

            if (QuickSelectCollectionViewLayout != null)
            {
                QuickSelectCollectionViewLayout.Dispose();
                QuickSelectCollectionViewLayout = null;
            }
        }
 public void ScrollToTop()
 {
     CalendarCollectionView.SetContentOffset(CGPoint.Empty, true);
 }