|
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.
|