aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Classes
diff options
context:
space:
mode:
Diffstat (limited to 'Game/Code/Classes')
-rw-r--r--Game/Code/Classes/USongs.pas199
1 files changed, 98 insertions, 101 deletions
diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas
index 64fd3440..a1ab86f9 100644
--- a/Game/Code/Classes/USongs.pas
+++ b/Game/Code/Classes/USongs.pas
@@ -9,9 +9,9 @@ interface
{$I switches.inc}
{$IFDEF DARWIN}
- {$IFDEF DEBUG}
- {$DEFINE USE_PSEUDO_THREAD}
- {$ENDIF}
+ {$IFDEF DEBUG}
+ {$DEFINE USE_PSEUDO_THREAD}
+ {$ENDIF}
{$ENDIF}
uses
@@ -53,14 +53,13 @@ type
Length: string;
end;
- {$IFDEF USE_PSEUDO_THREAD}
- TSongs = class( TPseudoThread )
- {$ELSE}
- TSongs = class( TThread )
- {$ENDIF}
+ {$IFDEF USE_PSEUDO_THREAD}
+ TSongs = class( TPseudoThread )
+ {$ELSE}
+ TSongs = class( TThread )
+ {$ENDIF}
private
- fNotify ,
- fWatch : longint;
+ fNotify, fWatch : longint;
fParseSongDirectory : boolean;
fProcessing : boolean;
{$ifdef MSWINDOWS}
@@ -71,7 +70,7 @@ type
protected
procedure Execute; override;
public
- SongList : TList; // array of songs
+ SongList : TList; // array of songs
Selected : integer; // selected song index
constructor create();
destructor destroy(); override;
@@ -104,25 +103,25 @@ type
function VisibleSongs: integer; // returns number of visible songs (for tabs)
function VisibleIndex(Index: integer): integer; // returns visible song index (skips invisible)
- function SetFilter(FilterStr: String; const fType: Byte): Cardinal;
+ function SetFilter(FilterStr: string; const fType: Byte): Cardinal;
end;
var
- Songs: TSongs; // all songs
+ Songs: TSongs; // all songs
CatSongs: TCatSongs; // categorized songs
const
- IN_ACCESS = $00000001; //* File was accessed */
- IN_MODIFY = $00000002; //* File was modified */
- IN_ATTRIB = $00000004; //* Metadata changed */
- IN_CLOSE_WRITE = $00000008; //* Writtable file was closed */
- IN_CLOSE_NOWRITE = $00000010; //* Unwrittable file closed */
- IN_OPEN = $00000020; //* File was opened */
- IN_MOVED_FROM = $00000040; //* File was moved from X */
- IN_MOVED_TO = $00000080; //* File was moved to Y */
- IN_CREATE = $00000100; //* Subfile was created */
- IN_DELETE = $00000200; //* Subfile was deleted */
- IN_DELETE_SELF = $00000400; //* Self was deleted */
+ IN_ACCESS = $00000001; //* File was accessed */
+ IN_MODIFY = $00000002; //* File was modified */
+ IN_ATTRIB = $00000004; //* Metadata changed */
+ IN_CLOSE_WRITE = $00000008; //* Writtable file was closed */
+ IN_CLOSE_NOWRITE = $00000010; //* Unwrittable file closed */
+ IN_OPEN = $00000020; //* File was opened */
+ IN_MOVED_FROM = $00000040; //* File was moved from X */
+ IN_MOVED_TO = $00000080; //* File was moved to Y */
+ IN_CREATE = $00000100; //* Subfile was created */
+ IN_DELETE = $00000200; //* Subfile was deleted */
+ IN_DELETE_SELF = $00000400; //* Self was deleted */
implementation
@@ -134,13 +133,6 @@ uses StrUtils,
UMain,
UIni;
-{$IFDEF DARWIN}
-function AnsiContainsText(const AText, ASubText: string): Boolean;
-begin
- Result := AnsiPos(AnsiUppercase(ASubText), AnsiUppercase(AText)) > 0;
-end;
-{$ENDIF}
-
constructor TSongs.create();
begin
// do not start thread BEFORE initialization (suspended = true)
@@ -246,65 +238,67 @@ end;
procedure TSongs.BrowseTXTFiles(Dir: widestring);
var
- i : Integer;
+ i : integer;
Files : TDirectoryEntryArray;
lSong : TSong;
begin
- Files := Platform.DirectoryFindFiles( Dir, '.txt', true);
-
- for i := 0 to Length(Files)-1 do
- begin
- if Files[i].IsDirectory then
- begin
- BrowseTXTFiles( Dir + Files[i].Name + PathDelim ); //Recursive Call
- end
- else
- begin
- lSong := TSong.create( Dir + Files[i].Name );
-
- if NOT lSong.Analyse then
- begin
- Log.LogError('AnalyseFile failed for "' + Files[i].Name + '".');
- freeandnil( lSong );
- end
- else SongList.add( lSong );
-
- end;
- end;
- SetLength( Files, 0);
+ Files := Platform.DirectoryFindFiles( Dir, '.txt', true);
+
+ for i := 0 to Length(Files)-1 do
+ begin
+ if Files[i].IsDirectory then
+ begin
+ BrowseTXTFiles( Dir + Files[i].Name + PathDelim ); //Recursive Call
+ end
+ else
+ begin
+ lSong := TSong.create( Dir + Files[i].Name );
+
+ if lSong.Analyse then
+ SongList.add( lSong )
+ else
+ begin
+ Log.LogError('AnalyseFile failed for "' + Files[i].Name + '".');
+ freeandnil( lSong );
+ end;
+
+ end;
+ end;
+ SetLength( Files, 0);
end;
procedure TSongs.BrowseXMLFiles(Dir: widestring);
var
- i : Integer;
+ i : integer;
Files : TDirectoryEntryArray;
lSong : TSong;
begin
- Files := Platform.DirectoryFindFiles( Dir, '.xml', true);
-
- for i := 0 to Length(Files)-1 do
- begin
- if Files[i].IsDirectory then
- begin
- BrowseXMLFiles( Dir + Files[i].Name + PathDelim ); //Recursive Call
- end
- else
- begin
- lSong := TSong.create( Dir + Files[i].Name );
-
- if NOT lSong.AnalyseXML then
- begin
- Log.LogError('AnalyseFile failed for "' + Files[i].Name + '".');
- freeandnil( lSong );
- end
- else SongList.add( lSong );
-
- end;
- end;
- SetLength( Files, 0);
+ Files := Platform.DirectoryFindFiles( Dir, '.xml', true);
+
+ for i := 0 to Length(Files)-1 do
+ begin
+ if Files[i].IsDirectory then
+ begin
+ BrowseXMLFiles( Dir + Files[i].Name + PathDelim ); //Recursive Call
+ end
+ else
+ begin
+ lSong := TSong.create( Dir + Files[i].Name );
+
+ if lSong.AnalyseXML then
+ SongList.add( lSong )
+ else
+ begin
+ Log.LogError('AnalyseFile failed for "' + Files[i].Name + '".');
+ freeandnil( lSong );
+ end;
+
+ end;
+ end;
+ SetLength( Files, 0);
end;
@@ -378,7 +372,8 @@ var
SR: TSearchRec; // for parsing song directory
begin
Result := '';
- if FindFirst(Dir + Mask, faDirectory, SR) = 0 then begin
+ if FindFirst(Dir + Mask, faDirectory, SR) = 0 then
+ begin
Result := SR.Name;
end; // if
FindClose(SR);
@@ -602,6 +597,7 @@ begin
CurSong.Visible := true
else if (Ini.Tabs = 1) then
CurSong.Visible := false;
+
{
if (Ini.Tabs = 1) and (Order = 1) then
begin
@@ -632,10 +628,14 @@ begin
CatNumShow := Index;
for S := 0 to high(CatSongs.Song) do
begin
+{
if (CatSongs.Song[S].OrderNum = Index) and (not CatSongs.Song[S].Main) then
CatSongs.Song[S].Visible := true
else
CatSongs.Song[S].Visible := false;
+}
+// KMS: This should be the same, but who knows :-)
+ CatSongs.Song[S].Visible := ( (CatSongs.Song[S].OrderNum = Index) and (not CatSongs.Song[S].Main) );
end;
end;
@@ -643,7 +643,8 @@ procedure TCatSongs.HideCategory(Index: integer); // hides all songs in category
var
S: integer; // song
begin
- for S := 0 to high(CatSongs.Song) do begin
+ for S := 0 to high(CatSongs.Song) do
+ begin
if not CatSongs.Song[S].Main then
CatSongs.Song[S].Visible := false // hides all at now
end;
@@ -658,7 +659,8 @@ begin
begin
ShowCategory(Num);
end
- else begin
+ else
+ begin
ShowCategoryList;
end;
end;
@@ -668,13 +670,9 @@ procedure TCatSongs.ShowCategoryList;
var
Num, S: integer;
begin
- //Hide All Songs Show All Cats
- for S := 0 to high(CatSongs.Song) do begin
- if CatSongs.Song[S].Main then
- CatSongs.Song[S].Visible := true
- else
- CatSongs.Song[S].Visible := false
- end;
+ // Hide All Songs Show All Cats
+ for S := 0 to high(CatSongs.Song) do
+ CatSongs.Song[S].Visible := CatSongs.Song[S].Main;
CatSongs.Selected := CatNumShow; //Show last shown Category
CatNumShow := -1;
end;
@@ -683,7 +681,7 @@ end;
//Wrong song selected when tabs on bug
function TCatSongs.FindNextVisible(SearchFrom:integer): integer;//Find next Visible Song
var
- I: Integer;
+ I: integer;
begin
Result := -1;
I := SearchFrom + 1;
@@ -716,17 +714,18 @@ begin
if CatSongs.Song[S].Visible = true then Inc(Result);
end;
-function TCatSongs.SetFilter(FilterStr: String; const fType: Byte): Cardinal;
+function TCatSongs.SetFilter(FilterStr: string; const fType: Byte): Cardinal;
var
- I, J: Integer;
- cString: String;
- SearchStr: array of String;
+ I, J: integer;
+ cString: string;
+ SearchStr: array of string;
begin
{fType: 0: All
1: Title
2: Artist}
FilterStr := Trim(FilterStr);
- if FilterStr<>'' then begin
+ if FilterStr<>'' then
+ begin
Result := 0;
//Create Search Array
SetLength(SearchStr, 1);
@@ -745,7 +744,8 @@ begin
if (FilterStr <> ' ') and (FilterStr <> '') then
SearchStr[High(SearchStr)] := FilterStr;
- for I:=0 to High(Song) do begin
+ for I:=0 to High(Song) do
+ begin
if not Song[i].Main then
begin
case fType of
@@ -767,8 +767,10 @@ begin
end;
CatNumShow := -2;
end
- else begin
- for i:=0 to High(Song) do begin
+ else
+ begin
+ for i:=0 to High(Song) do
+ begin
Song[i].Visible := (Ini.Tabs=1) = Song[i].Main;
CatNumShow := -1;
end;
@@ -776,11 +778,6 @@ begin
end;
end;
-
-
// -----------------------------------------------------------------------------
-
-
-
end.