From: <nic...@us...> - 2014-06-14 21:34:48
|
Revision: 4836 http://sourceforge.net/p/mp-plugins/code/4836 Author: nicsergio Date: 2014-06-14 21:34:40 +0000 (Sat, 14 Jun 2014) Log Message: ----------- Modified Paths: -------------- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Plugin/NavigatorDialog.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuts.cs Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Plugin/NavigatorDialog.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Plugin/NavigatorDialog.cs 2014-06-09 19:18:12 UTC (rev 4835) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Plugin/NavigatorDialog.cs 2014-06-14 21:34:40 UTC (rev 4836) @@ -14,13 +14,33 @@ #region Dati public const int DialogWindowID = 2821976; //Id finestra di dialogo personalizzata public const string DialogSkinFile = "ShortCuter.Navigator.DialogMenu.xml"; //File della skin per personalizzazione finestra di dialogo + private bool _panelView; //Visualizzazione finestra di dialogo come pannello di icone #endregion #region Controlli Grafici - [SkinControl(10)] protected GUIImage selectedIcon = null; //Icona elemento selezionato - [SkinControl(11)] protected GUIThumbnailPanel panelView = null; //Pannello icone per visualizzazione alternativa a lista - [SkinControl(20)] protected GUIImage logo = null; //Logo Skin Navigator + [SkinControl(10)] protected GUIImage selectedListIcon = null; //Icona elemento selezionato (visualizzazione lista) + [SkinControl(11)] protected GUIThumbnailPanel panelView = null; //Pannello icone per visualizzazione alternativa a lista + [SkinControl(20)] protected GUIImage logo = null; //Logo Skin Navigator #endregion + + #region Metodi Privati + private void UpdateSelectedListIcon() //Aggiornamento icona elemento della lista selezionato + { + if (!_panelView && listView.SelectedListItem != null && selectedListIcon != null) + selectedListIcon.SetFileName(listView.SelectedListItem.IconImageBig); //--> impostazione icona elemento della lista selezionato + } + private void SetDefaultControl(int controlId) //Impostazione ID controllo grafico con posizione predefinita + { + this._defaultControlId=controlId; + if (btnClose != null) //--> impostazione navigazione dal pulsante di chiusura + { + btnClose.NavigateUp = controlId; + btnClose.NavigateDown = controlId; + btnClose.NavigateLeft = controlId; + btnClose.NavigateRight = controlId; + } + } + #endregion #region Metodi Pubblici public override bool Init() //Override metodo Init @@ -36,86 +56,111 @@ base.OnPageLoad(); base.lblHeading2.Label = Tools.MyAssembly.Title; //--> forzatura label "Menu" + if (!_panelView) //Visualizzazione a lista + { + if (listView != null) + { + GUIControl.ShowControl(GetID, listView.GetID); //--> controllo lista visualizzato + SetDefaultControl(listView.GetID); //--> lista: controllo predefinito + } + if (selectedListIcon != null) + { + GUIControl.ShowControl(GetID, selectedListIcon.GetID); //--> controllo icona elemento lista selezionato visualizzato + selectedListIcon.SetFileName(""); //--> inizializzazione immagine + } + if (panelView != null) + GUIControl.HideControl(GetID, panelView.GetID); //--> controllo pannello icone nascosto + } + else //Visualizzazione a pannello icone + { + if (panelView != null) + { + GUIControl.ShowControl(GetID, panelView.GetID); //--> controllo pannello icone visualizzato + SetDefaultControl(panelView.GetID); //--> pannello: controllo predefinito + } + if (listView != null) + GUIControl.HideControl(GetID, listView.GetID); //--> controllo lista nascosto + if (selectedListIcon != null) + GUIControl.HideControl(GetID, selectedListIcon.GetID); //--> controllo icona elemento lista selezionato nascosto + } + try { - logo.MemoryImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("ShortCuter.Resources.Images.SkinNavigator.png")); - logo.SetFileName("[ShortCuter:NavigatorLogo]"); //--> impostazione immagine logo Skin Navigator + if (logo != null) + { + logo.MemoryImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("ShortCuter.Resources.Images.SkinNavigator.png")); + logo.SetFileName("[ShortCuter:NavigatorLogo]"); //--> impostazione immagine logo Skin Navigator + } } catch { } } public override void Dispose() //Override metodo Dispose { - selectedIcon.SafeDispose(); + selectedListIcon.SafeDispose(); panelView.SafeDispose(); logo.SafeDispose(); base.Dispose(); } - public override bool OnMessage(GUIMessage message) + public override bool OnMessage(GUIMessage message) //Override metodo OnMessage { - - /*if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT) //& alternativeView + this._defaultControlId = 11; + int selectedIndex = selectedItemIndex; + bool rtn = base.OnMessage(message); + if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT && _panelView && panelView != null) { - //base.base.OnMessage(); - - return true; + panelView.Clear(); + for (int i = 0; i < listItems.Count; i++) + panelView.Add((GUIListItem)listItems[i]); //--> aggiunta elementi nel pannello + if (selectedIndex >= 0) + OnMessage(new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECT, GetID, 0, panelView.GetID, selectedIndex, 0, null)); } - else*/ - return base.OnMessage(message); + UpdateSelectedListIcon(); //--> aggiornamento icona elemento della lista selezionato + return rtn; } protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) - { + { //Override metodo OnClicked base.OnClicked(controlId, control, actionType); + if (control == panelView && panelView.SelectedListItem != null) //Gestione caso visualizzazione a pannello + { + selectedItemIndex = panelView.SelectedListItemIndex; + selectedItemLabel = panelView.SelectedListItem.Label; + int pos = selectedItemLabel.IndexOf(" "); + if (pos > 0) + { + selectedItemLabel = selectedItemLabel.Substring(pos + 1); + } + selectedId = panelView.SelectedListItem.ItemId; + PageDestroy(); + } } - //public override void selectOption(string keySelected) - //{ - // base.selectOption(keySelected); - //} - - public override void OnAction(Action action) + public override void OnAction(Action action) //Override metodo OnAction { - char key = (char)0; - - // if we have a keypress or a remote button press - if ((action.wID == Action.ActionType.ACTION_KEY_PRESSED) || - ((Action.ActionType.REMOTE_0 <= action.wID) && (Action.ActionType.REMOTE_9 >= action.wID))) + base.OnAction(action); + UpdateSelectedListIcon(); //--> aggiornamento icona elemento della lista selezionato + } + public new void selectOption(string keySelected) //Nuova implementazione metodo selectOption + { + if (_panelView) //Con visualizzazione a pannello --> selezione elemento pannello { - if (action.m_key != null) + int selected; + try { selected = int.Parse(keySelected) - 1; } + catch (Exception) { selected = -1; } + if (selected >= 0 && selected < listItems.Count && panelView != null) { - if (action.m_key.KeyChar >= '0' && action.m_key.KeyChar <= '9') - { - // Get offset to item - key = (char)action.m_key.KeyChar; - } + OnMessage(new GUIMessage(GUIMessage.MessageType.GUI_MSG_SETFOCUS, GetID, 0, panelView.GetID, 0, 0, null)); + OnMessage(new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECT, GetID, 0, panelView.GetID, selected, 0, null)); + OnMessage(new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, GetID, panelView.GetID, 0, 0, 0, null)); + selectedItemIndex = selected; } - else - { - key = ((char)('0' + action.wID - Action.ActionType.REMOTE_0)); - } - if (key == (char)0) - { - return; - } - keySelection += key; - if (keySelection.Length == listItems.Count.ToString().Length) - { - selectOption(keySelection); - keySelection = string.Empty; - return; - } - keyTimer = DateTime.Now; - return; } - - base.OnAction(action); - //base.OnAction(action); + else + base.selectOption(keySelected); //--> altrimenti selezione elemento lista } #endregion - #region Consumazione Eventi - #endregion - #region Proprietà public override int GetID { get { return DialogWindowID; } } + public bool PanelView { get { return this._panelView; } set { this._panelView = value; } } #endregion } } Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml 2014-06-09 19:18:12 UTC (rev 4835) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml 2014-06-14 21:34:40 UTC (rev 4836) @@ -189,7 +189,7 @@ <Separator>--------------------------------</Separator> <ShowNumbers>1</ShowNumbers> <RemoveDuplicates>1</RemoveDuplicates> - <UseCustomDialog>1</UseCustomDialog> + <DialogType>1</DialogType> </General> <Items> <Item> Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuts.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuts.cs 2014-06-09 19:18:12 UTC (rev 4835) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuts.cs 2014-06-14 21:34:40 UTC (rev 4836) @@ -333,12 +333,12 @@ public class GeneralSettings //Sotto-classe di gestione impostazioni generali Skin Navigator { #region Dati - private string _menuHeader; //Titolo menu di navigazione - private bool _showSeparator; //Visualizzazione separatore gruppi di destinazioni - private string _separator; //Eventuale separatore da visualizzare - private bool _showNumbers; //Visualizzazione numeri cossispondenti a voci menu (per accesso da telecomando) - private bool _removeDuplicates; //Rimozione destinazioni duplicate - private bool _useCustomDialog; //Utilizzo della finestra di dialogo personalizzata (se presente) + private string _menuHeader; //Titolo menu di navigazione + private bool _showSeparator; //Visualizzazione separatore gruppi di destinazioni + private string _separator; //Eventuale separatore da visualizzare + private bool _showNumbers; //Visualizzazione numeri cossispondenti a voci menu (per accesso da telecomando) + private bool _removeDuplicates; //Rimozione destinazioni duplicate + private DialogTypes _dialogType; //Tipologia della finestra di dialogo da utilizzare #endregion #region Costruttore @@ -349,17 +349,17 @@ _separator = "-- -- -- -- -- --"; //--> separatore da visualizzare _showNumbers = true; //--> visualizzazione numeri cossispondenti a voci menu _removeDuplicates = true; //--> rimozione di destinazioni duplicate - _useCustomDialog = false; //--> utilizzo della finestra di dialogo predefinita + _dialogType = DialogTypes.DefaultDialog; //--> utilizzo della finestra di dialogo predefinita } #endregion #region Proprietà - public string MenuHeader { get { return this._menuHeader; } set { this._menuHeader = value; } } - public bool ShowSeparator { get { return this._showSeparator; } set { this._showSeparator = value; } } - public string Separator { get { return this._separator; } set { this._separator = value; } } - public bool ShowNumbers { get { return this._showNumbers; } set { this._showNumbers = value; } } - public bool RemoveDuplicates { get { return this._removeDuplicates; } set { this._removeDuplicates = value; } } - public bool UseCustomDialog { get { return this._useCustomDialog; } set { this._useCustomDialog = value; } } + public string MenuHeader { get { return this._menuHeader; } set { this._menuHeader = value; } } + public bool ShowSeparator { get { return this._showSeparator; } set { this._showSeparator = value; } } + public string Separator { get { return this._separator; } set { this._separator = value; } } + public bool ShowNumbers { get { return this._showNumbers; } set { this._showNumbers = value; } } + public bool RemoveDuplicates { get { return this._removeDuplicates; } set { this._removeDuplicates = value; } } + public DialogTypes DialogType { get { return this._dialogType; } set { this._dialogType = value; } } #endregion } public class Item //Sotto-classe elemento per navigazione @@ -440,6 +440,12 @@ #endregion #region Dati + public enum DialogTypes //Tipologie di finestre di dialogo + { + DefaultDialog = 0, //--> finestra di dialogo predefinita (DialogMenu) + CustomList = 1, //--> finestra di dialogo personalizzata - lista + CustomPanel = 2 //--> finestra di dialogo personalizzata - pannello icone + } private GeneralSettings _general; //Impostazioni generali private BindingList<Item> _items; //Lista (con associazione dati) elementi di navigazione #endregion @@ -455,33 +461,42 @@ #region Metodi Privati private Item.Destination ShowMenuDialog(List<Item.Destination> destinations) //Visualizzazione menu di navigazione { - GUIDialogMenu dlgMenu; - if (_general.UseCustomDialog && (File.Exists(GUIGraphicsContext.Skin + @"\" + NavigatorDialog.DialogSkinFile) || - File.Exists(GUIGraphicsContext.Theme + @"\" + NavigatorDialog.DialogSkinFile))) + GUIDialogMenu dlg; + + if (_general.DialogType != DialogTypes.DefaultDialog && (File.Exists(GUIGraphicsContext.Skin + @"\" + NavigatorDialog.DialogSkinFile) || + File.Exists(GUIGraphicsContext.Theme + @"\" + NavigatorDialog.DialogSkinFile))) + { //Utilizzo della finestra di dialogo personalizzata - dlgMenu = (NavigatorDialog)GUIWindowManager.GetWindow(NavigatorDialog.DialogWindowID); + NavigatorDialog dlgMenu = (NavigatorDialog)GUIWindowManager.GetWindow(NavigatorDialog.DialogWindowID); + dlgMenu.PanelView = (_general.DialogType == DialogTypes.CustomPanel); + dlg = dlgMenu; + } else + { //Utilizzo della finestra di dialogo predefinita - dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); + GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); + dlg = dlgMenu; + } - dlgMenu.Reset(); - dlgMenu.SetHeading(_general.MenuHeader); //--> intestazione menu - dlgMenu.ShowQuickNumbers = _general.ShowNumbers; //--> visualizzazione numeri per accesso diretto + dlg.Reset(); + dlg.SetHeading(_general.MenuHeader); //--> intestazione menu + dlg.ShowQuickNumbers = _general.ShowNumbers; //--> visualizzazione numeri per accesso diretto foreach (Item.Destination dst in destinations) //Iterazione per popolamento lista { if (dst != null) { GUIListItem lstItem = new GUIListItem(dst.Caption); //--> creazione elemento GUIListItem - lstItem.PinImage = dst.Icon; //--> percorso eventuale icona destinazione - dlgMenu.Add(lstItem); //--> aggiunta elemento nella lista + lstItem.PinImage = dst.Icon; //--> percorso eventuale icona destinazione (visualizzazione in lista) + lstItem.IconImageBig = dst.Icon; //--> percorso eventuale icona destinazione (visualizzazione pannello/elemento lista selezionato) + dlg.Add(lstItem); //--> aggiunta elemento nella lista } else - dlgMenu.Add(_general.Separator); //--> se destinazione nulla: aggiunta separatore + dlg.Add(_general.Separator); //--> se destinazione nulla: aggiunta separatore } - dlgMenu.DoModal(GUIWindowManager.ActiveWindow); //--> visualizzazione menu + dlg.DoModal(GUIWindowManager.ActiveWindow); //--> visualizzazione menu - if (dlgMenu.SelectedLabel >= 0 && dlgMenu.SelectedLabel < destinations.Count) - return destinations[dlgMenu.SelectedLabel]; //--> ritorno destinazione selezionata + if (dlg.SelectedLabel >= 0 && dlg.SelectedLabel < destinations.Count) + return destinations[dlg.SelectedLabel]; //--> ritorno destinazione selezionata else return null; //--> nessun elemento selezionato } @@ -527,9 +542,9 @@ innerNode = generalNode.SelectSingleNode("RemoveDuplicates"); if (innerNode != null) _general.RemoveDuplicates = Convert.ToBoolean(Convert.ToInt16(innerNode.InnerText)); - innerNode = generalNode.SelectSingleNode("UseCustomDialog"); + innerNode = generalNode.SelectSingleNode("DialogType"); if (innerNode != null) - _general.UseCustomDialog = Convert.ToBoolean(Convert.ToInt16(innerNode.InnerText)); + _general.DialogType = (SkinNavigator.DialogTypes)Enum.Parse(typeof(SkinNavigator.DialogTypes), innerNode.InnerText); } else return false; //--> impostazioni non caricate (sezione General non presente) @@ -585,11 +600,12 @@ { xmlSettings.WriteStartElement("Navigator"); xmlSettings.WriteStartElement("General"); - xmlSettings.WriteElementString("MenuHeader", _general.MenuHeader); - xmlSettings.WriteElementString("ShowSeparator", Convert.ToInt16(_general.ShowSeparator).ToString()); - xmlSettings.WriteElementString("Separator", _general.Separator); - xmlSettings.WriteElementString("ShowNumbers", Convert.ToInt16(_general.ShowNumbers).ToString()); - xmlSettings.WriteElementString("RemoveDuplicates", Convert.ToInt16(_general.RemoveDuplicates).ToString()); + xmlSettings.WriteElementString("MenuHeader", _general.MenuHeader); + xmlSettings.WriteElementString("ShowSeparator", Convert.ToInt16(_general.ShowSeparator).ToString()); + xmlSettings.WriteElementString("Separator", _general.Separator); + xmlSettings.WriteElementString("ShowNumbers", Convert.ToInt16(_general.ShowNumbers).ToString()); + xmlSettings.WriteElementString("RemoveDuplicates", Convert.ToInt16(_general.RemoveDuplicates).ToString()); + xmlSettings.WriteElementString("DialogType", _general.DialogType.ToString()); xmlSettings.WriteEndElement(); xmlSettings.WriteStartElement("Items"); @@ -601,7 +617,7 @@ foreach (Item.Window wnd in navItem.Windows) //Iterazione per salvataggio finestre di abilitazione { xmlSettings.WriteStartElement("Window"); - xmlSettings.WriteElementString("Caption", wnd.Caption); + xmlSettings.WriteElementString("Caption", wnd.Caption); xmlSettings.WriteElementString("WindowID", wnd.WindowID.ToString()); xmlSettings.WriteEndElement(); } @@ -610,10 +626,10 @@ foreach (Item.Destination dst in navItem.Destinations) //Iterazione per salvataggio destinazioni { xmlSettings.WriteStartElement("Destination"); - xmlSettings.WriteElementString("Caption", dst.Caption); - xmlSettings.WriteElementString("WindowID", dst.WindowID.ToString()); + xmlSettings.WriteElementString("Caption", dst.Caption); + xmlSettings.WriteElementString("WindowID", dst.WindowID.ToString()); xmlSettings.WriteElementString("LoadParameter", dst.LoadParameter); - xmlSettings.WriteElementString("Force", Convert.ToInt16(dst.Force).ToString()); + xmlSettings.WriteElementString("Force", Convert.ToInt16(dst.Force).ToString()); xmlSettings.WriteEndElement(); } xmlSettings.WriteEndElement(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |