Subversion Repositories mdb

Rev

Rev 23 | Rev 25 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 23 Rev 24
Line 33... Line 33...
33
 
33
 
34
	constant char sPopupList[] = 		'MFp_MDB_list';
34
	constant char sPopupList[] = 		'MFp_MDB_list';
35
	constant char sPopupAudio[] = 		'MFp_MDB_audio';
35
	constant char sPopupAudio[] = 		'MFp_MDB_audio';
36
	constant char sPopupDetail[] = 		'MFp_MDB_detail';
36
	constant char sPopupDetail[] = 		'MFp_MDB_detail';
37
	constant char sPopupMenu[] = 		'MFp_MDB_menu';
37
	constant char sPopupMenu[] = 		'MFp_MDB_menu';
-
 
38
	constant char sPopupUsers[] =		'MFp_MDB_users';
-
 
39
	constant char sPopupSelUser[] =		'MFp_MDB_select_user';
38
 
40
 
39
	constant integer BTN_SAVE =			340;
41
	constant integer BTN_SAVE =			340;
40
	constant integer BTN_DELETE =		341;
42
	constant integer BTN_DELETE =		341;
41
	constant integer BTN_NOW_PLAYING =	342;
43
	constant integer BTN_NOW_PLAYING =	342;
42
 
44
 
Line 87... Line 89...
87
	constant integer TEXT_DETAIL_ALBUM =	1013;
89
	constant integer TEXT_DETAIL_ALBUM =	1013;
88
	constant integer TEXT_DETAIL_GENRE =	1014;
90
	constant integer TEXT_DETAIL_GENRE =	1014;
89
	constant integer TEXT_DETAIL_TIME_PROG =1015;
91
	constant integer TEXT_DETAIL_TIME_PROG =1015;
90
	constant integer TEXT_DETAIL_TIME_TOTAL=1016;
92
	constant integer TEXT_DETAIL_TIME_TOTAL=1016;
91
 
93
 
-
 
94
	constant integer TEXT_INPUT_UNAME =		1021;
-
 
95
	constant integer TEXT_INPUT_PLAYLIST =	1022;
-
 
96
 
92
	constant char TOK_TXT_NONE[] =		'NONE';
97
	constant char TOK_TXT_NONE[] =		'NONE';
93
	constant char TOK_TXT_TITLE[] =		'TITLE';
98
	constant char TOK_TXT_TITLE[] =		'TITLE';
94
	constant char TOK_TXT_ARTIST[] =	'ARTIST';
99
	constant char TOK_TXT_ARTIST[] =	'ARTIST';
95
	constant char TOK_TXT_ALBUM[] =		'ALBUM';
100
	constant char TOK_TXT_ALBUM[] =		'ALBUM';
96
	constant char TOK_TXT_GENRE[] =		'GENRE';
101
	constant char TOK_TXT_GENRE[] =		'GENRE';
Line 141... Line 146...
141
		SREV,						// Skip backward
146
		SREV,						// Skip backward
142
		SFWD,						// Skip forward
147
		SFWD,						// Skip forward
143
		MENU_THUMBS_DN,
148
		MENU_THUMBS_DN,
144
		MENU_THUMBS_UP,
149
		MENU_THUMBS_UP,
145
		MEDIA_RANDOM,
150
		MEDIA_RANDOM,
146
		MEDIA_REPEAT
151
		MEDIA_REPEAT,
-
 
152
		MENU_BACK
147
	};
153
	};
148
 
154
 
149
	constant integer nLines[] =
155
	constant integer nLines[] =
150
	{
156
	{
151
		BTN_LINE1_PIC,
157
		BTN_LINE1_PIC,
Line 168... Line 174...
168
		BTN_LINE9_LINE,
174
		BTN_LINE9_LINE,
169
		BTN_LINE10_PIC,
175
		BTN_LINE10_PIC,
170
		BTN_LINE10_LINE
176
		BTN_LINE10_LINE
171
	};
177
	};
172
 
178
 
-
 
179
	constant integer PLAYER_PLAY =		1;
-
 
180
	constant integer PLAYER_STOP =		2;
-
 
181
	constant integer PLAYER_PAUSE =		3;
-
 
182
 
