source: CoolAudio/Demo/FormPlaylist.pas

Last change on this file was 569, checked in by chronos, 2 months ago
  • Modified: Removed U prefix from CoolAudio unit names.
File size: 4.8 KB
Line 
1unit FormPlaylist;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
7 ComCtrls, Menus, ActnList, Playlist;
8
9type
10
11 { TFormPlaylist }
12
13 TFormPlaylist = class(TForm)
14 AClearAll: TAction;
15 AItemPlay: TAction;
16 AItemDelete: TAction;
17 AAddFile: TAction;
18 AAddDirectory: TAction;
19 ActionList1: TActionList;
20 Button1: TButton;
21 ButtonAddFile: TButton;
22 ButtonAddFolder: TButton;
23 ButtonClear: TButton;
24 ButtonDelete: TButton;
25 CheckBoxRandom: TCheckBox;
26 CheckBoxRepeat: TCheckBox;
27 ListView1: TListView;
28 MenuItem1: TMenuItem;
29 MenuItem2: TMenuItem;
30 MenuItem3: TMenuItem;
31 MenuItem4: TMenuItem;
32 MenuItem5: TMenuItem;
33 OpenDialog1: TOpenDialog;
34 PopupMenu1: TPopupMenu;
35 procedure AAddDirectoryExecute(Sender: TObject);
36 procedure AAddFileExecute(Sender: TObject);
37 procedure AClearAllExecute(Sender: TObject);
38 procedure AItemDeleteExecute(Sender: TObject);
39 procedure AItemPlayExecute(Sender: TObject);
40 procedure FormCreate(Sender: TObject);
41 procedure FormDestroy(Sender: TObject);
42 procedure FormShow(Sender: TObject);
43 procedure ListView1Click(Sender: TObject);
44 procedure ListView1Data(Sender: TObject; Item: TListItem);
45 procedure ListView1DblClick(Sender: TObject);
46 procedure ListView1KeyPress(Sender: TObject; var Key: char);
47 public
48 procedure ReloadList;
49 procedure UpdateInterface;
50 end;
51
52var
53 FormPlaylist: TFormPlaylist;
54
55
56implementation
57
58uses
59 AudioSystem, FormMain;
60
61resourcestring
62 SSelectDirectory = 'Select directory';
63
64{$R *.lfm}
65
66{ TFormPlaylist }
67
68procedure TFormPlaylist.FormCreate(Sender: TObject);
69begin
70end;
71
72procedure TFormPlaylist.AClearAllExecute(Sender: TObject);
73begin
74 FormMain.FormMain.PlayList.Items.Clear;
75 ReloadList;
76end;
77
78procedure TFormPlaylist.AItemDeleteExecute(Sender: TObject);
79var
80 I: Integer;
81begin
82 with FormMain.FormMain.PlayList, Items do begin
83 for I := Count - 1 downto 0 do
84 if ListView1.Items[I].Selected then Delete(I);
85 if Count > 0 then ListView1.Items[0].Selected := True;
86 end;
87 ReloadList;
88end;
89
90procedure TFormPlaylist.AItemPlayExecute(Sender: TObject);
91begin
92 FormMain.FormMain.PlayList.CurrentIndex := ListView1.Selected.Index;
93 FormMain.FormMain.PlayList.Play;
94end;
95
96procedure TFormPlaylist.AAddDirectoryExecute(Sender: TObject);
97var
98 Dir: string;
99 sr: TSearchRec;
100 Ext: string;
101 NewItem: TPlaylistItem;
102begin
103 if SelectDirectory(SSelectDirectory, '', Dir) then begin
104 if FindFirst(Dir + DirectorySeparator + '*.*', $2f, sr) = 0 then begin
105 repeat
106 Ext := ExtractFileExt(Dir + DirectorySeparator + sr.Name);
107 if (Ext = WavFileExt) then begin
108 NewItem := TPlaylistItem.Create;
109 NewItem.FileName := Dir + DirectorySeparator + sr.Name;
110 FormMain.FormMain.PlayList.Items.Add(NewItem);
111 end;
112 until FindNext(sr) <> 0;
113 FindClose(sr);
114 end;
115 ReloadList;
116 end;
117end;
118
119procedure TFormPlaylist.AAddFileExecute(Sender: TObject);
120begin
121 if OpenDialog1.Execute then begin
122 FormMain.FormMain.PlayList.AddFile(OpenDialog1.FileName);
123 ReloadList;
124 end;
125end;
126
127procedure TFormPlaylist.FormDestroy(Sender: TObject);
128begin
129end;
130
131procedure TFormPlaylist.FormShow(Sender: TObject);
132begin
133 ReloadList;
134end;
135
136procedure TFormPlaylist.ListView1Click(Sender: TObject);
137begin
138 UpdateInterface;
139end;
140
141procedure TFormPlaylist.ListView1Data(Sender: TObject; Item: TListItem);
142begin
143 if (Item.Index >= 0) and (Item.Index < FormMain.FormMain.PlayList.Items.Count) then
144 with TPlaylistItem(FormMain.FormMain.PlayList.Items[Item.Index]) do begin
145 Item.Caption := FileName;
146 Item.Data := FormMain.FormMain.PlayList.Items[Item.Index];
147 end;
148end;
149
150procedure TFormPlaylist.ListView1DblClick(Sender: TObject);
151begin
152 AItemPlay.Execute;
153end;
154
155procedure TFormPlaylist.ListView1KeyPress(Sender: TObject; var Key: char);
156begin
157 if Key = #13 then AItemPlay.Execute;
158end;
159
160procedure TFormPlaylist.ReloadList;
161begin
162 ListView1.Items.Count := FormMain.FormMain.PlayList.Items.Count;
163 ListView1.Refresh;
164 ListView1.Selected := nil;
165 if (FormMain.FormMain.PlayList.CurrentIndex >= 0) and
166 (FormMain.FormMain.PlayList.CurrentIndex < ListView1.Items.Count) then
167 ListView1.Items[FormMain.FormMain.PlayList.CurrentIndex].Selected := True;
168 UpdateInterface;
169end;
170
171procedure TFormPlaylist.UpdateInterface;
172begin
173 AItemDelete.Enabled := Assigned(ListView1.Selected);
174 AItemPlay.Enabled := Assigned(ListView1.Selected);
175 AClearAll.Enabled := ListView1.Items.Count > 0;
176 CheckBoxRandom.Checked := FormMain.FormMain.PlayList.RandomOrder;
177 CheckBoxRepeat.Checked := FormMain.FormMain.PlayList.RepeatInfinitely;
178end;
179
180end.
181
Note: See TracBrowser for help on using the repository browser.