private void RefreshActivityChart() { var seriesColection = new SeriesCollection(); var instances = ApplicationLogList.SelectMany(x => x.Members).GroupBy(x => x.Type).Select(g => new { Type = g.Key, Total = g.Sum(x => x.FocusTime.Ticks) }); foreach (var instance in instances) { var series = new PieSeries { Title = instance.Type.ToString(), Values = new ChartValues <ObservableValue> { new ObservableValue(instance.Total) }, DataLabels = true, LabelPoint = a => TimeSpan.FromTicks((long)a.Y).ToString() }; seriesColection.Add(series); } ActivityChart.Series = seriesColection; }
private void SetFocusedElementInfo(ApplicationInstance focused) { var app = ApplicationLogList.First(x => x.Members.Any(y => y.Title == focused.Title)); var item = app.Members.First(y => y.Title == focused.Title); item.FocusTime = item.FocusTime + TimeSpan.FromSeconds(1); app.FocusTime = new TimeSpan(app.Members.Sum(x => x.FocusTime.Ticks)); }
private void DeleteApplicationLog_Click(object sender, RoutedEventArgs e) { if (sender is MenuItem mnu) { var sp = ((ContextMenu)mnu.Parent).PlacementTarget as StackPanel; var log = (ApplicationLog)sp.DataContext; ApplicationLogList.Remove(log); } }
void timer_Tick(object sender, EventArgs e) { var instances = GetApplicationInstances(); listBox1.ItemsSource = instances.Select(x => x.Title); try { SetFocusedElementInfo(instances[0]); } catch (InvalidOperationException exception) { Console.WriteLine(exception); } catch (ArgumentOutOfRangeException exception) { Console.WriteLine(exception); } var filteredInstances = instances.Where(x => !FilterUnwantedApp(x)); foreach (var instance in filteredInstances) { if (ApplicationLogList.Any(x => x.ProcessName == instance.ProcessName)) { var log = ApplicationLogList.First(x => x.ProcessName == instance.ProcessName); if (log.Members.Any(x => x.Title == instance.Title)) { var item = log.Members.First(x => x.Title == instance.Title); item.RunningTime = item.RunningTime + TimeSpan.FromSeconds(1); log.RunningTime = new TimeSpan(log.Members.Sum(x => x.RunningTime.Ticks)); } else { instance.Type = log.Type; log.Members.Add(instance); } } else { var log = new ApplicationLog(instance.ProcessName); log.Members.Add(instance); ApplicationLogList.Add(log); } } ApplicationLogList = new ObservableCollection <ApplicationLog>(ApplicationLogList.OrderByDescending(x => x.FocusTime).ToList()); lblRunningCount.Text = String.Format("Running apps: {0}", instances.Count); lblLogsCount.Text = String.Format("Logged apps: {0}", ApplicationLogList.Count); }
private void DeleteApplicationInstance_Click(object sender, RoutedEventArgs e) { if (sender is MenuItem mnu) { var sp = ((ContextMenu)mnu.Parent).PlacementTarget as StackPanel; var instance = (ApplicationInstance)sp.DataContext; var app = ApplicationLogList.First(x => x.Members.Contains(instance)); app.Members.Remove(instance); app.RunningTime = new TimeSpan(app.Members.Sum(x => x.RunningTime.Ticks)); } }