Subversion Repositories mdb

Rev

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

Rev 25 Rev 26
Line 11... Line 11...
11
 * and are protected by trade secret or copyright law.
11
 * and are protected by trade secret or copyright law.
12
 * Dissemination of this information or reproduction of this material
12
 * Dissemination of this information or reproduction of this material
13
 * is strictly forbidden unless prior written permission is obtained
13
 * is strictly forbidden unless prior written permission is obtained
14
 * from Andreas Theofilu.
14
 * from Andreas Theofilu.
15
 */
15
 */
16
MODULE_NAME='MDB_UI'	(dev dvTPs[], dev vdvMDB, char IP[], char path[])
16
MODULE_NAME='MDB_UI'	(dev dvTPs[], dev vdvMDB, char IP[], char path[], integer nIndex[])
17
 
17
 
18
#include 'mSNAPI'
18
#include 'mSNAPI'
19
 
19
 
20
DEFINE_TYPE
20
DEFINE_TYPE
21
	struct ST_SONG
21
	struct ST_SONG
Line 41... Line 41...
41
	constant integer BTN_SCROLLBAR =	256;
41
	constant integer BTN_SCROLLBAR =	256;
42
 
42
 
43
	constant integer BTN_SAVE =			340;
43
	constant integer BTN_SAVE =			340;
44
	constant integer BTN_DELETE =		341;
44
	constant integer BTN_DELETE =		341;
45
	constant integer BTN_NOW_PLAYING =	342;
45
	constant integer BTN_NOW_PLAYING =	342;
-
 
46
	constant integer BTN_SEARCH =		343;
46
	constant integer BTN_QUEUE =		349;
47
	constant integer BTN_QUEUE =		349;
47
 
48
 
48
	constant integer BTN_TITLE = 		350;
49
	constant integer BTN_TITLE = 		350;
49
	constant integer BTN_ARTIST =		351;
50
	constant integer BTN_ARTIST =		351;
50
	constant integer BTN_GENRE =		352;
51
	constant integer BTN_GENRE =		352;
Line 99... Line 100...
99
	constant integer TEXT_DETAIL_TIME_PROG =1015;
100
	constant integer TEXT_DETAIL_TIME_PROG =1015;
100
	constant integer TEXT_DETAIL_TIME_TOTAL=1016;
101
	constant integer TEXT_DETAIL_TIME_TOTAL=1016;
101
 
102
 
102
	constant integer TEXT_INPUT_UNAME =		1021;
103
	constant integer TEXT_INPUT_UNAME =		1021;
103
	constant integer TEXT_INPUT_PLAYLIST =	1022;
104
	constant integer TEXT_INPUT_PLAYLIST =	1022;
-
 
105
	constant integer TEXT_INPUT_SEARCH =	1023;
104
 
106
 
105
	constant integer LVL_SCROLLBAR =		7;
107
	constant integer LVL_SCROLLBAR =		7;
106
 
108
 
107
	constant char TOK_TXT_NONE[] =			'NONE';
109
	constant char TOK_TXT_NONE[] =			'NONE';
108
	constant char TOK_TXT_TITLE[] =			'TITLE';
110
	constant char TOK_TXT_TITLE[] =			'TITLE';
109
	constant char TOK_TXT_ARTIST[] =		'ARTIST';
111
	constant char TOK_TXT_ARTIST[] =		'ARTIST';
110
	constant char TOK_TXT_ALBUM[] =			'ALBUM';
112
	constant char TOK_TXT_ALBUM[] =			'ALBUM';
111
	constant char TOK_TXT_GENRE[] =			'GENRE';
113
	constant char TOK_TXT_GENRE[] =			'GENRE';
112
	constant char TOK_TXT_QUEUE[] =			'QUEUE';
114
	constant char TOK_TXT_QUEUE[] =			'QUEUE';
113
	constant char TOK_TXT_PLAYLIST[] =		'PLAYLIST';
115
	constant char TOK_TXT_PLAYLIST[] =		'PLAYLIST';
-
 
116
	constant char TOK_TXT_SEARCH[] =		'SEARCH';
114
 
117
 
115
	constant integer TOK_NONE =				0;
118
	constant integer TOK_NONE =				0;
116
	constant integer TOK_TITLE =			1;
119
	constant integer TOK_TITLE =			1;
117
	constant integer TOK_ARTIST =			2;
120
	constant integer TOK_ARTIST =			2;
118
	constant integer TOK_ALBUM =			3;
121
	constant integer TOK_ALBUM =			3;
119
	constant integer TOK_GENRE =			4;
122
	constant integer TOK_GENRE =			4;
120
	constant integer TOK_QUEUE =			5;
123
	constant integer TOK_QUEUE =			5;
121
	constant integer TOK_PLAYLIST =			6;
124
	constant integer TOK_PLAYLIST =			6;
-
 
125
	constant integer TOK_SEARCH =			7;
122
 
126
 
123
	constant integer TODO_USER_SELECT = 		1;		// select a user
