Browse Source

qt: introduce `MLItemId` serialization

pull/200/head
Arpit Benjamin 12 months ago
committed by Steve Lhomme
parent
commit
d0c0f0d6d7
  1. 4
      modules/gui/qt/medialibrary/medialib.cpp
  2. 2
      modules/gui/qt/medialibrary/medialib.hpp
  3. 27
      modules/gui/qt/medialibrary/mlqmltypes.hpp

4
modules/gui/qt/medialibrary/medialib.cpp

@ -107,6 +107,10 @@ static void convertQVariantListToPlaylistMedias(vlc_medialibrary_t* ml, QVariant
}
}
MLItemId MediaLib::deserializeMlItemIdFromString(const QString& serialized_id) {
return MLItemId::fromString(serialized_id);
}
void MediaLib::addToPlaylist(const QString& mrl, const QStringList &options)
{
QVector<vlc::playlist::Media> medias;

2
modules/gui/qt/medialibrary/medialib.hpp

@ -46,6 +46,8 @@ public:
MediaLib(qt_intf_t* _intf, vlc::playlist::PlaylistController* playlistController, QObject* _parent = nullptr );
~MediaLib();
Q_INVOKABLE static MLItemId deserializeMlItemIdFromString(const QString& serialized_id);
Q_INVOKABLE void addToPlaylist(const MLItemId &itemId, const QStringList &options = {});
Q_INVOKABLE void addToPlaylist(const QString& mrl, const QStringList &options = {});
Q_INVOKABLE void addToPlaylist(const QUrl& mrl, const QStringList &options = {});

27
modules/gui/qt/medialibrary/mlqmltypes.hpp

@ -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) };
}
};

Loading…
Cancel
Save