/* Format trackname for display purposes */ static void format_name(char* dest, const char* src) { switch (global_settings.playlist_viewer_track_display) { case 0: default: { /* Only display the filename */ char* p = strrchr(src, '/'); strcpy(dest, p+1); /* Remove the extension */ strrsplt(dest, '.'); break; } case 1: /* Full path */ strcpy(dest, src); break; } }
static const char* get_bookmark_info(int list_index, void* data, char *buffer, size_t buffer_len) { struct bookmark_list* bookmarks = (struct bookmark_list*) data; int index = list_index / 2; if (bookmarks->show_dont_resume) { if (index == 0) { return list_index % 2 == 0 ? (char*) str(LANG_BOOKMARK_DONT_RESUME) : " "; } index--; } if (bookmarks->reload || (index >= bookmarks->start + bookmarks->count) || (index < bookmarks->start)) { int read_index = index; /* Using count as a guide on how far to move could possibly fail * sometimes. Use byte count if that is a problem? */ if (read_index != 0) { /* Move count * 3 / 4 items in the direction the user is moving, * but don't go too close to the end. */ int offset = bookmarks->count; int max = bookmarks->total_count - (bookmarks->count / 2); if (read_index < bookmarks->start) { offset *= 3; } read_index = index - offset / 4; if (read_index > max) { read_index = max; } if (read_index < 0) { read_index = 0; } } if (buffer_bookmarks(bookmarks, read_index) <= index) { return ""; } } if (!parse_bookmark(bookmarks->items[index - bookmarks->start], true, true)) { return list_index % 2 == 0 ? (char*) str(LANG_BOOKMARK_INVALID) : " "; } if (list_index % 2 == 0) { char *name; char *format; int len = strlen(global_temp_buffer); if (bookmarks->show_playlist_name && len > 0) { name = global_temp_buffer; len--; if (name[len] != '/') { strrsplt(name, '.'); } else if (len > 1) { name[len] = '\0'; } if (len > 1) { name = strrsplt(name, '/'); } format = "%s : %s"; } else { name = global_filename; format = "%s"; } strrsplt(global_filename, '.'); snprintf(buffer, buffer_len, format, name, global_filename); return buffer; } else { char time_buf[32]; format_time(time_buf, sizeof(time_buf), bm.resume_time); snprintf(buffer, buffer_len, "%s, %d%s", time_buf, bm.resume_index + 1, bm.shuffle ? (char*) str(LANG_BOOKMARK_SHUFFLE) : ""); return buffer; } }