127
	constant integer TODO_USER_SELECT = 		1;		// select a user
124
	constant integer TODO_USER_LIST_PLAYLIST =	2;		// List the playlist
128
	constant integer TODO_USER_LIST_PLAYLIST =	2;		// List the playlist
125
	constant integer TODO_USER_SAVE_PLAYLIST =	3;		// Save queue to playlist
129
	constant integer TODO_USER_SAVE_PLAYLIST =	3;		// Save queue to playlist
126
	constant integer TODO_USER_PLAYLIST_QUEUE = 4;		// Move a playlist to the queue
130
	constant integer TODO_USER_PLAYLIST_QUEUE = 4;		// Move a playlist to the queue
-
 
131
	constant integer TODO_SEARCH =				5;		// Search for titles, artists, ...
-
 
132
 
-
 
133
	constant integer DIR_OPEN =				1;
-
 
134
	constant integer DIR_CLOSE =			2;
127
	
135
 
128
	constant integer nNavigation[] =
136
	constant integer nNavigation[] =
129
	{
137
	{
130
		BTN_SAVE,
138
		BTN_SAVE,
131
		BTN_DELETE,
139
		BTN_DELETE,
132
		BTN_NOW_PLAYING,
140
		BTN_NOW_PLAYING,
133
		BTN_QUEUE,
141
		BTN_QUEUE,
134
		BTN_TITLE,
142
		BTN_TITLE,
135
		BTN_ARTIST,
143
		BTN_ARTIST,
136
		BTN_GENRE,
144
		BTN_GENRE,
137
		BTN_ALBUM,
145
		BTN_ALBUM,
138
		BTN_PLAYLIST
146
		BTN_PLAYLIST,
-
 
147
		BTN_SEARCH
139
	};
148
	};
140
 
149
 
141
	constant integer nMenu[] =
150
	constant integer nMenu[] =
142
	{
151
	{
143
		BTN_MENU1,
152
		BTN_MENU1,
Line 226... Line 235...
226
DEFINE_VARIABLE
235
DEFINE_VARIABLE
227
	volatile integer nStart;				// Index position of current position in list.
236
	volatile integer nStart;				// Index position of current position in list.
228
	volatile integer nOldStart;				// Saves the previous value of nStart if a folder is opened
237
	volatile integer nOldStart;				// Saves the previous value of nStart if a folder is opened
229
	volatile integer nTotal;				// Total number of data
238
	volatile integer nTotal;				// Total number of data
230
	volatile integer nPage;					// The type of the page: TOK_TITLE, ...
239
	volatile integer nPage;					// The type of the page: TOK_TITLE, ...
-
 
240
	volatile integer nOldPage;				// The type of the previous page. Needed for search.
-
 
241
	volatile integer nSearch;				// 1 = Search is active
-
 
242
	volatile integer sSearchFor[128];		// The expression to search for
231
	volatile integer nPlayStatus;			// Status of the player
243
	volatile integer nPlayStatus;			// Status of the player
232
	volatile ST_SONG stSong[MAX_LINES];		// The register of currently showed songs
244
	volatile ST_SONG stSong[MAX_LINES];		// The register of currently showed songs
233
	volatile integer nSongIdx;				// The index of the song pointer
245
	volatile integer nSongIdx;				// The index of the song pointer
234
	volatile char    sActPlaylist[128];		// The name of the actual playlist
246
	volatile char    sActPlaylist[128];		// The name of the actual playlist
235
	volatile integer nLastPressedLine;		// The number of the line pressed last
247
	volatile integer nLastPressedLine;		// The number of the line pressed last
Line 347... Line 359...
347
		return _strTok[idx];
359
		return _strTok[idx];
348
 
360
 
349
	return '';
361
	return '';
350
}
362
}
351
 
363
 
-
 
364
define_function setPopup(integer dir, char sPg[])
-
 
365
{
-
 
366
stack_var char pop[16];
-
 
367
stack_var integer i;
-
 
368
stack_var integer anz;
-
 
369
 
-
 
370
	if (DIR_OPEN)
-
 
371
		pop = '@PPN-';
-
 
372
	else
-
 
373
		pop = '@PPF-';
-
 
374
 
-
 
375
	anz = max_length_string(nIndex);
-
 
376
 
-
 
377
	for (i = 1; i <= anz; i++)
-
 
378
	{
-
 
379
		if (nIndex[i])
-
 
380
			send_command dvTPs[i],"pop,sPg";
-
 
381
	}
-
 
382
}
-
 
383
 
352
define_function clearAllLogos()
384
define_function clearAllLogos()
353
{
385
{
354
	send_command dvTPs,"'^SHO-',itoa(BTN_LINE1_PIC),'.',itoa(BTN_LINE1_PIC+MAX_LINES-1),',0'";
386
	send_command dvTPs,"'^SHO-',itoa(BTN_LINE1_PIC),'.',itoa(BTN_LINE1_PIC+MAX_LINES-1),',0'";
355
}
387
}
356
 
388
 