173
	constant char sIconTitle[] = 'Song_45x45';
183
	constant char sIconTitle[] = 'Song_45x45';
174
	constant char sIconAlbum[] = 'Album_45x45';
184
	constant char sIconAlbum[] = 'Album_45x45';
175
	constant char sIconGenre[] = 'Genre_45x45';
185
	constant char sIconGenre[] = 'Genre_45x45';
176
	constant char sIconArtist[] = 'Artist_45x45';
186
	constant char sIconArtist[] = 'Artist_45x45';
177
	constant char sIconQueue[] = 'Queue_45x45';
187
	constant char sIconQueue[] = 'Queue_45x45';
Line 189... Line 199...
189
 
199
 
190
DEFINE_VARIABLE
200
DEFINE_VARIABLE
191
	volatile integer nStart;				// Index position of current position in list.
201
	volatile integer nStart;				// Index position of current position in list.
192
	volatile integer nTotal;				// Total number of data
202
	volatile integer nTotal;				// Total number of data
193
	volatile integer nPage;					// The type of the page: TOK_TITLE, ...
203
	volatile integer nPage;					// The type of the page: TOK_TITLE, ...
-
 
204
	volatile integer nPlayStatus;			// Status of the player
194
	volatile ST_SONG stSong[MAX_LINES];		// The register of currently showed songs
205
	volatile ST_SONG stSong[MAX_LINES];		// The register of currently showed songs
195
	volatile integer nSongIdx;				// The index of the song pointer
206
	volatile integer nSongIdx;				// The index of the song pointer
-
 
207
	volatile char sActPlaylist[128];		// The name of the actual playlist
-
 
208
	volatile integer nLastPressedLine;		// The number of the line pressed last
-
 
209
	volatile integer nLastPressedMenu;		// The number of the menu line pressed last
-
 
210
	volatile integer nKeyboard[50];			// 1 = Keyboard active
-
 
211
	volatile integer sActUser[128];			// The name of the actual loaded user
-
 
212
	volatile integer nFolder;				// 0 = Top level of list, 1 = Folder opened
-
 
213
	volatile integer sActFolder[128];		// The name of the actual selected folder
-
 
214
	volatile integer nSaveToFolder;			// 1 = Flag for keyboard to save to entered folder
-
 
215
 
196
	volatile char _strTok[10][256];
216
	volatile char _strTok[10][256];
197
 
217
 
198
 
218
 
199
// DecodeURL: Undo URL encoding on a data segment as necessary for CLI protocol
219
// DecodeURL: Undo URL encoding on a data segment as necessary for CLI protocol
200
//	(Note: Distructive for input; copy str before call if needed)
220
//	(Note: Distructive for input; copy str before call if needed)
Line 223... Line 243...
223
 
243
 
224
    newStr = "newStr,str";
244
    newStr = "newStr,str";
225
    return newStr;
245
    return newStr;
226
}
246
}
227
 
247
 
-
 
248
define_function char[1024] EncodeURL(char oldStr[])
-
 
249
{
-
 
250
stack_var char str[1024];
-
 
251
stack_var integer len;
-
 
252
stack_var integer i;
-
 
253
 
-
 
254
	len = length_string(oldStr);
-
 
255
	str = '';
-
 
256
 
-
 
257
	for (i = 1; i <= len; i++)
-
 
258
	{
-
 
259
		if (oldStr[i] == ':' || oldStr[i] == ';')
-
 
260
			str = "str,'%',format('%02X', oldStr[i])";
-
 
261
		else
-
 
262
			str = "str,mid_string(oldStr, i, 1)";
-
 
263
	}
-
 
264
 
-
 
265
	return str;
-
 
266
}
-
 
267
 
228
define_function integer strtok(char str[], char tok[])
268
define_function integer strtok(char str[], char tok[])
229
{
269
{
230
stack_var integer i;
270
stack_var integer i;
231
stack_var integer idx;
271
stack_var integer idx;
232
 
272
 
Line 325... Line 365...
325
	}
365
	}
326
 
366
 
327
	return sPage;
367
	return sPage;
328
}
368
}
329
 
369
 
-
 
370
define_function char[256] getPageLine(integer line)
-
 
