Merge branch 'release-0.3' into develop

Conflicts:
	Vocaluxe/Base/CConfig.cs
	Vocaluxe/Lib/Playlist/CPlaylistFile.cs
	Vocaluxe/Screens/CScreenSong.cs
	VocaluxeLib/CHelper.cs
	VocaluxeLib/Menu/CMenu.cs
	VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
	VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
This commit is contained in:
Flamefire committed 2013-10-19 00:42:56 +02:00
commit 73e4a9fa74
15 files changed
+240 -272

No files matched your search

+108 -107
View File
@@ -61,6 +61,15 @@ namespace VocaluxeLib.Menu.SongMenu
public CSongMenuTileBoard(int partyModeID)
: base(partyModeID) {}
protected override int _PreviewId
{
set
{
base._PreviewId = value;
_UpdatePreview();
}
}
public override int GetActualSelection()
{
return _ActualSelection;
@@ -77,8 +86,6 @@ namespace VocaluxeLib.Menu.SongMenu
_SpaceW = _Theme.SongMenuTileBoard.SpaceW;
_SpaceH = _Theme.SongMenuTileBoard.SpaceH;
_PendingTime = 100L;
_TileW = (int)((_Theme.SongMenuTileBoard.TileRect.W - _SpaceW * (_NumW - 1)) / _NumW);
_TileH = (int)((_Theme.SongMenuTileBoard.TileRect.H - _SpaceH * (_NumH - 1)) / _NumH);
@@ -99,9 +106,6 @@ namespace VocaluxeLib.Menu.SongMenu
_ScrollRect = new SRectF(0, 0, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH(), _Theme.SongMenuTileBoard.TileRect.Z);
_PreviewSelected = -1;
_Offset = 0;
_CoverBig = _Theme.SongMenuTileBoard.StaticCoverBig;
_TextBG = _Theme.SongMenuTileBoard.StaticTextBG;
_DuetIcon = _Theme.SongMenuTileBoard.StaticDuetIcon;
@@ -112,6 +116,9 @@ namespace VocaluxeLib.Menu.SongMenu
_Artist = _Theme.SongMenuTileBoard.TextArtist;
_Title = _Theme.SongMenuTileBoard.TextTitle;
_SongLength = _Theme.SongMenuTileBoard.TextSongLength;
_PreviewId = -1;
_Offset = 0;
}
public override void Update(SScreenSongOptions songOptions)
@@ -120,52 +127,102 @@ namespace VocaluxeLib.Menu.SongMenu
if (songOptions.Selection.RandomOnly)
{
_Locked = _PreviewSelected;
_ActualSelection = _PreviewSelected;
_Locked = _PreviewId;
_ActualSelection = _PreviewId;
for (int i = 0; i < _Tiles.Count; i++)
_Tiles[i].Selected = _Locked == i + _Offset;
}
}
private void _UpdatePreview()
{
//First hide everything so we just have to set what we actually want
_CoverBig.Texture = _CoverBigTexture;
_Artist.Text = String.Empty;
_Title.Text = String.Empty;
_SongLength.Text = String.Empty;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
//Check if nothing is selected (for preview)
if (_PreviewId < 0)
return;
if (CBase.Songs.IsInCategory())
{
CSong song = CBase.Songs.GetVisibleSong(_PreviewId);
//Check if we have a valid song (song still visible, index >=0 etc is checked by framework)
if (song == null)
{
//Display at least the category
CCategory category = CBase.Songs.GetCategory(CBase.Songs.GetCurrentCategoryIndex());
//Check if we have a valid category
if (category == null)
return;
_CoverBig.Texture = category.CoverTextureBig;
_Artist.Text = category.Name;
return;
}
_CoverBig.Texture = song.CoverTextureBig;
_Artist.Text = song.Artist;
_Title.Text = song.Title;
_DuetIcon.Visible = song.IsDuet;
_VideoIcon.Visible = song.VideoFileName != "";
_MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated;
_MedleyTagIcon.Visible = song.Medley.Source == EDataSource.Tag;
float time = CBase.Sound.GetLength(_SongStream);
if (Math.Abs(song.Finish) > 0.001)
time = song.Finish;
time -= song.Start;
var min = (int)Math.Floor(time / 60f);
var sec = (int)(time - min * 60f);
_SongLength.Text = min.ToString("00") + ":" + sec.ToString("00");
}
else
{
CCategory category = CBase.Songs.GetCategory(_PreviewId);
//Check if we have a valid category
if (category == null)
return;
_CoverBig.Texture = category.CoverTextureBig;
_Artist.Text = category.Name;
int num = category.GetNumSongsNotSung();
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
if (num != 1)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
_Title.Text = CBase.Language.Translate("TR_SCREENSONG_NUMSONGS").Replace("%v", num.ToString());
else
_Title.Text = CBase.Language.Translate("TR_SCREENSONG_NUMSONG").Replace("%v", num.ToString());
}
}
public override void OnShow()
{
if (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && CBase.Songs.GetNumCategories() > 0 && !CBase.Songs.IsInCategory())
_EnterCategory(0);
_ActualSelection = -1;
_Locked = -1;
_PreviewSelected = -1;
_PreviewId = -1;
_UpdateList(0, true);
//AfterCategoryChange();
SetSelectedSong(_ActSong);
_AfterCategoryChange();
int actcat = _PreviewSelected;
if ((CBase.Songs.GetNumCategories() > 0) && (actcat < 0))
if (_PreviewId < 0)
{
_CoverBig.Texture = CBase.Songs.GetCategory(0).CoverTextureBig;
_Artist.Text = CBase.Songs.GetCategory(0).Name;
_Title.Text = String.Empty;
_SongLength.Text = String.Empty;
_PreviewSelected = 0;
_PreviewId = 0;
_Locked = 0;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
}
if (CBase.Songs.GetNumSongsVisible() == 0 && CBase.Songs.GetSearchFilter() != "")
{
_CoverBig.Texture = _CoverBigTexture;
_Artist.Text = String.Empty;
_Title.Text = String.Empty;
_SongLength.Text = String.Empty;
_PreviewSelected = -1;
_PreviewId = -1;
_Locked = -1;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
}
}
@@ -185,14 +242,13 @@ namespace VocaluxeLib.Menu.SongMenu
if ((_Locked == -1 || !sel) &&
(keyEvent.Key != Keys.Escape && keyEvent.Key != Keys.Back && keyEvent.Key != Keys.PageUp && keyEvent.Key != Keys.PageDown))
{
if (_PreviewSelected > -1)
_Locked = _PreviewSelected;
if (_PreviewId > -1)
_Locked = _PreviewId;
else
{
_Locked = 0;
_ActualSelection = 0;
_PreviewSelected = 0;
_SetSelectedNow();
_PreviewId = 0;
_UpdateList(0, true);
}
}
@@ -203,10 +259,10 @@ namespace VocaluxeLib.Menu.SongMenu
case Keys.Enter:
if (!CBase.Songs.IsInCategory())
{
_EnterCategory(_PreviewSelected);
_EnterCategory(_PreviewId);
keyEvent.Handled = true;
}
else if (_ActualSelection > -1 && _PreviewSelected >= 0)
else if (_ActualSelection > -1 && _PreviewId >= 0)
_Locked = _ActualSelection;
break;
@@ -301,7 +357,7 @@ namespace VocaluxeLib.Menu.SongMenu
if (!keyEvent.Handled)
{
_PreviewSelected = _Locked;
_PreviewId = _Locked;
_ActualSelection = _Locked;
for (int i = 0; i < _Tiles.Count; i++)
@@ -326,11 +382,11 @@ namespace VocaluxeLib.Menu.SongMenu
{
if (mouseEvent.LB || !CBase.Songs.IsInCategory())
{
if (_PreviewSelected == i + _Offset)
_Locked = _PreviewSelected;
if (_PreviewId == i + _Offset)
_Locked = _PreviewId;
else
{
_PreviewSelected = i + _Offset;
_PreviewId = i + _Offset;
_Locked = -1;
}
}
@@ -361,10 +417,10 @@ namespace VocaluxeLib.Menu.SongMenu
}
if (mouseEvent.RB && CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && !songOptions.Selection.PartyMode)
CBase.Graphics.FadeTo(EScreens.ScreenMain);
else if (_PreviewSelected != -1 && mouseEvent.LB && CBase.Songs.GetCurrentCategoryIndex() != -1 && !songOptions.Selection.PartyMode)
else if (_PreviewId != -1 && mouseEvent.LB && CBase.Songs.GetCurrentCategoryIndex() != -1 && !songOptions.Selection.PartyMode)
{
if (CHelper.IsInBounds(_CoverBig.Rect, mouseEvent) || CHelper.IsInBounds(_TextBG.Rect, mouseEvent))
_Locked = _PreviewSelected;
_Locked = _PreviewId;
}
else if (mouseEvent.LB && (!CBase.Songs.IsInCategory()))
{
@@ -372,7 +428,7 @@ namespace VocaluxeLib.Menu.SongMenu
{
if (tile.Texture != _CoverTexture && CHelper.IsInBounds(tile.Rect, mouseEvent))
{
_EnterCategory(_PreviewSelected);
_EnterCategory(_PreviewId);
mouseEvent.Handled = true;
return;
}
@@ -392,61 +448,8 @@ namespace VocaluxeLib.Menu.SongMenu
tile.Draw(1.2f, tile.Rect.Z - 0.1f, EAspect.Crop);
else
{
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
if (tile.Texture != _CoverTexture)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
tile.Draw(1f, tile.Rect.Z, EAspect.Crop);
else
tile.Draw(1f, tile.Rect.Z, EAspect.Stretch);
}
}
if (CBase.Songs.IsInCategory())
{
int actsong = _PreviewSelected;
if ((CBase.Songs.GetNumSongsVisible() > actsong) && (actsong >= 0))
{
CSong song = CBase.Songs.GetVisibleSong(actsong);
_CoverBig.Texture = song.CoverTextureBig;
_Artist.Text = song.Artist;
_Title.Text = song.Title;
_DuetIcon.Visible = song.IsDuet;
_VideoIcon.Visible = song.VideoFileName != "";
_MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated;
_MedleyTagIcon.Visible = song.Medley.Source == EDataSource.Tag;
float time = CBase.Sound.GetLength(_SongStream);
if (Math.Abs(song.Finish) > 0.001)
time = song.Finish;
time -= song.Start;
var min = (int)Math.Floor(time / 60f);
var sec = (int)(time - min * 60f);
_SongLength.Text = min.ToString("00") + ":" + sec.ToString("00");
}
}
else
{
int actcat = _PreviewSelected;
if ((CBase.Songs.GetNumCategories() > actcat) && (actcat >= 0))
{
_CoverBig.Texture = CBase.Songs.GetCategory(actcat).CoverTextureBig;
_Artist.Text = CBase.Songs.GetCategory(actcat).Name;
int num = CBase.Songs.NumSongsInCategory(actcat);
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
if (num != 1)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
_Title.Text = CBase.Language.Translate("TR_SCREENSONG_NUMSONGS").Replace("%v", num.ToString());
else
_Title.Text = CBase.Language.Translate("TR_SCREENSONG_NUMSONG").Replace("%v", num.ToString());
_SongLength.Text = String.Empty;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
EAspect aspect = (tile.Texture != _CoverTexture) ? EAspect.Crop : EAspect.Stretch;
tile.Draw(1f, tile.Rect.Z, aspect);
}
}
@@ -508,14 +511,13 @@ namespace VocaluxeLib.Menu.SongMenu
if (_Locked == -1 || !sel)
{
if (_PreviewSelected > -1)
_Locked = _PreviewSelected;
if (_PreviewId > -1)
_Locked = _PreviewId;
else
{
_Locked = 0;
_ActualSelection = 0;
_PreviewSelected = 0;
_SetSelectedNow();
_PreviewId = 0;
_UpdateList(0, true);
}
}
@@ -523,13 +525,12 @@ namespace VocaluxeLib.Menu.SongMenu
foreach (CStatic tile in _Tiles)
tile.Selected = false;
_PreviewSelected = itemNr;
_SetSelectedNow();
_PreviewId = itemNr;
_Locked = itemNr;
_UpdateList(true);
_PreviewSelected = _Locked;
_PreviewId = _Locked;
_ActualSelection = _Locked;
if (_Locked - _Offset >= 0)
@@ -556,7 +557,7 @@ namespace VocaluxeLib.Menu.SongMenu
{
base._EnterCategory(cat);
_PreviewSelected = 0;
_PreviewId = 0;
_Locked = -1;
_ActualSelection = 0;
_AfterCategoryChange();
@@ -567,7 +568,7 @@ namespace VocaluxeLib.Menu.SongMenu
{
base._ShowCategories();
_PreviewSelected = 0;
_PreviewId = 0;
_Locked = -1;
_ActualSelection = 0;
_AfterCategoryChange();
@@ -594,8 +595,8 @@ namespace VocaluxeLib.Menu.SongMenu
private void _AfterCategoryChange()
{
_SetSelectedNow();
_SelectSong(_PreviewSelected);
_SelectSong(_PreviewId);
_UpdatePreview();
foreach (CStatic tile in _Tiles)
tile.Selected = false;