Line 418... Line 450...
418
		case TOK_ALBUM:		sPage = TOK_TXT_ALBUM;
450
		case TOK_ALBUM:		sPage = TOK_TXT_ALBUM;
419
		case TOK_ARTIST:	sPage = TOK_TXT_ARTIST;
451
		case TOK_ARTIST:	sPage = TOK_TXT_ARTIST;
420
		case TOK_GENRE:		sPage = TOK_TXT_GENRE;
452
		case TOK_GENRE:		sPage = TOK_TXT_GENRE;
421
		case TOK_QUEUE:		sPage = TOK_TXT_QUEUE;
453
		case TOK_QUEUE:		sPage = TOK_TXT_QUEUE;
422
		case TOK_PLAYLIST:	sPage = TOK_TXT_PLAYLIST;
454
		case TOK_PLAYLIST:	sPage = TOK_TXT_PLAYLIST;
-
 
455
		case TOK_SEARCH:	sPage = TOK_TXT_SEARCH;
-
 
456
	}
-
 
457
 
-
 
458
	return sPage;
-
 
459
}
-
 
460
 
-
 
461
define_function char[32] requestTitle(integer tok)
-
 
462
{
-
 
463
stack_var char sPage[32];
-
 
464
 
-
 
465
	sPage = '';
-
 
466
 
-
 
467
	switch(nPage)
-
 
468
	{
-
 
469
		case TOK_NONE:		sPage = 'No list';
-
 
470
		case TOK_TITLE:		sPage = 'Title list';
-
 
471
		case TOK_ALBUM:		sPage = 'Album list';
-
 
472
		case TOK_ARTIST:	sPage = 'Artist list';
-
 
473
		case TOK_GENRE:		sPage = 'Genre list';
-
 
474
		case TOK_QUEUE:		sPage = 'Queue';
-
 
475
		case TOK_PLAYLIST:	sPage = 'Playlists';
-
 
476
		case TOK_SEARCH:	sPage = "'Search for ',sSearchFor";
423
	}
477
	}
424
 
478
 
425
	return sPage;
479
	return sPage;
426
}
480
}
427
 
481
 
Line 439... Line 493...
439
	}
493
	}
440
 
494
 
441
	return '';
495
	return '';
442
}
496
}
443
 
497
 
-
 
498
define_function setPageLine(integer line, char str[])
-
 
499
{
-
 
500
	if (!line || line > MAX_LINES)
-
 
501
		return;
-
 
502
 
-
 
503
	switch(nPage)
-
 
504
	{
-
 
505
		case TOK_TITLE:		stSong[line].sTitle = str;
-
 
506
		case TOK_ARTIST:	stSong[line].sArtist = str;
-
 
507
		case TOK_ALBUM:		stSong[line].sAlbum = str;
-
 
508
		case TOK_GENRE:		stSong[line].sGenre = str;
-
 
509
	}
-
 
510
}
-
 
511
 
-
 
512
define_function clearPageLine(integer line)
-
 
513
{
-
 
514
	if (!line || line > MAX_LINES)
-
 
515
		return;
-
 
516
 
-
 
517
	stSong[line].nID = 0;
-
 
518
	stSong[line].sTitle = '';
-
 
519
	stSong[line].sArtist = '';
-
 
520
	stSong[line].sAlbum = '';
-
 
521
	stSong[line].sGenre = '';
-
 
522
	stSong[line].sCover = '';
-
 
523
}
-
 
524
 
444
define_function integer setActualPage(char pg[])
525
define_function integer setActualPage(char pg[])
445
{
526
{
446
	nPage = TOK_NONE;
527
	nPage = TOK_NONE;
447
 
528
 
448
	select
529
	select
Line 451... Line 532...
451
		active (pg == TOK_TXT_ARTIST):		nPage = TOK_ARTIST;
532
		active (pg == TOK_TXT_ARTIST):		nPage = TOK_ARTIST;
452
		active (pg == TOK_TXT_ALBUM):		nPage = TOK_ALBUM;
533
		active (pg == TOK_TXT_ALBUM):		nPage = TOK_ALBUM;
453
		active (pg == TOK_TXT_GENRE):		nPage = TOK_GENRE;
534
		active (pg == TOK_TXT_GENRE):		nPage = TOK_GENRE;
454
		active (pg == TOK_TXT_QUEUE):		nPage = TOK_QUEUE;
535
		active (pg == TOK_TXT_QUEUE):		nPage = TOK_QUEUE;
455
		active (pg == TOK_TXT_PLAYLIST):	nPage = TOK_PLAYLIST;
536
		active (pg == TOK_TXT_PLAYLIST):	nPage = TOK_PLAYLIST;
-
 
537
		active (pg == TOK_TXT_SEARCH):		nPage = TOK_SEARCH;
456
	}
538
	}
457
 
539
 
458
	switch(nPage)
540
	switch(nPage)
