public void SwitchNow(Database db, SwitchDir dir) { if (_thread == null || !_thread.IsAlive) { Log.Write(LogLevel.Warning, "The switch thread was found to be inactive. Restarting..."); Start(db, _theme); } _switchNow = dir; }
private void DoSwitch(Database db, SwitchDir dir) { if (_theme == null) { Log.Write(LogLevel.Warning, "Cannot switch wallpaper; there is no current theme."); return; } else { Log.Write(LogLevel.Info, "Switching wallpaper for theme '{0}'", _theme.Name); } try { _switching = true; // Fire the Switching event handler. SwitchEventHandler ev = Switching; if (ev != null) { ev(this, new EventArgs()); } _wallpaperSetter.Set(db, _theme, dir, false, ref _randomGroupCounter, _cancel.Token); Log.Write(LogLevel.Debug, "Finished switching wallpaper."); } catch (Exception ex) { Log.Write(ex, "Error when switching wallpaper."); } finally { _switching = false; // Fire the Switched event handler. SwitchEventHandler ev = Switched; if (ev != null) { ev(this, new EventArgs()); } } }
public void SetSwitchDirection(SwitchDir direction) { if (!IsLockedByRS) { if (direction == SwitchDir.Straight) { SetDirectionStraight(); } else if (direction == SwitchDir.Turn) { SetDirectionTurn(); } else if (direction == SwitchDir.Change) { ChangeSwitchDirection(); } } else { Debug.Log("Locked"); } }
private SwitchDir CheckSwitch() { // Check if the user initiated an early switch. var switchNow = _switchNow; if (switchNow != SwitchDir.None) { _switchNow = SwitchDir.None; return(switchNow); } if (_paused) { return(SwitchDir.None); } if (_startUpTime != DateTime.MinValue) { var startUpDelay = Settings.StartUpDelay; if (startUpDelay > 0 && _startUpTime.AddSeconds(startUpDelay) > DateTime.Now) { return(SwitchDir.None); } else { _startUpTime = DateTime.MinValue; } } // If the screensaver was last found to be running, then check now if the user has woken up. if (_screensaverRunning) { if (!ScreenSaverRunning) { Log.Write(LogLevel.Debug, "Screensaver has stopped running."); _screensaverRunning = false; } } // Check if it's time to switch if (!_locked && !_screensaverRunning) { lock (_themeLock) { DateTime nextSwitch = _lastSwitch + _theme.Interval; if (DateTime.Now >= nextSwitch) { // Check if the screensaver is running; if so, then don't switch now. if (ScreenSaverRunning) { Log.Write(LogLevel.Debug, "Stopping wallpaper updating because the screensaver is running."); _screensaverRunning = true; return(SwitchDir.None); } return(SwitchDir.Next); } } } return(SwitchDir.None); }