Skip to content
Snippets Groups Projects

differentiate between break and pause

3 files
+ 91
36
Compare changes
  • Side-by-side
  • Inline

Files

@@ -31,17 +31,20 @@ namespace InnoLabProjektDektopApp.Services
private readonly List<BreakInfo> breakInfoList = [];
public bool IsBreak { get; private set;}
public bool IsPause { get; private set; }
private DateTime breakStartTime;
public int currentCycle = 1;
public ProcessMonitor()
{
IsBreak = false;
IsPause = false;
blockedProcesses = LoadBlockedProcesses();
}
public async void StartMonitoring()
{
if (isMonitoring || IsBreak)
if (isMonitoring || IsBreak || IsPause)
{
return;
}
@@ -55,27 +58,30 @@ namespace InnoLabProjektDektopApp.Services
// check if any distracting processes are already running
var processes = GetRunningProcessList();
foreach (var process in processes)
await Task.Run(() =>
{
if (IsProcessOnBlockedList(process.Key))
foreach (var process in processes)
{
var result = MessageBox.Show($"Are you sure you want to get distracted by {process.Key}?", "Distracting Process Detected",
MessageBoxButton.YesNo,
MessageBoxImage.Question,
MessageBoxResult.No,
MessageBoxOptions.DefaultDesktopOnly
);
if (result == MessageBoxResult.No)
if (IsProcessOnBlockedList(process.Key))
{
KillProcessesByName(process.Key);
}
else
{
TrackProcess(process.Key, DateTime.Now);
var result = MessageBox.Show($"Are you sure you want to get distracted by {process.Key}?", "Distracting Process Detected",
MessageBoxButton.YesNo,
MessageBoxImage.Question,
MessageBoxResult.No,
MessageBoxOptions.DefaultDesktopOnly
);
if (result == MessageBoxResult.No)
{
KillProcessesByName(process.Key);
}
else
{
TrackProcess(process.Key, DateTime.Now);
}
}
}
}
});
await Task.Run(() =>
{
while (isMonitoring)
@@ -122,6 +128,29 @@ namespace InnoLabProjektDektopApp.Services
breakInfoList.Add(new BreakInfo(breakStartTime, DateTime.Now));
IsBreak = false;
StartMonitoring();
currentCycle++;
}
public void StartPause()
{
if (IsPause)
{
return;
}
IsPause = true;
breakStartTime = DateTime.Now;
StopMonitoring();
}
public void EndPause()
{
if (!IsPause)
{
return;
}
breakInfoList.Add(new BreakInfo(breakStartTime, DateTime.Now));
IsPause = false;
StartMonitoring();
}
public void FinishSession()
@@ -142,7 +171,7 @@ namespace InnoLabProjektDektopApp.Services
processInfoList.Clear();
breakInfoList.Clear();
processStartTimes.Clear();
currentCycle = 1;
}
public int CalculateCurrentDistractionStage(DateTime endTime)
Loading