Exemplo n.º 1
0
        protected override void PostConstruct()
        {
            base.PostConstruct();

            Tree.CreateItem();

            Tree.SetColumnTitle(0, Translate("ui.InventoryView.name"));
            Tree.SetColumnTitle(1, Translate("ui.InventoryView.type"));
            Tree.SetColumnTitle(2, Translate("ui.InventoryView.slot"));
            Tree.SetColumnTitle(3, Translate("ui.InventoryView.weight"));

            Tree.SetColumnTitlesVisible(true);

            var onDispose = Disposed.Where(identity);

            OnItemsChange
            .Do(_ => Tree.RemoveAllNodes())
            .CombineLatest(OnEquipmentContainerChange, (list, parent) => (list, parent))
            .TakeUntil(onDispose)
            .Subscribe(t => t.list.ToList().ForEach(item => CreateNode(item, t.parent)), this);

            OnSelectionChange
            .TakeUntil(onDispose)
            .Subscribe(DisplayItem, this);
        }
Exemplo n.º 2
0
        protected override void PostConstruct()
        {
            base.PostConstruct();

            var disposed = Disposed.Where(identity);

            OnItemsChange
            .Do(items => Items = items)
            .TakeUntil(disposed)
            .Subscribe(HandleItemsChange, this);

            OnNavigate
            .Do(_ => UpLabel.Iter(l => l.Active = this.CanGoUp()))
            .Select(i => i.Bind(v => v.GetPath()).Reverse())
            .Select(p => string.Join(" > ", p.Map(v => v.DisplayName)))
            .TakeUntil(disposed)
            .Subscribe(v => Breadcrumb.Iter(b => b.Text = v), this);

            UpLabel
            .Map(l => l.OnAction)
            .ToObservable()
            .Switch()
            .TakeUntil(disposed)
            .Subscribe(_ => this.GoUp());
            CloseLabel
            .Map(l => l.OnAction)
            .ToObservable()
            .Switch()
            .TakeUntil(disposed)
            .Subscribe(_ => this.Hide());

            Node.OnVisibilityChange()
            .StartWith(Visible)
            .TakeUntil(disposed)
            .Subscribe(OnVisibilityChanged, this);

            if (BackAction.IsSome)
            {
                Node.OnUnhandledInput()
                .Where(e => BackAction.Exists(v => e.IsActionPressed(v)) && this.CanGoUp())
                .TakeUntil(disposed)
                .Do(_ => Node.GetTree().SetInputAsHandled())
                .Subscribe(_ => this.GoUp(), this);
            }
        }