コード例 #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            CloseButton.SetTemplateColor(ColorAssets.Text2);

            SearchView.InsertSeparator();

            TitleLabel.Text      = Resources.Projects;
            EmptyStateLabel.Text = Resources.EmptyProjectText;

            var source = new SelectProjectTableViewSource();

            source.RegisterViewCells(ProjectsTableView);

            source.UseGrouping = ViewModel.UseGrouping;

            ProjectsTableView.TableFooterView = new UIView();
            ProjectsTableView.Source          = source;

            source.Rx().DragStarted()
            .Subscribe(_ => TextField.ResignFirstResponder())
            .DisposedBy(DisposeBag);

            ViewModel.Suggestions
            .Subscribe(ProjectsTableView.Rx().ReloadSections(source))
            .DisposedBy(DisposeBag);

            ViewModel.IsEmpty
            .Subscribe(EmptyStateLabel.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsEmpty
            .Subscribe(EmptyStateImage.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.PlaceholderText
            .Subscribe(TextField.Rx().PlaceholderText())
            .DisposedBy(DisposeBag);

            TextField.Rx().Text()
            .Subscribe(ViewModel.FilterText)
            .DisposedBy(DisposeBag);

            CloseButton.Rx().Tap()
            .Subscribe(() => ViewModel.CloseWithDefaultResult())
            .DisposedBy(DisposeBag);

            source.Rx().ModelSelected()
            .Subscribe(ViewModel.SelectProject.Inputs)
            .DisposedBy(DisposeBag);

            source.ToggleTaskSuggestions
            .Subscribe(ViewModel.ToggleTaskSuggestions.Inputs)
            .DisposedBy(DisposeBag);
        }
コード例 #2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var source = new SelectProjectTableViewSource();

            source.RegisterViewCells(ProjectsTableView);

            source.UseGrouping = ViewModel.UseGrouping;

            ProjectsTableView.TableFooterView = new UIView();
            ProjectsTableView.Source          = source;

            ViewModel.Suggestions
            .Subscribe(ProjectsTableView.Rx().ReloadSections(source))
            .DisposedBy(DisposeBag);

            ViewModel.IsEmpty
            .Subscribe(EmptyStateLabel.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsEmpty
            .Subscribe(EmptyStateImage.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.PlaceholderText
            .Subscribe(TextField.Rx().PlaceholderText())
            .DisposedBy(DisposeBag);

            TextField.Rx().Text()
            .Subscribe(ViewModel.FilterText)
            .DisposedBy(DisposeBag);

            CloseButton.Rx()
            .BindAction(ViewModel.Close)
            .DisposedBy(DisposeBag);

            source.Rx().ModelSelected()
            .Subscribe(ViewModel.SelectProject.Inputs)
            .DisposedBy(DisposeBag);

            source.ToggleTaskSuggestions
            .Subscribe(ViewModel.ToggleTaskSuggestions.Inputs)
            .DisposedBy(DisposeBag);

            TextField.BecomeFirstResponder();
        }
コード例 #3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var source = new SelectProjectTableViewSource();

            source.RegisterViewCells(ProjectsTableView);

            source.UseGrouping = ViewModel.UseGrouping;

            ProjectsTableView.TableFooterView = new UIView();
            ProjectsTableView.Source          = source;

            var suggestionsReplay = ViewModel.Suggestions.Replay();

            suggestionsReplay
            .Subscribe(ProjectsTableView.Rx().ReloadSections(source))
            .DisposedBy(DisposeBag);

            if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
            {
                suggestionsReplay
                .Select((sections) =>
                {
                    var numberOfSections    = sections.ToList().Count();
                    var numberOfSuggestions = sections.Select(s => s.Items.Count()).Sum();
                    return(numberOfSections, numberOfSuggestions);
                })
                .Select((result) =>
                {
                    var(numberOfSections, numberOfSuggestions) = result;
                    var headersHeight = ViewModel.UseGrouping
                            ? numberOfSections * SelectProjectTableViewSource.HeaderHeight
                            : 0;
                    var suggestionsHeight = numberOfSuggestions * SelectProjectTableViewSource.RowHeight;
                    var contentHeight     = numberOfSuggestions == 1
                            ? placeHolderHeight
                            : headersHeight + suggestionsHeight;
                    return(new CGSize(0, contentHeight + headerHeight));
                })
                .Subscribe(this.Rx().PreferredContentSize())
                .DisposedBy(DisposeBag);
            }

            suggestionsReplay.Connect();

            ViewModel.IsEmpty
            .Subscribe(EmptyStateLabel.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsEmpty
            .Subscribe(EmptyStateImage.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.PlaceholderText
            .Subscribe(TextField.Rx().PlaceholderText())
            .DisposedBy(DisposeBag);

            TextField.Rx().Text()
            .Subscribe(ViewModel.FilterText)
            .DisposedBy(DisposeBag);

            CloseButton.Rx().Tap()
            .Subscribe(ViewModel.CloseWithDefaultResult)
            .DisposedBy(DisposeBag);

            source.Rx().ModelSelected()
            .Subscribe(ViewModel.SelectProject.Inputs)
            .DisposedBy(DisposeBag);

            source.ToggleTaskSuggestions
            .Subscribe(ViewModel.ToggleTaskSuggestions.Inputs)
            .DisposedBy(DisposeBag);
        }