459
	{
541
	{
460
		case TOK_TITLE:
542
		case TOK_TITLE:
461
		case TOK_ALBUM:
543
		case TOK_ALBUM:
462
		case TOK_ARTIST:
544
		case TOK_ARTIST:
463
		case TOK_GENRE:
545
		case TOK_GENRE:
464
		case TOK_PLAYLIST:
546
		case TOK_PLAYLIST:
-
 
547
		case TOK_SEARCH:
465
			send_command dvTPs, "'@PPN-',sPopupAudio";
548
			setPopup(DIR_OPEN, sPopupAudio);
466
		break;
549
		break;
467
 
550
 
468
		case TOK_QUEUE:
551
		case TOK_QUEUE:
469
			send_command dvTPs, "'@PPN-',sPopupList";
552
			setPopup(DIR_OPEN, sPopupList);
470
		break;
553
		break;
471
	}
554
	}
472
 
555
 
473
	switch(nPage)
556
	switch(nPage)
474
	{
557
	{
Line 476... Line 559...
476
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Artists'";
559
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Artists'";
477
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Albums'";
560
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Albums'";
478
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Genres'";
561
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Genres'";
479
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Queue'";
562
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Queue'";
480
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Playlist'";
563
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Playlist'";
-
 
564
		case TOK_SEARCH:	send_command dvTPs, "'^TXT-',itoa(TEXT_TITLE),',0,Search for ',sSearchFor";
481
	}
565
	}
482
 
566
 
483
	return nPage;
567
	return nPage;
484
}
568
}
485
 
569
 
Line 518... Line 602...
518
	{
602
	{
519
		case TOK_TITLE:
603
		case TOK_TITLE:
520
		case TOK_ARTIST:
604
		case TOK_ARTIST:
521
		case TOK_ALBUM:
605
		case TOK_ALBUM:
522
		case TOK_GENRE:
606
		case TOK_GENRE:
523
			send_command dvTPs, "'@PPN-',sPopupMenu";
607
			setPopup(DIR_OPEN, sPopupMenu);
524
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
608
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
525
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
609
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
526
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
610
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
527
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Open folder'";
611
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Open folder'";
528
		break;
612
		break;
529
 
613
 
530
		case TOK_PLAYLIST:
614
		case TOK_PLAYLIST:
531
			send_command dvTPs, "'@PPN-',sPopupMenu";
615
			setPopup(DIR_OPEN, sPopupMenu);
532
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
616
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
533
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
617
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
534
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
618
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
-
 
619
 
-
 
620
			if (!nFolder)
535
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Show content'";
621
				send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Show content'";
-
 
622
			else
-
 
623
				send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Delete playlist'";
536
		break;
624
		break;
537
 
625
 
538
		case TOK_QUEUE:
626
		case TOK_QUEUE:
539
			send_command dvTPs, "'@PPN-',sPopupMenu";
627
			setPopup(DIR_OPEN, sPopupMenu);
540
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
628
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
541
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Play this now'";
629
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Play this now'";
542
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Save this to a playlist'";
630
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Save this to a playlist'";
543
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Delete from queue'";
631
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU3),',0,Delete from queue'";
544
		break;
632
		break;
-
 
633
 
-
 
634
		case TOK_SEARCH:
-
 
635
			setPopup(DIR_OPEN, sPopupMenu);
-
 
636
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),'.',itoa(BTN_MENU1+MAX_LINES-1),',0,'";	// Clear all lines
-
 
637
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU1),',0,Move to queue and play'";
-
 
638
			send_command dvTPs, "'^TXT-',itoa(BTN_MENU2),',0,Add to queue'";
-
 
639
		break;
545
	}
640
	}
546
 
641
 
547
	switch(nPage)
642
	switch(nPage)
548
	{
643
	{
549
		case TOK_TITLE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Title menu'";
644
		case TOK_TITLE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Title menu'";
550
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Artist menu'";
645
		case TOK_ARTIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Artist menu'";
551
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Album menu'";
646
		case TOK_ALBUM:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Album menu'";
552
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Genre menu'";
647
		case TOK_GENRE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Genre menu'";
553
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Queue menu'";
648
		case TOK_QUEUE:		send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Queue menu'";
554
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Playlist menu'";
649
		case TOK_PLAYLIST:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Playlist menu'";
-
 
650
		case TOK_SEARCH:	send_command dvTPs, "'^TXT-',itoa(TEXT_MENU_TITLE),',0,Search menu'";
555
	}
651
	}
556
}
652
}
557
 
653
 
558
DEFINE_START
654
DEFINE_START
559
	nStart = 1;
655
	nStart = 1;
