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); }
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(); } }