371
{
-
 
372
	if (!line || line > MAX_LINES)
-
 
373
		return '';
-
 
374
 
-
 
375
	switch(nPage)
-
 
376
	{
-
 
377
		case TOK_TITLE:		return stSong[line].sTitle;
-
 
378
		case TOK_ARTIST:	return stSong[line].sArtist;
-
 
379
		case TOK_ALBUM:		return stSong[line].sAlbum;
-
 
380
		case TOK_GENRE:		return stSong[line].sGenre;
-
 
381
	}
-
 
382
 
-
 
383
	return '';
-
 
384
}
-
 
385
 
330
define_function integer setActualPage(char pg[])
386
define_function integer setActualPage(char pg[])
331
{
387
{
332
	nPage = TOK_NONE;
388
	nPage = TOK_NONE;
333
 
389
 
334
	select
390
	select
Line 354... Line 410...
354
		case TOK_QUEUE:
410
		case TOK_QUEUE:
355
			send_command dvTPs, "'@PPN-',sPopupList";
411
			send_command dvTPs, "'@PPN-',sPopupList";
356
		break;
412
		break;
357
	}
413
	}
358
 
414
 
-
 
415
	switch(nPage)
-
 
416
	{
-
 
417
		case TOK_TITLE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Titles'";
-
 
418
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Artists'";
-
 
419
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Albums'";
-
 
420
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Genres'";
-
 
421
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Queue'";
-
 
422
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Playlist'";
-
 
423
	}
-
 
424
 
359
	return nPage;
425
	return nPage;
360
}
426
}
361
 
427
 
-
 
428
define_function displayPageInfo(integer st, integer tot)
-
 
429
{
-
 
430
stack_var integer bis;
-
 
431
 
-
 
432
	if (st)
-
 
433
	{
-
 
434
		bis = st + MAX_LINES - 1;
-
 
435
		send_command dvTPs, "'^TXT-',itoa(TEXT_PROGRES),',0,',itoa(st),' to ',itoa(bis),' of ',itoa(tot)";
-
 
436
	}
-
 
437
	else
-
 
438
		send_command dvTPs, "'^TXT-',itoa(TEXT_PROGRES),',0,'";
-
 
439
}
-
 
440
 
362
define_function displaySong(integer idx)
441
define_function displaySong(integer idx)
363
{
442
{
364
	if (!idx || idx > MAX_LINES)
443
	if (!idx || idx > MAX_LINES)
365
		return;
444
		return;
366
 
445
 
367
	send_command dvTPs, "'^TXT-',itoa(BTN_LINE1_LINE+idx-1),',0,',stSong[idx].sTitle,$0d$0a,stSong[idx].sArtist";
446
	send_command dvTPs, "'^TXT-',itoa(BTN_LINE1_LINE+idx-1),',0,',stSong[idx].sTitle,$0d$0a,stSong[idx].sArtist";
368
}
447
}
369
 
448
 
-
 
449
define_function askMenuList()
-
 
450
{
-
 
451
	switch(nPage)
-
 
452
	{
-
 
453
		case TOK_TITLE:
-
 
454
		case TOK_ARTIST:
-
 
455
		case TOK_ALBUM:
-
 
456
		case TOK_GENRE:
-
 
457
			send_command dvTPs, "'@PPN-',sPopupMenu";
-
 
458
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
-
 
459
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
-
 
460
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
-
 
461
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Open folder'";
-
 
462
		break;
-
 
463
 
-
 
464
		case TOK_PLAYLIST:
-
 
465
			send_command dvTPs, "'@PPN-',sPopupMenu";
-
 
466
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
-
 
467
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
-
 
468
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
-
 
469
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Show content'";
-
 
470
		break;
-
 
471
 
-
 
472
		case TOK_QUEUE:
-
 
473
			send_command dvTPs, "'@PPN-',sPopupMenu";
-
 
474
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
-
 
475
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Play this now'";
-
 
476
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Save this to a playlist'";
-
 
477
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Delete from queue'";
-
 
478
		break;
-
 
479
	}
-
 
480
 
-
 
481
	switch(nPage)
-
 
482
	{
-
 
483
		case TOK_TITLE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Title menu'";
-
 
484
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Artist menu'";
-
 
485
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Album menu'";
-
 
486
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Genre menu'";
-
 
487
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Queue menu'";
-
 
488
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Playlist menu'";
-
 
489
	}
-
 
490
}
-
 
