Files
lazarus-ccr/applications/cactusjukebox/source/streamcol.pas

137 lines
2.7 KiB
ObjectPascal
Raw Normal View History

Unit streamcol;
{$mode objfpc}{$H+}
Interface
Uses
Classes, SysUtils;
Type
{ TStreamInfoItemClass }
TStreamInfoItemClass = Class
Private
FURL, FName, FDescription: string;
Public
constructor create(URL, name: String);
property Name: string read FName write FName;
property URL: string read FURL write FURL;
property Description: string read FDescription write FDescription;
End;
{ TStreamCollectionClass }
TStreamCollectionClass = Class(TStringList)
Private
FFilename: string;
Public
constructor create;
destructor destroy;
Function add(URL, name: String): integer;
Procedure Delete(index: integer);
override;
Function SaveToFile(filename: String): boolean;
Function LoadFromFile(filename: String): boolean;
End;
Var StreamCollection: TStreamCollectionClass;
Implementation
{ TStreamCollectionClass }
constructor TStreamCollectionClass.create;
Begin
Inherited create;
End;
destructor TStreamCollectionClass.destroy;
Var i: integer;
Begin
For i:= 0 To Count-1 Do
Objects[i].Free;
End;
Function TStreamCollectionClass.add(URL, name: String): integer;
Begin
result := Inherited AddObject(name, TStreamInfoItemClass.create(URL, name));
End;
Procedure TStreamCollectionClass.Delete(index: integer);
Begin
Objects[index].Free;
inherited Delete(index);
End;
Function TStreamCollectionClass.SaveToFile(filename: String): boolean;
Var sfile: textfile;
i: integer;
Begin
Try
system.Assign(sfile, filename);
rewrite(sfile);
writeln(sfile, 'This file is automaticly created by Cactus Jukebox');
writeln(sfile, 'NEVER edit by hand!');
writeln(sfile, '');
For i:= 0 To Count-1 Do
Begin
writeln(sfile, TStreamInfoItemClass(Objects[i]).Name);
WriteLn(sfile, TStreamInfoItemClass(Objects[i]).URL);
WriteLn(sfile, TStreamInfoItemClass(Objects[i]).Description);
End;
close(sfile);
result := true;
Except
result := false;
End;
End;
Function TStreamCollectionClass.LoadFromFile(filename: String): boolean;
Var sfile: textfile;
tmps1, tmps2: string;
i: integer;
Begin
Try
system.Assign(sfile, filename);
Reset(sfile);
ReadLn(sfile, tmps1);
ReadLn(sfile, tmps1);
ReadLn(sfile, tmps1);
While Not EOF(sfile) Do
Begin
ReadLn(sfile, tmps1);
ReadLn(sfile, tmps2);
i := add(tmps2, tmps1);
// ReadLn(sfile, TStreamInfoItemClass(Objects[i]).Description);
//TODO: reactivate stream collection loading
End;
result:=true;
Except
writeln('ERROR reading stream collection');
result:=false;
End;
End;
{ TStreamInfoItemClass }
constructor TStreamInfoItemClass.create(URL, name: String);
Begin
FName := name;
FURL := URL;
End;
End.