public CategoryPieView(DiskUsageCalculator calculator)
            : base(null, ImageLayout.HorizontalAlignLeft | ImageLayout.VerticalAlignCenter)
        {
            Margin = SafetyViewMargin.TitleMargin;

            foreach (string category in calculator.Categories)
            {
                ulong categoryTotal = calculator[category];
                _chart.AddSlice(category, categoryTotal, GetPieColor(category));
                _legend.Add(string.Format("{0} {1}%", category, categoryTotal * 100 / calculator.MaxSpaceUsed), GetPieColor(category));
            }
            _estimatedDiskSize = calculator.MaxSpaceUsed;
        }
        public static DiskUsageCalculator Calculate(IEnumerable <TivoContainer> containers, string tivoName)
        {
            DiskUsageCalculator calculator = new DiskUsageCalculator();

            calculator.CurrentSpaceUsed = calculator.CalculateCategoryTotals(containers);
            calculator.MaxSpaceUsed     = calculator.GetMaxSpaceUsedForTivo(calculator.CurrentSpaceUsed, tivoName);

            // decrement this value with each category found
            ulong currentRecordings = calculator.CurrentSpaceUsed;

            foreach (KeyValuePair <string, ulong> entry in calculator._categoryTotals)
            {
                currentRecordings -= entry.Value;
            }
            calculator._categoryTotals.Add(Current, currentRecordings);

            ulong estimatedFree = calculator.MaxSpaceUsed - calculator.CurrentSpaceUsed;

            calculator._categoryTotals.Add(Free, estimatedFree);
            return(calculator);
        }
Beispiel #3
0
        public void QueryUsage(IAsyncResult result)
        {
            Application app = (Application)result.AsyncState;

            TivoContainer container = _query.EndExecute(result);

            _containers.Add(container);

            if (container.ItemStart + container.ItemCount < container.TotalItems)
            {
                _query = _query.Skip(container.ItemStart + container.ItemCount);
                _query.BeginExecute(QueryUsage, app);
            }
            else
            {
                _connection.Dispose();
                CategoryPieView pieView      = new CategoryPieView(DiskUsageCalculator.Calculate(_containers, _tivoName));
                View            previousView = app.Root.Children[0];
                app.Root.Children.RemoveAt(0);
                app.Root.Children.Add(pieView);
                previousView.Dispose();
            }
        }