1 | unit FormPlaylist;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
---|
7 | ComCtrls, Menus, ActnList, Playlist;
|
---|
8 |
|
---|
9 | type
|
---|
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 |
|
---|
52 | var
|
---|
53 | FormPlaylist: TFormPlaylist;
|
---|
54 |
|
---|
55 |
|
---|
56 | implementation
|
---|
57 |
|
---|
58 | uses
|
---|
59 | AudioSystem, FormMain;
|
---|
60 |
|
---|
61 | resourcestring
|
---|
62 | SSelectDirectory = 'Select directory';
|
---|
63 |
|
---|
64 | {$R *.lfm}
|
---|
65 |
|
---|
66 | { TFormPlaylist }
|
---|
67 |
|
---|
68 | procedure TFormPlaylist.FormCreate(Sender: TObject);
|
---|
69 | begin
|
---|
70 | end;
|
---|
71 |
|
---|
72 | procedure TFormPlaylist.AClearAllExecute(Sender: TObject);
|
---|
73 | begin
|
---|
74 | FormMain.FormMain.PlayList.Items.Clear;
|
---|
75 | ReloadList;
|
---|
76 | end;
|
---|
77 |
|
---|
78 | procedure TFormPlaylist.AItemDeleteExecute(Sender: TObject);
|
---|
79 | var
|
---|
80 | I: Integer;
|
---|
81 | begin
|
---|
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;
|
---|
88 | end;
|
---|
89 |
|
---|
90 | procedure TFormPlaylist.AItemPlayExecute(Sender: TObject);
|
---|
91 | begin
|
---|
92 | FormMain.FormMain.PlayList.CurrentIndex := ListView1.Selected.Index;
|
---|
93 | FormMain.FormMain.PlayList.Play;
|
---|
94 | end;
|
---|
95 |
|
---|
96 | procedure TFormPlaylist.AAddDirectoryExecute(Sender: TObject);
|
---|
97 | var
|
---|
98 | Dir: string;
|
---|
99 | sr: TSearchRec;
|
---|
100 | Ext: string;
|
---|
101 | NewItem: TPlaylistItem;
|
---|
102 | begin
|
---|
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;
|
---|
117 | end;
|
---|
118 |
|
---|
119 | procedure TFormPlaylist.AAddFileExecute(Sender: TObject);
|
---|
120 | begin
|
---|
121 | if OpenDialog1.Execute then begin
|
---|
122 | FormMain.FormMain.PlayList.AddFile(OpenDialog1.FileName);
|
---|
123 | ReloadList;
|
---|
124 | end;
|
---|
125 | end;
|
---|
126 |
|
---|
127 | procedure TFormPlaylist.FormDestroy(Sender: TObject);
|
---|
128 | begin
|
---|
129 | end;
|
---|
130 |
|
---|
131 | procedure TFormPlaylist.FormShow(Sender: TObject);
|
---|
132 | begin
|
---|
133 | ReloadList;
|
---|
134 | end;
|
---|
135 |
|
---|
136 | procedure TFormPlaylist.ListView1Click(Sender: TObject);
|
---|
137 | begin
|
---|
138 | UpdateInterface;
|
---|
139 | end;
|
---|
140 |
|
---|
141 | procedure TFormPlaylist.ListView1Data(Sender: TObject; Item: TListItem);
|
---|
142 | begin
|
---|
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;
|
---|
148 | end;
|
---|
149 |
|
---|
150 | procedure TFormPlaylist.ListView1DblClick(Sender: TObject);
|
---|
151 | begin
|
---|
152 | AItemPlay.Execute;
|
---|
153 | end;
|
---|
154 |
|
---|
155 | procedure TFormPlaylist.ListView1KeyPress(Sender: TObject; var Key: char);
|
---|
156 | begin
|
---|
157 | if Key = #13 then AItemPlay.Execute;
|
---|
158 | end;
|
---|
159 |
|
---|
160 | procedure TFormPlaylist.ReloadList;
|
---|
161 | begin
|
---|
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;
|
---|
169 | end;
|
---|
170 |
|
---|
171 | procedure TFormPlaylist.UpdateInterface;
|
---|
172 | begin
|
---|
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;
|
---|
178 | end;
|
---|
179 |
|
---|
180 | end.
|
---|
181 |
|
---|