Added possibility to change playlist-name.

This commit is contained in:
Florian Kuepper committed 2012-09-08 12:13:05 +02:00
1 parent b7d14f5516
commit 56c0698183
2 files changed
+483 -314

No files matched your search

+50 -31
View File
@@ -788,36 +788,6 @@
<!-- <Space>: Reflection Space--> <!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height--> <!-- <Height>: Reflection Height-->
</TextPart1> </TextPart1>
<TextPlaylistHeader>
<!--<X>, <Y>: Text position-->
<X>975</X>
<Y>45</Y>
<!--<Z>: Text position-->
<Z>-1,01</Z>
<!--<H>: Text height-->
<H>30</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>220</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</TextPlaylistHeader>
<StaticPlaylistFooter> <StaticPlaylistFooter>
<!--<Skin>: Texture name--> <!--<Skin>: Texture name-->
<Skin>Menu</Skin> <Skin>Menu</Skin>
@@ -931,6 +901,55 @@
<!--<NumVisible>: Number of visible elements in the slide--> <!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible> <NumVisible>1</NumVisible>
</SelectSlideGameMode> </SelectSlideGameMode>
<ButtonPlaylistName>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Invisible</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>975</X>
<Y>45</Y>
<Z>-1,01</Z>
<W>220</W>
<H>30</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>0</X>
<Y>0</Y>
<!--<H>: Text height-->
<H>30</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>220</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
</ButtonPlaylistName>
<ButtonPlaylistClose> <ButtonPlaylistClose>
<!--<Skin>: Texture name--> <!--<Skin>: Texture name-->
<Skin>CloseIcon</Skin> <Skin>CloseIcon</Skin>
@@ -1129,4 +1148,4 @@
</ButtonPlaylistSing> </ButtonPlaylistSing>
</Playlist> </Playlist>
</ScreenSong> </ScreenSong>
</root> </root>
+433 -283
View File
@@ -13,6 +13,12 @@ using Vocaluxe.GameModes;
namespace Vocaluxe.Menu namespace Vocaluxe.Menu
{ {
enum EEditMode
{
None,
PlaylistName,
ChangeOrder
}
struct SThemePlaylist struct SThemePlaylist
{ {
@@ -27,12 +33,12 @@ namespace Vocaluxe.Menu
public float EntryHeight; public float EntryHeight;
public CText Text1; public CText Text1;
public CText TextPlaylistHeader;
public CStatic StaticCover; public CStatic StaticCover;
public CStatic StaticPlaylistHeader; public CStatic StaticPlaylistHeader;
public CStatic StaticPlaylistFooter; public CStatic StaticPlaylistFooter;
public CButton ButtonPlaylistName;
public CButton ButtonPlaylistClose; public CButton ButtonPlaylistClose;
public CButton ButtonPlaylistSave; public CButton ButtonPlaylistSave;
public CButton ButtonPlaylistDelete; public CButton ButtonPlaylistDelete;
@@ -72,6 +78,7 @@ namespace Vocaluxe.Menu
private List<PlaylistElement> PlaylistElements; private List<PlaylistElement> PlaylistElements;
private List<PlaylistElementContent> PlaylistElementContents; private List<PlaylistElementContent> PlaylistElementContents;
public SRectF CompleteRect;
public SRectF Rect; public SRectF Rect;
public SColorF BackgroundColor; public SColorF BackgroundColor;
public SColorF BackgroundSColor; public SColorF BackgroundSColor;
@@ -94,7 +101,7 @@ namespace Vocaluxe.Menu
} }
} }
public bool changeOrder = false; public EEditMode _EditMode;
public int ActivePlaylistID = -1; public int ActivePlaylistID = -1;
public int Offset = 0; public int Offset = 0;
public int ActiveHover = -1; public int ActiveHover = -1;
@@ -104,16 +111,17 @@ namespace Vocaluxe.Menu
{ {
_Theme = new SThemePlaylist(); _Theme = new SThemePlaylist();
_Theme.Text1 = new CText(); _Theme.Text1 = new CText();
_Theme.TextPlaylistHeader = new CText();
_Theme.StaticCover = new CStatic(); _Theme.StaticCover = new CStatic();
_Theme.StaticPlaylistFooter = new CStatic(); _Theme.StaticPlaylistFooter = new CStatic();
_Theme.StaticPlaylistHeader = new CStatic(); _Theme.StaticPlaylistHeader = new CStatic();
_Theme.ButtonPlaylistName = new CButton();
_Theme.ButtonPlaylistClose = new CButton(); _Theme.ButtonPlaylistClose = new CButton();
_Theme.ButtonPlaylistDelete = new CButton(); _Theme.ButtonPlaylistDelete = new CButton();
_Theme.ButtonPlaylistSave = new CButton(); _Theme.ButtonPlaylistSave = new CButton();
_Theme.ButtonPlaylistSing = new CButton(); _Theme.ButtonPlaylistSing = new CButton();
_Theme.SelectSlideGameMode = new CSelectSlide(); _Theme.SelectSlideGameMode = new CSelectSlide();
CompleteRect = new SRectF();
Rect = new SRectF(); Rect = new SRectF();
BackgroundColor = new SColorF(); BackgroundColor = new SColorF();
BackgroundSColor = new SColorF(); BackgroundSColor = new SColorF();
@@ -131,10 +139,10 @@ namespace Vocaluxe.Menu
{ {
_Interactions.Clear(); _Interactions.Clear();
PrepareList(); PrepareList();
_Interactions.AddText(_Theme.TextPlaylistHeader);
_Interactions.AddStatic(_Theme.StaticCover); _Interactions.AddStatic(_Theme.StaticCover);
_Interactions.AddStatic(_Theme.StaticPlaylistFooter); _Interactions.AddStatic(_Theme.StaticPlaylistFooter);
_Interactions.AddStatic(_Theme.StaticPlaylistHeader); _Interactions.AddStatic(_Theme.StaticPlaylistHeader);
_Interactions.AddButton(_Theme.ButtonPlaylistName);
_Interactions.AddButton(_Theme.ButtonPlaylistClose); _Interactions.AddButton(_Theme.ButtonPlaylistClose);
_Interactions.AddButton(_Theme.ButtonPlaylistDelete); _Interactions.AddButton(_Theme.ButtonPlaylistDelete);
_Interactions.AddButton(_Theme.ButtonPlaylistSave); _Interactions.AddButton(_Theme.ButtonPlaylistSave);
@@ -178,12 +186,12 @@ namespace Vocaluxe.Menu
} }
_ThemeLoaded &= _Theme.Text1.LoadTheme(item, "TextPart1", navigator, SkinIndex); _ThemeLoaded &= _Theme.Text1.LoadTheme(item, "TextPart1", navigator, SkinIndex);
_ThemeLoaded &= _Theme.TextPlaylistHeader.LoadTheme(item, "TextPlaylistHeader", navigator, SkinIndex);
_ThemeLoaded &= _Theme.StaticCover.LoadTheme(item, "StaticCover", navigator, SkinIndex); _ThemeLoaded &= _Theme.StaticCover.LoadTheme(item, "StaticCover", navigator, SkinIndex);
_ThemeLoaded &= _Theme.StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", navigator, SkinIndex); _ThemeLoaded &= _Theme.StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", navigator, SkinIndex);
_ThemeLoaded &= _Theme.StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", navigator, SkinIndex); _ThemeLoaded &= _Theme.StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", navigator, SkinIndex);
_ThemeLoaded &= _Theme.ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", navigator, SkinIndex);
_ThemeLoaded &= _Theme.ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", navigator, SkinIndex); _ThemeLoaded &= _Theme.ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", navigator, SkinIndex);
_ThemeLoaded &= _Theme.ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", navigator, SkinIndex); _ThemeLoaded &= _Theme.ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", navigator, SkinIndex);
_ThemeLoaded &= _Theme.ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", navigator, SkinIndex); _ThemeLoaded &= _Theme.ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", navigator, SkinIndex);
@@ -195,6 +203,53 @@ namespace Vocaluxe.Menu
if (_ThemeLoaded) if (_ThemeLoaded)
{ {
_Theme.Name = ElementName; _Theme.Name = ElementName;
//Check for highest x/y-coords
CompleteRect = Rect;
//ButtonPlaylistClose
if (_Theme.ButtonPlaylistClose.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistClose.Rect.X;
if (_Theme.ButtonPlaylistClose.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistClose.Rect.Y;
if (_Theme.ButtonPlaylistClose.Rect.W + _Theme.ButtonPlaylistClose.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistClose.Rect.W + _Theme.ButtonPlaylistClose.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistClose.Rect.Y + _Theme.ButtonPlaylistClose.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistClose.Rect.H + _Theme.ButtonPlaylistClose.Rect.Y - CompleteRect.Y;
//ButtonPlaylistName
if (_Theme.ButtonPlaylistName.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistName.Rect.X;
if (_Theme.ButtonPlaylistName.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistName.Rect.Y;
if (_Theme.ButtonPlaylistName.Rect.W + _Theme.ButtonPlaylistName.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistName.Rect.W + _Theme.ButtonPlaylistName.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistName.Rect.Y + _Theme.ButtonPlaylistName.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistName.Rect.H + _Theme.ButtonPlaylistName.Rect.Y - CompleteRect.Y;
//ButtonPlaylistSing
if (_Theme.ButtonPlaylistSing.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistSing.Rect.X;
if (_Theme.ButtonPlaylistSing.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistSing.Rect.Y;
if (_Theme.ButtonPlaylistSing.Rect.W + _Theme.ButtonPlaylistSing.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistSing.Rect.W + _Theme.ButtonPlaylistSing.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistSing.Rect.Y + _Theme.ButtonPlaylistSing.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistSing.Rect.H + _Theme.ButtonPlaylistSing.Rect.Y - CompleteRect.Y;
//ButtonPlaylistSave
if (_Theme.ButtonPlaylistSave.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistSave.Rect.X;
if (_Theme.ButtonPlaylistSave.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistSave.Rect.Y;
if (_Theme.ButtonPlaylistSave.Rect.W + _Theme.ButtonPlaylistSave.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistSave.Rect.W + _Theme.ButtonPlaylistSave.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistSave.Rect.Y + _Theme.ButtonPlaylistSave.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistSave.Rect.H + _Theme.ButtonPlaylistSave.Rect.Y - CompleteRect.Y;
//ButtonPlaylistDelete
if (_Theme.ButtonPlaylistDelete.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistDelete.Rect.X;
if (_Theme.ButtonPlaylistDelete.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistDelete.Rect.Y;
if (_Theme.ButtonPlaylistDelete.Rect.W + _Theme.ButtonPlaylistDelete.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistDelete.Rect.W + _Theme.ButtonPlaylistDelete.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistDelete.Rect.Y + _Theme.ButtonPlaylistDelete.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistDelete.Rect.H + _Theme.ButtonPlaylistDelete.Rect.Y - CompleteRect.Y;
LoadTextures(); LoadTextures();
} }
return _ThemeLoaded; return _ThemeLoaded;
@@ -252,11 +307,11 @@ namespace Vocaluxe.Menu
writer.WriteComment("Positions of <TextPart1>, <TextPart2>, <TextPart3>, <StaticCover> and <SelectSlideGameMode> are relative to playlist-entry!"); writer.WriteComment("Positions of <TextPart1>, <TextPart2>, <TextPart3>, <StaticCover> and <SelectSlideGameMode> are relative to playlist-entry!");
writer.WriteComment("Use placeholders for Text of <TextPart1>, <TextPart2> and <TextPart3>: %t, %a, %l"); writer.WriteComment("Use placeholders for Text of <TextPart1>, <TextPart2> and <TextPart3>: %t, %a, %l");
_Theme.Text1.SaveTheme(writer); _Theme.Text1.SaveTheme(writer);
_Theme.TextPlaylistHeader.SaveTheme(writer);
_Theme.StaticPlaylistFooter.SaveTheme(writer); _Theme.StaticPlaylistFooter.SaveTheme(writer);
_Theme.StaticPlaylistHeader.SaveTheme(writer); _Theme.StaticPlaylistHeader.SaveTheme(writer);
_Theme.StaticCover.SaveTheme(writer); _Theme.StaticCover.SaveTheme(writer);
_Theme.SelectSlideGameMode.SaveTheme(writer); _Theme.SelectSlideGameMode.SaveTheme(writer);
_Theme.ButtonPlaylistName.SaveTheme(writer);
_Theme.ButtonPlaylistClose.SaveTheme(writer); _Theme.ButtonPlaylistClose.SaveTheme(writer);
_Theme.ButtonPlaylistDelete.SaveTheme(writer); _Theme.ButtonPlaylistDelete.SaveTheme(writer);
_Theme.ButtonPlaylistSave.SaveTheme(writer); _Theme.ButtonPlaylistSave.SaveTheme(writer);
@@ -346,205 +401,261 @@ namespace Vocaluxe.Menu
CurrPlaylistElement = i; CurrPlaylistElement = i;
} }
switch (KeyEvent.Key) //Active EditMode ignores other input!
if (_EditMode == EEditMode.PlaylistName)
{ {
case Keys.Up: if (KeyEvent.KeyPressed && !Char.IsControl(KeyEvent.Unicode))
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) {
{ _Theme.ButtonPlaylistName.Text.Text = _Theme.ButtonPlaylistName.Text.Text + KeyEvent.Unicode;
_Interactions.HandleInput(KeyEvent); }
SetSelectionToLastEntry(); else if (KeyEvent.Key == Keys.Enter)
return true; {
} CPlaylists.Playlists[ActivePlaylistID].PlaylistName = _Theme.ButtonPlaylistName.Text.Text;
else if (CurrentPlaylistElement == 0 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT) CPlaylists.Playlists[ActivePlaylistID].SavePlaylist();
{ _EditMode = EEditMode.None;
CurrentPlaylistElement = -1; }
ActiveHover = CurrentPlaylistElement; else if (KeyEvent.Key == Keys.Escape)
_Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide); {
_Interactions.HandleInput(KeyEvent); _Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName;
_EditMode = EEditMode.None;
}
else if (KeyEvent.Key == Keys.Back || KeyEvent.Key == Keys.Delete)
{
if (_Theme.ButtonPlaylistName.Text.Text.Length > 0)
_Theme.ButtonPlaylistName.Text.Text = _Theme.ButtonPlaylistName.Text.Text.Remove(_Theme.ButtonPlaylistName.Text.Text.Length - 1);
}
int selection = GetSelectedSelectionNr(); }
if (selection != -1 && PlaylistElementContents.Count > selection) else
{
switch (KeyEvent.Key)
{
case Keys.Up:
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0)
{ {
CurrentPlaylistElement = selection; _Interactions.HandleInput(KeyEvent);
SetSelectionToLastEntry();
return true;
}
else if (CurrentPlaylistElement == 0 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT)
{
CurrentPlaylistElement = -1;
ActiveHover = CurrentPlaylistElement; ActiveHover = CurrentPlaylistElement;
} _Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide);
return true; _Interactions.HandleInput(KeyEvent);
}
else if (CurrentPlaylistElement - 1 > 0)
{
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr(); int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
if (selection != -1 && PlaylistElementContents.Count > selection) {
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement - 1 > 0)
{ {
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement - 1 == 0)
{
if (Offset > 0)
{
Offset--;
Update();
}
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
return false;
case Keys.Down:
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0)
{
_Interactions.HandleInput(KeyEvent);
SetSelectionToFirstEntry();
return true;
}
else if (CurrentPlaylistElement == PlaylistElements.Count -1 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT)
{
CurrentPlaylistElement = -1;
ActiveHover = CurrentPlaylistElement;
int sel = PlaylistElementContents.Count - 1;
if (sel > PlaylistElements.Count - 1)
sel = PlaylistElements.Count - 1;
_Interactions.SetInteractionToSelectSlide(PlaylistElements[sel].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement + 1 < PlaylistElements.Count - 1)
{
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement + 1 >= PlaylistElements.Count - 1 && CurrentPlaylistElement + Offset + 1 < PlaylistElementContents.Count)
{
if (PlaylistElementContents[CurrentPlaylistElement + Offset + 1].SongID != -1)
{
Offset++;
Update();
}
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
return false;
case Keys.Delete:
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[CurrentPlaylistElement].Content);
UpdatePlaylist();
if (CurrentPlaylistElement != -1)
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true; _Interactions.HandleInput(KeyEvent);
}
return false;
case Keys.Back: int selection = GetSelectedSelectionNr();
ClosePlaylist();
break;
case Keys.Enter: if (selection != -1 && PlaylistElementContents.Count > selection)
StartPlaylistSongs(); {
break; CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
case Keys.PageUp: }
if (CurrentPlaylistElement != -1) return true;
{ }
CPlaylists.Playlists[ActivePlaylistID].SongDown(CurrentPlaylistElement+Offset); else if (CurrentPlaylistElement - 1 == 0)
if (CurrentPlaylistElement - 1 > -1)
{ {
CurrentPlaylistElement--; if (Offset > 0)
{
Offset--;
Update();
}
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
return false;
case Keys.Down:
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0)
{
_Interactions.HandleInput(KeyEvent);
SetSelectionToFirstEntry();
return true;
}
else if (CurrentPlaylistElement == PlaylistElements.Count - 1 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT)
{
CurrentPlaylistElement = -1;
ActiveHover = CurrentPlaylistElement; ActiveHover = CurrentPlaylistElement;
}
else if(Offset > 0)
{
Offset--;
}
UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true;
}
break;
case Keys.PageDown: int sel = PlaylistElementContents.Count - 1;
if (CurrentPlaylistElement != -1) if (sel > PlaylistElements.Count - 1)
{ sel = PlaylistElements.Count - 1;
CPlaylists.Playlists[ActivePlaylistID].SongUp(CurrentPlaylistElement+Offset);
if (CurrentPlaylistElement + 1 < PlaylistElements.Count)
{
CurrentPlaylistElement++;
ActiveHover = CurrentPlaylistElement;
}
else if (Offset + CurrentPlaylistElement < PlaylistElementContents.Count)
{
Offset++;
}
UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true;
}
break;
case Keys.Left: _Interactions.SetInteractionToSelectSlide(PlaylistElements[sel].SelectSlide);
_Interactions.HandleInput(KeyEvent); _Interactions.HandleInput(KeyEvent);
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
UpdatePlaylist();
return true;
}
return false;
case Keys.Right: int selection = GetSelectedSelectionNr();
_Interactions.HandleInput(KeyEvent); if (selection != -1 && PlaylistElementContents.Count > selection)
if (CurrentPlaylistElement != -1) {
{ CurrentPlaylistElement = selection;
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection]; ActiveHover = CurrentPlaylistElement;
UpdatePlaylist(); }
return true; return true;
} }
return false; else if (CurrentPlaylistElement + 1 < PlaylistElements.Count - 1)
{
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement + 1 >= PlaylistElements.Count - 1 && CurrentPlaylistElement + Offset + 1 < PlaylistElementContents.Count)
{
if (PlaylistElementContents[CurrentPlaylistElement + Offset + 1].SongID != -1)
{
Offset++;
Update();
}
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
return false;
case Keys.Delete:
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[CurrentPlaylistElement].Content);
UpdatePlaylist();
if (CurrentPlaylistElement != -1)
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true;
}
return false;
case Keys.Back:
ClosePlaylist();
break;
case Keys.Enter:
if (KeyEvent.ModSHIFT)
StartPlaylistSongs();
else
{
if (_Theme.ButtonPlaylistClose.Selected)
{
ClosePlaylist();
}
else if (_Theme.ButtonPlaylistSing.Selected)
{
StartPlaylistSongs();
}
else if (_Theme.ButtonPlaylistSave.Selected)
{
CPlaylists.SavePlaylist(ActivePlaylistID);
}
else if (_Theme.ButtonPlaylistDelete.Selected)
{
CPlaylists.DeletePlaylist(ActivePlaylistID);
ClosePlaylist();
}
else if (_Theme.ButtonPlaylistName.Selected)
{
if (_EditMode != EEditMode.PlaylistName)
_EditMode = EEditMode.PlaylistName;
else
_EditMode = EEditMode.None;
}
}
break;
case Keys.PageUp:
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].SongDown(CurrentPlaylistElement + Offset);
if (CurrentPlaylistElement - 1 > -1)
{
CurrentPlaylistElement--;
ActiveHover = CurrentPlaylistElement;
}
else if (Offset > 0)
{
Offset--;
}
UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true;
}
break;
case Keys.PageDown:
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].SongUp(CurrentPlaylistElement + Offset);
if (CurrentPlaylistElement + 1 < PlaylistElements.Count)
{
CurrentPlaylistElement++;
ActiveHover = CurrentPlaylistElement;
}
else if (Offset + CurrentPlaylistElement < PlaylistElementContents.Count)
{
Offset++;
}
UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true;
}
break;
case Keys.Left:
_Interactions.HandleInput(KeyEvent);
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
UpdatePlaylist();
return true;
}
return false;
case Keys.Right:
_Interactions.HandleInput(KeyEvent);
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
UpdatePlaylist();
return true;
}
return false;
}
} }
} }
return false; return false;
@@ -606,106 +717,145 @@ namespace Vocaluxe.Menu
{ {
_Interactions.HandleMouse(MouseEvent); _Interactions.HandleMouse(MouseEvent);
if (CHelper.IsInBounds(Rect, MouseEvent) && Visible) if (CHelper.IsInBounds(CompleteRect, MouseEvent) && Visible)
{ {
if (MouseEvent.Wheel > 0) switch (_EditMode)
{ {
if (PlaylistElements.Count + Offset + MouseEvent.Wheel <= PlaylistElementContents.Count) //Normal mode
{ case EEditMode.None:
Offset += MouseEvent.Wheel; //Scroll
Update(); if (MouseEvent.Wheel > 0)
return true;
}
return true;
}
else if (MouseEvent.Wheel < 0)
{
if (Offset + MouseEvent.Wheel >= 0)
{
Offset += MouseEvent.Wheel;
Update();
return true;
}
}
if (MouseEvent.LB)
{
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
UpdatePlaylist();
return true;
}
}
for (int i = 0; i < PlaylistElements.Count; i++)
{
//Hover for playlist-element
if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent))
{
ActiveHover = i;
CurrentPlaylistElement = i;
}
//Delete Entry with RB
if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.RB && PlaylistElements[i].Content != -1)
{
CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[i].Content);
UpdatePlaylist();
return true;
}
//Change order with holding LB
else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && !changeOrder)
{
changeOrder = true;
CurrentPlaylistElement = i;
}
else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && changeOrder)
{
/*
if (PlaylistElements.Count < CurrentPlaylistElement + 1)
{ {
if (PlaylistElements.Count + Offset + MouseEvent.Wheel <= PlaylistElementContents.Count)
{
Offset += MouseEvent.Wheel;
Update();
return true;
}
return true;
} }
else if (PlaylistElementContents.Count < CurrentPlaylistElement + 1 + Offset) else if (MouseEvent.Wheel < 0)
{ {
if (Offset + MouseEvent.Wheel >= 0)
{
Offset += MouseEvent.Wheel;
Update();
return true;
}
} }
if (mevent.Y < PlaylistElements[CurrentPlaylistElement + 1].Background.Rect.Y) //LB actions
if (MouseEvent.LB)
{ {
if (CurrentPlaylistElement != -1)
{
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
UpdatePlaylist();
}
if (_Theme.ButtonPlaylistClose.Selected)
{
ClosePlaylist();
return true;
}
else if (_Theme.ButtonPlaylistSing.Selected)
{
StartPlaylistSongs();
return true;
}
else if (_Theme.ButtonPlaylistSave.Selected)
{
CPlaylists.SavePlaylist(ActivePlaylistID);
return true;
}
else if (_Theme.ButtonPlaylistDelete.Selected)
{
CPlaylists.DeletePlaylist(ActivePlaylistID);
ClosePlaylist();
return true;
}
else if (_Theme.ButtonPlaylistName.Selected)
{
_EditMode = EEditMode.PlaylistName;
return true;
}
} }
*/ //Actions according to playlist-element
} bool hover_set = false;
} for (int i = 0; i < PlaylistElements.Count; i++)
} {
else //Hover for playlist-element
{ if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent))
if (ActiveHover != -1) {
{ hover_set = true;
ActiveHover = -1; ActiveHover = i;
CurrentPlaylistElement = -1; CurrentPlaylistElement = i;
} }
}
if (ActivePlaylistID > -1) //Delete Entry with RB
{ if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.RB && PlaylistElements[i].Content != -1)
if (MouseEvent.LB) {
{ CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[i].Content);
if (_Theme.ButtonPlaylistClose.Selected) UpdatePlaylist();
{ return true;
ClosePlaylist(); }
} }
else if (_Theme.ButtonPlaylistSing.Selected) if(!hover_set)
{ {
StartPlaylistSongs(); ActiveHover = -1;
} CurrentPlaylistElement = -1;
else if (_Theme.ButtonPlaylistSave.Selected) }
{ break;
CPlaylists.SavePlaylist(ActivePlaylistID);
} case EEditMode.PlaylistName:
else if (_Theme.ButtonPlaylistDelete.Selected) _Interactions.SetInteractionToButton(_Theme.ButtonPlaylistName);
{ ActiveHover = -1;
CPlaylists.DeletePlaylist(ActivePlaylistID); CurrentPlaylistElement = -1;
ClosePlaylist(); if (MouseEvent.LB)
} {
if (_Theme.ButtonPlaylistName.Selected)
{
CPlaylists.Playlists[ActivePlaylistID].PlaylistName = _Theme.ButtonPlaylistName.Text.Text;
CPlaylists.Playlists[ActivePlaylistID].SavePlaylist();
_EditMode = EEditMode.None;
return true;
}
}
else if (MouseEvent.RB)
{
if (_Theme.ButtonPlaylistName.Selected)
{
_Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName;
_EditMode = EEditMode.None;
return true;
}
}
break;
case EEditMode.ChangeOrder:
//Actions according to playlist-element
for (int i = 0; i < PlaylistElements.Count; i++)
{
//Change order with holding LB
if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && _EditMode != EEditMode.ChangeOrder)
{
_EditMode = EEditMode.ChangeOrder;
CurrentPlaylistElement = i;
}
else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && _EditMode == EEditMode.ChangeOrder)
{
/*
if (PlaylistElements.Count < CurrentPlaylistElement + 1)
{
}
else if (PlaylistElementContents.Count < CurrentPlaylistElement + 1 + Offset)
{
}
if (mevent.Y < PlaylistElements[CurrentPlaylistElement + 1].Background.Rect.Y)
{
}
*/
}
}
break;
} }
} }
return false; return false;
@@ -738,7 +888,7 @@ namespace Vocaluxe.Menu
{ {
if (PlaylistID > -1 && PlaylistID < CPlaylists.NumPlaylists) if (PlaylistID > -1 && PlaylistID < CPlaylists.NumPlaylists)
{ {
_Theme.TextPlaylistHeader.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName; _Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName;
ActivePlaylistID = PlaylistID; ActivePlaylistID = PlaylistID;
PlaylistElementContents.Clear(); PlaylistElementContents.Clear();
for (int i = 0; i < CPlaylists.Playlists[ActivePlaylistID].Songs.Count; i++) for (int i = 0; i < CPlaylists.Playlists[ActivePlaylistID].Songs.Count; i++)