Ejemplo n.º 1
0
        private bool OnSelectNewItemCanExecute(IStepBarItem item)
        {
            if (item is null)
            {
                return(false);
            }

            // Demo case 1: allow when visited
            if (Enum <StepBarItemStates> .Flags.IsFlagSet(item.State, StepBarItemStates.IsVisited))
            {
                return(true);
            }

            // Demo case 2: allow when "lower" page
            var selectedItem = SelectedItem;

            if (selectedItem is not null)
            {
                if (item.Number < selectedItem.Number)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
        public static void Selection(Automation.StepBar target, IStepBarItem selectedItem,
                                     Func <IStepBarItem, IStepBarItem, bool> itemComparer)
        {
            var model = target.Current;

            var items = model.Items;

            Assert.That(model.SelectedItem, Is.EqualTo(selectedItem)
                        .Using <IStepBarItem>(itemComparer));

            Assert.That(target.SelectedItem?.Current.DataContext, Is.EqualTo(selectedItem)
                        .Using <IStepBarItem>(itemComparer));

            var count = items.Count;

            var selectedIndex = 0;

            for (var i = 0; i < count; i++)
            {
                if (itemComparer.Invoke(items[i], selectedItem))
                {
                    selectedIndex = i;
                    break;
                }
            }

            var expectedStates = new StepBarItemStates[count];

            expectedStates[0] = StepBarItemStates.IsVisited;
            for (var i = 1; i < selectedIndex; i++)
            {
                expectedStates[i] = StepBarItemStates.IsBeforeCurrent;
            }

            expectedStates[selectedIndex] = StepBarItemStates.IsVisited | StepBarItemStates.IsCurrent;
            for (var i = selectedIndex + 1; i < count - 1; i++)
            {
                expectedStates[i] = StepBarItemStates.None;
            }

            expectedStates[count - 1] |= StepBarItemStates.IsLast;

            for (var i = 0; i < count; i++)
            {
                var expectedItem = expectedStates[i];
                var item         = items[i];

                Assert.That(item.State.HasFlag(expectedItem));
            }
        }
Ejemplo n.º 3
0
        private void UpdateSelection()
        {
            var items = Items;

            if (items is not null)
            {
                if (items.Count > 0)
                {
                    var lastItem = items.Last();

                    lastItem.State = Enum <StepBarItemStates> .Flags.SetFlag(lastItem.State, StepBarItemStates.IsLast);
                }
            }

            SelectedItem = items?.FirstOrDefault();
        }
Ejemplo n.º 4
0
        protected override async Task InitializeAsync()
        {
            await base.InitializeAsync();

            var items = new List <IStepBarItem>();

            for (var i = 0; i < 10; i++)
            {
                items.Add(new StepBarItemModel
                {
                    Title   = $"Item {i + 1}",
                    Number  = i + 1,
                    Command = SelectNewItem
                });
            }

            Items        = items;
            SelectedItem = items.FirstOrDefault();
        }
Ejemplo n.º 5
0
 private static bool CompareItems(IStepBarItem x, IStepBarItem y)
 {
     return(string.Equals(x?.Title, y?.Title) &&
            string.Equals(x?.Description, y?.Description) &&
            Equals(x?.Number, y?.Number));
 }
Ejemplo n.º 6
0
 private async Task OnSelectNewItemExecuteAsync(IStepBarItem item)
 {
     SelectedItem = item;
 }
Ejemplo n.º 7
0
 public StepBarItemViewModel(IStepBarItem stepBarItem)
 {
     Item = stepBarItem;
 }