Expose DB query functions to JavaScript

Those are likely not very usable as-is because they return a model that is
not yet written for use within the QML engine.
This commit is contained in:
Martchus 2023-08-02 18:26:01 +02:00
parent 73dc64ce6a
commit cd1e0ce590
2 changed files with 38 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include "./fieldmapping.h"
#include "../application/knownfieldmodel.h"
#include "../dbquery/dbquery.h"
#include "../misc/utility.h"
#include <tagparser/abstracttrack.h>
@ -126,6 +127,33 @@ QString UtilityObject::fixUmlauts(const QString &str) const
return Utility::fixUmlauts(str);
}
QJSValue UtilityObject::queryMusicBrainz(const QJSValue &songDescription)
{
return m_engine->newQObject(QtGui::queryMusicBrainz(makeSongDescription(songDescription)));
}
QJSValue UtilityObject::queryLyricsWikia(const QJSValue &songDescription)
{
return m_engine->newQObject(QtGui::queryLyricsWikia(makeSongDescription(songDescription)));
}
QJSValue UtilityObject::queryMakeItPersonal(const QJSValue &songDescription)
{
return m_engine->newQObject(QtGui::queryMakeItPersonal(makeSongDescription(songDescription)));
}
QtGui::SongDescription UtilityObject::makeSongDescription(const QJSValue &obj)
{
auto desc = QtGui::SongDescription(obj.property(QStringLiteral("songId")).toString());
desc.title = obj.property(QStringLiteral("title")).toString();
desc.album = obj.property(QStringLiteral("album")).toString();
desc.albumId = obj.property(QStringLiteral("albumId")).toString();
desc.artist = obj.property(QStringLiteral("artist")).toString();
desc.artistId = obj.property(QStringLiteral("artistId")).toString();
desc.year = obj.property(QStringLiteral("year")).toString();
return desc;
}
PositionInSetObject::PositionInSetObject(TagParser::PositionInSet value, QJSEngine *engine, QObject *parent)
: QObject(parent)
, m_v(value)

View File

@ -27,6 +27,10 @@ enum class KnownField : unsigned int;
enum class TagTextEncoding : unsigned int;
} // namespace TagParser
namespace QtGui {
struct SongDescription;
}
namespace Cli {
/*!
@ -54,7 +58,13 @@ public Q_SLOTS:
QString formatName(const QString &str) const;
QString fixUmlauts(const QString &str) const;
QJSValue queryMusicBrainz(const QJSValue &songDescription);
QJSValue queryLyricsWikia(const QJSValue &songDescription);
QJSValue queryMakeItPersonal(const QJSValue &songDescription);
private:
static QtGui::SongDescription makeSongDescription(const QJSValue &obj);
QJSEngine *m_engine;
const std::string *m_context;
TagParser::Diagnostics *m_diag;