From: <nic...@us...> - 2014-01-12 18:53:17
|
Revision: 4721 http://sourceforge.net/p/mp-plugins/code/4721 Author: nicsergio Date: 2014-01-12 18:53:13 +0000 (Sun, 12 Jan 2014) Log Message: ----------- Modified Paths: -------------- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/LockKeys.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Properties/AssemblyInfo.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj trunk/plugins/ShortCuter&SkinEditor/Source/XtremeMenuEditor/XtremeMenuEditor.csproj Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/LockKeys.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/LockKeys.cs 2014-01-10 16:19:47 UTC (rev 4720) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/LockKeys.cs 2014-01-12 18:53:13 UTC (rev 4721) @@ -25,8 +25,8 @@ #region Metodi Pubblici public static bool ChangeCapsLock(LockKeyActions forcing) //Richiesta di modifica stato CapsLock { - if ((Control.IsKeyLocked(Keys.CapsLock) & forcing == LockKeyActions.On) || - (!Control.IsKeyLocked(Keys.CapsLock) & forcing == LockKeyActions.Off)) //Se richiesta una variazione di stato + if ((Control.IsKeyLocked(Keys.CapsLock) & forcing == LockKeyActions.Off) || + (!Control.IsKeyLocked(Keys.CapsLock) & forcing == LockKeyActions.On)) //Se richiesta una variazione di stato { keybd_event(VK_CAPITAL, SC_CAPITAL, 0, (UIntPtr)0); //--> simulazione pressione del tasto CapsLock keybd_event(VK_CAPITAL, SC_CAPITAL, KEYEVENTF_KEYUP, (UIntPtr)0); //--> simulazione rilascio del tasto CapsLock @@ -37,8 +37,8 @@ } public static bool ChangeNumLock(LockKeyActions forcing) //Richesta di modifica stato NumLock { - if ((Control.IsKeyLocked(Keys.NumLock) & forcing == LockKeyActions.On) || - (!Control.IsKeyLocked(Keys.NumLock) & forcing == LockKeyActions.Off)) //Se richiesta una variazione di stato + if ((Control.IsKeyLocked(Keys.NumLock) & forcing == LockKeyActions.Off) || + (!Control.IsKeyLocked(Keys.NumLock) & forcing == LockKeyActions.On)) //Se richiesta una variazione di stato { keybd_event(VK_NUMLOCK, HK_NUMLOCK, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0); //--> simulazione pressione del tasto NumLock keybd_event(VK_NUMLOCK, HK_NUMLOCK, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Properties/AssemblyInfo.cs 2014-01-10 16:19:47 UTC (rev 4720) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Properties/AssemblyInfo.cs 2014-01-12 18:53:13 UTC (rev 4721) @@ -33,8 +33,8 @@ // È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build // utilizzando l'asterisco (*) come descritto di seguito: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.5.0")] -[assembly: AssemblyFileVersion("2.0.5.0")] +[assembly: AssemblyVersion("2.0.6.0")] +[assembly: AssemblyFileVersion("2.0.6.0")] //Importante per la compatibilità con MediaPortal [assembly: CompatibleVersion("1.1.6.27644")] \ No newline at end of file Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.cs 2014-01-10 16:19:47 UTC (rev 4720) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.cs 2014-01-12 18:53:13 UTC (rev 4721) @@ -111,18 +111,55 @@ GUIWindowManager.SendMessage(msg); //GUIGraphicsContext.SendMessage(msg); //Metodo usato dal vecchio plugin } + lastWindowID = sc.WindowID; lastLoadParameter = sc.LoadParameter; //--> memorizzazione ultima destinazione visualizzata dal plugin } catch (Exception e) { MpLog(true, "Error going to screen", e); } } - private void GoToPrevious() //Esecuzione azione relativa allo shortcut + private void GoToPrevious(bool soundEffect) //Ritorno alla finestra precedente { + try + { + MpLog(false, "Go to previous window"); + + GUIGraphicsContext.ResetLastActivity(); + if (soundEffect) + Utils.PlaySound("back.wav", false, true); //--> eventuale effetto sonoro (indietro) + + GUIWindowManager.ShowPreviousWindow(); //--> visualizzazione finestra precedente + } + catch (Exception e) + { + MpLog(true, "Error going to previous window", e); + } } - private bool AlreadyAtDestination(ShortCut sc) + private bool AlreadyAtDestination(ShortCut sc) //Verifica se finestra attuale corrispondente a destinazione shortcut { - return false; + if ((int)GUIWindowManager.ActiveWindow == sc.WindowID) //Prima verifica: da gestore finestra di mediaPortal + { + if (lastWindowID == sc.WindowID) //Seconda verifica: utilizzo dei parametri memorizzati dal plugin se attendibili + if (lastLoadParameter == sc.LoadParameter) //--> verifica corrispondenza eventuali parametri di caricamento per visualizzazione + { + MpLog(false, "Actual window (ID & LoadParameter) corresponds to destination, " + sc.ToString()); + return true; //--> finestra attuale e parametri di caricamento corrispondenti a destinazione shortcut + } + else + return false; //--> parametri di caricamento per visualizzazione non corrispondenti a destinazione shortcut + else //Altrimenti parametri memorizzati dal plugin non attendibili (non si riescono a verificare i parametri di caricamento) + { + if (sc.LoadParameter.Length == 0) //Se destinazione senza parametri di caricamento + { + MpLog(false, "Actual window (ID) corresponds to destination, " + sc.ToString()); + return true; //--> finestra attuale corrispondente a destinazione shortcut + } + else + return false; //--> finestra attuale non corrispondente a destinazione shortcut + } + } + else + return false; //--> finestra attuale non corrispondente a destinazione shortcut } #endregion @@ -150,37 +187,35 @@ { if (!ShortCut.ModifierKeys.Contains(e.KeyCode)) //Verifica se il tasto premuto non corrisponde ad un modificatore { - - /* - -ricerca sc, se nessuno: log - -se almeno 1, verifica ID finestra - - se <> da dest: gotoscreen - - se = a destinazione, verifica se ci sono altri sc - - se nessun sc, se return = false->gotoscreen altrimenti gotoback - - se altri sc --> gotoscreen(next) - */ - List<ShortCut> scList = myShortCuts.Items.ToList().FindAll(x => x.Key == e.KeyCode.ToString() - && x.Ctrl == e.Control - && x.Alt == e.Alt - && x.Shift == e.Shift); - if (scList != null && scList.Count > 0) //Se la combinazione di tasti corrisponde ad almeno uno shortcut + List<ShortCut> scList = myShortCuts.Items.ToList().FindAll(x => + x.Key == e.KeyCode.ToString() + && x.Ctrl == e.Control + && x.Alt == e.Alt + && x.Shift == e.Shift); //--> raccolta lista shortcut associati alla combinazione di tasti attuale + if (scList != null && scList.Count > 0) //Se trovato almeno uno shortcut { - if (scList.Count == 1) + if (scList.Count == 1) //Shortcut a destinazione singola { - if (scList[0].Return && AlreadyAtDestination(scList[0])) - GoToPrevious(); + if (scList[0].Return && AlreadyAtDestination(scList[0])) //Se impostato flag di ritorno e finestra attuale corrispondente a destinazione + GoToPrevious(scList[0].SoundEffect.Length > 0); //--> visualizzazione finestra precedente else - GoToScreen(scList[0]); + GoToScreen(scList[0]); //--> visualizzazione finestra di destinazione shortcut } - else + else //Shortcut a destinazione multipla (ciclico) { - foreach (ShortCut sc in scList) - { - - } + int scIndex = 0; + for (int i = 0; i < scList.Count; i++) //Iterazione di verifica se la finestra attuale corrisponde ad una delle destinazioni + { + if (AlreadyAtDestination(scList[i])) + { + scIndex = (i + 1) % scList.Count; //--> impostazione indice shortcut successivo + break; + } + } + GoToScreen(scList[scIndex]); //--> visualizzazione finestra di destinazione shortcut } } - else + else //Combinazione di tasti non corrispondente a nessuno shortcut MpLog(false, "Key not mapped: Key=" + (e.Control ? "<CTRL>" : "") + (e.Alt ? "<ALT>" : "") + (e.Shift ? "<SHIFT>" : "") + "<" + e.KeyCode.ToString() + ">"); } } Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj 2014-01-10 16:19:47 UTC (rev 4720) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj 2014-01-12 18:53:13 UTC (rev 4721) @@ -6,7 +6,7 @@ <ProductVersion>8.0.30703</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}</ProjectGuid> - <OutputType>WinExe</OutputType> + <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>ProcessPlugins.ShortCuter</RootNamespace> <AssemblyName>ShortCuter</AssemblyName> Modified: trunk/plugins/ShortCuter&SkinEditor/Source/XtremeMenuEditor/XtremeMenuEditor.csproj =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/XtremeMenuEditor/XtremeMenuEditor.csproj 2014-01-10 16:19:47 UTC (rev 4720) +++ trunk/plugins/ShortCuter&SkinEditor/Source/XtremeMenuEditor/XtremeMenuEditor.csproj 2014-01-12 18:53:13 UTC (rev 4721) @@ -6,7 +6,7 @@ <ProductVersion>8.0.30703</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{350D17A6-0F6B-43C4-898F-33CC68EBCD75}</ProjectGuid> - <OutputType>WinExe</OutputType> + <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>ProcessPlugins.XtremeMenuEditor</RootNamespace> <AssemblyName>XtremeMenuEditor</AssemblyName> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |