Subversion Repositories Kolibri OS

Rev

Rev 7189 | Rev 7196 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7189 Rev 7192
Line 30... Line 30...
30
 
30
 
31
//simple open dialog data
31
//simple open dialog data
32
char default_dir[] = "/rd/1";
32
char default_dir[] = "/rd/1";
Line 33... Line 33...
33
od_filter filter2 = { 15, "MP3\0WAV\0XM\0\0" };
33
od_filter filter2 = { 15, "MP3\0WAV\0XM\0\0" };
Line 34... Line 34...
34
 
34
 
35
#define ABOUT_MESSAGE "Pixie Player v2.62
35
#define ABOUT_MESSAGE "Pixie Player v2.7
Line 36... Line 36...
36
 
36
 
37
A tiny music folder player.
37
A tiny music folder player.
38
Supports MP3, WAV, XM audio file formats.
38
Supports MP3, WAV, XM audio file formats.
39
 
39
 
40
Controls:
40
Controls:
41
Open file: O key
41
Open file: O key
-
 
42
Play/Stop: Space or P key
-
 
43
Start playing selected file: Enter
42
Play/Stop: Space or P key
44
Goto next/previous track: Ctrl + Left/Right
Line 43... Line 45...
43
Start playing selected file: Enter
45
Change sound volume: Left/Right key
Line 44... Line 46...
44
Goto next/previous track: Ctrl + Left/Right
46
Repeat: R
45
Change sound volume: Left/Right key
47
Shuffle: S
Line 93... Line 95...
93
	PLAYBACK_MODE_PLAYING
95
	PLAYBACK_MODE_PLAYING
94
};
96
};
Line 95... Line 97...
95
 
97
 
Line -... Line 98...
-
 
98
collection music_col;
-
 
99
 
96
collection music_col;
100
#define LAST_FOLDER_EXISTS 1
97
 
101
 
98
//===================================================//
102
//===================================================//
99
//                                                   //
103
//                                                   //
100
//                       CODE                        //
104
//                       CODE                        //
Line 118... Line 122...
118
{
122
{
119
	int tempstr;
123
	int tempstr;
120
	tempstr = abspath("pixie.ini");
124
	tempstr = abspath("pixie.ini");
121
	strcpy(#pixie_ini_path, tempstr);
125
	strcpy(#pixie_ini_path, tempstr);
122
	list.SetFont(8, 16, 13);
126
	list.SetFont(8, 16, 13);
123
	if (!param) notify("'Pixie Player\nPress O key to open MP3 file' -St");
-
 
124
	LoadLibraries();
127
	LoadLibraries();
125
	LoadIniConfig();
128
	LoadIniConfig();
-
 
129
	if (work_folder) param=LAST_FOLDER_EXISTS;
-
 
130
	if (!param) notify("'Pixie Player\nPress O key to open MP3/WAV/XM file' -St");
126
	kfont.init(DEFAULT_FONT);	
131
	kfont.init(DEFAULT_FONT);	
127
	SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
132
	SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
128
	loop()
133
	loop()
129
	{
134
	{
130
	  WaitEventTimeout(10);
135
	  WaitEventTimeout(10);
Line 157... Line 162...
157
				case BUTTON_WINDOW_REDUCE: EventChangeWindowMode(); break;
162
				case BUTTON_WINDOW_REDUCE: EventChangeWindowMode(); break;
158
				case BUTTON_PLAYBACK_PREV: EventPlaybackPrevious();	break;
163
				case BUTTON_PLAYBACK_PREV: EventPlaybackPrevious();	break;
159
				case BUTTON_PLAYBACK_NEXT: EventPlaybackNext(); break;
164
				case BUTTON_PLAYBACK_NEXT: EventPlaybackNext(); break;
160
				case BUTTON_PLAYBACK_PLAY_PAUSE: EventPlayAndPause(); break;
165
				case BUTTON_PLAYBACK_PLAY_PAUSE: EventPlayAndPause(); break;
161
				case BUTTON_REPEAT: EventRepeatClick(); break;
166
				case BUTTON_REPEAT: EventRepeatClick(); break;
162
				case BUTTON_SHUFFLE: EventshuffleClick(); break;
167
				case BUTTON_SHUFFLE: EventShuffleClick(); break;
163
				case BUTTON_OPEN_DIALOG: EventFileDialogOpen(); break;
168
				case BUTTON_OPEN_DIALOG: EventFileDialogOpen(); break;
164
				case BUTTON_SHOW_VOLUME: RunProgram("/sys/@VOLUME", NULL); break;
169
				case BUTTON_SHOW_VOLUME: RunProgram("/sys/@VOLUME", NULL); break;
165
			}
170
			}
166
			break;	  
171
			break;	  
167
		case evKey:
172
		case evKey:
Line 171... Line 176...
171
				if (key_scancode==SCAN_CODE_RIGHT) EventPlaybackNext();
176
				if (key_scancode==SCAN_CODE_RIGHT) EventPlaybackNext();
172
				break;
177
				break;
173
			}		
178
			}		
174
			if (key_scancode==SCAN_CODE_KEY_O) EventFileDialogOpen();
179
			if (key_scancode==SCAN_CODE_KEY_O) EventFileDialogOpen();
175
			if (key_scancode==SCAN_CODE_KEY_M) RunProgram("/sys/@VOLUME", "m");
180
			if (key_scancode==SCAN_CODE_KEY_M) RunProgram("/sys/@VOLUME", "m");
-
 
181
			if (key_scancode==SCAN_CODE_KEY_R) EventRepeatClick();
-
 
182
			if (key_scancode==SCAN_CODE_KEY_S) EventShuffleClick();
176
			if (key_scancode==SCAN_CODE_RIGHT) RunProgram("/sys/@VOLUME", "+");
183
			if (key_scancode==SCAN_CODE_RIGHT) RunProgram("/sys/@VOLUME", "+");
177
			if (key_scancode==SCAN_CODE_LEFT)  RunProgram("/sys/@VOLUME", "-");
184
			if (key_scancode==SCAN_CODE_LEFT)  RunProgram("/sys/@VOLUME", "-");
178
			if (key_scancode==SCAN_CODE_ENTER) EventStartPlayingSelectedItem();
185
			if (key_scancode==SCAN_CODE_ENTER) EventStartPlayingSelectedItem();
179
			if (key_scancode==SCAN_CODE_KEY_P)||(key_scancode==SCAN_CODE_SPACE) EventPlayAndPause();
186
			if (key_scancode==SCAN_CODE_KEY_P)||(key_scancode==SCAN_CODE_SPACE) EventPlayAndPause();
180
			if (list.ProcessKey(key_scancode)) DrawPlayList();
187
			if (list.ProcessKey(key_scancode)) DrawPlayList();
Line 184... Line 191...
184
				DefineDragableWindow(win_x_normal, win_y_normal, skin.w - 1, skin.h + list.h-1);
191
				DefineDragableWindow(win_x_normal, win_y_normal, skin.w - 1, skin.h + list.h-1);
185
			if (window_mode == WINDOW_MODE_SMALL) 
192
			if (window_mode == WINDOW_MODE_SMALL) 
186
				DefineDragableWindow(win_x_small, win_y_small, WIN_W_SMALL, WIN_H_SMALL);
193
				DefineDragableWindow(win_x_small, win_y_small, WIN_W_SMALL, WIN_H_SMALL);
187
			draw_window();
194
			draw_window();
188
			if (param[0]) {
195
			if (param[0]) {
-
 
196
				if (param==LAST_FOLDER_EXISTS) EventOpenFolder(NULL); 
189
				EventOpenFolder(#param);
197
				else EventOpenFolder(#param);
190
				param[0] = NULL;
198
				param[0] = NULL;
191
			}
199
			}
192
			break;
200
			break;
193
		default:
201
		default:
194
			EventCheckSongFinished();
202
			EventCheckSongFinished();
Line 272... Line 280...
272
		button_y = 46;
280
		button_y = 46;
273
		img_draw stdcall(skin.image, 0, 0, skin.w, skin.h, 0, 0);
281
		img_draw stdcall(skin.image, 0, 0, skin.w, skin.h, 0, 0);
274
		if (playback_mode != PLAYBACK_MODE_STOPED) 
282
		if (playback_mode != PLAYBACK_MODE_STOPED) 
275
			img_draw stdcall(skin.image, 46, button_y, 41, 21, skin.w+1, WIN_H_SMALL+1);
283
			img_draw stdcall(skin.image, 46, button_y, 41, 21, skin.w+1, WIN_H_SMALL+1);
276
		if (repeat) 
284
		if (repeat) 
277
			img_draw stdcall(skin.image, Form.width-102, button_y+2, 17,17,skin.w+43, WIN_H_SMALL+1);
285
			img_draw stdcall(skin.image, 177, button_y+2, 17,17,skin.w+43, WIN_H_SMALL+1);
278
		if (shuffle) 
286
		if (shuffle) 
279
			img_draw stdcall(skin.image, Form.width-83, button_y+2, 17,17, skin.w+62, WIN_H_SMALL+1);
287
			img_draw stdcall(skin.image, 196, button_y+2, 17,17, skin.w+62, WIN_H_SMALL+1);
Line 280... Line 288...
280
 
288
 
281
		if (!work_folder) DrawPixieTitle("Pixie");
289
		if (!work_folder) DrawPixieTitle("Pixie");
282
		else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
290
		else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
283
		kfont.WriteIntoWindow(8, 24, theme.color_top_panel_bg, 
291
		kfont.WriteIntoWindow(8, 24, theme.color_top_panel_bg, 
Line 289... Line 297...
289
		//Window control buttons
297
		//Window control buttons
290
		DefineHiddenButton(Form.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
298
		DefineHiddenButton(Form.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
291
		DefineHiddenButton(Form.width - 55, 1, 26, 15, BUTTON_WINDOW_MINIMIZE);
299
		DefineHiddenButton(Form.width - 55, 1, 26, 15, BUTTON_WINDOW_MINIMIZE);
292
		DefineHiddenButton(Form.width - 83, 1, 26, 15, BUTTON_WINDOW_REDUCE);
300
		DefineHiddenButton(Form.width - 83, 1, 26, 15, BUTTON_WINDOW_REDUCE);
293
		//Other buttons
301
		//Other buttons
294
		button_y += 3;
-
 
295
		DefineHiddenButton(Form.width - 101,button_y, 17, 16, BUTTON_REPEAT);
302
		DefineHiddenButton(Form.width - 53, button_y, 22, 20, BUTTON_OPEN_DIALOG);
296
		DefineHiddenButton(Form.width - 82, button_y, 17, 16, BUTTON_SHUFFLE);
303
		DefineHiddenButton(Form.width - 29, button_y, 22, 20, BUTTON_SHOW_VOLUME);
297
		DefineHiddenButton(Form.width - 54, button_y, 23, 23, BUTTON_OPEN_DIALOG);
304
		DefineHiddenButton(178, button_y+3, 17, 16, BUTTON_REPEAT);
298
		DefineHiddenButton(Form.width - 27, button_y, 23, 23, BUTTON_SHOW_VOLUME);
305
		DefineHiddenButton(197, button_y+3, 17, 16, BUTTON_SHUFFLE);
299
	}
306
	}
300
	else if (window_mode == WINDOW_MODE_SMALL)
307
	else if (window_mode == WINDOW_MODE_SMALL)
301
	{
308
	{
302
		button_y = 7;
309
		button_y = 7;
303
		img_draw stdcall(skin.image, 0, 0, WIN_W_SMALL, WIN_H_SMALL, skin.w-1, 0);
310
		img_draw stdcall(skin.image, 0, 0, WIN_W_SMALL, WIN_H_SMALL, skin.w-1, 0);
Line 338... Line 345...
338
//===================================================//
345
//===================================================//
Line 339... Line 346...
339
 
346
 
340
 
347
 
341
void EventOpenFolder(dword _open_path)
348
void EventOpenFolder(dword _open_path)
-
 
349
{
-
 
350
	if (!_open_path)
-
 
351
	{
-
 
352
		OpenDirectory(#work_folder);
342
{
353
	}
343
	if (ESBYTE[_open_path]) 
354
	else
344
	{
355
	{
345
		strcpy(#work_folder, _open_path);
356
		strcpy(#work_folder, _open_path);
346
		work_folder[strrchr(#work_folder, '/')-1]='\0';
357
		work_folder[strrchr(#work_folder, '/')-1]='\0';
Line 360... Line 371...
360
	}
371
	}
361
	MoveSize(OLD, OLD, OLD, skin.h + list.h);
372
	MoveSize(OLD, OLD, OLD, skin.h + list.h);
362
	list.KeyHome();
373
	list.KeyHome();
363
	current_playing_file_n=0;
374
	current_playing_file_n=0;
364
	EventStopPlayingMp3();
375
	EventStopPlayingMp3();
365
	EventStartPlayingMp3();	
376
	if (_open_path) EventStartPlayingMp3();	
366
}
377
}
Line 367... Line 378...
367
 
378
 
368
 
379
 
Line 490... Line 501...
490
{
501
{
491
	repeat ^= 1;
502
	repeat ^= 1;
492
	DrawTopPanel();
503
	DrawTopPanel();
493
}
504
}
Line 494... Line 505...
494
 
505
 
495
void EventshuffleClick()
506
void EventShuffleClick()
496
{
507
{
497
	shuffle ^= 1;
508
	shuffle ^= 1;
498
	DrawTopPanel();
509
	DrawTopPanel();
Line 509... Line 520...
509
		case evKey:
520
		case evKey:
510
			GetKeys();
521
			GetKeys();
511
			if (key_scancode == SCAN_CODE_ESC) ExitProcess();
522
			if (key_scancode == SCAN_CODE_ESC) ExitProcess();
512
			break;
523
			break;
513
		case evReDraw:
524
		case evReDraw:
514
			DefineDragableWindow(150, 200, 363, 300);
525
			DefineDragableWindow(150, 200, 400, 327);
515
			GetProcessInfo(#pop_up, SelfInfo);
526
			GetProcessInfo(#pop_up, SelfInfo);
516
			DrawBar(0, 0, pop_up.width, pop_up.height, theme.color_top_panel_bg);
527
			DrawBar(0, 0, pop_up.width, pop_up.height, theme.color_top_panel_bg);
517
			DrawRectangle(0, 0, pop_up.width, pop_up.height, theme.color_list_border);
528
			DrawRectangle(0, 0, pop_up.width, pop_up.height, theme.color_list_border);
518
			WriteTextLines(10, 10, 0x90, theme.color_top_panel_song_name, ABOUT_MESSAGE, 19);
529
			WriteTextLines(10, 10, 0x90, theme.color_top_panel_song_name, ABOUT_MESSAGE, 19);
Line 519... Line 530...
519
 
530
 
520
			DefineHiddenButton(pop_up.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
531
			DefineHiddenButton(pop_up.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
521
			img_draw stdcall(skin.image, pop_up.width-28, 0, 28, 18, skin.w - 29, 0);
532
			img_draw stdcall(skin.image, pop_up.width-28, 0, 28, 18, skin.w - 29, 0);
522
			DrawCaptButton(pop_up.width-10-80, pop_up.height - 30, 80, 20, 11, 
533
			DrawCaptButton(pop_up.width-10-80, pop_up.height - 34, 80, 24, 2, 
523
			  theme.color_list_active_bg, theme.color_top_panel_song_name, "Clear");
534
			  theme.color_list_active_bg, theme.color_top_panel_song_name, "Cool");
524
	}
535
	}
Line 525... Line 536...
525
}
536
}