491
 
370
DEFINE_START
492
DEFINE_START
371
	nStart = 1;
493
	nStart = 1;
372
	nPage = TOK_NONE;
494
	nPage = TOK_NONE;
373
 
495
 
374
DEFINE_EVENT
496
DEFINE_EVENT
375
	data_event[dvTPs]
497
	data_event[dvTPs]
376
	{
498
	{
-
 
499
		/*
-
 
500
		 * Whenever a panel comes online, it'll be initialized. The actual
-
 
501
		 * popup is shown and the pressed (or not pressed) button stated
-
 
502
		 * are set.
-
 
503
		 */
377
		online:
504
		online:
378
		{
505
		{
379
			stack_var integer pan;
506
			stack_var integer pan;
380
 
507
 
381
			pan = get_last(dvTPs);
508
			pan = get_last(dvTPs);
Line 397... Line 524...
397
				break;
524
				break;
398
			}
525
			}
399
		}
526
		}
400
	}
527
	}
401
 
528
 
-
 
529
	/*
-
 
530
	 * The navigation buttons are for setting the wanted views.
-
 
531
	 */
402
	button_event[dvTPs, nNavigation]
532
	button_event[dvTPs, nNavigation]
403
	{
533
	{
404
		push:
534
		push:
405
		{
535
		{
406
			switch(BUTTON.INPUT.CHANNEL)
536
			switch(BUTTON.INPUT.CHANNEL)
407
			{
537
			{
408
				case BTN_TITLE:		send_command vdvMDB, "'LIST:TITLE:1:',itoa(MAX_LINES),';'"; break;
538
				case BTN_TITLE:		send_command vdvMDB, "'LIST:TITLE:1:',itoa(MAX_LINES),';'"; nFolder = 0; break;
409
				case BTN_ARTIST:	send_command vdvMDB, "'LIST:ARTIST:1:',itoa(MAX_LINES),';'"; break;
539
				case BTN_ARTIST:	send_command vdvMDB, "'LIST:ARTIST:1:',itoa(MAX_LINES),';'"; nFolder = 0; break;
410
				case BTN_ALBUM:		send_command vdvMDB, "'LIST:ALBUM:1:',itoa(MAX_LINES),';'"; break;
540
				case BTN_ALBUM:		send_command vdvMDB, "'LIST:ALBUM:1:',itoa(MAX_LINES),';'"; nFolder = 0; break;
411
				case BTN_GENRE:		send_command vdvMDB, "'LIST:GENRE:1:',itoa(MAX_LINES),';'"; break;
541
				case BTN_GENRE:		send_command vdvMDB, "'LIST:GENRE:1:',itoa(MAX_LINES),';'"; nFolder = 0; break;
412
				case BTN_NOW_PLAYING: send_command vdvMDB, "'LIST:QUEUE:1:',itoa(MAX_LINES),';'"; break;
542
				case BTN_NOW_PLAYING: send_command vdvMDB, "'LIST:QUEUE:1:',itoa(MAX_LINES),';'"; nFolder = 0; break;
413
			}
543
			}
414
		}
544
		}
415
	}
545
	}
416
 
546
 
-
 
547
	/*
-
 
548
	 * This buttons control mostly the player. With them you can play, stop
-
 
549
	 * pause, etc. the player and scroll through lists.
-
 
550
	 * Common to this buttons is, that they conform to the AMX SNAPI standard.
-
 
551
	 * All of them are declared in the file "mSNAPI.axi".
-
 
552
	 */
417
	button_event[dvTPs, nBtns]
553
	button_event[dvTPs, nBtns]
