8#include <QtQuick/QQuickItem>
9#include <QQmlApplicationEngine>
18 float m_radiusRatio{};
19 QString m_player, m_lyricsDataName;
25 explicit WaveView(QQuickItem *parent =
nullptr) {
28 connect(
this, &QQuickItem::windowChanged, [
this](QQuickWindow *window) {
29 if (!window) {
return; }
30 auto *context = qmlContext(
this);
31 while ((!hurricane || !lyricsData) && context) {
32 if (!hurricane) hurricane =
reinterpret_cast<Hurricane *
>(context->objectForName(m_player));
33 if (!lyricsData) lyricsData =
reinterpret_cast<LyricsData *
>(context->objectForName(m_lyricsDataName));
34 context = context->parentContext();
37 throw std::runtime_error(
"Cannot not get Hurricane by id:" + m_player.toStdString());
40 throw std::runtime_error(
"Cannot not get LyricsData by id:" + m_lyricsDataName.toStdString());
53 Q_INVOKABLE [[nodiscard]]
float getRadiusRatio()
const {
return m_radiusRatio; };
61 qDebug() <<
"Set" <<
player;
65 return m_lyricsDataName;
79 for (
auto it = lyrics->IteratorBegin(); it != lyrics->IteratorEnd(); it++) {
82 static_cast<double>(it->end_time) / 1000,
83 QString(it->lyric.data())));
98 QFileInfo(url.toLocalFile()).dir().path() +
"/" + QFileInfo(url.toLocalFile()).completeBaseName() +
100 if (QFile(lrcPath).exists())
readLyrics(lrcPath);
播放器 QuickItem 组件,提供暴露给 QML 的接口。
Definition: hurricane.hpp:28
void pushLyricSentence(LyricSentence *sentence)
Definition: lyrics.h:97
void pushLyricSentenceCompleted()
Definition: lyrics.h:102
void clearLyricSentence()
Definition: lyrics.h:95
void readLyric(const QString &url)
Definition: lyrics.cpp:8
void lyricReadCompleted(std::shared_ptr< lrc::Lyrics > response)
void setLyricsDataName(const QString &lyricsDataName)
Definition: wave.hpp:68
const QString & getLyricsDataName() const
Definition: wave.hpp:64
Q_INVOKABLE bool tryLoadLyrics(const QString &filePath)
Definition: wave.hpp:94
float radiusRatio
Definition: wave.hpp:13
Q_INVOKABLE void readLyricsResponse(std::shared_ptr< lrc::Lyrics > lyrics)
Definition: wave.hpp:78
WaveView(QQuickItem *parent=nullptr)
Definition: wave.hpp:25
Q_INVOKABLE bool readLyrics(const QString &filePath)
Definition: wave.hpp:89
void signalPushLyricSentenceCompleted()
void setPlayer(const QString &player)
Definition: wave.hpp:59
const QString & getPlayer() const
Definition: wave.hpp:55
void signalClearLyricSentence()
Q_INVOKABLE float getRadiusRatio() const
Definition: wave.hpp:53
void signalPushLyricSentence(LyricSentence *lyricSentence)
QString player
Definition: wave.hpp:14
Q_INVOKABLE void setRadiusRatio(float radiusRatio)
Definition: wave.hpp:74
QString lyricsDataName
Definition: wave.hpp:15