From 8ff470989bdbf93447ad5c28efc8daea8f151b16 Mon Sep 17 00:00:00 2001 From: Joshua Strobl Date: Mon, 28 Oct 2024 19:20:35 +0200 Subject: [PATCH] fix: rendering artists from cartographer Thanks @g-fb. Resolves #32. --- desktop/datalake/cartographer.cpp | 2 +- desktop/datalake/cartographer.hpp | 12 ++++++------ desktop/datalake/models.cpp | 6 +++++- desktop/datalake/structs.hpp | 2 +- desktop/main.cpp | 3 --- desktop/qml/HomePage.qml | 1 + 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/desktop/datalake/cartographer.cpp b/desktop/datalake/cartographer.cpp index a5ae4b0..7f47b5e 100644 --- a/desktop/datalake/cartographer.cpp +++ b/desktop/datalake/cartographer.cpp @@ -10,7 +10,7 @@ Cartographer::Cartographer(QObject* parent) i_tracks(QHash()) {} Cartographer& Cartographer::instance() { - static Cartographer _instance; + static Cartographer _instance(nullptr); return _instance; } diff --git a/desktop/datalake/cartographer.hpp b/desktop/datalake/cartographer.hpp index baad892..a7b99fb 100644 --- a/desktop/datalake/cartographer.hpp +++ b/desktop/datalake/cartographer.hpp @@ -16,16 +16,16 @@ class Cartographer : public QObject { QML_ELEMENT QML_SINGLETON // Q_PROPERTY(QQmlListProperty albums READ getAlbumsQml) - Q_PROPERTY(KotoArtistModel* artists READ getArtistsModel) + Q_PROPERTY(KotoArtistModel* artists READ getArtistsModel CONSTANT) // Q_PROPERTY(QQmlListProperty tracks READ getTracksQml) public: - Cartographer(QObject* parent = nullptr); + Cartographer(QObject* parent); static Cartographer& instance(); - // static Cartographer* create(QQmlEngine* engine, QJSEngine*) { - // engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); - // return &instance(); - // } + static Cartographer* create(QQmlEngine*, QJSEngine*) { + QQmlEngine::setObjectOwnership(&instance(), QQmlEngine::CppOwnership); + return &instance(); + } void addAlbum(KotoAlbum* album); void addArtist(KotoArtist* artist); diff --git a/desktop/datalake/models.cpp b/desktop/datalake/models.cpp index 09ade97..ade5f64 100644 --- a/desktop/datalake/models.cpp +++ b/desktop/datalake/models.cpp @@ -1,5 +1,7 @@ #include "structs.hpp" +KotoArtistModel::KotoArtistModel(const QList& artists, QObject* parent) : QAbstractListModel(parent), m_artists(artists) {} + KotoArtistModel::~KotoArtistModel() { this->beginResetModel(); this->m_artists.clear(); @@ -21,7 +23,9 @@ QVariant KotoArtistModel::data(const QModelIndex& index, int role) const { if (index.row() >= this->m_artists.size()) { return {}; } - if (role == KotoArtistRoles::NameRole) { + if (role == Qt::DisplayRole) { + return this->m_artists.at(index.row())->getName(); + } else if (role == KotoArtistRoles::NameRole) { return this->m_artists.at(index.row())->getName(); } else if (role == KotoArtistRoles::PathRole) { return this->m_artists.at(index.row())->getPath(); diff --git a/desktop/datalake/structs.hpp b/desktop/datalake/structs.hpp index fcb9501..07d18ab 100644 --- a/desktop/datalake/structs.hpp +++ b/desktop/datalake/structs.hpp @@ -65,7 +65,7 @@ class KotoArtistModel : public QAbstractListModel { Q_OBJECT public: - explicit KotoArtistModel(const QList& artists, QObject* parent = nullptr) : QAbstractListModel(parent), m_artists(artists) {} + explicit KotoArtistModel(const QList& artists, QObject* parent = nullptr); void addArtist(KotoArtist* artist); int rowCount(const QModelIndex& parent = QModelIndex()) const override; diff --git a/desktop/main.cpp b/desktop/main.cpp index 6a3dfcc..601b9a2 100644 --- a/desktop/main.cpp +++ b/desktop/main.cpp @@ -21,14 +21,11 @@ int main(int argc, char* argv[]) { if (engine.rootObjects().isEmpty()) { return -1; } std::thread([]() { - // Cartographer::create(); KotoConfig::create(); KotoDatabase::create(); KotoDatabase::instance().connect(); - std::cout << "???" << std::endl; - // If we needed to bootstrap, index all libraries, otherwise load the database if (KotoDatabase::instance().requiredBootstrap()) { indexAllLibraries(); diff --git a/desktop/qml/HomePage.qml b/desktop/qml/HomePage.qml index b98e179..d10bef1 100644 --- a/desktop/qml/HomePage.qml +++ b/desktop/qml/HomePage.qml @@ -2,6 +2,7 @@ import QtQuick import QtQuick.Controls as Controls import QtQuick.Layouts import org.kde.kirigami as Kirigami +import com.github.joshstrobl.koto Kirigami.ScrollablePage { Component {