public static void ShowCallout(this ICalloutManager calloutManager, string name, Func <ICallout, bool> predicate = null)
        {
            Argument.IsNotNull(() => calloutManager);

            if (calloutManager.IsSuspended)
            {
                Log.Debug($"Callout manager is currently suspended, cannot show callout with name '{name}'");
                return;
            }

            var callout = FindCallout(calloutManager, name);

            if (callout is null)
            {
                Log.Debug($"Callout with name '{name}' is not found");
                return;
            }

            if (predicate is not null)
            {
                if (!predicate(callout))
                {
                    return;
                }
            }

            Log.Debug($"Showing callout '{callout}'");

            callout.Show();
        }
예제 #2
0
        public TimeBasedCalloutWatcherBase(ICalloutManager calloutManager, IConfigurationService configurationService)
            : base(calloutManager, configurationService)
        {
            Start = DateTime.MaxValue;
            _dispatcherTimer.Tick += OnDispatcherTimerTick;

            Subscribe(_calloutManager);
        }
        public static IDisposable SuspendInScope(this ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            return(new DisposableToken <ICalloutManager>(calloutManager,
                                                         x => x.Instance.Suspend(),
                                                         x => x.Instance.Resume()));
        }
        public static void HideAllCallouts(this ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            Log.Debug("Hiding all callouts");

            calloutManager.Callouts.ForEach(x => x.Hide());
        }
예제 #5
0
        public CalloutViewModel(ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            CalloutManager       = calloutManager;
            OpenCallout          = new TaskCommand <object>(OpenCalloutExecuteAsync);
            ToggleShowRepeatedly = new TaskCommand(OnShowRepeatedlyExecuteAsync);
        }
예제 #6
0
        public CalloutWatcherBase(ICalloutManager calloutManager, IConfigurationService configurationService)
        {
            Argument.IsNotNull(() => calloutManager);
            Argument.IsNotNull(() => configurationService);

            _calloutManager       = calloutManager;
            _configurationService = configurationService;

            IsOneTimeCallout = true;
        }
        public static void ShowAllCallouts(this ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            if (calloutManager.IsSuspended)
            {
                Log.Debug($"Callout manager is currently suspended, cannot show all callouts");
                return;
            }

            Log.Debug("Showing all callouts");

            calloutManager.Callouts.Where(x => !x.HasShown).ForEach(x => x.Show());
        }
예제 #8
0
        public CalloutViewModel(ICalloutManager calloutManager, IDispatcherService dispatcherService)
        {
            Argument.IsNotNull(() => calloutManager);
            Argument.IsNotNull(() => dispatcherService);

            _calloutManager    = calloutManager;
            _dispatcherService = dispatcherService;

            Id = Guid.NewGuid();

            PauseTimer  = new Command(OnPauseTimerExecute);
            ResumeTimer = new Command(OnResumeTimerExecute);
            ClosePopup  = new Command(OnClosePopupExecute);
        }
예제 #9
0
        protected virtual void Subscribe(ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            var callout = Callout;

            if (callout is not null)
            {
                Start = DateTime.Now;
                return;
            }

            Log.Debug($"Callout is not yet registered, subscribing to ICalloutManager.Registered event");

            calloutManager.Registered += OnCalloutManagerRegistered;
        }
        public static void HideCallout(this ICalloutManager calloutManager, string name)
        {
            Argument.IsNotNull(() => calloutManager);

            var callout = FindCallout(calloutManager, name);

            if (callout is null)
            {
                Log.Debug($"Callout with name '{name}' is not found");
                return;
            }

            Log.Debug($"Hiding callout '{callout}'");

            callout.Hide();
        }
        public static bool IsAnyCalloutOpen(this ICalloutManager calloutManager)
        {
            Argument.IsNotNull(() => calloutManager);

            return(calloutManager.Callouts.Any(x => x.IsOpen));
        }
        public static ICallout FindCallout(this ICalloutManager calloutManager, string name)
        {
            Argument.IsNotNull(() => calloutManager);

            return(calloutManager.Callouts.FirstOrDefault(x => x.Name == name));
        }
        public static ICallout FindCallout(this ICalloutManager calloutManager, Guid id)
        {
            Argument.IsNotNull(() => calloutManager);

            return(calloutManager.Callouts.FirstOrDefault(x => x.Id == id));
        }
예제 #14
0
 public ShowCalloutAtStartupWatcher(ICalloutManager calloutManager, IConfigurationService configurationService)
     : base(calloutManager, configurationService)
 {
     Name             = "ExampleCallout";
     IsOneTimeCallout = false;
 }