418
	{
554
	{
419
		push:
555
		push:
420
		{
556
		{
421
			switch(BUTTON.INPUT.CHANNEL)
557
			switch(BUTTON.INPUT.CHANNEL)
Line 443... Line 579...
443
					{
579
					{
444
						nStart = nStart + MAX_LINES;
580
						nStart = nStart + MAX_LINES;
445
						send_command vdvMDB, "'LIST:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
581
						send_command vdvMDB, "'LIST:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
446
					}
582
					}
447
				break;
583
				break;
-
 
584
 
-
 
585
				case MENU_BACK:
-
 
586
					if (nFolder)
-
 
587
						send_command vdvMDB, "'LIST:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
-
 
588
				break;
-
 
589
			}
-
 
590
		}
-
 
591
 
-
 
592
		hold[2,repeat]:
-
 
593
		{
-
 
594
			switch(BUTTON.INPUT.CHANNEL)
-
 
595
			{
-
 
596
				case FFWD:			send_command vdvMDB, 'FORWARD;';
-
 
597
				case REW:			send_command vdvMDB, 'REWIND;';
448
			}
598
			}
449
		}
599
		}
450
	}
600
	}
451
 
601
 
-
 
602
	button_event[dvTPs,nLines]
-
 
603
	{
-
 
604
		push:
-
 
605
		{
-
 
606
			switch(BUTTON.INPUT.CHANNEL)
-
 
607
			{
-
 
608
				case BTN_LINE1_PIC:
-
 
609
				case BTN_LINE1_LINE:
-
 
610
					nLastPressedLine = 1;
-
 
611
					askMenuList();
-
 
612
				break;
-
 
613
 
-
 
614
				case BTN_LINE2_PIC:
-
 
615
				case BTN_LINE2_LINE:
-
 
616
					nLastPressedLine = 2;
-
 
617
					askMenuList();
-
 
618
				break;
-
 
619
 
-
 
620
				case BTN_LINE3_PIC:
-
 
621
				case BTN_LINE3_LINE:
-
 
622
					nLastPressedLine = 3;
-
 
623
					askMenuList();
-
 
624
				break;
-
 
625
 
-
 
626
				case BTN_LINE4_PIC:
-
 
627
				case BTN_LINE4_LINE:
-
 
628
					nLastPressedLine = 4;
-
 
629
					askMenuList();
-
 
630
				break;
-
 
631
 
-
 
632
				case BTN_LINE5_PIC:
-
 
633
				case BTN_LINE5_LINE:
-
 
634
					nLastPressedLine = 5;
-
 
635
					askMenuList();
-
 
636
				break;
-
 
637
 
-
 
638
				case BTN_LINE6_PIC:
-
 
639
				case BTN_LINE6_LINE:
-
 
640
					nLastPressedLine = 6;
-
 
641
					askMenuList();
-
 
642
				break;
-
 
643
 
-
 
644
				case BTN_LINE7_PIC:
-
 
645
				case BTN_LINE7_LINE:
-
 
646
					nLastPressedLine = 7;
-
 
647
					askMenuList();
-
 
648
				break;
-
 
649
 
-
 
650
				case BTN_LINE8_PIC:
-
 
651
				case BTN_LINE8_LINE:
-
 
652
					nLastPressedLine = 8;
-
 
653
					askMenuList();
-
 
654
				break;
-
 
655
 
-
 
656
				case BTN_LINE9_PIC:
-
 
657
				case BTN_LINE9_LINE:
-
 
658
					nLastPressedLine = 9;
-
 
659
					askMenuList();
-
 
660
				break;
-
 
661
 
-
 
662
				case BTN_LINE10_PIC:
-
 
663
				case BTN_LINE10_LINE:
-
 
664
					nLastPressedLine = 10;
-
 
665
					askMenuList();
-
 
666
				break;
-
 
667
			}
-
 
668
		}
-
 
669
	}
-
 
670
 
-
 
671
	button_event[dvTPs,nMenu]
-
 
