Example #1
0
        private void FillValidatedParts(bool onlyOnce = false)
        {
            var validBricks = BrickListCache.GetValidatedBricks();
            var newBricks   = validBricks.Except(BrickList)
                              .OrderBy(x => x.PartId).ToList();

            const int MAX_ADD = 200;

            //add items in batches to prevent freezing the window
            while (newBricks.Count > 0)
            {
                var range = newBricks.Take(MAX_ADD).ToList();

                BrickList.AddRange(range);
                if (IsListFiltered)
                {
                    FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x)));
                }

                newBricks.RemoveRange(0, range.Count);

                if (onlyOnce)
                {
                    break;
                }

                if (newBricks.Count > 0)
                {
                    Application.DoEvents();
                }
            }
        }
Example #2
0
        private Models.BrickInfo FindPartInfo(int partID)
        {
            try
            {
                var brickInfo = BrickListCache.GetBrick(partID);
                if (brickInfo != null)
                {
                    return(brickInfo);
                }

                var part = PartWrapper.LoadPart(LDDEnvironment.Current, partID, false);
                if (part != null)
                {
                    return(new BrickInfo(part));
                }
            }
            catch { }

            return(null);
        }
Example #3
0
        private void FillValidatedParts(bool onlyOnce = false)
        {
            var validBricks = BrickListCache.GetValidatedBricks();
            var newBricks   = validBricks.Except(BrickList)
                              .OrderBy(x => x.PartId).ToList();

            const int MAX_ADD = 200;

            //add items in batches to prevent freezing the window
            while (newBricks.Count > 0)
            {
                var range        = newBricks.Take(MAX_ADD).ToList();
                var curScrollRow = BrickGridView.FirstDisplayedScrollingRowIndex;
                IsUpdatingList = true;
                BrickList.AddRange(range);
                if (IsListFiltered)
                {
                    FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x)));
                }

                if (curScrollRow >= 0 && curScrollRow != BrickGridView.FirstDisplayedScrollingRowIndex)
                {
                    //fix to prevent scrolling back to first row
                    BrickGridView.FirstDisplayedScrollingRowIndex = curScrollRow;
                }

                IsUpdatingList = false;
                newBricks.RemoveRange(0, range.Count);

                if (onlyOnce)
                {
                    break;
                }

                if (newBricks.Count > 0)
                {
                    Application.DoEvents();
                }
            }
        }
Example #4
0
        private void StartLoadingBricks()
        {
            if (BrickListCache.IsCacheDirty ||
                BrickListCache.IsCacheEmpty)
            {
                LoadingProgressBar.Visible = true;
                LoadingProgressBar.Style   = ProgressBarStyle.Marquee;
                //TotalBricksLoaded = 0;
                CTS = new CancellationTokenSource();
                BrickLoadingTask = Task.Factory.StartNew(() =>
                                                         BrickListCache.RebuildCache(CTS.Token)

                                                         );
                RefreshTimer.Start();
            }

            if (!BrickListCache.IsCacheEmpty)
            {
                BrickList.Clear();
                FillValidatedParts(BrickLoadingTask != null);
            }
        }