private static IUsageKeeper CreateOrLoadKeeper(ref ISaveService saveService, DataPrecision dataPrecision, Resolution chosenResolution, SaveType saveType) { IUsageKeeper keeper = saveService.GetSavedUsages(saveType); if (keeper == null) { if (dataPrecision == DataPrecision.High) { if (saveType == SaveType.Today) { keeper = new HighPrecisionUsageToday(chosenResolution); } else { keeper = new HighPrecisionUsageArchive(); } } else { throw new NotImplementedException(); } } return(keeper); }
/// <summary> /// You must pass the smallest timeframe the software will watch for. /// Eg.: If set to TEN_MINUTES, then one mouse movement or keypress in that timeframe /// will be considered an active time. /// DataPrecision is not implemented fully, only High precision works /// </summary> /// <param name="appName">If saving is enabled the resulting file will have this as prefix</param> /// <param name="resolution">The smallest timeframe the software will watch for</param> /// <param name="SavePreference">Dictates how usage data will be saved/stored</param> /// <param name="dataPrecision">Sets how fine grained the data will be</param> public Watcher(string appName, Resolution chosenResolution, SavePreference preference, DataPrecision dataPrecision) { ISaveService saveService = new SaveService(appName, preference, dataPrecision); IUsageKeeper keeper = CreateKeeper(ref saveService, dataPrecision, chosenResolution); IStorage store = new UsageStore(keeper); wService = new WatcherService(ref store, ref saveService); }
public void Save(IUsageKeeper keeper, SaveType type) { if (preference == SavePreference.NoSave) { return; } Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(type), ref keeper, DoBackup.Yes); }
public UsageStore(IUsageKeeper usageKeeper) { this.usageKeeper = usageKeeper; timer = new UsageTimer(usageKeeper.GetResolution()); startupTime = DateTime.Now; timer.Elasped += Timer_Elasped; SystemEvents.SessionSwitch += new SessionSwitchEventHandler(OnWindowsLockUnlock); }
public void Save(IUsageKeeper keeper) { switch (preference) { case SavePreference.KeepDataForToday: SaveOnlyKeepingDate(ref keeper, DateTime.Now.Date); break; case SavePreference.KeepDataForever: SaveKeepingEverything(ref keeper); break; default: break; } }
public IUsageKeeper GetSavedUsages() { IUsageKeeper keeper = null; switch (precision) { case DataPrecision.HighPrecision: string path = GetSaveDirLocation() + GetSaveFileName(); keeper = Serializer.JsonObjectDeserialize <HighPrecisionUsageKeeper>(path); break; case DataPrecision.LowPrecision: throw new NotImplementedException(); //break; default: break; } return(keeper); }
private static IUsageKeeper CreateKeeper(ref ISaveService saveService, DataPrecision dataPrecision, Resolution chosenResolution) { IUsageKeeper keeper = saveService.GetSavedUsages(); if (keeper == null) { switch (dataPrecision) { case DataPrecision.HighPrecision: keeper = new HighPrecisionUsageKeeper(chosenResolution); break; case DataPrecision.LowPrecision: throw new NotImplementedException(); //break; default: break; } } return(keeper); }
private void SaveKeepingEverything(ref IUsageKeeper keeper) { Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(), ref keeper, DoBackup.Yes); }
private void SaveOnlyKeepingDate(ref IUsageKeeper keeper, DateTime date) { keeper.EraseUsageNotOfDate(date.Date); Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(), ref keeper, DoBackup.Yes); }