public DataDumper(AppMonitor AppMonitor, DB Database, int DumpInterval = 60) { _appMonitor = AppMonitor; _database = Database; _dumpInterval = DumpInterval; _started = false; }
void FormLoaded(object sender, RoutedEventArgs e) { monitor = new(Dispatcher); appsTree.Applications = monitor.SortedData as CollectionView; CurrentApp.DataContext = monitor; monitor.PropertyChanged += _monitor_PropertyChanged; new SettingsProvider().RunAutoExport(monitor); }
private void ApplicationGrid_StartClick(object sender, RoutedEventArgs e) { MonitoredApp monitoredApp = ((FrameworkElement)sender).DataContext as MonitoredApp; StartApplication(monitoredApp); if (!AppMonitor.IsEnabled) { AppMonitor.Start(); } }
public AppTrayIconContext() { //Initialize Objects AppSettings = new SettingsManager.Settings(); // Check if Runs Hidden if (!AppSettings.RunHidden) { //Build Menu ContextMenu mnu = new ContextMenu(); mnu.MenuItems.Add(new MenuItem(ResFiles.GlobalRes.traymenu_Activity, OpenStats)); if (!AppSettings.LockSettings) { mnu.MenuItems.Add(new MenuItem(ResFiles.GlobalRes.traymenu_Settings, OpenSettings)); } if (!AppSettings.HideMenuExit) { mnu.MenuItems.Add(new MenuItem(ResFiles.GlobalRes.traymenu_Exit, Exit)); } mnu.MenuItems.Add(new MenuItem(ResFiles.GlobalRes.traymenu_About, About)); trayIcon = new NotifyIcon() { Icon = Resources.ClockIcon, ContextMenu = mnu, Visible = true }; trayIcon.DoubleClick += new System.EventHandler(OpenStats); AppDomain.CurrentDomain.ProcessExit += new System.EventHandler(Exit); } usrSession = new UserSession(); appMon = new AppMonitor(); Database = new DB(); DBDumper = new DataDumper(appMon, Database, AppSettings.DBDumprate); appMon.Start(); //TODO: Start DB dumper anyway if (setDBConfig()) { DBDumper.Start(); } }
public FormActivity(AppMonitor AppMonitor) { InitializeComponent(); _appMon = AppMonitor; _idleCtl = new ApplicationView(_appMon); _idleCtl.ApplicationText = ResFiles.GlobalRes.caption_IdleTime; _idleCtl.Icon = Resources.IdleIcon.ToBitmap(); flApplicationsUsage.Controls.Add(_idleCtl); flApplicationsUsage.SetFlowBreak(_idleCtl, true); ResizeControls(); updateView(); }
public static void Run(AppInfo[] apps) { bool showAllOnExit = true; var notifyIcon = new NotifyIcon(); var menuStrip = new ContextMenuStrip(); var configMenu = new ToolStripMenuItem("Config", null, (s, e) => Process.Start(Assembly.GetExecutingAssembly().Location.GetDirName())); var showAllMenu = new ToolStripMenuItem("Show All", null, (s, e) => apps.ForEach(app => app.PreloadedInstance.ShowAndRestore())); var newMenu = new ToolStripMenuItem("<New>", null, (s, e) => AppMonitor.New()); var restartMenu = new ToolStripMenuItem("Restart", null, (s, e) => { Application.Restart(); showAllOnExit = false; }); var exitMenu = new ToolStripMenuItem("Exit", null, (s, e) => Application.Exit()); bool captured = false; void update_tray_icon() { bool new_captured = apps.Any(x => x.PreloadedInstance.IsValid()); if (new_captured != captured) { notifyIcon.Icon = new_captured ? StartApp.Properties.Resources.appActive : StartApp.Properties.Resources.app_icon; } captured = new_captured; } notifyIcon.ContextMenuStrip = menuStrip; notifyIcon.Icon = StartApp.Properties.Resources.app_icon; notifyIcon.Text = "App instant start"; notifyIcon.DoubleClick += (s, e) => apps.ForEach(app => app.PreloadedInstance.ShowAndRestore()); notifyIcon.ContextMenuStrip.Opening += (s, e) => notifyIconMenuVisible = true; notifyIcon.ContextMenuStrip.Closed += (s, e) => notifyIconMenuVisible = false; menuStrip.Items.Add(configMenu); menuStrip.Items.Add(newMenu); menuStrip.Items.Add("-"); foreach (var app in apps) { var appMenu = new ToolStripMenuItem(app.Name); appMenu.Enabled = app.Enabled; appMenu.Click += (s, e) => { AppLauncher.FindHotInstance(app); //just in case if it was not found before if (app.PreloadedInstance.IsValid()) { app.PreloadedInstance.ShowAndRestore(); } else { "Notepad.exe".StartWith(Assembly.GetExecutingAssembly().Location.GetDirName().PathJoin(app.ConfigName)); } }; menuStrip.Items.Add(appMenu); app.OnCaptured = () => { if (app.PreloadedInstance.IsValid()) { appMenu.Text = "> " + app.Name; } else { appMenu.Text = app.Name; } lock (typeof(AppLauncher)) update_tray_icon(); }; } menuStrip.Items.Add("-"); menuStrip.Items.Add(showAllMenu); menuStrip.Items.Add("-"); menuStrip.Items.Add(restartMenu); menuStrip.Items.Add("-"); menuStrip.Items.Add(exitMenu); notifyIcon.Visible = true; var timer = new Timer(); timer.Interval = 5000; timer.Tick += (s, e) => { if (!notifyIconMenuVisible) { AppLauncher.StartCheckForHotInstance(apps); } }; timer.Enabled = true; Application.Run(); timer.Enabled = false; notifyIcon.Visible = false; if (showAllOnExit) { apps.Where(app => app.Enabled) .ForEach(app => app.PreloadedInstance.ShowAndRestore()); } }