protected PrettyDialogViewController()
 {
     HeaderView   = new ImageAndTitleHeaderView();
     SlideUpTitle = new SlideUpTitleView(44f)
     {
         Offset = 100f
     };
     NavigationItem.TitleView = SlideUpTitle;
     _backgroundHeaderView    = new UIView();
 }
        protected PrettyDialogViewController()
        {
            _rootElement          = new Lazy <RootElement>(() => new RootElement(TableView));
            _backgroundHeaderView = new UIView();
            _tableView            = new Lazy <EnhancedTableView>(() => new EnhancedTableView(UITableViewStyle.Grouped));

            HeaderView   = new ImageAndTitleHeaderView();
            SlideUpTitle = new SlideUpTitleView(44f)
            {
                Offset = 100f
            };
            NavigationItem.TitleView = SlideUpTitle;
        }
Exemplo n.º 3
0
        protected BaseDialogViewController()
            : base(UITableViewStyle.Grouped)
        {
            SlideUpTitle = new SlideUpTitleView(44f)
            {
                Offset = 100f
            };
            NavigationItem.TitleView = SlideUpTitle;
            HeaderView            = new ImageAndTitleHeaderView();
            _backgroundHeaderView = new UIView();

            Appearing
            .Where(x => ToolbarItems != null && NavigationController != null)
            .Subscribe(x => NavigationController.SetToolbarHidden(false, x));
            Disappearing
            .Where(x => ToolbarItems != null && NavigationController != null)
            .Subscribe(x => NavigationController.SetToolbarHidden(true, x));
            Disappearing
            .Where(_ => NavigationController != null)
            .Subscribe(_ => NavigationController.NavigationBar.ShadowImage = null);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            NavigationItem.TitleView = _slideUpTitle = new SlideUpTitleView(NavigationController.NavigationBar.Bounds.Height)
            {
                Text = Title
            };
            _slideUpTitle.Offset = 100f;

            _web = new UIWebView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height));
            _web.BackgroundColor  = UIColor.White;
            _web.Opaque           = false;
            _web.AutoresizingMask = UIViewAutoresizing.All;
            _web.LoadFinished    += (sender, e) => IsWebLoaded = true;
            _web.ShouldStartLoad  = (w, r, x) =>
            {
                if (x == UIWebViewNavigationType.LinkClicked && r.Url.Scheme.StartsWith("http", StringComparison.OrdinalIgnoreCase))
                {
                    ViewModel.GoToUrlCommand.ExecuteIfCan(r.Url.AbsoluteString);
                    return(false);
                }
                return(true);
            };
            _web.ScrollView.Scrolled += WebScrolled;
            Add(_web);

            _web.ScrollView.CreateTopBackground(UIColor.FromRGB(0x4e, 0x4b, 0xbe));

            NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Action, (s, e) => ShowMore());
            NavigationItem.RightBarButtonItem.EnableIfExecutable(this.WhenAnyValue(x => x.ViewModel)
                                                                 .Where(x => x != null)
                                                                 .Select(x => x.WhenAnyValue(y => y.Repository))
                                                                 .Switch().Select(x => x != null));

            this.WhenAnyObservable(x => x.ViewModel.LoadCommand.IsExecuting)
            .Where(x => x)
            .Subscribe(_ => IsWebLoaded = false);

            this.WhenAnyValue(x => x.ViewModel.Repository)
            .Where(x => x != null)
            .Subscribe(x =>
            {
                _web.LoadHtmlString(new ReadmeRazorView().GenerateString(), new NSUrl(x.HtmlUrl + "/raw/" + x.DefaultBranch + "/"));
                Title = x.Name;
            });

            this.WhenAnyValue(x => x.ViewModel)
            .Where(x => x != null)
            .Select(x => x.WhenAnyValue(y => y.Liked))
            .Switch()
            .Subscribe(x =>
            {
                if (x == null)
                {
                    DislikeButton.Image = Images.ThumbDown;
                    LikeButton.Image    = Images.ThumbUp;
                }
                else if (x.Value)
                {
                    DislikeButton.Image = Images.ThumbDown;
                    LikeButton.Image    = Images.ThumbUpFilled;
                }
                else
                {
                    DislikeButton.Image = Images.ThumbDownFilled;
                    LikeButton.Image    = Images.ThumbUp;
                }
            });

            this.WhenAnyValue(y => y.ViewModel.Repository, y => y.IsWebLoaded)
            .Where(y => y.Item1 != null && y.Item2)
            .Subscribe(x =>
            {
                var s = JsonConvert.SerializeObject(x.Item1);
                _web.EvaluateJavascript("setRepository(" + s + ")");
            });

            this.WhenAnyValue(y => y.ViewModel.ContributorCount, y => y.IsWebLoaded)
            .Where(y => y.Item1 != null && y.Item2)
            .Subscribe(x =>
            {
                _web.EvaluateJavascript("setContrib(" + x.Item1.Value + ")");
            });

            this.WhenAnyValue(y => y.ViewModel.Readme, y => y.IsWebLoaded)
            .Where(y => y.Item2 && y.Item1 != null)
            .Subscribe(x =>
            {
                var s = JsonConvert.SerializeObject(x.Item1);
                _web.EvaluateJavascript("setBody(" + s + ")");
            });

            ToolbarItems = new []
            {
                new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
                DislikeButton,
                new UIBarButtonItem(UIBarButtonSystemItem.FixedSpace)
                {
                    Width = 80
                },
                LikeButton,
                new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
            };
        }