public LimitObserver(ITrackingService trackingService, IRepository repository, IAppChangedNotifier appChangedNotifier, IMidnightNotifier midnightNotifier, ILimitHandler limitHandler, IAppDurationCalc appDurationCalc, Mediator mediator, ISyncContext syncContext) { this.trackingService = trackingService; this.repository = repository; this.appChangedNotifier = appChangedNotifier; this.midnightNotifier = midnightNotifier; this.limitHandler = limitHandler; this.appDurationCalc = appDurationCalc; this.mediator = mediator; limitNotifiers.Add(new LimitNotifier(syncContext, LimitSpan.Day)); limitNotifiers.Add(new LimitNotifier(syncContext, LimitSpan.Week)); foreach (var notifier in limitNotifiers) { notifier.LimitReached += OnLimitReached; } mediator.Register(MediatorMessages.APP_LIMITS_CHANGIING, LoadAppLimits); }
public LimitToastWindow(IUserSettingsService userSettingsService, IAppDurationCalc appDurationCalc, Mediator mediator, MeasureProvider measureProvider) { this.userSettingsService = userSettingsService; this.appDurationCalc = appDurationCalc; this.mediator = mediator; this.measureProvider = measureProvider; InitializeComponent(); mediator.Register <AppLimit>(MediatorMessages.APP_LIMIT_REACHED, OnAppLimitReached); var bounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds; this.Left = bounds.Right - this.Width - 5; this.Top = bounds.Bottom + 5; timer = new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Normal, OnTimerTick, this.Dispatcher); Loaded += (s, e) => HideHelper.RemoveFromAltTab(this); Deactivated += (s, e) => Topmost = true; }