Exemplo n.º 1
0
        public Task AddOrUpdateScreen(IInternalScreen internalScreen)
        {
            var predicateScreen     = new Predicate <IInternalScreen>((screen) => screen.Id == internalScreen.Id);
            var internalScreenFound = InternalScreens.Find(predicateScreen);

            if (internalScreenFound != null)
            {
                UpdateScreen(internalScreenFound, internalScreen);
            }
            else
            {
                InternalScreens.Add(internalScreen);
                InternalScreensById[internalScreen.Id] = internalScreen;
            }
            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        public Task ChangeOrder(IEnumerable <IScreen> screens)
        {
            var screensToOrder = screens
                                 .Select(screen => screen as IInternalScreen)
                                 .Where(screen => screen != null)
                                 .Where(screen => InternalScreensById.ContainsKey(screen.Id))
            ;
            var screensToOrderIds = new HashSet <string>(screensToOrder.Select(screen => screen.Id));
            var remainingScreens  = InternalScreens.Where(screen => !screensToOrderIds.Contains(screen.Id));
            int index             = 0;

            foreach (var screen in screensToOrder.Concat(remainingScreens))
            {
                (InternalScreensById[screen.Id] as IModifiableScreen).Index = index;
                index++;
            }
            return(Task.CompletedTask);
        }