Line 616... Line 712...
616
			{
712
			{
617
				case BTN_TITLE:		
713
				case BTN_TITLE:		
618
					send_command vdvMDB, "'LIST:TITLE:1:',itoa(MAX_LINES),';'"; 
714
					send_command vdvMDB, "'LIST:TITLE:1:',itoa(MAX_LINES),';'"; 
619
					nFolder = 0; 
715
					nFolder = 0; 
620
					nStart = 1;
716
					nStart = 1;
-
 
717
					nSearch = 0;
621
					nPage = TOK_TITLE;
718
					nPage = TOK_TITLE;
622
				break;
719
				break;
623
 
720
 
624
				case BTN_ARTIST:	
721
				case BTN_ARTIST:	
625
					send_command vdvMDB, "'FOLDER:ARTIST:1:',itoa(MAX_LINES),';'"; 
722
					send_command vdvMDB, "'FOLDER:ARTIST:1:',itoa(MAX_LINES),';'"; 
626
					nFolder = 0; 
723
					nFolder = 0; 
627
					nStart = 1;
724
					nStart = 1;
-
 
725
					nSearch = 0;
628
					nPage = TOK_ARTIST;
726
					nPage = TOK_ARTIST;
629
				break;
727
				break;
630
 
728
 
631
				case BTN_ALBUM:		
729
				case BTN_ALBUM:		
632
					send_command vdvMDB, "'FOLDER:ALBUM:1:',itoa(MAX_LINES),';'"; 
730
					send_command vdvMDB, "'FOLDER:ALBUM:1:',itoa(MAX_LINES),';'"; 
633
					nFolder = 0; 
731
					nFolder = 0; 
634
					nStart = 1;
732
					nStart = 1;
-
 
733
					nSearch = 0;
635
					nPage = TOK_ALBUM;
734
					nPage = TOK_ALBUM;
636
				break;
735
				break;
637
 
736
 
638
				case BTN_GENRE:		
737
				case BTN_GENRE:		
639
					send_command vdvMDB, "'FOLDER:GENRE:1:',itoa(MAX_LINES),';'"; 
738
					send_command vdvMDB, "'FOLDER:GENRE:1:',itoa(MAX_LINES),';'"; 
640
					nFolder = 0; 
739
					nFolder = 0; 
641
					nStart = 1;
740
					nStart = 1;
-
 
741
					nSearch = 0;
642
					nPage = TOK_GENRE;
742
					nPage = TOK_GENRE;
643
				break;
743
				break;
644
 
744
 
645
				case BTN_QUEUE: 
745
				case BTN_QUEUE: 
646
					send_command vdvMDB, "'LIST:QUEUE:1:',itoa(MAX_LINES),';'"; 
746
					send_command vdvMDB, "'LIST:QUEUE:1:',itoa(MAX_LINES),';'"; 
647
					nFolder = 0; 
747
					nFolder = 0; 
648
					nStart = 1;
748
					nStart = 1;
-
 
749
					nSearch = 0;
649
					nPage = TOK_QUEUE;
750
					nPage = TOK_QUEUE;
650
				break;
751
				break;
651
 
752
 
652
				case BTN_PLAYLIST:
753
				case BTN_PLAYLIST:
653
					if (!length_string(sActUser))
754
					if (!length_string(sActUser))
Line 659... Line 760...
659
					}
760
					}
660
					else
761
					else
661
					{
762
					{
662
						nFolder = 0;
763
						nFolder = 0;
663
						nStart = 1;
764
						nStart = 1;
-
 
765
						nSearch = 0;
664
						nPage = TOK_PLAYLIST;
766
						nPage = TOK_PLAYLIST;
665
						send_command vdvMDB, "'LIST:PLAYLIST:1:',itoa(MAX_LINES),';'";
767
						send_command vdvMDB, "'LIST:PLAYLIST:1:',itoa(MAX_LINES),';'";
666
					}
768
					}
667
				break;
769
				break;
668
 
770
 
669
				case BTN_NOW_PLAYING:
771
				case BTN_NOW_PLAYING:
670
					if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
772
					if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
671
						send_command dvTPs, "'@PPN-',sPopupDetail";
773
						setPopup(DIR_OPEN, sPopupDetail);
672
				break;
774
				break;
673
 
775
 
674
				case BTN_SAVE:
776
				case BTN_SAVE:
675
					send_command dvTPs[pan], "'@PPN-',sPopupSelUser";
777
					send_command dvTPs[pan], "'@PPN-',sPopupSelUser";
676
					sInputUser = sActUser;
778
					sInputUser = sActUser;
Line 683... Line 785...
683
				break;
785
				break;
684
 
786
 
685
				case BTN_DELETE:
787
				case BTN_DELETE:
686
					send_command vdvMDB, "'DELETE:QUEUE:-1;'";
788
					send_command vdvMDB, "'DELETE:QUEUE:-1;'";
687
				break;
789
				break;
-
 
790
 
-
 
791
				case BTN_SEARCH:
-
 
792
					send_command dvTPs[pan], "'@AKB-;Search for a ',requestActualPage()";
-
 
793
					nToDo = TODO_SEARCH;
-
 
794
					nKeyboard[pan] = TEXT_INPUT_SEARCH;
-
 
795
				break;
688
			}
796
			}
689
		}
797
		}
690
	}
798
	}
691
 
799
 
