Skip to content

Commit

Permalink
Save 'overwrite_playlist' to manual scan playlist
Browse files Browse the repository at this point in the history
  • Loading branch information
sonninnos authored and LibretroAdmin committed Jul 26, 2023
1 parent 9af0d5f commit e258235
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 2 deletions.
5 changes: 3 additions & 2 deletions manual_content_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,7 @@ enum manual_content_scan_playlist_refresh_status
bool search_recursively = false;
bool search_archives = false;
bool filter_dat_content = false;
bool overwrite_playlist = false;
#ifdef HAVE_LIBRETRODB
struct string_list *rdb_list = NULL;
#endif
Expand Down Expand Up @@ -542,6 +543,7 @@ enum manual_content_scan_playlist_refresh_status
search_recursively = playlist_get_scan_search_recursively(playlist);
search_archives = playlist_get_scan_search_archives(playlist);
filter_dat_content = playlist_get_scan_filter_dat_content(playlist);
overwrite_playlist = playlist_get_scan_overwrite_playlist(playlist);

/* Determine system name (playlist basename
* without extension) */
Expand Down Expand Up @@ -712,11 +714,10 @@ enum manual_content_scan_playlist_refresh_status
scan_settings.search_recursively = search_recursively;
scan_settings.search_archives = search_archives;
scan_settings.filter_dat_content = filter_dat_content;
scan_settings.overwrite_playlist = overwrite_playlist;
/* When refreshing a playlist:
* > We never overwrite the existing file
* > We always validate entries in the
* existing file */
scan_settings.overwrite_playlist = false;
scan_settings.validate_entries = true;

end:
Expand Down
30 changes: 30 additions & 0 deletions playlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ typedef struct
bool search_recursively;
bool search_archives;
bool filter_dat_content;
bool overwrite_playlist;
} playlist_manual_scan_record_t;

struct content_playlist
Expand Down Expand Up @@ -1836,6 +1837,17 @@ void playlist_write_file(playlist_t *playlist)
}
rjsonwriter_raw(writer, ",", 1);
rjsonwriter_raw(writer, "\n", 1);

rjsonwriter_add_spaces(writer, 2);
rjsonwriter_add_string(writer, "scan_overwrite_playlist");
rjsonwriter_raw(writer, ":", 1);
rjsonwriter_raw(writer, " ", 1);
{
bool value = playlist->scan_record.overwrite_playlist;
rjsonwriter_raw(writer, (value ? "true" : "false"), (value ? 4 : 5));
}
rjsonwriter_raw(writer, ",", 1);
rjsonwriter_raw(writer, "\n", 1);
}

rjsonwriter_add_spaces(writer, 2);
Expand Down Expand Up @@ -2429,6 +2441,8 @@ static bool JSONObjectMemberHandler(void *context, const char *pValue, size_t le
pCtx->current_meta_bool_val = &pCtx->playlist->scan_record.search_archives;
else if (string_is_equal(pValue, "scan_filter_dat_content"))
pCtx->current_meta_bool_val = &pCtx->playlist->scan_record.filter_dat_content;
else if (string_is_equal(pValue, "scan_overwrite_playlist"))
pCtx->current_meta_bool_val = &pCtx->playlist->scan_record.overwrite_playlist;
else if (string_is_equal(pValue, "sort_mode"))
pCtx->current_meta_sort_mode_val = &pCtx->playlist->sort_mode;
break;
Expand Down Expand Up @@ -3267,6 +3281,13 @@ bool playlist_get_scan_filter_dat_content(playlist_t *playlist)
return playlist->scan_record.filter_dat_content;
}

bool playlist_get_scan_overwrite_playlist(playlist_t *playlist)
{
if (!playlist)
return false;
return playlist->scan_record.overwrite_playlist;
}

bool playlist_scan_refresh_enabled(playlist_t *playlist)
{
if (!playlist)
Expand Down Expand Up @@ -3476,6 +3497,15 @@ void playlist_set_scan_filter_dat_content(playlist_t *playlist, bool filter_dat_
}
}

void playlist_set_scan_overwrite_playlist(playlist_t *playlist, bool overwrite_playlist)
{
if (playlist && playlist->scan_record.overwrite_playlist != overwrite_playlist)
{
playlist->scan_record.overwrite_playlist = overwrite_playlist;
playlist->modified = true;
}
}

/* Returns true if specified entry has a valid
* core association (i.e. a non-empty string
* other than DETECT) */
Expand Down
2 changes: 2 additions & 0 deletions playlist.h
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,7 @@ const char *playlist_get_scan_dat_file_path(playlist_t *playlist);
bool playlist_get_scan_search_recursively(playlist_t *playlist);
bool playlist_get_scan_search_archives(playlist_t *playlist);
bool playlist_get_scan_filter_dat_content(playlist_t *playlist);
bool playlist_get_scan_overwrite_playlist(playlist_t *playlist);
bool playlist_scan_refresh_enabled(playlist_t *playlist);

void playlist_set_default_core_path(playlist_t *playlist, const char *core_path);
Expand All @@ -375,6 +376,7 @@ void playlist_set_scan_dat_file_path(playlist_t *playlist, const char *dat_file_
void playlist_set_scan_search_recursively(playlist_t *playlist, bool search_recursively);
void playlist_set_scan_search_archives(playlist_t *playlist, bool search_archives);
void playlist_set_scan_filter_dat_content(playlist_t *playlist, bool filter_dat_content);
void playlist_set_scan_overwrite_playlist(playlist_t *playlist, bool overwrite_playlist);

/* Returns true if specified entry has a valid
* core association (i.e. a non-empty string
Expand Down
2 changes: 2 additions & 0 deletions tasks/task_manual_content_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,8 @@ static void task_manual_content_scan_handler(retro_task_t *task)
manual_scan->task_config->search_archives);
playlist_set_scan_filter_dat_content(manual_scan->playlist,
manual_scan->task_config->filter_dat_content);
playlist_set_scan_overwrite_playlist(manual_scan->playlist,
manual_scan->task_config->overwrite_playlist);

/* All good - can start iterating
* > If playlist has content and 'validate
Expand Down

0 comments on commit e258235

Please sign in to comment.