示例#1
0
        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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        public void Save(IUsageKeeper keeper, SaveType type)
        {
            if (preference == SavePreference.NoSave)
            {
                return;
            }

            Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(type), ref keeper, DoBackup.Yes);
        }
示例#4
0
        public UsageStore(IUsageKeeper usageKeeper)
        {
            this.usageKeeper = usageKeeper;

            timer       = new UsageTimer(usageKeeper.GetResolution());
            startupTime = DateTime.Now;

            timer.Elasped += Timer_Elasped;
            SystemEvents.SessionSwitch += new SessionSwitchEventHandler(OnWindowsLockUnlock);
        }
示例#5
0
        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;
            }
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
 private void SaveKeepingEverything(ref IUsageKeeper keeper)
 {
     Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(), ref keeper, DoBackup.Yes);
 }
示例#9
0
        private void SaveOnlyKeepingDate(ref IUsageKeeper keeper, DateTime date)
        {
            keeper.EraseUsageNotOfDate(date.Date);

            Serializer.JsonObjectSerialize(GetSaveDirLocation(), GetSaveFileName(), ref keeper, DoBackup.Yes);
        }