/// <summary>
        /// 变更当前分页的页码,并触发 <see cref="CurrentPageChanged"/> 事件。
        /// </summary>
        /// <param name="page">要设置的分页页码。</param>
        public async Task ChangeCurrentPage(int page)
        {
            CurrentPage = page;
            await CurrentPageChanged.InvokeAsync(page);

            await OnPageChanged.InvokeAsync(page);
        }
Пример #2
0
        public void GoToPage(int pageIndex)
        {
            if (IsIndexValid(pageIndex))
            {
                var e = new WizardPageChangedEventArgs();
                if (IsIndexValid(_currentIndex))
                {
                    e.OldPage = Pages[_currentIndex];
                }

                e.NewPage = Pages[pageIndex];

                if (CurrentPage == null || NotifyPageDeactivate(_currentIndex - pageIndex > 0))
                {
                    var selPage = SelectedPage;
                    if (selPage != null)
                    {
                        selPage.IsPageSelected = false;
                    }

                    _currentIndex = pageIndex;
                    Pages[_currentIndex].IsPageSelected = true;

                    if (NotifyPageActivate())
                    {
                        CurrentPageChanged?.Invoke(this, e);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 切换当前页
        /// </summary>
        /// <param name="page">页码</param>
        private void ChangePage(int page)
        {
            _Handle = _PageSize * page;

            Refresh();

            CurrentPageChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
        }
Пример #4
0
 void kbtnFirst_Click(object sender, EventArgs e)
 {
     CurrentPage = 0;
     if (!ReferenceEquals(CurrentPageChanged, null))
     {
         CurrentPageChanged.Invoke(sender, e);
     }
 }
Пример #5
0
 /// <summary>
 /// Navigates to the given page
 /// </summary>
 /// <param name="page">The page that we want to navigate to</param>
 public void ChangeCurrentPage(PageBase page)
 {
     OverlaySettings.Reset();
     page.Router          = this;
     page.OverlaySettings = OverlaySettings;
     CurrentPage          = page;
     container.Content    = page;
     page.OnAttachedToFrame();
     CurrentPageChanged?.Invoke();
 }
Пример #6
0
 protected override void OnParametersSet()
 {
     pageCount = Convert.ToInt32(Math.Ceiling((float)Total / PageSize));
     if (CurrentPage > pageCount)
     {
         CurrentPage = pageCount;
         CurrentPageChanged?.Invoke(pageCount);
     }
     SwitchButtonStatus();
 }
        internal async Task CurrentPageChangedAsync(int page)
        {
            currentPage = page;
            if (CurrentPageChanged.HasDelegate)
            {
                RequireRender = true;
                LoadingService.Show();
                await CurrentPageChanged.InvokeAsync(page);

                LoadingService.CloseFullScreenLoading();
            }
        }
Пример #8
0
 /// <summary>
 /// Sets the current page to the specified index asynchronously.
 /// </summary>
 /// <param name="page">The index of the page to set.</param>
 /// <returns>A task for this function.</returns>
 protected virtual async Task SetCurrentPage(int page)
 {
     if (page < 1 || page > MaxPage)
     {
         return;
     }
     if (page != CurrentPage)
     {
         CurrentPage = page;
         await CurrentPageChanged.InvokeAsync(CurrentPage);
     }
 }
Пример #9
0
 void kbtnLast_Click(object sender, EventArgs e)
 {
     CurrentPage = PageCount - 1;
     if (CurrentPage < 0)
     {
         CurrentPage = 0;
     }
     if (!ReferenceEquals(CurrentPageChanged, null))
     {
         CurrentPageChanged.Invoke(sender, e);
     }
 }
Пример #10
0
        protected override async Task OnInitializedAsync()
        {
            P_DokusyaList = await NewsPaperData.GetDokusya_K95080_ListAsync();

            P_KoudokuList = await NewsPaperData.GetKoudoku_K95080_ListAsync();

            P_KuikiList = await NewsPaperData.GetKuiki_K95080_ListAsync();

            P_KakuzaiList = await NewsPaperData.GetKakuzai_K95080_ListAsync();

            CurrentPage.LoadingState = true;
            await CurrentPageChanged.InvokeAsync(CurrentPage);
        }
Пример #11
0
 /// <summary>Selects one of the already open documents (in multiple document mode)</summary>
 public void SelectDocument(int index)
 {
     if (index < 0 || index >= m_Documents.Count)
     {
         Utilities.LogSubError("AM.SelectDocument - index out of bounds");
         return;
     }
     SetCurrentDocument(m_Documents[index]);
     m_DocumentIndex = index;
     Globals.OnSettingsChanged();
     CurrentDocumentChanged?.Invoke();
     CurrentPageChanged?.Invoke();
 }
Пример #12
0
 public void AddNewDocument(Document document)
 {
     // adds a document to list and makes it the current one
     Debug.Assert(Globals.Root.CurrentConfig.ReadBoolean(Config.Multiple_Documents));
     if (m_CurrentDocument != null)
     {
         m_CurrentDocument.CurrentPage = CurrentPageIndex;                 // remember current page in current doc
     }
     m_Documents.Add(document);
     SetCurrentDocument(document);
     m_DocumentIndex = Globals.Root.m_Documents.Count - 1;
     Globals.OnSettingsChanged();
     CurrentDocumentChanged?.Invoke();
     CurrentPageChanged?.Invoke();
 }
Пример #13
0
        public async Task SelectedPageLinkAsync(PageLink pageLink)
        {
            if (pageLink.Page == CurrentPage)
            {
                return;
            }

            if (!pageLink.Enabled)
            {
                return;
            }

            CurrentPage = pageLink.Page;
            await CurrentPageChanged.Invoke(CurrentPage);
        }
Пример #14
0
        protected internal virtual IWizardPage SetCurrentPage(int newIndex)
        {
            Log.Debug("Setting current page index to '{0}'", newIndex);

            var currentPage = _currentPage;

            if (currentPage is not null)
            {
                currentPage.ViewModelChanged -= OnPageViewModelChanged;

                var vm = currentPage.ViewModel;
                if (vm is not null)
                {
                    vm.PropertyChanged -= OnPageViewModelPropertyChanged;
                }
            }

            var newPage = _pages[newIndex];

            if (newPage is not null)
            {
                newPage.ViewModelChanged += OnPageViewModelChanged;

                var vm = newPage.ViewModel;
                if (vm is not null)
                {
                    vm.PropertyChanged += OnPageViewModelPropertyChanged;
                }
            }

            _currentPage  = newPage;
            _currentIndex = newIndex;

            RaisePropertyChanged(nameof(CurrentPage));
            CurrentPageChanged?.Invoke(this, EventArgs.Empty);

            NavigationController.EvaluateNavigationCommands();

            if (newPage is not null)
            {
                newPage.IsVisited = true;
            }

            return(newPage);
        }
Пример #15
0
        void kbtnPrevious_Click(object sender, EventArgs e)
        {
            if (CurrentPage == PageCount)
            {
                CurrentPage = PageCount - 1;
            }

            CurrentPage--;
            if (CurrentPage < 0)
            {
                CurrentPage = 0;
            }

            if (!ReferenceEquals(CurrentPageChanged, null))
            {
                CurrentPageChanged.Invoke(sender, e);
            }
        }
Пример #16
0
        /// <summary>
        /// 增加列表成员
        /// </summary>
        /// <param name="count">增加数量,默认1个</param>
        public void AddItems(int count = 1)
        {
            _Rows  += count;
            _Handle = _Rows - 1;

            var page = _Current;

            Refresh();

            if (_Current > page)
            {
                // 切换了页码需要重新加载数据
                CurrentPageChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
            }
            else
            {
                TotalRowsChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
            }
        }
Пример #17
0
        internal async Task CurrentPageChangedAsync(int page)
        {
            CurrentPage = page;
            if (CurrentPageChanged.HasDelegate)
            {
                RequireRender = true;
                var option = new LoadingOption()
                {
                    Background = LoadingBackground,
                    Target     = Container,
                    IconClass  = LoadingIconClass,
                    Text       = LoadingText
                };
                LoadingService.LoadingOptions.Add(option);
                SelectedRows.Clear();
                await CurrentPageChanged.InvokeAsync(page);

                LoadingService.LoadingOptions.Remove(option);
            }
        }
Пример #18
0
        /// <summary>
        /// 切换每页行数
        /// </summary>
        private void PageRowsChanged()
        {
            var handel = FocusedRowHandle;
            var change = _PageSize < _Rows - _PageSize * _Current;

            _PageSize = int.Parse(cbeRows.Text);
            PageSizeChanged?.Invoke(this, new PageSizeEventArgs(_PageSize));

            var page = _Current;

            Refresh();

            change = change || _PageSize < _Rows - _PageSize * _Current;
            if (!change && _Current == page && FocusedRowHandle == handel)
            {
                return;
            }

            // 切换了页码或当前页显示行数变化后需要重新加载数据
            CurrentPageChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
        }
Пример #19
0
 private void EditCell(ProductInformation product)
 {
     for (var pageNode = pages.First; pageNode != null; pageNode = pageNode.Next)
     {
         for (LinkedListNode <ProductCell> cellNode = pageNode.Value.First; cellNode != null; cellNode = cellNode.Next)
         {
             if (cellNode.Value.ReferenceEquals(product))
             {
                 // Удаляем и вставляем ячейку только в том случае, если её позиция должна измениться.
                 if ((cellNode.Previous != null && cellNode.Previous.Value.Product.PositionNumber > product.PositionNumber) ||
                     (cellNode.Previous == null && pageNode.Previous != null && pageNode.Previous.Value.Last.Value.Product.PositionNumber > product.PositionNumber) ||
                     (cellNode.Next != null && cellNode.Next.Value.Product.PositionNumber < product.PositionNumber) ||
                     (cellNode.Next == null && pageNode.Next != null && pageNode.Next.Value.Last.Value.Product.PositionNumber < product.PositionNumber))
                 {
                     DeleteCell(product);
                     AddCell(product);
                 }
                 CurrentPageChanged?.Invoke();
             }
         }
     }
 }
Пример #20
0
        /// <summary>
        /// 减少列表成员
        /// </summary>
        /// <param name="count">减少数量,默认1个</param>
        public void RemoveItems(int count = 1)
        {
            _Rows -= count;
            if (_Handle >= _Rows)
            {
                _Handle = _Rows - 1;
            }

            var page = _Current;

            Refresh();

            if ((_Rows > 0 && _Handle < _PageSize * (_TotalPages - 1)) || _Current < page)
            {
                // 不是末页或切换了页码需要重新加载数据
                CurrentPageChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
            }
            else
            {
                TotalRowsChanged?.Invoke(this, new PageControlEventArgs(FocusedRowHandle));
            }
        }
Пример #21
0
 protected virtual void OnCurrentPageChanged(EventArgs e)
 {
     CurrentPageChanged?.Invoke(this, e);
 }
Пример #22
0
 public void TriggerCurrentPageChange(int value)
 {
     CurrentPageChanged?.Invoke(value);
 }
Пример #23
0
 private void RaiseCurrentPageChanged()
 {
     CurrentPageChanged?.Invoke();
 }
Пример #24
0
 protected override void OnCurrentPageChanged()
 {
     base.OnCurrentPageChanged();
     CurrentPageChanged?.Invoke(this, EventArgs.Empty);
 }
Пример #25
0
    private void DeleteCell(ProductInformation product)
    {
        Page pageWithDeletableCell = null;
        Cell deletableCell         = null;

        bool found = false;

        // Ищем удаляемый товар
        for (Page pageNode = pages.First; pageNode != null; pageNode = pageNode.Next)
        {
            for (Cell cellNode = pageNode.Value.First; cellNode != null; cellNode = cellNode.Next)
            {
                // Смещаем все последующие товары на GetPreviousYPos(от текущей позиции)
                if (found)
                {
                    int currentYPos = cellNode.Value.Cell.Location.Y;
                    cellNode.Value.SetNewGroupYPosition(GetPreviousYPos(currentYPos));
                }
                if (!found && cellNode.Value.ReferenceEquals(product))
                {
                    // Если просто удалить товар, тогда не получится сместить последующие товары
                    pageWithDeletableCell = pageNode;
                    deletableCell         = cellNode;
                    found = true;
                }
            }
            // Если есть ещё страница и был удален товар, тогда переносим первый товар со следующей страницы
            // на текущую
            if (found && pageNode.Next != null)
            {
                int lastProductYPos = pageNode.Value.Last.Value.Cell.Location.Y;
                // Добавляем первый товар со следующей страницы на текущую страницу
                pageNode.Value.AddLast(pageNode.Next.Value.First.Value);
                // Устанавливаем перенесенной ячейке новое y-значение
                pageNode.Value.Last.Value.SetNewGroupYPosition(GetNextYPos(lastProductYPos));
                // Делаем эту ячейку невидимой
                pageNode.Value.Last.Value.Cell.Visible = false;
                // Удаляем переносимую ячейку со следующей страницы
                productsPanel.Controls.Remove(pageNode.Next.Value.First.Value.Cell);
                pageNode.Next.Value.Remove(pageNode.Next.Value.First);
                // Если страница на которую сделан перенос - текущая страница,
                // то делаем перенесенный товар видимым
                if (pageNode == currentPage)
                {
                    pageNode.Value.Last.Value.Cell.Visible = true;
                    productsPanel.Controls.Add(pageNode.Value.Last.Value.Cell);
                }
            }
        }
        if (pageWithDeletableCell != null && deletableCell != null)
        {
            deletableCell.Value.Cell.Visible = false;
            productsPanel.Controls.Remove(deletableCell.Value.Cell);
            pageWithDeletableCell.Value.Remove(deletableCell);

            // Если после удаления ячейки товара на последней странице не осталось товаров, то удаляем её
            if (pages.Last.Value.Count == 0)
            {
                // Если удаляемая страница - это текущая страница, тогда пытаемся перейти на предыдущую
                if (pages.Last == currentPage && currentPage.Previous != null)
                {
                    ToPreviousPage();
                    pages.Remove(pages.Last);
                }
                // Если это текущая страница и она единственная, то удаляем и присваиваем текущей странице
                // значение null
                else if (pages.Last == currentPage)
                {
                    pages.Remove(pages.Last);
                    currentPage = null;
                }
                // Иначе просто удаляем
                else
                {
                    pages.Remove(pages.Last);
                }
            }
            CurrentPageChanged?.Invoke();
        }
    }