672
	{
-
 
673
		push:
-
 
674
		{
-
 
675
		stack_var integer pan;
-
 
676
 
-
 
677
			pan = get_last(dvTPs);
-
 
678
 
-
 
679
			switch(BUTTON.INPUT.CHANNEL)
-
 
680
			{
-
 
681
				case BTN_MENU1:
-
 
682
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Move to queue and play
-
 
683
					{
-
 
684
						if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
-
 
685
							send_command vdvMDB, 'STOP;';
-
 
686
 
-
 
687
						send_command vdvMDB, 'DELETE:QUEUE:-1;';
-
 
688
						send_command vdvMDB, "'PLAY:',requestActualPage(),':',getPageLine(nLastPressedLine),';'";
-
 
689
					}
-
 
690
					else if (nPage == TOK_PLAYLIST)
-
 
691
					{
-
 
692
						if (length_string(sActUser) && length_string(sActPlaylist))
-
 
693
						{
-
 
694
							if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
-
 
695
								send_command vdvMDB, 'STOP;';
-
 
696
	
-
 
697
							send_command vdvMDB, 'DELETE:QUEUE:-1;';
-
 
698
							send_command vdvMDB, "'PLAY:PLAYLIST:',EncodeURL(sActPlaylist),';'";
-
 
699
						}
-
 
700
					}
-
 
701
					else if (nPage == TOK_QUEUE)
-
 
702
						send_command vdvMDB, "'PLAY:QUEUE:',itoa(nStart+nLastPressedLine-1),';'";
-
 
703
				break;
-
 
704
 
-
 
705
				case BTN_MENU2:
-
 
706
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Add to queue
-
 
707
						send_command vdvMDB, "'ADD:',requestActualPage(),':',EncodeURL(getPageLine(nLastPressedLine)),';'";
-
 
708
					else if (nPage == TOK_PLAYLIST)
-
 
709
						send_command vdvMDB, "'ADD:PLAYLIST:',EncodeURL(sActPlaylist),';'";
-
 
710
					else if (nPage == TOK_QUEUE)
-
 
711
					{
-
 
712
						send_command dvTPs[pan], "'@PPN-',sPopupSelUser";
-
 
713
						send_command dvTPs[pan], "'^TXT-',itoa(TEXT_INPUT_UNAME),',0,',sActUser";
-
 
714
						send_command dvTPs[pan], "'@AKB-',sActPlaylist,';Enter name of playlist'";
-
 
715
						nSaveToFolder = nLastPressedLine;
-
 
716
						nKeyboard[pan] = TEXT_INPUT_PLAYLIST;
-
 
717
					}
-
 
718
				break;
-
 
719
				
-
 
720
				case BTN_MENU3:
-
 
721
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Open folder
-
 
722
					{
-
 
723
						sActFolder = getPageLine(nLastPressedLine);
-
 
724
						nFolder = true;
-
 
725
						send_command vdvMDB, "'LISTFOLDER:',requestActualPage(),':',EncodeURL(getPageLine(nLastPressedLine)),':1:',itoa(MAX_LINES),';'";
-
 
726
					}
-
 
727
					else if (nPage == TOK_PLAYLIST)
-
 
728
					{
-
 
729
					}
-
 
730
					else if (nPage == TOK_QUEUE)
-
 
731
						send_command vdvMDB, "'DELETE:QUEUE:',itoa(stSong[nLastPressedLine].nID),';'";
-
 
732
				break;
-
 
733
			}
-
 
734
		}
-
 
735
	}
-
 
736
 
-
 
737
	button_event[dvTPs,TEXT_INPUT_UNAME]
-
 
738
	{
-
 
739
		push:
-
 
740
		{
-
 
741
			stack_var integer pan;
-
 
742
 
-
 
743
			pan = get_last(dvTPs);
-
 
744
 
-
 
745
			if (!nKeyboard[pan])
-
 
746
			{
-
 
747
				nKeyboard[pan] = TEXT_INPUT_UNAME;
-
 
748
				send_command dvTPs[pan],"'@AKB-',sActUser,';Enter user name'";
-
 
749
			}
-
 
750
		}
-
 
751
	}
-
 
752
 
-
 
753
	button_event[dvTPs,TEXT_INPUT_PLAYLIST]
-
 
754
	{
-
 
755
		push:
-
 
756
		{
-
 
757
			stack_var integer pan;
-
 
758
 
-
 
759
			pan = get_last(dvTPs);
-
 
760
 
-
 
761
			if (!nKeyboard[pan])
-
 
762
			{
-
 
763
				nKeyboard[pan] = TEXT_INPUT_PLAYLIST;
-
 
764
				send_command dvTPs[pan],"'@AKB-',sActPlaylist,';Enter name of playlist'";
-
 
765
			}
-
 
766
		}
-
 
767
	}