692
	/*
800
	/*
Line 740... Line 848...
740
					if (nFolder)
848
					if (nFolder)
741
					{
849
					{
742
						nStart = nOldStart;
850
						nStart = nOldStart;
743
						nFolder = 0;
851
						nFolder = 0;
744
					}
852
					}
-
 
853
					else if (nSearch)
-
 
854
					{
-
 
855
						nStart = nOldStart;
-
 
856
						nPage = nOldPage;
-
 
857
						nSearch = 0;
-
 
858
					}
745
 
859
 
746
					if (nPage == TOK_TITLE || nPage == TOK_QUEUE || nPage == TOK_PLAYLIST)
860
					if (nPage == TOK_TITLE || nPage == TOK_QUEUE || nPage == TOK_PLAYLIST)
747
						send_command vdvMDB, "'LIST:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
861
						send_command vdvMDB, "'LIST:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
748
					else
862
					else
749
						send_command vdvMDB, "'FOLDER:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
863
						send_command vdvMDB, "'FOLDER:',requestActualPage(),':',itoa(nStart),':',itoa(MAX_LINES),';'";
Line 846... Line 960...
846
						if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
960
						if (nPlayStatus == PLAYER_PLAY || nPlayStatus == PLAYER_PAUSE)
847
							send_command vdvMDB, 'STOP;';
961
							send_command vdvMDB, 'STOP;';
848
 
962
 
849
						send_command vdvMDB, 'DELETE:QUEUE:-1;';
963
						send_command vdvMDB, 'DELETE:QUEUE:-1;';
850
						
964
						
851
						if (nPage == TOK_TITLE)
965
						if (nPage == TOK_TITLE || nPage == TOK_SEARCH)
852
							send_command vdvMDB, "'PLAY:ID:',itoa(stSong[nLastPressedLine].nID),';'";
966
							send_command vdvMDB, "'PLAY:ID:',itoa(stSong[nLastPressedLine].nID),';'";
853
						else
967
						else
854
							send_command vdvMDB, "'PLAY:',requestActualPage(),':',stSong[nLastPressedLine].sTitle,';'";
968
							send_command vdvMDB, "'PLAY:',requestActualPage(),':',stSong[nLastPressedLine].sTitle,';'";
855
					}
969
					}
856
					else if (nPage == TOK_PLAYLIST)
970
					else if (nPage == TOK_PLAYLIST)
Line 869... Line 983...
869
				break;
983
				break;
870
 
984
 
871
				case BTN_MENU2:
985
				case BTN_MENU2:
872
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Add to queue
986
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Add to queue
873
					{
987
					{
874
						if (nPage == TOK_TITLE)
988
						if (nPage == TOK_TITLE || nPage == TOK_SEARCH)
875
							send_command vdvMDB, "'ADD:ID:',itoa(stSong[nLastPressedLine].nID),';'";
989
							send_command vdvMDB, "'ADD:ID:',itoa(stSong[nLastPressedLine].nID),';'";
876
						else
990
						else
877
							send_command vdvMDB, "'ADD:',requestActualPage(),':',stSong[nLastPressedLine].sTitle,';'";
991
							send_command vdvMDB, "'ADD:',requestActualPage(),':',stSong[nLastPressedLine].sTitle,';'";
878
					}
992
					}
879
					else if (nPage == TOK_PLAYLIST)
993
					else if (nPage == TOK_PLAYLIST)
880
						send_command vdvMDB, "'ADD:PLAYLIST:',EncodeURL(sActPlaylist),';'";
994
						send_command vdvMDB, "'ADD:PLAYLIST:',EncodeURL(sActPlaylist),';'";
881
					else if (nPage == TOK_QUEUE)
995
					else if (nPage == TOK_QUEUE)
882
					{
996
					{
883
						send_command dvTPs[pan], "'@PPN-',sPopupSelUser";
997
						setPopup(DIR_OPEN, sPopupSelUser);
884
						sInputUser = sActUser;
998
						sInputUser = sActUser;
885
						sInputPlaylist = '';
999
						sInputPlaylist = '';
886
						send_command dvTPs[pan], "'^TXT-',itoa(TEXT_INPUT_UNAME),',0,',sActUser";
1000
						send_command dvTPs[pan], "'^TXT-',itoa(TEXT_INPUT_UNAME),',0,',sActUser";
887
						send_command dvTPs[pan], "'@AKB-',sActPlaylist,';Enter name of playlist'";
1001
						send_command dvTPs[pan], "'@AKB-',sActPlaylist,';Enter name of playlist'";
888
						nToDo = TODO_USER_PLAYLIST_QUEUE;
1002
						nToDo = TODO_USER_PLAYLIST_QUEUE;
889
						nKeyboard[pan] = TEXT_INPUT_PLAYLIST;
1003
						nKeyboard[pan] = TEXT_INPUT_PLAYLIST;
890
					}
1004
					}
891
				break;
1005
				break;
892
				
1006
				
893
				case BTN_MENU3:
1007
				case BTN_MENU3:
894
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE)	// Open folder
1008
					if (nPage != TOK_PLAYLIST && nPage != TOK_QUEUE && nPage != TOK_SEARCH)	// Open folder
895
					{
1009
					{
896
						sActFolder = stSong[nLastPressedLine].sTitle;	// Get name of folder
1010
						sActFolder = stSong[nLastPressedLine].sTitle;	// Get name of folder
897
						nFolder = true;									// Set marker for folder
1011
						nFolder = true;									// Set marker for folder
898
						nOldStart = nStart;								// Save current position
1012
						nOldStart = nStart;								// Save current position
899
						nStart = 1;										// Reset start position
1013
						nStart = 1;										// Reset start position
Line 910... Line 1024...
910
						send_command vdvMDB, "'DELETE:QUEUE:',itoa(stSong[nLastPressedLine].nID),';'";
1024
						send_command vdvMDB, "'DELETE:QUEUE:',itoa(stSong[nLastPressedLine].nID),';'";
911
				break;
1025
				break;
912
			}
1026
			}
913
 
1027
 
914
			if (nPage != TOK_QUEUE)
1028
			if (nPage != TOK_QUEUE)
915
				send_command dvTPs, "'@PPN-',sPopupAudio";
1029
				setPopup(DIR_OPEN, sPopupAudio);
916
			else
1030
			else
917
				send_command dvTPs, "'@PPN-',sPopupList";
1031
				setPopup(DIR_OPEN, sPopupList);
918
		}
1032
		}
919
	}
1033
	}
920
 
1034
 
921
	button_event[dvTPs,nBtnUser]
1035
	button_event[dvTPs,nBtnUser]
922
	{
1036
	{
Line 987... Line 1101...
987
					send_command dvTPs[pan],"'@PPF-',sPopupSelUser";
1101
					send_command dvTPs[pan],"'@PPF-',sPopupSelUser";
988
				break;
1102
				break;
989
 
1103
 
990
				case BTN_DETAIL_BACK:
1104
				case BTN_DETAIL_BACK:
991
					if (nPage == TOK_QUEUE)
1105
					if (nPage == TOK_QUEUE)
992
						send_command dvTPs,"'@PPN-',sPopupAudio";
1106
						setPopup(DIR_OPEN, sPopupAudio);
993
					else
1107
					else
994
						send_command dvTPs,"'@PPN-',sPopupList";
1108
						setPopup(DIR_OPEN, sPopupList);
995
				break;
1109
				break;
996
			}
1110
			}
997
		}
1111
		}
998
	}
1112
	}
999
 
1113
 
Line 1039... Line 1153...
1039
						{
1153
						{
1040
							switch (i)
1154
							switch (i)
1041
							{
1155
							{
1042
								case 1: sPg = getStrTok(i);
1156
								case 1: sPg = getStrTok(i);
1043
								case 2: nSongID = atoi(getStrTok(i));
1157
								case 2: nSongID = atoi(getStrTok(i));
-
 
1158
 
-
 
1159
								case 3:
1044
								case 3: nLine = atoi(getStrTok(i));
1160
									nLine = atoi(getStrTok(i));
-
 
1161
									clearPageLine(nLine);
-
 
1162
									stSong[nLine].nID = nSongID;
-
 
1163
								break;
-
 
1164
 
1045
								case 4: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1165
								case 4: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1046
								case 5: stSong[nLine].sArtist = DecodeURL(getStrTok(i));
1166
								case 5: stSong[nLine].sArtist = DecodeURL(getStrTok(i));
1047
								case 6: stSong[nLine].sAlbum = DecodeURL(getStrTok(i));
1167
								case 6: stSong[nLine].sAlbum = DecodeURL(getStrTok(i));
1048
								case 7: stSong[nLine].sGenre = DecodeURL(getStrTok(i));
1168
								case 7: stSong[nLine].sGenre = DecodeURL(getStrTok(i));
1049
								case 8: stSong[nLine].sCover = DecodeURL(getStrTok(i));
1169
								case 8: stSong[nLine].sCover = DecodeURL(getStrTok(i));
1050
							}
1170
							}
1051
						}
1171
						}
1052
 
1172
 
1053
						stSong[nLine].nID = nSongID;
-
 
1054
 
-
 
1055
						if (nLine == 1)
1173
						if (nLine == 1)
1056
						{
1174
						{
1057
							setActualPage(sPg);
1175
							setActualPage(sPg);
1058
							clearPage();
1176
							clearPage();
1059
						}
1177
						}
Line 1074... Line 1192...
1074
						for (i = 1; i <= anz; i++)
1192
						for (i = 1; i <= anz; i++)
1075
						{
1193
						{
1076
							switch(i)
1194
							switch(i)
1077
							{
1195
							{
1078
								case 1: sPg = getStrTok(i);
1196
								case 1: sPg = getStrTok(i);
-
 
1197
 
-
 
1198
								case 2:
1079
								case 2: nLine = atoi(getStrTok(i));
1199
									nLine = atoi(getStrTok(i));
-
 
1200
									clearPageLine(nLine);
-
 
1201
								break;
-
 
1202
 
1080
								case 3: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1203
								case 3: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1081
								case 4: stSong[nLine].sCover = DecodeURL(getStrTok(i));
1204
								case 4: stSong[nLine].sCover = DecodeURL(getStrTok(i));
1082
							}
1205
							}
1083
						}
1206
						}
1084
 
1207
 
Line 1107... Line 1230...
1107
 
1230
 
1108
						for (i = 1; i <= anz; i++)
1231
						for (i = 1; i <= anz; i++)
1109
						{
1232
						{
1110
							switch(i)
1233
							switch(i)
1111
							{
1234
							{
-
 
1235
								case 1: 
1112
								case 1: nLine = atoi(getStrTok(i));
1236
									nLine = atoi(getStrTok(i));
-
 
1237
									clearPageLine(nLine);
-
 
1238
								break;
-
 
1239
 
1113
								case 2: sActUser = DecodeURL(getStrTok(i));
1240
								case 2: sActUser = DecodeURL(getStrTok(i));
1114
								case 3: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1241
								case 3: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
1115
							}
1242
							}
1116
						}
1243
						}
1117
 
1244
 
1118
						stSong[nLine].nID = 0;
1245
						if (nLine == 1)
-
 
1246
						{
-
 
1247
							setActualPage(TOK_TXT_PLAYLIST);
-
 
1248
							clearPage();
-
 
1249
						}
-
 
1250
 
1119
						stSong[nLine].sAlbum = '';
1251
						displaySong(nLine);
-
 
1252
					}
-
 
1253
 
-
 
1254
					// SEARCH:<type>:<id>:<line>:<title>:<artist>:<album>:<genre>;
-
 
1255
					active(find_string(buf, 'SEARCH:', 1)):
-
 
1256
					{
-
 
1257
					stack_var char sPg[32];
-
 
1258
					stack_var integer id;
-
 
1259
					stack_var integer nLine;
1120
						stSong[nLine].sArtist = '';
1260
					stack_var integer anz;
-
 
1261
					stack_var integer i;
-
 
1262
 
-
 
1263
						remove_string(buf, 'SEARCH:', 1);
-
 
1264
						anz = strtok(buf, ':');
-
 
1265
 
-
 
1266
						for (i = 1; i <= anz; i++)
-
 
1267
						{
-
 
1268
							switch(i)
-
 
1269
							{
-
 
1270
								case 1: sPg = getStrTok(i);
-
 
1271
								case 2: id = atoi(getStrTok(i));
-
 
1272
 
-
 
1273
								case 3:
-
 
1274
									nLine = atoi(getStrTok(i));
-
 
1275
									clearPageLine(nLine);
1121
						stSong[nLine].sGenre = '';
1276
									stSong[nLine].nID = id;
-
 
1277
								break;
-
 
1278
 
-
 
1279
								case 4: stSong[nLine].sTitle = DecodeURL(getStrTok(i));
-
 
1280
								case 5: stSong[nLine].sArtist = DecodeURL(getStrTok(i));
-
 
1281
								case 6: stSong[nLine].sAlbum = DecodeURL(getStrTok(i));
-
 
1282
								case 7: stSong[nLine].sGenre = DecodeURL(getStrTok(i));
-
 
1283
								case 8: stSong[nLine].sCover = DecodeURL(getStrTok(i));
-
 
1284
							}
-
 
1285
						}
1122
 
1286
 
1123
						if (nLine == 1)
1287
						if (nLine == 1)
1124
						{
1288
						{
1125
							setActualPage('PLAYLIST');
1289
							setActualPage(TOK_TXT_SEARCH);
1126
							clearPage();
1290
							clearPage();
1127
						}
1291
						}
1128
 
1292
 
1129
						displaySong(nLine);
1293
						displaySong(nLine);
1130
					}
1294
					}
Line 1270... Line 1434...
1270
						{
1434
						{
1271
							sInputPlaylist = buf;
1435
							sInputPlaylist = buf;
1272
							send_command dvTPs, "'^TXT-',itoa(TEXT_INPUT_PLAYLIST),',0,',sInputPlaylist";
1436
							send_command dvTPs, "'^TXT-',itoa(TEXT_INPUT_PLAYLIST),',0,',sInputPlaylist";
1273
							nKeyboard[pan] = 0;
1437
							nKeyboard[pan] = 0;
1274
						}
1438
						}
-
 
1439
						else if (nKeyboard[pan] == TEXT_INPUT_SEARCH)
-
 
1440
						{
-
 
1441
							setPopup(DIR_OPEN, sPopupAudio);
-
 
1442
							nOldStart = nStart;
-
 
1443
							nStart = 1;
-
 
1444
							nSearch = 1;
-
 
1445
							nOldPage = nPage;
-
 
1446
							send_command vdvMDB, "'SEARCH:',requestActualPage(),':',EncodeURL(buf),':1:',itoa(MAX_LINES),';'";
-
 
1447
						}
1275
					}
1448
					}
1276
				}
1449
				}
1277
			}
1450
			}
1278
		}
1451
		}
1279
	}
1452
	}