fix: don't prefix lyrics backend strings with qualifier

Also store the lyrics map in the state dir instead of lyrics dir
This commit is contained in:
2 * r + 2 * t 2026-06-11 21:49:22 +10:00
parent deb40a6536
commit b80b9475ac
2 changed files with 21 additions and 15 deletions

View file

@ -788,7 +788,6 @@ void Lyrics::onPreferredBackendConfigChanged() {
}
void Lyrics::onLyricsDirChanged() {
loadLyricsMap();
scheduleLoad();
}
@ -828,11 +827,7 @@ void Lyrics::persistTrackPrefs() {
}
m_lyricsMap.insert(key, entry);
const QString dir = lyricsDir();
if (dir.isEmpty()) {
return;
}
QDir().mkpath(dir);
QDir().mkpath(stateDir());
QSaveFile out(lyricsMapPath());
if (!out.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
@ -867,8 +862,7 @@ QString Lyrics::lyricsDir() const {
}
QString Lyrics::lyricsMapPath() const {
const QString dir = lyricsDir();
return dir.isEmpty() ? QString() : dir + u"/lyrics_map.json"_s;
return stateDir() + u"/lyrics_map.json"_s;
}
QString Lyrics::trackKey() const {
@ -881,30 +875,41 @@ QString Lyrics::trackKey() const {
QString Lyrics::backendKey(LyricsBackend::Backend value) {
switch (value) {
case LyricsBackend::Local:
return u"LyricsBackend::Local"_s;
return u"Local"_s;
case LyricsBackend::LRCLIB:
return u"LyricsBackend::LRCLIB"_s;
return u"LRCLIB"_s;
case LyricsBackend::NetEase:
return u"LyricsBackend::NetEase"_s;
return u"NetEase"_s;
case LyricsBackend::Auto:
default:
return u"LyricsBackend::Auto"_s;
return u"Auto"_s;
}
}
LyricsBackend::Backend Lyrics::backendFromKey(const QString& key) {
if (key.compare(u"LyricsBackend::Local"_s, Qt::CaseInsensitive) == 0) {
if (key.compare(u"Local"_s, Qt::CaseInsensitive) == 0) {
return LyricsBackend::Local;
}
if (key.compare(u"LyricsBackend::LRCLIB"_s, Qt::CaseInsensitive) == 0) {
if (key.compare(u"LRCLIB"_s, Qt::CaseInsensitive) == 0) {
return LyricsBackend::LRCLIB;
}
if (key.compare(u"LyricsBackend::NetEase"_s, Qt::CaseInsensitive) == 0) {
if (key.compare(u"NetEase"_s, Qt::CaseInsensitive) == 0) {
return LyricsBackend::NetEase;
}
return LyricsBackend::Auto;
}
const QString& Lyrics::stateDir() {
static const QString s_dir = [] {
QString state = qEnvironmentVariable("XDG_STATE_HOME");
if (state.isEmpty()) {
state = QDir::homePath() + u"/.local/state"_s;
}
return state + u"/caelestia/lyrics"_s;
}();
return s_dir;
}
const QString& Lyrics::cacheDir() {
static const QString s_dir = [] {
QString cache = qEnvironmentVariable("XDG_CACHE_HOME");

View file

@ -107,6 +107,7 @@ private:
[[nodiscard]] static QString backendKey(LyricsBackend::Backend value);
[[nodiscard]] static LyricsBackend::Backend backendFromKey(const QString& key);
[[nodiscard]] static const QString& stateDir();
[[nodiscard]] static const QString& cacheDir();
[[nodiscard]] static QString cachePathFor(LyricsBackend::Backend backend, const QString& id);
[[nodiscard]] static QString readCachedLrc(LyricsBackend::Backend backend, const QString& id);