-
 
768
 
-
 
769
	/*
-
 
770
	 * This event catches everything comming from the COMM - module. Here the
-
 
771
	 * AMX part of the COMM - module only makes a network connection to the
-
 
772
	 * player. The API of the player is made to replace a heavy AMX COMM -
-
 
773
	 * module. Everything normally is done inside an AMX COMM - module, is
-
 
774
	 * done by the player itself, running on a Linux platform. This makes the
-
 
775
	 * communication with it fairly easy.
-
 
776
	 */
452
	data_event[vdvMDB]
777
	data_event[vdvMDB]
453
	{
778
	{
454
		string:
779
		string:
455
		{
780
		{
456
			stack_var char buf[8192];
781
			stack_var char buf[8192];
Line 460... Line 785...
460
				buf = remove_string(DATA.TEXT, ';', 1);
785
				buf = remove_string(DATA.TEXT, ';', 1);
461
				set_length_string(buf, length_string(buf) - 1);
786
				set_length_string(buf, length_string(buf) - 1);
462
 
787
 
463
				select
788
				select
464
				{
789
				{
-
 
790
					/*
-
 
791
					 * This is send by the player whenever the UI should
-
 
792
					 * display a list with song details.
-
 
793
					 * The correct popup must be displayed and the contents
-
 
794
					 * should be filled with the data from the player.
-
 
795
					 */
465
					active(find_string(buf, 'LIST:', 1)):
796
					active(find_string(buf, 'LIST:', 1)):
466
					{
797
					{
467
					stack_var char sPg[32];
798
					stack_var char sPg[32];
468
					stack_var integer nSongID;
799
					stack_var integer nSongID;
469
					stack_var integer nLine;
800
					stack_var integer nLine;
Line 497... Line 828...
497
						}
828
						}
498
 
829
 
499
						displaySong(nLine);
830
						displaySong(nLine);
500
					}
831
					}
501
 
832
 
-
 
833
					active(find_string(buf, 'PLAYING:', 1)):
-
 
834
					{
-
 
835
					stack_var integer nSongID;
-
 
836
					stack_var char sTitle[256];
-
 
837
					stack_var char sArtist[256];
-
 
838
					stack_var char sAlbum[256];
-
 
839
					stack_var char sGenre[256];
-
 
840
					stack_var char sCover[256];
-
 
841
					stack_var integer anz;
-
 
842
					stack_var integer i;
-
 
843
 
-
 
844
						remove_string(buf, 'PLAYING:', 1);
-
 
845
						anz = strtok(buf, ':');
-
 
846
						
-
 
847
						for (i = 1; i <= anz; i++)
-
 
848
						{
-
 
849
							switch (i)
-
 
850
							{
-
 
851
								case 1: nSongID = atoi(getStrTok(i));
-
 
852
								case 2: sTitle = DecodeURL(getStrTok(i));
-
 
853
								case 3: sArtist = DecodeURL(getStrTok(i));
-
 
854
								case 4: sAlbum = DecodeURL(getStrTok(i));
-
 
855
								case 5: sGenre = DecodeURL(getStrTok(i));
-
 
856
								case 6: sCover = DecodeURL(getStrTok(i));
-
 
857
							}
-
 
858
						}
-
 
859
 
-
 
860
						// Initialize detail fields
-
 
861
						send_command vdvMDB, "'^TXT-',itoa(TEXT_DETAIL_TITLE),',0,',sTitle";
-
 
862
						send_command vdvMDB, "'^TXT-',itoa(TEXT_DETAIL_ARTIST),',0,',sArtist";
-
 
863
						send_command vdvMDB, "'^TXT-',itoa(TEXT_DETAIL_ALBUM),',0,',sAlbum";
-
 
864
						send_command vdvMDB, "'^TXT-',itoa(TEXT_DETAIL_GENRE),',0,',sGenre";
-
 
865
						setLogo(sCover, 0);
-
 
866
					}
-
 
867
 
502
					active(find_string(buf, 'TOTAL:', 1)):
868
					active(find_string(buf, 'TOTAL:', 1)):
503
					{
869
					{
504
						remove_string(buf, 'TOTAL:', 1);
870
						remove_string(buf, 'TOTAL:', 1);
505
						nTotal = atoi(buf);
871
						nTotal = atoi(buf);
-
 
872
						displayPageInfo(nStart, nTotal);
506
					}
873
					}
507
 
874
 
508
					active(find_string(buf, 'PAGE:', 1)):
875
					active(find_string(buf, 'PAGE:', 1)):
509
					{
876
					{
510
						remove_string(buf, 'PAGE:', 1);
877
						remove_string(buf, 'PAGE:', 1);
511
						setActualPage(buf);
878
						setActualPage(buf);
-
 
879
						displayPageInfo(nStart, nTotal);
-
 
880
					}
-
 
881
 
-
 
882
					active(find_string(buf, 'PLAYER:')):
-
 
883
					{
-
 
884
						remove_string(buf, 'PLAYER:', 1);
-
 
885
 
-
 
886
						if (buf == 'PLAY')
-
 
887
						{
-
 
888
							nPlayStatus = PLAYER_PLAY;
-
 
889
							on[dvTPs,PLAY];
-
 
890
							off[dvTPs,STOP];
-
 
891
							off[dvTPs,PAUSE];
-
 
892
						}
-
 
893
						else if (buf == 'STOP')
-
 
894
						{
-
 
895
							nPlayStatus = PLAYER_STOP;
-
 
896
							off[dvTPs,PLAY];
-
 
897
							on[dvTPs,STOP];
-
 
898
							off[dvTPs,PAUSE];
-
 
899
						}
-
 
900
						else if (buf == 'PAUSE')
-
 
901
						{
-
 
902
							nPlayStatus = PLAYER_PAUSE;
-
 
903
							off[dvTPs,PLAY];
-
 
904
							off[dvTPs,STOP];
-
 
905
							on[dvTPs,PAUSE];
-
 
906
						}
-
 
907
						else
-
 
908
						{
-
 
909
							nPlayStatus = 0;
-
 
910
							off[dvTPs,PLAY];
-
 
911
							off[dvTPs,STOP];
-
 
912
							off[dvTPs,PAUSE];
-
 
913
						}
-
 
914
					}
-
 
915
 
-
 
916
					active(find_string(buf, 'KEYBOARD:', 1)):
-
 
917
					{
-
 
918
					stack_var integer pan;
-
 
919
	
-
 
920
						remove_string(buf, 'KEYBOARD:', 1);
-
 
921
						pan = atoi(buf);
-
 
922
						remove_string(buf, ':', 1);
-
 
923
	
-
 
924
						if (nKeyboard[pan] == TEXT_INPUT_UNAME)
-
 
925
						{
-
 
926
							sActUser = left_string(buf, length_string(buf) - 1);
-
 
927
							send_command dvTPs[pan], "'@PPF-',sPopupSelUser";
-
 
928
							send_command vdvMDB, "'USER:',EncodeURL(sActUser),':;'";
-
 
929
							nKeyboard[pan] = 0;
-
 
930
						}
-
 
931
						else if (nKeyboard[pan] == TEXT_INPUT_PLAYLIST)
-
 
932
						{
-
 
933
							if (!nSaveToFolder)
-
 
934
							{
-
 
935
								sActPlaylist = left_string(buf, length_string(buf) - 1);
-
 
936
								send_command vdvMDB, "'USER:',EncodeURL(sActUser),':',EncodeURL(sActPlaylist),';'";
-
 
937
							}
-
 
938
							else
-
 
939
							{
-
 
940
								stack_var char sPlaylist[128];
-
 
941
 
-
 
942
								sPlaylist = left_string(buf, length_string(buf) - 1);
-
 
943
								send_command vdvMDB, "'SAVEQUEUE:',EncodeURL(sActUser),':',EncodeURL(sPlaylist),';'";
-
 
944
								nSaveToFolder = 0;
-
 
945
							}
-
 
946
 
-
 
947
							send_command dvTPs[pan], "'@PPF-',sPopupSelUser";
-
 
948
							nKeyboard[pan] = 0;
-
 
949
						}
512
					}
950
					}
513
				}
951
				}
514
			}
952
			}
515
		}
953
		}
516
	}
954
	}