public SpotifySaveModeStopperFacade(IMessageDisplayer messageDisplayer, IPreventSleepScreen preventSleepScreen,
                                            ISoundAnalyser soundAnalyser, IProcessAnalyser processAnalyser, IAppStatusReporting appState, IAutoStartManager autoStartManager, ISettingsManager <AppSettings> settingsManager, int refreshRate = -1)
        {
            _messageDisplayer   = messageDisplayer;
            _preventSleepScreen = preventSleepScreen;
            _soundAnalyser      = soundAnalyser;
            _appState           = appState;
            _autoStartManager   = autoStartManager;
            _settingsManager    = settingsManager;
            _processAnalyser    = processAnalyser;

            _screenSleepEnabled = IsScreenSleepEnabled();
            if (refreshRate > 0)
            {
                _checkInterval = TimeSpan.FromSeconds(refreshRate);
            }
        }
        public SysTrayWrapper(IAutoStartManager autostartManager)
        {
            _autostartManager = autostartManager;

            #region Init Common Icon
            Icon neutralIcon;
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Cyclops.Icons.neutral.ico"))
            {
                neutralIcon = new Icon(stream);
            }
            #endregion

            #region Init Warning Animation List
            var warningIconList = new List <Icon>();
            for (var i = 1; i <= 11; i++)
            {
                using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"Cyclops.Icons.warning_{i}.ico"))
                {
                    var icon = new Icon(stream);
                    warningIconList.Add(icon);
                }
            }
            var warningIconListCopy = warningIconList.ToList();
            warningIconListCopy.Reverse();
            warningIconList.AddRange(warningIconListCopy);
            #endregion

            #region Init Working Animation List
            var workingIconList = new List <Icon>();
            workingIconList.Add(neutralIcon);
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Cyclops.Icons.neutral_loading.ico"))
            {
                var icon = new Icon(stream);
                workingIconList.Add(icon);
            }
            #endregion

            #region Init Context Menu
            var contextMenu = new ContextMenu();

            //var stopWorkingMenuItem = new MenuItem
            //{
            //    Index = 1,
            //    Text = "Stop Working"
            //};
            //stopWorkingMenuItem.Click += StopWorkingAnimation;

            //var startWorkingMenuItem = new MenuItem
            //{
            //    Index = 0,
            //    Text = "Start Working"
            //};
            //startWorkingMenuItem.Click += StartWorkingAnimation;

            //var stopWarningMenuItem = new MenuItem
            //{
            //    Index = 1,
            //    Text = "Stop Warning"
            //};
            //stopWarningMenuItem.Click += StopWarningAnimation;

            //var startWarningMenuItem = new MenuItem
            //{
            //    Index = 0,
            //    Text = "Start Warning"
            //};
            //startWarningMenuItem.Click += StartWarningAnimation;

            _autoStartMenuItem = new MenuItem
            {
                Index = 1,
                Text  = _autostartManager.IsAutoStartSet() ? AutoStartOnLabel : AutoStartOffLabel
            };

            _autoStartMenuItem.Click += AutostartClick;

            var closeAppMenuItem = new MenuItem
            {
                Index = 0,
                Text  = "Close"
            };
            closeAppMenuItem.Click += CloseAppClick;

            contextMenu.MenuItems.AddRange(new[] { _autoStartMenuItem, closeAppMenuItem });
            #endregion

            _trayIcon              = new SysTray("Cyclops", neutralIcon, contextMenu);
            _trayIcon.OnLeftClick += OnLeftClick;

            _trayIcon.SetWarningAnimationClip(warningIconList.ToArray());
            _trayIcon.SetWorkingAnimationClip(workingIconList.ToArray());
        }