summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playlist_viewer.c131
1 files changed, 66 insertions, 65 deletions
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index cd90572b95..aaa45599b0 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -131,10 +131,10 @@ static int save_playlist_func(void);
131static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer, 131static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer,
132 int names_buffer_size) 132 int names_buffer_size)
133{ 133{
134 pb->name_buffer=names_buffer; 134 pb->name_buffer = names_buffer;
135 pb->buffer_size=names_buffer_size; 135 pb->buffer_size = names_buffer_size;
136 pb->first_index=0; 136 pb->first_index = 0;
137 pb->num_loaded=0; 137 pb->num_loaded = 0;
138} 138}
139 139
140/* 140/*
@@ -152,7 +152,7 @@ static void playlist_buffer_load_entries(struct playlist_buffer *pb, int index,
152 if (num_entries > MAX_PLAYLIST_ENTRIES) 152 if (num_entries > MAX_PLAYLIST_ENTRIES)
153 num_entries = MAX_PLAYLIST_ENTRIES; 153 num_entries = MAX_PLAYLIST_ENTRIES;
154 154
155 for(i=0; i<num_entries; i++) 155 for (i = 0; i < num_entries; i++)
156 { 156 {
157 int len = playlist_entry_load(&(pb->tracks[i]), index, p, remaining); 157 int len = playlist_entry_load(&(pb->tracks[i]), index, p, remaining);
158 if (len < 0) 158 if (len < 0)
@@ -165,32 +165,32 @@ static void playlist_buffer_load_entries(struct playlist_buffer *pb, int index,
165 p += len; 165 p += len;
166 remaining -= len; 166 remaining -= len;
167 167
168 if(direction==FORWARD) 168 if(direction == FORWARD)
169 index++; 169 index++;
170 else 170 else
171 index--; 171 index--;
172 index+=viewer.num_tracks; 172 index += viewer.num_tracks;
173 index%=viewer.num_tracks; 173 index %= viewer.num_tracks;
174 } 174 }
175 pb->direction=direction; 175 pb->direction = direction;
176 pb->num_loaded = i; 176 pb->num_loaded = i;
177} 177}
178 178
179static void playlist_buffer_load_entries_screen(struct playlist_buffer * pb, 179static void playlist_buffer_load_entries_screen(struct playlist_buffer * pb,
180 enum direction direction) 180 enum direction direction)
181{ 181{
182 if(direction==FORWARD) 182 if (direction == FORWARD)
183 { 183 {
184 int min_start=viewer.selected_track-2*screens[0].getnblines(); 184 int min_start = viewer.selected_track-2*screens[0].getnblines();
185 while(min_start<0) 185 while (min_start < 0)
186 min_start+=viewer.num_tracks; 186 min_start += viewer.num_tracks;
187 min_start %= viewer.num_tracks; 187 min_start %= viewer.num_tracks;
188 playlist_buffer_load_entries(pb, min_start, FORWARD); 188 playlist_buffer_load_entries(pb, min_start, FORWARD);
189 } 189 }
190 else 190 else
191 { 191 {
192 int max_start=viewer.selected_track+2*screens[0].getnblines(); 192 int max_start = viewer.selected_track+2*screens[0].getnblines();
193 max_start%=viewer.num_tracks; 193 max_start %= viewer.num_tracks;
194 playlist_buffer_load_entries(pb, max_start, BACKWARD); 194 playlist_buffer_load_entries(pb, max_start, BACKWARD);
195 } 195 }
196} 196}
@@ -227,22 +227,22 @@ static int playlist_entry_load(struct playlist_entry *entry, int index,
227static int playlist_buffer_get_index(struct playlist_buffer *pb, int index) 227static int playlist_buffer_get_index(struct playlist_buffer *pb, int index)
228{ 228{
229 int buffer_index; 229 int buffer_index;
230 if(pb->direction==FORWARD) 230 if (pb->direction == FORWARD)
231 { 231 {
232 if(index>=pb->first_index) 232 if (index >= pb->first_index)
233 buffer_index=index-pb->first_index; 233 buffer_index = index-pb->first_index;
234 else /* rotation : track0 in buffer + requested track */ 234 else /* rotation : track0 in buffer + requested track */
235 buffer_index=(viewer.num_tracks-pb->first_index)+(index); 235 buffer_index = viewer.num_tracks-pb->first_index+index;
236 } 236 }
237 else 237 else
238 { 238 {
239 if(index<=pb->first_index) 239 if (index <= pb->first_index)
240 buffer_index=pb->first_index-index; 240 buffer_index = pb->first_index-index;
241 else /* rotation : track0 in buffer + dist from the last track 241 else /* rotation : track0 in buffer + dist from the last track
242 to the requested track (num_tracks-requested track) */ 242 to the requested track (num_tracks-requested track) */
243 buffer_index=(pb->first_index)+(viewer.num_tracks-index); 243 buffer_index = pb->first_index+viewer.num_tracks-index;
244 } 244 }
245 return(buffer_index); 245 return buffer_index;
246} 246}
247 247
248#define distance(a, b) \ 248#define distance(a, b) \
@@ -250,24 +250,24 @@ static int playlist_buffer_get_index(struct playlist_buffer *pb, int index)
250static bool playlist_buffer_needs_reload(struct playlist_buffer* pb, 250static bool playlist_buffer_needs_reload(struct playlist_buffer* pb,
251 int track_index) 251 int track_index)
252{ 252{
253 if(pb->num_loaded==viewer.num_tracks) 253 if (pb->num_loaded == viewer.num_tracks)
254 return(false); 254 return false;
255 int selected_index=playlist_buffer_get_index(pb, track_index); 255 int selected_index = playlist_buffer_get_index(pb, track_index);
256 int first_buffer_index=playlist_buffer_get_index(pb, pb->first_index); 256 int first_buffer_index = playlist_buffer_get_index(pb, pb->first_index);
257 int distance_beginning=distance(selected_index, first_buffer_index); 257 int distance_beginning = distance(selected_index, first_buffer_index);
258 if(distance_beginning<MIN_BUFFER_MARGIN) 258 if (distance_beginning < MIN_BUFFER_MARGIN)
259 return(true); 259 return true;
260 260
261 if(pb->num_loaded - distance_beginning < MIN_BUFFER_MARGIN) 261 if (pb->num_loaded - distance_beginning < MIN_BUFFER_MARGIN)
262 return(true); 262 return true;
263 return(false); 263 return false;
264} 264}
265 265
266static struct playlist_entry * playlist_buffer_get_track(struct playlist_buffer *pb, 266static struct playlist_entry * playlist_buffer_get_track(struct playlist_buffer *pb,
267 int index) 267 int index)
268{ 268{
269 int buffer_index=playlist_buffer_get_index(pb, index); 269 int buffer_index = playlist_buffer_get_index(pb, index);
270 return(&(pb->tracks[buffer_index])); 270 return &(pb->tracks[buffer_index]);
271} 271}
272 272
273/* Initialize the playlist viewer. */ 273/* Initialize the playlist viewer. */
@@ -344,7 +344,7 @@ static bool playlist_viewer_init(struct playlist_viewer * viewer,
344 buffer += index_buffer_size; 344 buffer += index_buffer_size;
345 buffer_size -= index_buffer_size; 345 buffer_size -= index_buffer_size;
346 } 346 }
347 playlist_buffer_init(&viewer->buffer, buffer, buffer_size ); 347 playlist_buffer_init(&viewer->buffer, buffer, buffer_size);
348 348
349 viewer->moving_track = -1; 349 viewer->moving_track = -1;
350 viewer->moving_playlist_index = -1; 350 viewer->moving_playlist_index = -1;
@@ -414,8 +414,8 @@ static bool update_playlist(bool force)
414 playlist_get_resume_info(&viewer.current_playing_track); 414 playlist_get_resume_info(&viewer.current_playing_track);
415 else 415 else
416 viewer.current_playing_track = -1; 416 viewer.current_playing_track = -1;
417 int nb_tracks=playlist_amount_ex(viewer.playlist); 417 int nb_tracks = playlist_amount_ex(viewer.playlist);
418 force=force || nb_tracks != viewer.num_tracks; 418 force = force || nb_tracks != viewer.num_tracks;
419 if (force) 419 if (force)
420 { 420 {
421 /* Reload tracks */ 421 /* Reload tracks */
@@ -443,7 +443,7 @@ static bool update_playlist(bool force)
443static int onplay_menu(int index) 443static int onplay_menu(int index)
444{ 444{
445 int result, ret = 0; 445 int result, ret = 0;
446 struct playlist_entry * current_track= 446 struct playlist_entry * current_track =
447 playlist_buffer_get_track(&viewer.buffer, index); 447 playlist_buffer_get_track(&viewer.buffer, index);
448 MENUITEM_STRINGLIST(menu_items, ID2P(LANG_PLAYLIST), NULL, 448 MENUITEM_STRINGLIST(menu_items, ID2P(LANG_PLAYLIST), NULL,
449 ID2P(LANG_REMOVE), ID2P(LANG_MOVE), 449 ID2P(LANG_REMOVE), ID2P(LANG_MOVE),
@@ -500,7 +500,7 @@ static int onplay_menu(int index)
500 case 3: /* add to a new one */ 500 case 3: /* add to a new one */
501 catalog_add_to_a_playlist(current_track->name, 501 catalog_add_to_a_playlist(current_track->name,
502 FILE_ATTR_AUDIO, 502 FILE_ATTR_AUDIO,
503 result==3, NULL); 503 result == 3, NULL);
504 ret = 0; 504 ret = 0;
505 break; 505 break;
506 case 4: /* playlist viewer settings */ 506 case 4: /* playlist viewer settings */
@@ -540,22 +540,22 @@ enum playlist_viewer_result playlist_viewer(void)
540 return playlist_viewer_ex(NULL); 540 return playlist_viewer_ex(NULL);
541} 541}
542 542
543static int get_track_num( struct playlist_viewer * local_viewer, 543static int get_track_num(struct playlist_viewer *local_viewer,
544 int selected_item ) 544 int selected_item)
545{ 545{
546 if( local_viewer->moving_track >= 0 ) 546 if (local_viewer->moving_track >= 0)
547 { 547 {
548 if( local_viewer->selected_track == selected_item ) 548 if (local_viewer->selected_track == selected_item)
549 { 549 {
550 return local_viewer->moving_track; 550 return local_viewer->moving_track;
551 } 551 }
552 else if( local_viewer->selected_track > selected_item 552 else if (local_viewer->selected_track > selected_item
553 && selected_item >= local_viewer->moving_track ) 553 && selected_item >= local_viewer->moving_track)
554 { 554 {
555 return selected_item+1; /* move down */ 555 return selected_item+1; /* move down */
556 } 556 }
557 else if( local_viewer->selected_track < selected_item 557 else if (local_viewer->selected_track < selected_item
558 && selected_item <= local_viewer->moving_track ) 558 && selected_item <= local_viewer->moving_track)
559 { 559 {
560 return selected_item-1; /* move up */ 560 return selected_item-1; /* move up */
561 } 561 }
@@ -568,11 +568,11 @@ static const char* playlist_callback_name(int selected_item,
568 char *buffer, 568 char *buffer,
569 size_t buffer_len) 569 size_t buffer_len)
570{ 570{
571 struct playlist_viewer * local_viewer = (struct playlist_viewer *)data; 571 struct playlist_viewer *local_viewer = (struct playlist_viewer *)data;
572 572
573 int track_num = get_track_num(local_viewer, selected_item); 573 int track_num = get_track_num(local_viewer, selected_item);
574 struct playlist_entry *track = 574 struct playlist_entry *track =
575 playlist_buffer_get_track(&(local_viewer->buffer), track_num); 575 playlist_buffer_get_track(&(local_viewer->buffer), track_num);
576 576
577 format_line(track, buffer, buffer_len); 577 format_line(track, buffer, buffer_len);
578 578
@@ -583,10 +583,10 @@ static const char* playlist_callback_name(int selected_item,
583static enum themable_icons playlist_callback_icons(int selected_item, 583static enum themable_icons playlist_callback_icons(int selected_item,
584 void *data) 584 void *data)
585{ 585{
586 struct playlist_viewer * local_viewer=(struct playlist_viewer *)data; 586 struct playlist_viewer *local_viewer = (struct playlist_viewer *)data;
587 587
588 int track_num = get_track_num(local_viewer, selected_item); 588 int track_num = get_track_num(local_viewer, selected_item);
589 struct playlist_entry *track= 589 struct playlist_entry *track =
590 playlist_buffer_get_track(&(local_viewer->buffer), track_num); 590 playlist_buffer_get_track(&(local_viewer->buffer), track_num);
591 591
592 if (track->index == local_viewer->current_playing_track) 592 if (track->index == local_viewer->current_playing_track)
@@ -608,14 +608,14 @@ static enum themable_icons playlist_callback_icons(int selected_item,
608 return Icon_NOICON; 608 return Icon_NOICON;
609} 609}
610 610
611static int playlist_callback_voice(int selected_item, void * data) 611static int playlist_callback_voice(int selected_item, void *data)
612{ 612{
613 struct playlist_viewer * local_viewer = (struct playlist_viewer *)data; 613 struct playlist_viewer *local_viewer = (struct playlist_viewer *)data;
614 614
615 int track_num = get_track_num(local_viewer, selected_item); 615 int track_num = get_track_num(local_viewer, selected_item);
616 struct playlist_entry *track = 616 struct playlist_entry *track =
617 playlist_buffer_get_track(&(local_viewer->buffer), track_num); 617 playlist_buffer_get_track(&(local_viewer->buffer), track_num);
618 618
619 bool enqueue = false; 619 bool enqueue = false;
620 620
621 if (global_settings.talk_file_clip || global_settings.talk_file == 2) 621 if (global_settings.talk_file_clip || global_settings.talk_file == 2)
@@ -641,7 +641,7 @@ static int playlist_callback_voice(int selected_item, void * data)
641enum playlist_viewer_result playlist_viewer_ex(const char* filename) 641enum playlist_viewer_result playlist_viewer_ex(const char* filename)
642{ 642{
643 enum playlist_viewer_result ret = PLAYLIST_VIEWER_OK; 643 enum playlist_viewer_result ret = PLAYLIST_VIEWER_OK;
644 bool exit=false; /* exit viewer */ 644 bool exit = false; /* exit viewer */
645 int button; 645 int button;
646 struct gui_synclist playlist_lists; 646 struct gui_synclist playlist_lists;
647 if (!playlist_viewer_init(&viewer, filename, false)) 647 if (!playlist_viewer_init(&viewer, filename, false))
@@ -777,7 +777,7 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename)
777 update_playlist(true); 777 update_playlist(true);
778 if (viewer.num_tracks <= 0) 778 if (viewer.num_tracks <= 0)
779 exit = true; 779 exit = true;
780 if(viewer.selected_track >= viewer.num_tracks) 780 if (viewer.selected_track >= viewer.num_tracks)
781 viewer.selected_track = viewer.num_tracks-1; 781 viewer.selected_track = viewer.num_tracks-1;
782 } 782 }
783 gui_synclist_draw(&playlist_lists); 783 gui_synclist_draw(&playlist_lists);
@@ -833,7 +833,8 @@ bool search_playlist(void)
833 833
834 cpu_boost(true); 834 cpu_boost(true);
835 835
836 for (i=0; (i<playlist_count)&&(found_indicies_count<MAX_PLAYLIST_ENTRIES); i++) 836 for (i = 0; i < playlist_count &&
837 found_indicies_count < MAX_PLAYLIST_ENTRIES; i++)
837 { 838 {
838 if (found_indicies_count != last_found_count) 839 if (found_indicies_count != last_found_count)
839 { 840 {
@@ -882,13 +883,13 @@ bool search_playlist(void)
882 case ACTION_STD_OK: 883 case ACTION_STD_OK:
883 { 884 {
884 int sel = gui_synclist_get_sel_pos(&playlist_lists); 885 int sel = gui_synclist_get_sel_pos(&playlist_lists);
885 playlist_start(found_indicies[sel] ,0); 886 playlist_start(found_indicies[sel], 0);
886 exit = 1; 887 exit = 1;
887 } 888 }
888 break; 889 break;
889 890
890 default: 891 default:
891 if(default_event_handler(button) == SYS_USB_CONNECTED) 892 if (default_event_handler(button) == SYS_USB_CONNECTED)
892 { 893 {
893 ret = true; 894 ret = true;
894 exit = true; 895 exit = true;