|
|
|
@ -23,12 +23,23 @@ |
|
|
|
# include "config.h" |
|
|
|
#endif |
|
|
|
|
|
|
|
#include <QHash> |
|
|
|
#include <QObject> |
|
|
|
#include <vlc_common.h> |
|
|
|
#include <vlc_media_library.h> |
|
|
|
|
|
|
|
static constexpr int64_t INVALID_MLITEMID_ID = 0; |
|
|
|
|
|
|
|
static const QHash<QStringView, vlc_ml_parent_type> ml_parent_map = { |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_ALBUM"), VLC_ML_PARENT_ALBUM }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_ARTIST"), VLC_ML_PARENT_ARTIST }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_SHOW"), VLC_ML_PARENT_SHOW }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_GENRE"), VLC_ML_PARENT_GENRE }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_GROUP"), VLC_ML_PARENT_GROUP }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_FOLDER"), VLC_ML_PARENT_FOLDER }, |
|
|
|
{ QStringLiteral("VLC_ML_PARENT_PLAYLIST"), VLC_ML_PARENT_PLAYLIST } |
|
|
|
}; |
|
|
|
|
|
|
|
class MLItemId |
|
|
|
{ |
|
|
|
Q_GADGET |
|
|
|
@ -71,6 +82,22 @@ public: |
|
|
|
} |
|
|
|
#undef ML_PARENT_TYPE_CASE |
|
|
|
} |
|
|
|
|
|
|
|
Q_INVOKABLE static inline MLItemId fromString(const QStringView& serialized_id) { |
|
|
|
const QList<QStringView> parts = serialized_id.split('-'); // Type, ID
|
|
|
|
if (parts.length() != 2) { |
|
|
|
return {-1, VLC_ML_PARENT_UNKNOWN}; |
|
|
|
} |
|
|
|
|
|
|
|
const QStringView type = parts[0].trimmed(); |
|
|
|
bool conversionSuccessful = false; |
|
|
|
std::int64_t item_id = parts[1].trimmed().toLongLong(&conversionSuccessful); |
|
|
|
if (!conversionSuccessful) { |
|
|
|
return {-1, VLC_ML_PARENT_UNKNOWN}; |
|
|
|
} |
|
|
|
|
|
|
|
return { item_id, ml_parent_map.value(type, VLC_ML_PARENT_UNKNOWN) }; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|