private static void StartupTaskPreSettings() { if (logger.IsDebugEnabled) { logger.Debug($"[{nameof(StartupTaskPreSettings)}]"); } // Convert the settings file if (File.Exists(Settings.SettingsFilePath)) { JObject jSettings; using (var sr = new StreamReader(Settings.SettingsFilePath)) { using (var jsonReader = new JsonTextReader(sr)) { jSettings = JObject.Load(jsonReader); } } JToken jPreviousV = jSettings["PreviousVersion"]; var previousV = new Version(jPreviousV?.Value <string>() ?? "0"); // [IDO] Hotkeys if (previousV < new Version("1.10.10")) { // pre-1.10.10 hotkeys must be converted to the current format logger.Info("Converting old hotkeys to the current format..."); JToken jHotkeys = jSettings["HotKeys"]; if (jHotkeys?.HasValues == true) { var convertedHotkeys = new JArray(); foreach (JToken jHotkey in jHotkeys.Children()) { JToken jKeyOrButton = jHotkey["KeyOrButton"]; JToken jKey = jKeyOrButton?["Key"]; ModifierKeys modifiers = (jHotkey["Alt"]?.Value <bool>() == true ? ModifierKeys.Alt : ModifierKeys.None) | (jHotkey["Ctrl"]?.Value <bool>() == true ? ModifierKeys.Control : ModifierKeys.None) | (jHotkey["Shift"]?.Value <bool>() == true ? ModifierKeys.Shift : ModifierKeys.None) | (jHotkey["WindowsKey"]?.Value <bool>() == true ? ModifierKeys.Windows : ModifierKeys.None); ToastifyActionEnum toastifyActionEnum = Enum.TryParse(jHotkey["Action"]?.Value <string>(), out ToastifyActionEnum tae) ? tae : ToastifyActionEnum.None; ToastifyAction action = App.Container.Resolve <IToastifyActionRegistry>().GetAction(toastifyActionEnum); bool enabled = jHotkey["Enabled"]?.Value <bool>() ?? false; Hotkey h = jKeyOrButton?["IsKey"]?.Value <bool>() ?? jKey != null ? new KeyboardHotkey { Modifiers = modifiers, Key = Enum.TryParse(jKey?.Value <string>(), out Key k) ? k : (Key?)null, Action = action, Enabled = enabled } as Hotkey
public static void SendMediaKey(ToastifyAction action) { VirtualKeyCode virtualKey; switch (action) { case ToastifyAction.PlayPause: virtualKey = VirtualKeyCode.VK_MEDIA_PLAY_PAUSE; break; case ToastifyAction.Mute: virtualKey = VirtualKeyCode.VK_VOLUME_MUTE; break; case ToastifyAction.VolumeDown: virtualKey = VirtualKeyCode.VK_VOLUME_DOWN; break; case ToastifyAction.VolumeUp: virtualKey = VirtualKeyCode.VK_VOLUME_UP; break; case ToastifyAction.PreviousTrack: virtualKey = VirtualKeyCode.VK_MEDIA_PREV_TRACK; break; case ToastifyAction.NextTrack: virtualKey = VirtualKeyCode.VK_MEDIA_NEXT_TRACK; break; case ToastifyAction.None: case ToastifyAction.FastForward: case ToastifyAction.Rewind: case ToastifyAction.ShowToast: case ToastifyAction.ShowSpotify: case ToastifyAction.CopyTrackInfo: case ToastifyAction.SettingsSaved: case ToastifyAction.PasteTrackInfo: case ToastifyAction.ThumbsUp: case ToastifyAction.ThumbsDown: case ToastifyAction.Exit: #if DEBUG case ToastifyAction.ShowDebugView: #endif default: return; } User32.KeyboardEvent(virtualKey, 0, 1, IntPtr.Zero); }
public static void TestActionEvents(ToastifyAction action, bool shouldFail) { bool?success = null; void OnActionFailed(object sender, ActionFailedEventArgs e) => success = false; void OnActionPerformed(object sender, EventArgs e) => success = true; action.ActionFailed += OnActionFailed; action.ActionPerformed += OnActionPerformed; action.PerformAction(); action.ActionFailed -= OnActionFailed; action.ActionPerformed -= OnActionPerformed; Assert.That(success, Is.EqualTo(!shouldFail)); }
public void SendAction(ToastifyAction action) { if (!this.IsRunning) { return; } bool sendAppCommandMessage = false; bool sendMediaKey = false; switch (action) { #if DEBUG case ToastifyAction.ShowDebugView: #endif case ToastifyAction.None: case ToastifyAction.CopyTrackInfo: case ToastifyAction.PasteTrackInfo: case ToastifyAction.ThumbsUp: case ToastifyAction.ThumbsDown: case ToastifyAction.ShowToast: case ToastifyAction.SettingsSaved: case ToastifyAction.Exit: break; case ToastifyAction.ShowSpotify: Analytics.TrackEvent(Analytics.ToastifyEventCategory.Action, Analytics.ToastifyEvent.Action.ShowSpotify); if (this.IsMinimized) { this.ShowSpotify(); } else { this.Minimize(); } break; case ToastifyAction.VolumeUp: Analytics.TrackEvent(Analytics.ToastifyEventCategory.Action, Analytics.ToastifyEvent.Action.VolumeUp); switch ((ToastifyVolumeControlMode)Settings.Current.VolumeControlMode) { // The Spotify volume control mode has been dropped since Spotify version 1.0.75.483.g7ff4a0dc due to issue #31 //case ToastifyVolumeControlMode.Spotify: // this.SendShortcut(action); // break; case ToastifyVolumeControlMode.SystemSpotifyOnly: this.localAPI.IncrementVolume(); break; case ToastifyVolumeControlMode.SystemGlobal: sendMediaKey = true; break; default: sendMediaKey = true; break; } break; case ToastifyAction.VolumeDown: Analytics.TrackEvent(Analytics.ToastifyEventCategory.Action, Analytics.ToastifyEvent.Action.VolumeDown); switch ((ToastifyVolumeControlMode)Settings.Current.VolumeControlMode) { // The Spotify volume control mode has been dropped since Spotify version 1.0.75.483.g7ff4a0dc due to issue #31 //case ToastifyVolumeControlMode.Spotify: // this.SendShortcut(action); // break; case ToastifyVolumeControlMode.SystemSpotifyOnly: this.localAPI.DecrementVolume(); break; case ToastifyVolumeControlMode.SystemGlobal: default: sendMediaKey = true; break; } break; case ToastifyAction.Mute: Analytics.TrackEvent(Analytics.ToastifyEventCategory.Action, Analytics.ToastifyEvent.Action.Mute); switch ((ToastifyVolumeControlMode)Settings.Current.VolumeControlMode) { case ToastifyVolumeControlMode.SystemSpotifyOnly: this.localAPI.ToggleMute(); break; // The Spotify volume control mode has been dropped since Spotify version 1.0.75.483.g7ff4a0dc due to issue #31 //case ToastifyVolumeControlMode.Spotify: case ToastifyVolumeControlMode.SystemGlobal: default: sendMediaKey = true; break; } break; case ToastifyAction.FastForward: case ToastifyAction.Rewind: case ToastifyAction.PlayPause: case ToastifyAction.PreviousTrack: case ToastifyAction.NextTrack: goto default; default: Analytics.TrackEvent(Analytics.ToastifyEventCategory.Action, $"{Analytics.ToastifyEvent.Action.Default}{action}"); sendAppCommandMessage = true; break; } if (sendAppCommandMessage) { Windows.SendAppCommandMessage(this.GetMainWindowHandle(), (IntPtr)action, true); } if (sendMediaKey) { Win32API.SendMediaKey(action); } }
public static bool TestGetHashCode([NotNull] ToastifyAction action1, [NotNull] ToastifyAction action2) { return(action1.GetHashCode() == action2.GetHashCode()); }
public static bool TestEquals_Object([NotNull] ToastifyAction action, object obj) { return(action.Equals(obj)); }
public static bool TestEquals_IAction([NotNull] ToastifyAction action1, IAction action2) { return(action1.Equals(action2)); }