public override void Handle(Object myObject, EventArgs myEventArgs) { int keys = monitor.ActionCount; Option<Point2i> moved = monitor.HasMoved; WindowInfo window; if (myObject == null) //manually triggered { window = CurrentWindow; } else //timer invoked { window = getFocussedName(); } uint pid = window.ProcessId; string exename = window.ExeName; string title = window.Title; double time = Utils.GetTime(); Option<string> url = window.Url; TickInfo info = new TickInfo(time, moved, pid, exename, title, url, keys); queue.Add(info); }
public static ProgramInfo FromRaw(TickInfo info) { if (info.Url.HasValue) { foreach(var site in Settings.Options.Websites) { if (isUrlMatching(site.Name, info.Url.Value)) { return site; } } return new ProgramInfo(info.ExeName, new List<string>(new[]{"Neutral"})); } else { if (Settings.Options.Programs.ContainsKey(info.ExeName)) { return Settings.Options.Programs[info.ExeName]; } } return ProgramInfo.Uncategorized; }
public TickInfoEventArgs(TickInfo info) { this.TickInfo = info; }
public ProcessedInfo(TickInfo info) { this.Program = ProgramInfo.FromRaw(info); this.DidActivity = info.NumKeys > 0 || info.Mouse.HasValue; this.Time = info.Time; }
private void changeProgram(TickInfo info) { lastChangedProgram = info.Time; actions = 0; }
private void updateText(TickInfo info) { if (last.ProcessId != info.ProcessId) { changeProgram(info); } commitIdleTime(info); refreshTop(); updateActive(info); commitFocusTime(info); }
private void updateActive(TickInfo info) { }
private void takeInfo(TickInfo info) { updateText(info); if (InfoReceived != null) { InfoReceived.Invoke(this, new TickInfoEventArgs(info)); } last = info; }
private void seeAction(TickInfo info) { lastAction = info.Time; actions += info.NumKeys; addActions(info.ExeName, info.NumKeys); }
private void commitIdleTime(TickInfo info) { if (info.NumKeys == 0 && !info.Mouse.HasValue) { var diff = info.Time - lastIdleCommitted; lastIdleCommitted = info.Time; addIdleTime(diff); if (lastAction == 0) { lastAction = info.Time; idleTime = 0; } else { idleTime = info.Time - lastAction; } } else { lastIdleCommitted = info.Time; seeAction(info); idleTime = 0; } }
private void commitFocusTime(TickInfo info) { if (lastFocusCommitted != 0) { double diff = info.Time - lastFocusCommitted; addTime(info.ExeName, diff); lastFocusCommitted = info.Time; } else { lastFocusCommitted = info.Time; } }