diff --git a/src/analyzer/analyzercontainer.cpp b/src/analyzer/analyzercontainer.cpp index 0696601a..3ead830e 100644 --- a/src/analyzer/analyzercontainer.cpp +++ b/src/analyzer/analyzercontainer.cpp @@ -50,6 +50,7 @@ #include "engine/enginebase.h" using namespace std::chrono_literals; +using namespace Qt::Literals::StringLiterals; const char *AnalyzerContainer::kSettingsGroup = "Analyzer"; const char *AnalyzerContainer::kSettingsFramerate = "framerate"; @@ -185,7 +186,7 @@ void AnalyzerContainer::Load() { Settings s; s.beginGroup(kSettingsGroup); - QString type = s.value("type", QStringLiteral("BlockAnalyzer")).toString(); + QString type = s.value("type", u"BlockAnalyzer"_s).toString(); current_framerate_ = s.value(kSettingsFramerate, kMediumFramerate).toInt(); s.endGroup(); diff --git a/src/analyzer/rainbowanalyzer.cpp b/src/analyzer/rainbowanalyzer.cpp index c734ca4b..2408f9de 100644 --- a/src/analyzer/rainbowanalyzer.cpp +++ b/src/analyzer/rainbowanalyzer.cpp @@ -41,6 +41,8 @@ #include "fht.h" #include "analyzerbase.h" +using namespace Qt::Literals::StringLiterals; + const char *NyanCatAnalyzer::kName = "Nyanalyzer Cat"; const char *RainbowDashAnalyzer::kName = "Rainbow Dash"; @@ -68,8 +70,8 @@ RainbowAnalyzer::RainbowAnalyzer(const RainbowType rbtype, QWidget *parent) background_brush_(QColor(0x0f, 0x43, 0x73)) { rainbowtype = rbtype; - cat_dash_[0] = QPixmap(QStringLiteral(":/pictures/nyancat.png")); - cat_dash_[1] = QPixmap(QStringLiteral(":/pictures/rainbowdash.png")); + cat_dash_[0] = QPixmap(u":/pictures/nyancat.png"_s); + cat_dash_[1] = QPixmap(u":/pictures/rainbowdash.png"_s); memset(history_, 0, sizeof(history_)); for (int i = 0; i < kRainbowBands; ++i) { diff --git a/src/collection/collectionbackend.cpp b/src/collection/collectionbackend.cpp index 5d6f830c..d573f721 100644 --- a/src/collection/collectionbackend.cpp +++ b/src/collection/collectionbackend.cpp @@ -210,8 +210,8 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_)); - q.BindValue(QStringLiteral(":path"), new_path); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":path"_s, new_path); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -227,8 +227,8 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET path=:path || substr(path, %2) WHERE directory=:id").arg(subdirs_table_).arg(path_len)); - q.BindValue(QStringLiteral(":path"), new_url); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":path"_s, new_url); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -239,8 +239,8 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET url=:path || substr(url, %2) WHERE directory=:id").arg(songs_table_).arg(path_len)); - q.BindValue(QStringLiteral(":path"), new_url); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":path"_s, new_url); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -288,7 +288,7 @@ CollectionSubdirectoryList CollectionBackend::SubdirsInDirectory(const int id, Q SqlQuery q(db); q.prepare(QStringLiteral("SELECT path, mtime FROM %1 WHERE directory_id = :dir").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":dir"), id); + q.BindValue(u":dir"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return CollectionSubdirectoryList(); @@ -379,7 +379,7 @@ void CollectionBackend::AddDirectory(const QString &path) { { SqlQuery q(db); q.prepare(QStringLiteral("SELECT ROWID FROM %1 WHERE path = :path").arg(dirs_table_)); - q.BindValue(QStringLiteral(":path"), path); + q.BindValue(u":path"_s, path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -391,7 +391,7 @@ void CollectionBackend::AddDirectory(const QString &path) { SqlQuery q(db); q.prepare(QStringLiteral("INSERT INTO %1 (path, subdirs) VALUES (:path, 1)").arg(dirs_table_)); - q.BindValue(QStringLiteral(":path"), path); + q.BindValue(u":path"_s, path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -423,7 +423,7 @@ void CollectionBackend::RemoveDirectory(const CollectionDirectory &dir) { { SqlQuery q(db); q.prepare(QStringLiteral("DELETE FROM %1 WHERE directory_id = :id").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":id"), dir.id); + q.BindValue(u":id"_s, dir.id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -434,7 +434,7 @@ void CollectionBackend::RemoveDirectory(const CollectionDirectory &dir) { { SqlQuery q(db); q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(dirs_table_)); - q.BindValue(QStringLiteral(":id"), dir.id); + q.BindValue(u":id"_s, dir.id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -454,7 +454,7 @@ SongList CollectionBackend::FindSongsInDirectory(const int id) { SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE directory_id = :directory_id").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":directory_id"), id); + q.BindValue(u":directory_id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -477,7 +477,7 @@ SongList CollectionBackend::SongsWithMissingFingerprint(const int id) { SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE directory_id = :directory_id AND unavailable = 0 AND (fingerprint IS NULL OR fingerprint = '')").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":directory_id"), id); + q.BindValue(u":directory_id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -500,7 +500,7 @@ SongList CollectionBackend::SongsWithMissingLoudnessCharacteristics(const int id SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE directory_id = :directory_id AND unavailable = 0 AND (ebur128_integrated_loudness_lufs IS NULL OR ebur128_loudness_range_lu IS NULL)").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":directory_id"), id); + q.BindValue(u":directory_id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -543,8 +543,8 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub // Delete the subdirectory SqlQuery q(db); q.prepare(QStringLiteral("DELETE FROM %1 WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":id"), subdir.directory_id); - q.BindValue(QStringLiteral(":path"), subdir.path); + q.BindValue(u":id"_s, subdir.directory_id); + q.BindValue(u":path"_s, subdir.path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -556,8 +556,8 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub { SqlQuery q(db); q.prepare(QStringLiteral("SELECT ROWID FROM %1 WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":id"), subdir.directory_id); - q.BindValue(QStringLiteral(":path"), subdir.path); + q.BindValue(u":id"_s, subdir.directory_id); + q.BindValue(u":path"_s, subdir.path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -568,9 +568,9 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub if (exists) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET mtime = :mtime WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":mtime"), subdir.mtime); - q.BindValue(QStringLiteral(":id"), subdir.directory_id); - q.BindValue(QStringLiteral(":path"), subdir.path); + q.BindValue(u":mtime"_s, subdir.mtime); + q.BindValue(u":id"_s, subdir.directory_id); + q.BindValue(u":path"_s, subdir.path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -579,9 +579,9 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub else { SqlQuery q(db); q.prepare(QStringLiteral("INSERT INTO %1 (directory_id, path, mtime) VALUES (:id, :path, :mtime)").arg(subdirs_table_)); - q.BindValue(QStringLiteral(":id"), subdir.directory_id); - q.BindValue(QStringLiteral(":path"), subdir.path); - q.BindValue(QStringLiteral(":mtime"), subdir.mtime); + q.BindValue(u":id"_s, subdir.directory_id); + q.BindValue(u":path"_s, subdir.path); + q.BindValue(u":mtime"_s, subdir.mtime); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -637,7 +637,7 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { if (!dirs_table_.isEmpty()) { SqlQuery check_dir(db); check_dir.prepare(QStringLiteral("SELECT ROWID FROM %1 WHERE ROWID = :id").arg(dirs_table_)); - check_dir.BindValue(QStringLiteral(":id"), song.directory_id()); + check_dir.BindValue(u":id"_s, song.directory_id()); if (!check_dir.Exec()) { db_->ReportErrors(check_dir); return; @@ -658,7 +658,7 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); song.BindToQuery(&q); - q.BindValue(QStringLiteral(":id"), song.id()); + q.BindValue(u":id"_s, song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -685,7 +685,7 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); new_song.BindToQuery(&q); - q.BindValue(QStringLiteral(":id"), new_song.id()); + q.BindValue(u":id"_s, new_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -770,7 +770,7 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); new_song.BindToQuery(&q); - q.BindValue(QStringLiteral(":id"), old_song.id()); + q.BindValue(u":id"_s, old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -813,7 +813,7 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { { SqlQuery q(db); q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":id"), old_song.id()); + q.BindValue(u":id"_s, old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -844,8 +844,8 @@ void CollectionBackend::UpdateMTimesOnly(const SongList &songs) { for (const Song &song : songs) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET mtime = :mtime WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":mtime"), song.mtime()); - q.BindValue(QStringLiteral(":id"), song.id()); + q.BindValue(u":mtime"_s, song.mtime()); + q.BindValue(u":id"_s, song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -864,7 +864,7 @@ void CollectionBackend::DeleteSongs(const SongList &songs) { for (const Song &song : songs) { SqlQuery q(db); q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":id"), song.id()); + q.BindValue(u":id"_s, song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -891,7 +891,7 @@ void CollectionBackend::MarkSongsUnavailable(const SongList &songs, const bool u ScopedTransaction transaction(&db); for (const Song &song : songs) { - query.BindValue(QStringLiteral(":id"), song.id()); + query.BindValue(u":id"_s, song.id()); if (!query.Exec()) { db_->ReportErrors(query); return; @@ -918,7 +918,7 @@ QStringList CollectionBackend::GetAll(const QString &column, const CollectionFil QSqlDatabase db(db_->Connect()); CollectionQuery query(db, songs_table_, filter_options); - query.SetColumnSpec(QStringLiteral("DISTINCT ") + column); + query.SetColumnSpec(u"DISTINCT "_s + column); query.AddCompilationRequirement(false); if (!query.Exec()) { @@ -936,7 +936,8 @@ QStringList CollectionBackend::GetAll(const QString &column, const CollectionFil QStringList CollectionBackend::GetAllArtists(const CollectionFilterOptions &opt) { - return GetAll(QStringLiteral("artist"), opt); + return GetAll(u"artist"_s, opt); + } QStringList CollectionBackend::GetAllArtistsWithAlbums(const CollectionFilterOptions &opt) { @@ -946,16 +947,16 @@ QStringList CollectionBackend::GetAllArtistsWithAlbums(const CollectionFilterOpt // Albums with 'albumartist' field set: CollectionQuery query(db, songs_table_, opt); - query.SetColumnSpec(QStringLiteral("DISTINCT albumartist")); + query.SetColumnSpec(u"DISTINCT albumartist"_s); query.AddCompilationRequirement(false); - query.AddWhere(QStringLiteral("album"), ""_L1, QStringLiteral("!=")); + query.AddWhere(u"album"_s, ""_L1, u"!="_s); // Albums with no 'albumartist' (extract 'artist'): CollectionQuery query2(db, songs_table_, opt); - query2.SetColumnSpec(QStringLiteral("DISTINCT artist")); + query2.SetColumnSpec(u"DISTINCT artist"_s); query2.AddCompilationRequirement(false); - query2.AddWhere(QStringLiteral("album"), ""_L1, QStringLiteral("!=")); - query2.AddWhere(QStringLiteral("albumartist"), ""_L1, QStringLiteral("=")); + query2.AddWhere(u"album"_s, ""_L1, u"!="_s); + query2.AddWhere(u"albumartist"_s, ""_L1, u"="_s); if (!query.Exec()) { ReportErrors(query); @@ -994,7 +995,7 @@ SongList CollectionBackend::GetArtistSongs(const QString &effective_albumartist, CollectionQuery query(db, songs_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(u"effective_albumartist"_s, effective_albumartist); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1012,8 +1013,8 @@ SongList CollectionBackend::GetAlbumSongs(const QString &effective_albumartist, CollectionQuery query(db, songs_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); - query.AddWhere(QStringLiteral("album"), album); + query.AddWhere(u"effective_albumartist"_s, effective_albumartist); + query.AddWhere(u"album"_s, album); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1031,7 +1032,7 @@ SongList CollectionBackend::GetSongsByAlbum(const QString &album, const Collecti CollectionQuery query(db, songs_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere(QStringLiteral("album"), album); + query.AddWhere(u"album"_s, album); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1044,7 +1045,7 @@ SongList CollectionBackend::GetSongsByAlbum(const QString &album, const Collecti bool CollectionBackend::ExecCollectionQuery(CollectionQuery *query, SongList &songs) { - query->SetColumnSpec(QStringLiteral("%songs_table.ROWID, ") + Song::kColumnSpec); + query->SetColumnSpec(u"%songs_table.ROWID, "_s + Song::kColumnSpec); if (!query->Exec()) return false; @@ -1059,7 +1060,7 @@ bool CollectionBackend::ExecCollectionQuery(CollectionQuery *query, SongList &so bool CollectionBackend::ExecCollectionQuery(CollectionQuery *query, SongMap &songs) { - query->SetColumnSpec(QStringLiteral("%songs_table.ROWID, ") + Song::kColumnSpec); + query->SetColumnSpec(u"%songs_table.ROWID, "_s + Song::kColumnSpec); if (!query->Exec()) return false; @@ -1166,11 +1167,11 @@ Song CollectionBackend::GetSongByUrl(const QUrl &url, const qint64 beginning) { SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND beginning = :beginning AND unavailable = 0").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":url1"), url.toString()); - q.BindValue(QStringLiteral(":url2"), url.toString(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":url3"), url.toEncoded(QUrl::FullyDecoded)); - q.BindValue(QStringLiteral(":url4"), url.toEncoded(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":beginning"), beginning); + q.BindValue(u":url1"_s, url.toString()); + q.BindValue(u":url2"_s, url.toString(QUrl::FullyEncoded)); + q.BindValue(u":url3"_s, url.toEncoded(QUrl::FullyDecoded)); + q.BindValue(u":url4"_s, url.toEncoded(QUrl::FullyEncoded)); + q.BindValue(u":beginning"_s, beginning); if (!q.Exec()) { db_->ReportErrors(q); @@ -1195,11 +1196,11 @@ Song CollectionBackend::GetSongByUrlAndTrack(const QUrl &url, const int track) { SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND track = :track AND unavailable = 0").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":url1"), url.toString()); - q.BindValue(QStringLiteral(":url2"), url.toString(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":url3"), url.toEncoded(QUrl::FullyDecoded)); - q.BindValue(QStringLiteral(":url4"), url.toEncoded(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":track"), track); + q.BindValue(u":url1"_s, url.toString()); + q.BindValue(u":url2"_s, url.toString(QUrl::FullyEncoded)); + q.BindValue(u":url3"_s, url.toEncoded(QUrl::FullyDecoded)); + q.BindValue(u":url4"_s, url.toEncoded(QUrl::FullyEncoded)); + q.BindValue(u":track"_s, track); if (!q.Exec()) { db_->ReportErrors(q); @@ -1224,11 +1225,11 @@ SongList CollectionBackend::GetSongsByUrl(const QUrl &url, const bool unavailabl SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = :unavailable").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":url1"), url.toString()); - q.BindValue(QStringLiteral(":url2"), url.toString(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":url3"), url.toEncoded(QUrl::FullyDecoded)); - q.BindValue(QStringLiteral(":url4"), url.toEncoded(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":unavailable"), (unavailable ? 1 : 0)); + q.BindValue(u":url1"_s, url.toString()); + q.BindValue(u":url2"_s, url.toString(QUrl::FullyEncoded)); + q.BindValue(u":url3"_s, url.toEncoded(QUrl::FullyDecoded)); + q.BindValue(u":url4"_s, url.toEncoded(QUrl::FullyEncoded)); + q.BindValue(u":unavailable"_s, (unavailable ? 1 : 0)); SongList songs; if (!q.Exec()) { @@ -1305,7 +1306,7 @@ SongList CollectionBackend::GetSongsByFingerprint(const QString &fingerprint) { SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE fingerprint = :fingerprint").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":fingerprint"), fingerprint); + q.BindValue(u":fingerprint"_s, fingerprint); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -1333,9 +1334,9 @@ SongList CollectionBackend::GetCompilationSongs(const QString &album, const Coll QSqlDatabase db(db_->Connect()); CollectionQuery query(db, songs_table_, opt); - query.SetColumnSpec(QStringLiteral("%songs_table.ROWID, ") + Song::kColumnSpec); + query.SetColumnSpec(u"%songs_table.ROWID, "_s + Song::kColumnSpec); query.AddCompilationRequirement(true); - query.AddWhere(QStringLiteral("album"), album); + query.AddWhere(u"album"_s, album); if (!query.Exec()) { ReportErrors(query); @@ -1426,10 +1427,10 @@ bool CollectionBackend::UpdateCompilations(const QSqlDatabase &db, SongList &cha { // Get song, so we can tell the model its updated SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = 0").arg(Song::kRowIdColumnSpec, songs_table_)); - q.BindValue(QStringLiteral(":url1"), url.toString()); - q.BindValue(QStringLiteral(":url2"), url.toString(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":url3"), url.toEncoded(QUrl::FullyDecoded)); - q.BindValue(QStringLiteral(":url4"), url.toEncoded(QUrl::FullyEncoded)); + q.BindValue(u":url1"_s, url.toString()); + q.BindValue(u":url2"_s, url.toString(QUrl::FullyEncoded)); + q.BindValue(u":url3"_s, url.toEncoded(QUrl::FullyDecoded)); + q.BindValue(u":url4"_s, url.toEncoded(QUrl::FullyEncoded)); if (q.Exec()) { while (q.next()) { Song song(source_); @@ -1447,11 +1448,11 @@ bool CollectionBackend::UpdateCompilations(const QSqlDatabase &db, SongList &cha // Update the song SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET compilation_detected = :compilation_detected, compilation_effective = ((compilation OR :compilation_detected OR compilation_on) AND NOT compilation_off) + 0 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":compilation_detected"), static_cast(compilation_detected)); - q.BindValue(QStringLiteral(":url1"), url.toString()); - q.BindValue(QStringLiteral(":url2"), url.toString(QUrl::FullyEncoded)); - q.BindValue(QStringLiteral(":url3"), url.toEncoded(QUrl::FullyDecoded)); - q.BindValue(QStringLiteral(":url4"), url.toEncoded(QUrl::FullyEncoded)); + q.BindValue(u":compilation_detected"_s, static_cast(compilation_detected)); + q.BindValue(u":url1"_s, url.toString()); + q.BindValue(u":url2"_s, url.toString(QUrl::FullyEncoded)); + q.BindValue(u":url3"_s, url.toEncoded(QUrl::FullyDecoded)); + q.BindValue(u":url4"_s, url.toEncoded(QUrl::FullyEncoded)); if (!q.Exec()) { db_->ReportErrors(q); return false; @@ -1467,15 +1468,15 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist, QSqlDatabase db(db_->Connect()); CollectionQuery query(db, songs_table_, opt); - query.SetColumnSpec(QStringLiteral("url, filetype, cue_path, effective_albumartist, album, compilation_effective, art_embedded, art_automatic, art_manual, art_unset")); - query.SetOrderBy(QStringLiteral("effective_albumartist, album, url")); + query.SetColumnSpec(u"url, filetype, cue_path, effective_albumartist, album, compilation_effective, art_embedded, art_automatic, art_manual, art_unset"_s); + query.SetOrderBy(u"effective_albumartist, album, url"_s); if (compilation_required) { query.AddCompilationRequirement(true); } else if (!artist.isEmpty()) { query.AddCompilationRequirement(false); - query.AddWhere(QStringLiteral("effective_albumartist"), artist); + query.AddWhere(u"effective_albumartist"_s, artist); } if (!query.Exec()) { @@ -1503,7 +1504,7 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist, album_info.art_embedded = query.Value(6).toBool(); const QString art_automatic = query.Value(7).toString(); - static const QRegularExpression regex_url_schema(QStringLiteral("..+:.*")); + static const QRegularExpression regex_url_schema(u"..+:.*"_s); if (art_automatic.contains(regex_url_schema)) { album_info.art_automatic = QUrl::fromEncoded(art_automatic.toUtf8()); } @@ -1559,11 +1560,11 @@ CollectionBackend::Album CollectionBackend::GetAlbumArt(const QString &effective ret.album_artist = effective_albumartist; CollectionQuery query(db, songs_table_); - query.SetColumnSpec(QStringLiteral("url, art_embedded, art_automatic, art_manual, art_unset")); + query.SetColumnSpec(u"url, art_embedded, art_automatic, art_manual, art_unset"_s); if (!effective_albumartist.isEmpty()) { - query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(u"effective_albumartist"_s, effective_albumartist); } - query.AddWhere(QStringLiteral("album"), album); + query.AddWhere(u"album"_s, album); if (!query.Exec()) { ReportErrors(query); @@ -1596,9 +1597,9 @@ void CollectionBackend::UpdateEmbeddedAlbumArt(const QString &effective_albumart { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET art_embedded = :art_embedded, art_unset = 0 WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":art_embedded"), art_embedded ? 1 : 0); - q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); - q.BindValue(QStringLiteral(":album"), album); + q.BindValue(u":art_embedded"_s, art_embedded ? 1 : 0); + q.BindValue(u":effective_albumartist"_s, effective_albumartist); + q.BindValue(u":album"_s, album); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1609,8 +1610,8 @@ void CollectionBackend::UpdateEmbeddedAlbumArt(const QString &effective_albumart { CollectionQuery q(db, songs_table_); q.SetColumnSpec(Song::kRowIdColumnSpec); - q.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); - q.AddWhere(QStringLiteral("album"), album); + q.AddWhere(u"effective_albumartist"_s, effective_albumartist); + q.AddWhere(u"album"_s, album); if (!q.Exec()) { ReportErrors(q); return; @@ -1642,9 +1643,9 @@ void CollectionBackend::UpdateManualAlbumArt(const QString &effective_albumartis { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET art_manual = :art_manual, art_unset = 0 WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":art_manual"), art_manual.isValid() ? art_manual.toString(QUrl::FullyEncoded) : ""_L1); - q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); - q.BindValue(QStringLiteral(":album"), album); + q.BindValue(u":art_manual"_s, art_manual.isValid() ? art_manual.toString(QUrl::FullyEncoded) : ""_L1); + q.BindValue(u":effective_albumartist"_s, effective_albumartist); + q.BindValue(u":album"_s, album); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1655,8 +1656,8 @@ void CollectionBackend::UpdateManualAlbumArt(const QString &effective_albumartis { CollectionQuery q(db, songs_table_); q.SetColumnSpec(Song::kRowIdColumnSpec); - q.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); - q.AddWhere(QStringLiteral("album"), album); + q.AddWhere(u"effective_albumartist"_s, effective_albumartist); + q.AddWhere(u"album"_s, album); if (!q.Exec()) { ReportErrors(q); return; @@ -1688,8 +1689,8 @@ void CollectionBackend::UnsetAlbumArt(const QString &effective_albumartist, cons { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET art_unset = 1, art_manual = '', art_automatic = '', art_embedded = '' WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); - q.BindValue(QStringLiteral(":album"), album); + q.BindValue(u":effective_albumartist"_s, effective_albumartist); + q.BindValue(u":album"_s, album); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1700,8 +1701,8 @@ void CollectionBackend::UnsetAlbumArt(const QString &effective_albumartist, cons { CollectionQuery q(db, songs_table_); q.SetColumnSpec(Song::kRowIdColumnSpec); - q.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); - q.AddWhere(QStringLiteral("album"), album); + q.AddWhere(u"effective_albumartist"_s, effective_albumartist); + q.AddWhere(u"album"_s, album); if (!q.Exec()) { ReportErrors(q); return; @@ -1733,9 +1734,9 @@ void CollectionBackend::ClearAlbumArt(const QString &effective_albumartist, cons { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET art_embedded = 0, art_automatic = '', art_manual = '', art_unset = :art_unset WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":art_unset"), art_unset ? 1 : 0); - q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); - q.BindValue(QStringLiteral(":album"), album); + q.BindValue(u":art_unset"_s, art_unset ? 1 : 0); + q.BindValue(u":effective_albumartist"_s, effective_albumartist); + q.BindValue(u":album"_s, album); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1746,8 +1747,8 @@ void CollectionBackend::ClearAlbumArt(const QString &effective_albumartist, cons { CollectionQuery q(db, songs_table_); q.SetColumnSpec(Song::kRowIdColumnSpec); - q.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); - q.AddWhere(QStringLiteral("album"), album); + q.AddWhere(u"effective_albumartist"_s, effective_albumartist); + q.AddWhere(u"album"_s, album); if (!q.Exec()) { ReportErrors(q); return; @@ -1779,10 +1780,10 @@ void CollectionBackend::ForceCompilation(const QString &album, const QStringList SqlQuery q(db); q.prepare(sql); - q.BindValue(QStringLiteral(":compilation_on"), on ? 1 : 0); - q.BindValue(QStringLiteral(":compilation_off"), on ? 0 : 1); - q.BindValue(QStringLiteral(":album"), album); - if (!artist.isEmpty()) q.BindValue(QStringLiteral(":artist"), artist); + q.BindValue(u":compilation_on"_s, on ? 1 : 0); + q.BindValue(u":compilation_off"_s, on ? 0 : 1); + q.BindValue(u":album"_s, album); + if (!artist.isEmpty()) q.BindValue(u":artist"_s, artist); if (!q.Exec()) { db_->ReportErrors(q); @@ -1793,8 +1794,8 @@ void CollectionBackend::ForceCompilation(const QString &album, const QStringList CollectionQuery query(db, songs_table_); query.SetColumnSpec(Song::kRowIdColumnSpec); - query.AddWhere(QStringLiteral("album"), album); - if (!artist.isEmpty()) query.AddWhere(QStringLiteral("artist"), artist); + query.AddWhere(u"album"_s, album); + if (!artist.isEmpty()) query.AddWhere(u"artist"_s, artist); if (!query.Exec()) { ReportErrors(query); @@ -1823,8 +1824,8 @@ void CollectionBackend::IncrementPlayCount(const int id) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET playcount = playcount + 1, lastplayed = :now WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":now"), QDateTime::currentSecsSinceEpoch()); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":now"_s, QDateTime::currentSecsSinceEpoch()); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1846,7 +1847,7 @@ void CollectionBackend::IncrementSkipCount(const int id, const float progress) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET skipcount = skipcount + 1 WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1892,7 +1893,7 @@ bool CollectionBackend::ResetPlayStatistics(const QStringList &id_str_list) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET playcount = 0, skipcount = 0, lastplayed = -1 WHERE ROWID IN (:ids)").arg(songs_table_)); - q.BindValue(QStringLiteral(":ids"), id_str_list.join(u',')); + q.BindValue(u":ids"_s, id_str_list.join(u',')); if (!q.Exec()) { db_->ReportErrors(q); return false; @@ -1917,7 +1918,7 @@ void CollectionBackend::DeleteAll() { { SqlQuery q(db); - q.prepare(QStringLiteral("DELETE FROM ") + songs_table_); + q.prepare(u"DELETE FROM "_s + songs_table_); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1978,9 +1979,9 @@ SongList CollectionBackend::GetSongsBy(const QString &artist, const QString &alb else { q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE artist = :artist COLLATE NOCASE AND album = :album COLLATE NOCASE AND title = :title COLLATE NOCASE").arg(Song::kRowIdColumnSpec, songs_table_)); } - q.BindValue(QStringLiteral(":artist"), artist); - if (!album.isEmpty()) q.BindValue(QStringLiteral(":album"), album); - q.BindValue(QStringLiteral(":title"), title); + q.BindValue(u":artist"_s, artist); + if (!album.isEmpty()) q.BindValue(u":album"_s, album); + q.BindValue(u":title"_s, title); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -2012,8 +2013,8 @@ void CollectionBackend::UpdateLastPlayed(const QString &artist, const QString &a } SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET lastplayed = :lastplayed WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":lastplayed"), lastplayed); - q.BindValue(QStringLiteral(":id"), song.id()); + q.BindValue(u":lastplayed"_s, lastplayed); + q.BindValue(u":id"_s, song.id()); if (!q.Exec()) { db_->ReportErrors(q); continue; @@ -2038,8 +2039,8 @@ void CollectionBackend::UpdatePlayCount(const QString &artist, const QString &ti for (const Song &song : songs) { SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET playcount = :playcount WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(QStringLiteral(":playcount"), playcount); - q.BindValue(QStringLiteral(":id"), song.id()); + q.BindValue(u":playcount"_s, playcount); + q.BindValue(u":id"_s, song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2073,7 +2074,7 @@ void CollectionBackend::UpdateSongsRating(const QList &id_list, const float QString ids = id_str_list.join(u','); SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET rating = :rating WHERE ROWID IN (%2)").arg(songs_table_, ids)); - q.BindValue(QStringLiteral(":rating"), rating); + q.BindValue(u":rating"_s, rating); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2101,8 +2102,8 @@ void CollectionBackend::UpdateLastSeen(const int directory_id, const int expire_ SqlQuery q(db); q.prepare(QStringLiteral("UPDATE %1 SET lastseen = :lastseen WHERE directory_id = :directory_id AND unavailable = 0").arg(songs_table_)); - q.BindValue(QStringLiteral(":lastseen"), QDateTime::currentSecsSinceEpoch()); - q.BindValue(QStringLiteral(":directory_id"), directory_id); + q.BindValue(u":lastseen"_s, QDateTime::currentSecsSinceEpoch()); + q.BindValue(u":directory_id"_s, directory_id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2121,8 +2122,8 @@ void CollectionBackend::ExpireSongs(const int directory_id, const int expire_una QSqlDatabase db(db_->Connect()); SqlQuery q(db); q.prepare(QStringLiteral("SELECT %1 FROM %2 LEFT JOIN playlist_items ON %2.ROWID = playlist_items.collection_id WHERE %2.directory_id = :directory_id AND %2.unavailable = 1 AND %2.lastseen > 0 AND %2.lastseen < :time AND playlist_items.collection_id IS NULL").arg(Song::JoinSpec(songs_table_), songs_table_)); - q.BindValue(QStringLiteral(":directory_id"), directory_id); - q.BindValue(QStringLiteral(":time"), QDateTime::currentSecsSinceEpoch() - (expire_unavailable_songs_days * 86400LL)); + q.BindValue(u":directory_id"_s, directory_id); + q.BindValue(u":time"_s, QDateTime::currentSecsSinceEpoch() - (expire_unavailable_songs_days * 86400LL)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2137,5 +2138,3 @@ void CollectionBackend::ExpireSongs(const int directory_id, const int expire_una if (!songs.isEmpty()) DeleteSongs(songs); } - - diff --git a/src/collection/collectiondirectorymodel.cpp b/src/collection/collectiondirectorymodel.cpp index 0a36a9d7..a83727f9 100644 --- a/src/collection/collectiondirectorymodel.cpp +++ b/src/collection/collectiondirectorymodel.cpp @@ -39,10 +39,11 @@ #include "collectiondirectorymodel.h" using std::make_shared; +using namespace Qt::Literals::StringLiterals; CollectionDirectoryModel::CollectionDirectoryModel(SharedPtr backend, QObject *parent) : QStandardItemModel(parent), - dir_icon_(IconLoader::Load(QStringLiteral("document-open-folder"))), + dir_icon_(IconLoader::Load(u"document-open-folder"_s)), backend_(backend) { QObject::connect(&*backend_, &CollectionBackend::DirectoryAdded, this, &CollectionDirectoryModel::AddDirectory); diff --git a/src/collection/collectionfilterwidget.cpp b/src/collection/collectionfilterwidget.cpp index bd3a41be..3a650f73 100644 --- a/src/collection/collectionfilterwidget.cpp +++ b/src/collection/collectionfilterwidget.cpp @@ -22,7 +22,6 @@ #include "config.h" #include -#include #include #include @@ -45,13 +44,11 @@ #include #include "core/iconloader.h" -#include "core/song.h" #include "core/logging.h" #include "core/settings.h" #include "collectionfilteroptions.h" #include "collectionmodel.h" #include "collectionfilter.h" -#include "collectionquery.h" #include "filterparser/filterparser.h" #include "savedgroupingmanager.h" #include "collectionfilterwidget.h" @@ -93,7 +90,7 @@ CollectionFilterWidget::CollectionFilterWidget(QWidget *parent) timer_filter_delay_->setSingleShot(true); // Icons - ui_->options->setIcon(IconLoader::Load(QStringLiteral("configure"))); + ui_->options->setIcon(IconLoader::Load(u"configure"_s)); // Filter by age QActionGroup *filter_age_group = new QActionGroup(this); @@ -218,7 +215,7 @@ void CollectionFilterWidget::ReloadSettings() { QString CollectionFilterWidget::group_by_version() const { if (settings_prefix_.isEmpty()) { - return QStringLiteral("group_by_version"); + return u"group_by_version"_s; } return QStringLiteral("%1_group_by_version").arg(settings_prefix_); @@ -228,7 +225,7 @@ QString CollectionFilterWidget::group_by_version() const { QString CollectionFilterWidget::group_by_key() const { if (settings_prefix_.isEmpty()) { - return QStringLiteral("group_by"); + return u"group_by"_s; } return QStringLiteral("%1_group_by").arg(settings_prefix_); @@ -240,7 +237,7 @@ QString CollectionFilterWidget::group_by_key(const int number) const { return gr QString CollectionFilterWidget::separate_albums_by_grouping_key() const { if (settings_prefix_.isEmpty()) { - return QStringLiteral("separate_albums_by_grouping"); + return u"separate_albums_by_grouping"_s; } return QStringLiteral("%1_separate_albums_by_grouping").arg(settings_prefix_); @@ -357,7 +354,7 @@ void CollectionFilterWidget::SaveGroupBy() { QByteArray buffer; QDataStream datastream(&buffer, QIODevice::WriteOnly); datastream << model_->GetGroupBy(); - s.setValue("version", QStringLiteral("1")); + s.setValue("version", u"1"_s); s.setValue(name, buffer); s.endGroup(); diff --git a/src/collection/collectionfilterwidget.h b/src/collection/collectionfilterwidget.h index 173b5764..36282f64 100644 --- a/src/collection/collectionfilterwidget.h +++ b/src/collection/collectionfilterwidget.h @@ -24,8 +24,6 @@ #include "config.h" -#include - #include #include #include diff --git a/src/collection/collectionmodel.cpp b/src/collection/collectionmodel.cpp index 10178eb8..37a403fc 100644 --- a/src/collection/collectionmodel.cpp +++ b/src/collection/collectionmodel.cpp @@ -95,7 +95,7 @@ CollectionModel::CollectionModel(SharedPtr backend, Applicati filter_(new CollectionFilter(this)), timer_reload_(new QTimer(this)), timer_update_(new QTimer(this)), - icon_artist_(IconLoader::Load(QStringLiteral("folder-sound"))), + icon_artist_(IconLoader::Load(u"folder-sound"_s)), use_disk_cache_(false), total_song_count_(0), total_artist_count_(0), @@ -112,7 +112,7 @@ CollectionModel::CollectionModel(SharedPtr backend, Applicati QObject::connect(&*app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &CollectionModel::AlbumCoverLoaded); } - QIcon nocover = IconLoader::Load(QStringLiteral("cdcase")); + QIcon nocover = IconLoader::Load(u"cdcase"_s); if (!nocover.isNull()) { QList nocover_sizes = nocover.availableSizes(); pixmap_no_cover_ = nocover.pixmap(nocover_sizes.last()).scaled(kPrettyCoverSize, kPrettyCoverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); @@ -409,7 +409,7 @@ Qt::ItemFlags CollectionModel::flags(const QModelIndex &idx) const { } QStringList CollectionModel::mimeTypes() const { - return QStringList() << QStringLiteral("text/uri-list"); + return QStringList() << u"text/uri-list"_s; } QMimeData *CollectionModel::mimeData(const QModelIndexList &indexes) const { @@ -823,7 +823,7 @@ SongList CollectionModel::LoadSongsFromSql(const CollectionFilterOptions &filter QMutexLocker l(backend_->db()->Mutex()); QSqlDatabase db(backend_->db()->Connect()); CollectionQuery q(db, backend_->songs_table(), filter_options); - q.SetColumnSpec(QStringLiteral("%songs_table.ROWID, ") + Song::kColumnSpec); + q.SetColumnSpec(u"%songs_table.ROWID, "_s + Song::kColumnSpec); if (q.Exec()) { while (q.Next()) { Song song; @@ -1155,7 +1155,7 @@ QString CollectionModel::SortText(QString text) { else { text = text.toLower(); } - static const QRegularExpression regex_not_words(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption); + static const QRegularExpression regex_not_words(u"[^\\w ]"_s, QRegularExpression::UseUnicodePropertiesOption); text = text.remove(regex_not_words); return text; @@ -1338,7 +1338,7 @@ QString CollectionModel::DividerKey(const GroupBy group_by, const Song &song, co case GroupBy::Format: case GroupBy::FileType: { QChar c = sort_text[0]; - if (c.isDigit()) return QStringLiteral("0"); + if (c.isDigit()) return u"0"_s; if (c == u' ') return QString(); if (c.decompositionTag() != QChar::NoDecomposition) { QString decomposition = c.decomposition(); @@ -1388,7 +1388,7 @@ QString CollectionModel::DividerDisplayText(const GroupBy group_by, const QStrin case GroupBy::Genre: case GroupBy::FileType: case GroupBy::Format: - if (key == "0"_L1) return QStringLiteral("0-9"); + if (key == "0"_L1) return u"0-9"_s; return key.toUpper(); case GroupBy::YearAlbum: diff --git a/src/collection/collectionquery.cpp b/src/collection/collectionquery.cpp index 2023633d..533bf5c6 100644 --- a/src/collection/collectionquery.cpp +++ b/src/collection/collectionquery.cpp @@ -49,14 +49,14 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta if (filter_options.max_age() != -1) { qint64 cutoff = QDateTime::currentSecsSinceEpoch() - filter_options.max_age(); - where_clauses_ << QStringLiteral("ctime > ?"); + where_clauses_ << u"ctime > ?"_s; bound_values_ << cutoff; } duplicates_only_ = filter_options.filter_mode() == CollectionFilterOptions::FilterMode::Duplicates; if (filter_options.filter_mode() == CollectionFilterOptions::FilterMode::Untagged) { - where_clauses_ << QStringLiteral("(artist = '' OR album = '' OR title ='')"); + where_clauses_ << u"(artist = '' OR album = '' OR title ='')"_s; } } @@ -69,7 +69,7 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con QStringList final_values; final_values.reserve(values.count()); for (const QString &single_value : values) { - final_values.append(QStringLiteral("?")); + final_values.append(u"?"_s); bound_values_ << single_value; } @@ -113,7 +113,7 @@ bool CollectionQuery::Exec() { QStringList where_clauses(where_clauses_); if (!include_unavailable_) { - where_clauses << QStringLiteral("unavailable = 0"); + where_clauses << u"unavailable = 0"_s; } if (!where_clauses.isEmpty()) sql += " WHERE "_L1 + where_clauses.join(" AND "_L1); diff --git a/src/collection/collectionview.cpp b/src/collection/collectionview.cpp index ab1d603a..bff8db2f 100644 --- a/src/collection/collectionview.cpp +++ b/src/collection/collectionview.cpp @@ -76,6 +76,7 @@ #include "settings/collectionsettingspage.h" using std::make_unique; +using namespace Qt::Literals::StringLiterals; CollectionView::CollectionView(QWidget *parent) : AutoExpandingTreeView(parent), @@ -84,7 +85,7 @@ CollectionView::CollectionView(QWidget *parent) total_song_count_(-1), total_artist_count_(-1), total_album_count_(-1), - nomusic_(QStringLiteral(":/pictures/nomusic.png")), + nomusic_(u":/pictures/nomusic.png"_s), context_menu_(nullptr), action_load_(nullptr), action_add_to_playlist_(nullptr), @@ -116,7 +117,7 @@ CollectionView::CollectionView(QWidget *parent) setDragDropMode(QAbstractItemView::DragOnly); setSelectionMode(QAbstractItemView::ExtendedSelection); - setStyleSheet(QStringLiteral("QTreeView::item{padding-top:1px;}")); + setStyleSheet(u"QTreeView::item{padding-top:1px;}"_s); } @@ -379,29 +380,29 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) { if (!context_menu_) { context_menu_ = new QMenu(this); - action_add_to_playlist_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &CollectionView::AddToPlaylist); - action_load_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &CollectionView::Load); - action_open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &CollectionView::OpenInNewPlaylist); + action_add_to_playlist_ = context_menu_->addAction(IconLoader::Load(u"media-playback-start"_s), tr("Append to current playlist"), this, &CollectionView::AddToPlaylist); + action_load_ = context_menu_->addAction(IconLoader::Load(u"media-playback-start"_s), tr("Replace current playlist"), this, &CollectionView::Load); + action_open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load(u"document-new"_s), tr("Open in new playlist"), this, &CollectionView::OpenInNewPlaylist); context_menu_->addSeparator(); - action_add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue track"), this, &CollectionView::AddToPlaylistEnqueue); - action_add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue to play next"), this, &CollectionView::AddToPlaylistEnqueueNext); + action_add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load(u"go-next"_s), tr("Queue track"), this, &CollectionView::AddToPlaylistEnqueue); + action_add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load(u"go-next"_s), tr("Queue to play next"), this, &CollectionView::AddToPlaylistEnqueueNext); context_menu_->addSeparator(); - action_search_for_this_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-find")), tr("Search for this"), this, &CollectionView::SearchForThis); + action_search_for_this_ = context_menu_->addAction(IconLoader::Load(u"edit-find"_s), tr("Search for this"), this, &CollectionView::SearchForThis); context_menu_->addSeparator(); - action_organize_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Organize files..."), this, &CollectionView::Organize); + action_organize_ = context_menu_->addAction(IconLoader::Load(u"edit-copy"_s), tr("Organize files..."), this, &CollectionView::Organize); #ifndef Q_OS_WIN - action_copy_to_device_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("device")), tr("Copy to device..."), this, &CollectionView::CopyToDevice); + action_copy_to_device_ = context_menu_->addAction(IconLoader::Load(u"device"_s), tr("Copy to device..."), this, &CollectionView::CopyToDevice); #endif - action_delete_files_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from disk..."), this, &CollectionView::Delete); + action_delete_files_ = context_menu_->addAction(IconLoader::Load(u"edit-delete"_s), tr("Delete from disk..."), this, &CollectionView::Delete); context_menu_->addSeparator(); - action_edit_track_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-rename")), tr("Edit track information..."), this, &CollectionView::EditTracks); - action_edit_tracks_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-rename")), tr("Edit tracks information..."), this, &CollectionView::EditTracks); - action_show_in_browser_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("document-open-folder")), tr("Show in file browser..."), this, &CollectionView::ShowInBrowser); + action_edit_track_ = context_menu_->addAction(IconLoader::Load(u"edit-rename"_s), tr("Edit track information..."), this, &CollectionView::EditTracks); + action_edit_tracks_ = context_menu_->addAction(IconLoader::Load(u"edit-rename"_s), tr("Edit tracks information..."), this, &CollectionView::EditTracks); + action_show_in_browser_ = context_menu_->addAction(IconLoader::Load(u"document-open-folder"_s), tr("Show in file browser..."), this, &CollectionView::ShowInBrowser); context_menu_->addSeparator(); diff --git a/src/collection/collectionwatcher.cpp b/src/collection/collectionwatcher.cpp index a1fb8c7a..0672b8b8 100644 --- a/src/collection/collectionwatcher.cpp +++ b/src/collection/collectionwatcher.cpp @@ -73,7 +73,7 @@ using namespace std::chrono_literals; using namespace Qt::Literals::StringLiterals; -QStringList CollectionWatcher::sValidImages = QStringList() << QStringLiteral("jpg") << QStringLiteral("png") << QStringLiteral("gif") << QStringLiteral("jpeg"); +QStringList CollectionWatcher::sValidImages = QStringList() << u"jpg"_s << u"png"_s << u"gif"_s << u"jpeg"_s; CollectionWatcher::CollectionWatcher(const Song::Source source, QObject *parent) : QObject(parent), @@ -205,7 +205,7 @@ void CollectionWatcher::ReloadSettings() { scan_on_startup_ = true; monitor_ = true; } - const QStringList filters = s.value("cover_art_patterns", QStringList() << QStringLiteral("front") << QStringLiteral("cover")).toStringList(); + const QStringList filters = s.value("cover_art_patterns", QStringList() << u"front"_s << u"cover"_s).toStringList(); if (source_ == Song::Source::Collection) { song_tracking_ = s.value("song_tracking", false).toBool(); song_ebur128_loudness_analysis_ = s.value("song_ebur128_loudness_analysis", false).toBool(); @@ -951,43 +951,43 @@ void CollectionWatcher::AddChangedSong(const QString &file, const Song &matching } else { if (matching_song.url() != new_song.url()) { - changes << QStringLiteral("file path"); + changes << u"file path"_s; notify_new = true; } if (matching_song.fingerprint() != new_song.fingerprint()) { - changes << QStringLiteral("fingerprint"); + changes << u"fingerprint"_s; notify_new = true; } if (!matching_song.IsMetadataEqual(new_song)) { - changes << QStringLiteral("metadata"); + changes << u"metadata"_s; notify_new = true; } if (!matching_song.IsPlayStatisticsEqual(new_song)) { - changes << QStringLiteral("play statistics"); + changes << u"play statistics"_s; notify_new = true; } if (!matching_song.IsRatingEqual(new_song)) { - changes << QStringLiteral("rating"); + changes << u"rating"_s; notify_new = true; } if (!matching_song.IsArtEqual(new_song)) { - changes << QStringLiteral("album art"); + changes << u"album art"_s; notify_new = true; } if (!matching_song.IsAcoustIdEqual(new_song)) { - changes << QStringLiteral("acoustid"); + changes << u"acoustid"_s; notify_new = true; } if (!matching_song.IsMusicBrainzEqual(new_song)) { - changes << QStringLiteral("musicbrainz"); + changes << u"musicbrainz"_s; notify_new = true; } if (!matching_song.IsEBUR128Equal(new_song)) { - changes << QStringLiteral("ebur128 loudness characteristics"); + changes << u"ebur128 loudness characteristics"_s; notify_new = true; } if (matching_song.mtime() != new_song.mtime()) { - changes << QStringLiteral("mtime"); + changes << u"mtime"_s; } if (changes.isEmpty()) { diff --git a/src/collection/savedgroupingmanager.cpp b/src/collection/savedgroupingmanager.cpp index 204a7987..ddb3bb6d 100644 --- a/src/collection/savedgroupingmanager.cpp +++ b/src/collection/savedgroupingmanager.cpp @@ -61,7 +61,7 @@ SavedGroupingManager::SavedGroupingManager(const QString &saved_groupings_settin model_->setHorizontalHeaderItem(2, new QStandardItem(tr("Second Level"))); model_->setHorizontalHeaderItem(3, new QStandardItem(tr("Third Level"))); ui_->list->setModel(model_); - ui_->remove->setIcon(IconLoader::Load(QStringLiteral("edit-delete"))); + ui_->remove->setIcon(IconLoader::Load(u"edit-delete"_s)); ui_->remove->setEnabled(false); ui_->remove->setShortcut(QKeySequence::Delete); diff --git a/src/context/contextalbum.cpp b/src/context/contextalbum.cpp index a5d99c18..fee9a8a4 100644 --- a/src/context/contextalbum.cpp +++ b/src/context/contextalbum.cpp @@ -48,6 +48,8 @@ using std::make_unique; using std::make_shared; +using namespace Qt::Literals::StringLiterals; + namespace { constexpr int kFadeTimeLineMs = 1000; } @@ -59,12 +61,12 @@ ContextAlbum::ContextAlbum(QWidget *parent) album_cover_choice_controller_(nullptr), downloading_covers_(false), timeline_fade_(new QTimeLine(kFadeTimeLineMs, this)), - image_strawberry_(QStringLiteral(":/pictures/strawberry.png")), + image_strawberry_(u":/pictures/strawberry.png"_s), image_original_(image_strawberry_), pixmap_current_opacity_(1.0), desired_height_(width()) { - setObjectName(QStringLiteral("context-widget-album")); + setObjectName(u"context-widget-album"_s); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); @@ -274,7 +276,7 @@ void ContextAlbum::SearchCoverInProgress() { downloading_covers_ = true; // Show a spinner animation - spinner_animation_ = make_unique(QStringLiteral(":/pictures/spinner.gif"), QByteArray(), this); + spinner_animation_ = make_unique(u":/pictures/spinner.gif"_s, QByteArray(), this); QObject::connect(&*spinner_animation_, &QMovie::updated, this, &ContextAlbum::Update); spinner_animation_->start(); update(); diff --git a/src/context/contextview.cpp b/src/context/contextview.cpp index 3a9a82c6..24e9fe0c 100644 --- a/src/context/contextview.cpp +++ b/src/context/contextview.cpp @@ -57,8 +57,6 @@ #include "utilities/strutils.h" #include "utilities/timeutils.h" #include "widgets/resizabletextedit.h" -#include "collection/collectionbackend.h" -#include "collection/collectionquery.h" #include "collection/collectionview.h" #include "covermanager/albumcoverchoicecontroller.h" #include "lyrics/lyricsfetcher.h" @@ -119,25 +117,25 @@ ContextView::ContextView(QWidget *parent) setLayout(layout_container_); - layout_container_->setObjectName(QStringLiteral("context-layout-container")); + layout_container_->setObjectName(u"context-layout-container"_s); layout_container_->setContentsMargins(0, 0, 0, 0); layout_container_->addWidget(scrollarea_); - scrollarea_->setObjectName(QStringLiteral("context-scrollarea")); + scrollarea_->setObjectName(u"context-scrollarea"_s); scrollarea_->setWidgetResizable(true); scrollarea_->setWidget(widget_scrollarea_); scrollarea_->setContentsMargins(0, 0, 0, 0); scrollarea_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollarea_->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - widget_scrollarea_->setObjectName(QStringLiteral("context-widget-scrollarea")); + widget_scrollarea_->setObjectName(u"context-widget-scrollarea"_s); widget_scrollarea_->setLayout(layout_scrollarea_); widget_scrollarea_->setContentsMargins(0, 0, 0, 0); textedit_top_->setReadOnly(true); textedit_top_->setFrameShape(QFrame::NoFrame); - layout_scrollarea_->setObjectName(QStringLiteral("context-layout-scrollarea")); + layout_scrollarea_->setObjectName(u"context-layout-scrollarea"_s); layout_scrollarea_->setContentsMargins(15, 15, 15, 15); layout_scrollarea_->addWidget(textedit_top_); layout_scrollarea_->addWidget(widget_album_); @@ -306,8 +304,8 @@ void ContextView::ReloadSettings() { Settings s; s.beginGroup(ContextSettingsPage::kSettingsGroup); - title_fmt_ = s.value(ContextSettingsPage::kSettingsTitleFmt, QStringLiteral("%title% - %artist%")).toString(); - summary_fmt_ = s.value(ContextSettingsPage::kSettingsSummaryFmt, QStringLiteral("%album%")).toString(); + title_fmt_ = s.value(ContextSettingsPage::kSettingsTitleFmt, u"%title% - %artist%"_s).toString(); + summary_fmt_ = s.value(ContextSettingsPage::kSettingsSummaryFmt, u"%album%"_s).toString(); action_show_album_->setChecked(s.value(ContextSettingsPage::kSettingsGroupEnable[static_cast(ContextSettingsPage::ContextSettingsOrder::ALBUM)], true).toBool()); action_show_data_->setChecked(s.value(ContextSettingsPage::kSettingsGroupEnable[static_cast(ContextSettingsPage::ContextSettingsOrder::TECHNICAL_DATA)], false).toBool()); action_show_lyrics_->setChecked(s.value(ContextSettingsPage::kSettingsGroupEnable[static_cast(ContextSettingsPage::ContextSettingsOrder::SONG_LYRICS)], true).toBool()); @@ -441,7 +439,7 @@ void ContextView::UpdateFonts() { void ContextView::SetSong() { textedit_top_->setFont(font_headline_); - textedit_top_->SetText(QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song_playing_, QStringLiteral("
"), true), Utilities::ReplaceMessage(summary_fmt_, song_playing_, QStringLiteral("
"), true))); + textedit_top_->SetText(QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song_playing_, u"
"_s, true), Utilities::ReplaceMessage(summary_fmt_, song_playing_, u"
"_s, true))); label_stop_summary_->clear(); @@ -477,7 +475,7 @@ void ContextView::SetSong() { else { label_samplerate_title_->show(); label_samplerate_->show(); - SetLabelText(label_samplerate_, song_playing_.samplerate(), QStringLiteral("Hz")); + SetLabelText(label_samplerate_, song_playing_.samplerate(), u"Hz"_s); } if (song_playing_.bitdepth() <= 0) { label_bitdepth_title_->hide(); @@ -487,7 +485,7 @@ void ContextView::SetSong() { else { label_bitdepth_title_->show(); label_bitdepth_->show(); - SetLabelText(label_bitdepth_, song_playing_.bitdepth(), QStringLiteral("Bit")); + SetLabelText(label_bitdepth_, song_playing_.bitdepth(), u"Bit"_s); } if (song_playing_.bitrate() <= 0) { label_bitrate_title_->hide(); @@ -549,7 +547,7 @@ void ContextView::SetSong() { void ContextView::UpdateSong(const Song &song) { - const QString top_text = QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song, QStringLiteral("
"), true), Utilities::ReplaceMessage(summary_fmt_, song, QStringLiteral("
"), true)); + const QString top_text = QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song, u"
"_s, true), Utilities::ReplaceMessage(summary_fmt_, song, u"
"_s, true)); if (top_text != textedit_top_->Text()) { textedit_top_->SetText(top_text); } @@ -577,7 +575,7 @@ void ContextView::UpdateSong(const Song &song) { else { label_samplerate_title_->show(); label_samplerate_->show(); - SetLabelText(label_samplerate_, song.samplerate(), QStringLiteral("Hz")); + SetLabelText(label_samplerate_, song.samplerate(), u"Hz"_s); } } if (song.bitdepth() != song_playing_.bitdepth()) { @@ -589,7 +587,7 @@ void ContextView::UpdateSong(const Song &song) { else { label_bitdepth_title_->show(); label_bitdepth_->show(); - SetLabelText(label_bitdepth_, song.bitdepth(), QStringLiteral("Bit")); + SetLabelText(label_bitdepth_, song.bitdepth(), u"Bit"_s); } } if (song.bitrate() != song_playing_.bitrate()) { diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index a49a82d0..5c77a942 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -46,6 +46,8 @@ #include +using namespace Qt::Literals::StringLiterals; + namespace { constexpr char kHelpText[] = @@ -113,11 +115,11 @@ CommandlineOptions::CommandlineOptions(int argc, char **argv) #ifdef Q_OS_MACOS // Remove -psn_xxx option that Mac passes when opened from Finder. - RemoveArg(QStringLiteral("-psn"), 1); + RemoveArg(u"-psn"_s, 1); #endif // Remove the -session option that KDE passes - RemoveArg(QStringLiteral("-session"), 2); + RemoveArg(u"-session"_s, 2); } @@ -306,10 +308,10 @@ bool CommandlineOptions::Parse() { volume_modifier_ = -4; break; case LongOptions::Quiet: - log_levels_ = QStringLiteral("1"); + log_levels_ = u"1"_s; break; case LongOptions::Verbose: - log_levels_ = QStringLiteral("3"); + log_levels_ = u"3"_s; break; case LongOptions::LogLevels: log_levels_ = OptArgToString(optarg); diff --git a/src/core/database.cpp b/src/core/database.cpp index 9a7c4e49..52b731b1 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -129,12 +129,12 @@ QSqlDatabase Database::Connect() { db = QSqlDatabase::database(connection_id); } else { - db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), connection_id); + db = QSqlDatabase::addDatabase(u"QSQLITE"_s, connection_id); } if (db.isOpen()) { return db; } - db.setConnectOptions(QStringLiteral("QSQLITE_BUSY_TIMEOUT=30000")); + db.setConnectOptions(u"QSQLITE_BUSY_TIMEOUT=30000"_s); //qLog(Debug) << "Opened database with connection id" << connection_id; if (injected_database_name_.isNull()) { @@ -145,7 +145,7 @@ QSqlDatabase Database::Connect() { } if (!db.open()) { - app_->AddError(QStringLiteral("Database: ") + db.lastError().text()); + app_->AddError(u"Database: "_s + db.lastError().text()); return db; } @@ -168,9 +168,9 @@ QSqlDatabase Database::Connect() { // Attach the db SqlQuery q(db); - q.prepare(QStringLiteral("ATTACH DATABASE :filename AS :alias")); - q.BindValue(QStringLiteral(":filename"), filename); - q.BindValue(QStringLiteral(":alias"), key); + q.prepare(u"ATTACH DATABASE :filename AS :alias"_s); + q.BindValue(u":filename"_s, filename); + q.BindValue(u":alias"_s, key); if (!q.Exec()) { qFatal("Couldn't attach external database '%s'", key.toLatin1().constData()); } @@ -225,7 +225,7 @@ int Database::SchemaVersion(QSqlDatabase *db) { int schema_version = 0; { SqlQuery q(*db); - q.prepare(QStringLiteral("SELECT version FROM schema_version")); + q.prepare(u"SELECT version FROM schema_version"_s); if (q.Exec() && q.next()) { schema_version = q.value(0).toInt(); } @@ -266,8 +266,8 @@ void Database::RecreateAttachedDb(const QString &database_name) { QSqlDatabase db(Connect()); SqlQuery q(db); - q.prepare(QStringLiteral("DETACH DATABASE :alias")); - q.BindValue(QStringLiteral(":alias"), database_name); + q.prepare(u"DETACH DATABASE :alias"_s); + q.BindValue(u":alias"_s, database_name); if (!q.Exec()) { qLog(Warning) << "Failed to detach database" << database_name; return; @@ -297,9 +297,9 @@ void Database::AttachDatabaseOnDbConnection(const QString &database_name, const // Attach the db SqlQuery q(db); - q.prepare(QStringLiteral("ATTACH DATABASE :filename AS :alias")); - q.BindValue(QStringLiteral(":filename"), database.filename_); - q.BindValue(QStringLiteral(":alias"), database_name); + q.prepare(u"ATTACH DATABASE :filename AS :alias"_s); + q.BindValue(u":filename"_s, database.filename_); + q.BindValue(u":alias"_s, database_name); if (!q.Exec()) { qFatal("Couldn't attach external database '%s'", database_name.toLatin1().constData()); } @@ -313,8 +313,8 @@ void Database::DetachDatabase(const QString &database_name) { QSqlDatabase db(Connect()); SqlQuery q(db); - q.prepare(QStringLiteral("DETACH DATABASE :alias")); - q.BindValue(QStringLiteral(":alias"), database_name); + q.prepare(u"DETACH DATABASE :alias"_s); + q.BindValue(u":alias"_s, database_name); if (!q.Exec()) { qLog(Warning) << "Failed to detach database" << database_name; return; @@ -329,7 +329,7 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { QString filename; if (version == 0) { - filename = QStringLiteral(":/schema/schema.sql"); + filename = u":/schema/schema.sql"_s; } else { filename = QStringLiteral(":/schema/schema-%1.sql").arg(version); @@ -360,8 +360,8 @@ void Database::UrlEncodeFilenameColumn(const QString &table, QSqlDatabase &db) { const QUrl url = QUrl::fromLocalFile(filename); - update.BindValue(QStringLiteral(":filename"), url.toEncoded()); - update.BindValue(QStringLiteral(":id"), rowid); + update.BindValue(u":filename"_s, url.toEncoded()); + update.BindValue(u":id"_s, rowid); if (!update.Exec()) { ReportErrors(update); } @@ -389,7 +389,7 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase &db, const QString &filen void Database::ExecSchemaCommands(QSqlDatabase &db, const QString &schema, int schema_version, bool in_transaction) { // Run each command - static const QRegularExpression regex_split_commands(QStringLiteral("; *\n\n")); + static const QRegularExpression regex_split_commands(u"; *\n\n"_s); QStringList commands = schema.split(regex_split_commands); // We don't want this list to reflect possible DB schema changes, so we initialize it before executing any statements. @@ -471,7 +471,7 @@ QStringList Database::SongsTables(QSqlDatabase &db, const int schema_version) { } } - ret << QStringLiteral("playlist_items"); + ret << u"playlist_items"_s; return ret; @@ -497,7 +497,7 @@ bool Database::IntegrityCheck(const QSqlDatabase &db) { bool ok = false; // Ask for 10 error messages at most. SqlQuery q(db); - q.prepare(QStringLiteral("PRAGMA integrity_check(10)")); + q.prepare(u"PRAGMA integrity_check(10)"_s); if (q.Exec()) { bool error_reported = false; while (q.next()) { @@ -510,7 +510,7 @@ bool Database::IntegrityCheck(const QSqlDatabase &db) { } else { if (!error_reported) { app_->AddError(tr("Database corruption detected.")); } - app_->AddError(QStringLiteral("Database: ") + message); + app_->AddError(u"Database: "_s + message); error_reported = true; } } diff --git a/src/core/iconloader.cpp b/src/core/iconloader.cpp index ec11bde0..1f1c09ed 100644 --- a/src/core/iconloader.cpp +++ b/src/core/iconloader.cpp @@ -36,6 +36,8 @@ #include "settings/appearancesettingspage.h" #include "iconloader.h" +using namespace Qt::Literals::StringLiterals; + bool IconLoader::system_icons_ = false; bool IconLoader::custom_icons_ = false; @@ -49,7 +51,7 @@ void IconLoader::Init() { #endif QDir dir; - if (dir.exists(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + QStringLiteral("/icons"))) { + if (dir.exists(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + u"/icons"_s)) { custom_icons_ = true; } @@ -123,7 +125,7 @@ QIcon IconLoader::Load(const QString &name, const bool system_icon, const int fi } if (custom_icons_) { - QString custom_icon_path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + QStringLiteral("/icons/%1x%2/%3.png"); + QString custom_icon_path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + u"/icons/%1x%2/%3.png"_s; for (int s : std::as_const(sizes)) { QString filename(custom_icon_path.arg(s).arg(s).arg(name)); if (QFile::exists(filename)) ret.addFile(filename, QSize(s, s)); @@ -132,7 +134,7 @@ QIcon IconLoader::Load(const QString &name, const bool system_icon, const int fi qLog(Warning) << "Couldn't load icon" << name << "from custom icons."; } - const QString path(QStringLiteral(":/icons/%1x%2/%3.png")); + const QString path(u":/icons/%1x%2/%3.png"_s); for (int s : std::as_const(sizes)) { QString filename(path.arg(s).arg(s).arg(name)); if (QFile::exists(filename)) ret.addFile(filename, QSize(s, s)); diff --git a/src/core/localredirectserver.cpp b/src/core/localredirectserver.cpp index ac299862..999b1291 100644 --- a/src/core/localredirectserver.cpp +++ b/src/core/localredirectserver.cpp @@ -57,10 +57,10 @@ bool LocalRedirectServer::Listen() { return false; } - url_.setScheme(QStringLiteral("http")); - url_.setHost(QStringLiteral("localhost")); + url_.setScheme(u"http"_s); + url_.setHost(u"localhost"_s); url_.setPort(serverPort()); - url_.setPath(QStringLiteral("/")); + url_.setPath(u"/"_s); QObject::connect(this, &QTcpServer::newConnection, this, &LocalRedirectServer::NewConnection); return true; @@ -126,12 +126,12 @@ void LocalRedirectServer::ReadyRead() { void LocalRedirectServer::WriteTemplate() const { - QFile page_file(QStringLiteral(":/html/oauthsuccess.html")); + QFile page_file(u":/html/oauthsuccess.html"_s); if (!page_file.open(QIODevice::ReadOnly)) return; QString page_data = QString::fromUtf8(page_file.readAll()); page_file.close(); - static const QRegularExpression tr_regexp(QStringLiteral("tr\\(\"([^\"]+)\"\\)")); + static const QRegularExpression tr_regexp(u"tr\\(\"([^\"]+)\"\\)"_s); qint64 offset = 0; Q_FOREVER { QRegularExpressionMatch re_match = tr_regexp.match(page_data, offset); diff --git a/src/core/logging.cpp b/src/core/logging.cpp index 8bb737f4..9dbd9def 100644 --- a/src/core/logging.cpp +++ b/src/core/logging.cpp @@ -168,7 +168,7 @@ static void MessageHandler(QtMsgType type, const QMessageLogContext &message_log const QStringList lines = message.split(u'\n'); for (const QString &line : lines) { - BufferedDebug d = CreateLogger(level, QStringLiteral("unknown"), -1, nullptr); + BufferedDebug d = CreateLogger(level, u"unknown"_s, -1, nullptr); d << line.toLocal8Bit().constData(); if (d.buf_) { d.buf_->close(); @@ -295,7 +295,7 @@ static T CreateLogger(Level level, const QString &class_name, int line, const ch } T ret(type); - ret.nospace() << QDateTime::currentDateTime().toString(QStringLiteral("hh:mm:ss.zzz")).toLatin1().constData() << level_name << function_line.leftJustified(32).toLatin1().constData(); + ret.nospace() << QDateTime::currentDateTime().toString(u"hh:mm:ss.zzz"_s).toLatin1().constData() << level_name << function_line.leftJustified(32).toLatin1().constData(); return ret.space(); @@ -321,7 +321,7 @@ QString CXXDemangle(const QString &mangled_function) { QString LinuxDemangle(const QString &symbol); QString LinuxDemangle(const QString &symbol) { - static const QRegularExpression regex_symbol(QStringLiteral("\\(([^+]+)")); + static const QRegularExpression regex_symbol(u"\\(([^+]+)"_s); QRegularExpressionMatch match = regex_symbol.match(symbol); if (!match.hasMatch()) { return symbol; diff --git a/src/core/macsystemtrayicon.mm b/src/core/macsystemtrayicon.mm index c75f1048..9e3b8e2a 100644 --- a/src/core/macsystemtrayicon.mm +++ b/src/core/macsystemtrayicon.mm @@ -37,6 +37,8 @@ #include "song.h" #include "iconloader.h" +using namespace Qt::Literals::StringLiterals; + @interface Target :NSObject { QAction *action_; } @@ -70,7 +72,7 @@ class MacSystemTrayIconPrivate { MacSystemTrayIconPrivate() { dock_menu_ = [[NSMenu alloc] initWithTitle:@"DockMenu"]; - QString title = QT_TR_NOOP(QStringLiteral("Now Playing")); + QString title = QT_TR_NOOP(u"Now Playing"_s); NSString *t = [[NSString alloc] initWithUTF8String:title.toUtf8().constData()]; now_playing_ = [[NSMenuItem alloc] initWithTitle:t action:nullptr keyEquivalent:@""]; now_playing_artist_ = [[NSMenuItem alloc] initWithTitle:@"Nothing to see here" action:nullptr keyEquivalent:@""]; @@ -89,7 +91,7 @@ class MacSystemTrayIconPrivate { void AddMenuItem(QAction *action) { // Strip accelarators from name. - QString text = action->text().remove(QLatin1Char('&')); + QString text = action->text().remove(u'&'); NSString *title = [[NSString alloc] initWithUTF8String: text.toUtf8().constData()]; // Create an object that can receive user clicks and pass them on to the QAction. Target *target = [[Target alloc] initWithQAction:action]; @@ -152,10 +154,10 @@ class MacSystemTrayIconPrivate { SystemTrayIcon::SystemTrayIcon(QObject *parent) : QObject(parent), - normal_icon_(QPixmap(QStringLiteral(":/pictures/strawberry.png")).scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), - grey_icon_(QPixmap(QStringLiteral(":/pictures/strawberry-grey.png")).scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), - playing_icon_(QStringLiteral(":/pictures/tiny-play.png")), - paused_icon_(QStringLiteral(":/pictures/tiny-pause.png")), + normal_icon_(QPixmap(u":/pictures/strawberry.png"_s).scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), + grey_icon_(QPixmap(u":/pictures/strawberry-grey.png"_s).scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), + playing_icon_(u":/pictures/tiny-play.png"_s), + paused_icon_(u":/pictures/tiny-pause.png"_s), trayicon_progress_(false), song_progress_(0) { diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 98016f7d..5cf039f0 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -364,7 +364,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Initialize the UI ui_->setupUi(this); - setWindowIcon(IconLoader::Load(QStringLiteral("strawberry"))); + setWindowIcon(IconLoader::Load(u"strawberry"_s)); album_cover_choice_controller_->Init(app); @@ -376,32 +376,32 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS StyleHelper::setBaseColor(palette().color(QPalette::Highlight).darker()); // Add tabs to the fancy tab widget - ui_->tabs->AddTab(context_view_, QStringLiteral("context"), IconLoader::Load(QStringLiteral("strawberry"), true, 0, 32), tr("Context")); - ui_->tabs->AddTab(collection_view_, QStringLiteral("collection"), IconLoader::Load(QStringLiteral("library-music"), true, 0, 32), tr("Collection")); - ui_->tabs->AddTab(queue_view_, QStringLiteral("queue"), IconLoader::Load(QStringLiteral("footsteps"), true, 0, 32), tr("Queue")); - ui_->tabs->AddTab(playlist_list_, QStringLiteral("playlists"), IconLoader::Load(QStringLiteral("view-media-playlist"), true, 0, 32), tr("Playlists")); - ui_->tabs->AddTab(smartplaylists_view_, QStringLiteral("smartplaylists"), IconLoader::Load(QStringLiteral("view-media-playlist"), true, 0, 32), tr("Smart playlists")); - ui_->tabs->AddTab(file_view_, QStringLiteral("files"), IconLoader::Load(QStringLiteral("document-open"), true, 0, 32), tr("Files")); - ui_->tabs->AddTab(radio_view_, QStringLiteral("radios"), IconLoader::Load(QStringLiteral("radio"), true, 0, 32), tr("Radios")); + ui_->tabs->AddTab(context_view_, u"context"_s, IconLoader::Load(u"strawberry"_s, true, 0, 32), tr("Context")); + ui_->tabs->AddTab(collection_view_, u"collection"_s, IconLoader::Load(u"library-music"_s, true, 0, 32), tr("Collection")); + ui_->tabs->AddTab(queue_view_, u"queue"_s, IconLoader::Load(u"footsteps"_s, true, 0, 32), tr("Queue")); + ui_->tabs->AddTab(playlist_list_, u"playlists"_s, IconLoader::Load(u"view-media-playlist"_s, true, 0, 32), tr("Playlists")); + ui_->tabs->AddTab(smartplaylists_view_, u"smartplaylists"_s, IconLoader::Load(u"view-media-playlist"_s, true, 0, 32), tr("Smart playlists")); + ui_->tabs->AddTab(file_view_, u"files"_s, IconLoader::Load(u"document-open"_s, true, 0, 32), tr("Files")); + ui_->tabs->AddTab(radio_view_, u"radios"_s, IconLoader::Load(u"radio"_s, true, 0, 32), tr("Radios")); #ifndef Q_OS_WIN - ui_->tabs->AddTab(device_view_, QStringLiteral("devices"), IconLoader::Load(QStringLiteral("device"), true, 0, 32), tr("Devices")); + ui_->tabs->AddTab(device_view_, u"devices"_s, IconLoader::Load(u"device"_s, true, 0, 32), tr("Devices")); #endif #ifdef HAVE_SUBSONIC - ui_->tabs->AddTab(subsonic_view_, QStringLiteral("subsonic"), IconLoader::Load(QStringLiteral("subsonic"), true, 0, 32), tr("Subsonic")); + ui_->tabs->AddTab(subsonic_view_, u"subsonic"_s, IconLoader::Load(u"subsonic"_s, true, 0, 32), tr("Subsonic")); #endif #ifdef HAVE_TIDAL - ui_->tabs->AddTab(tidal_view_, QStringLiteral("tidal"), IconLoader::Load(QStringLiteral("tidal"), true, 0, 32), tr("Tidal")); + ui_->tabs->AddTab(tidal_view_, u"tidal"_s, IconLoader::Load(u"tidal"_s, true, 0, 32), tr("Tidal")); #endif #ifdef HAVE_SPOTIFY - ui_->tabs->AddTab(spotify_view_, QStringLiteral("spotify"), IconLoader::Load(QStringLiteral("spotify"), true, 0, 32), tr("Spotify")); + ui_->tabs->AddTab(spotify_view_, u"spotify"_s, IconLoader::Load(u"spotify"_s, true, 0, 32), tr("Spotify")); #endif #ifdef HAVE_QOBUZ - ui_->tabs->AddTab(qobuz_view_, QStringLiteral("qobuz"), IconLoader::Load(QStringLiteral("qobuz"), true, 0, 32), tr("Qobuz")); + ui_->tabs->AddTab(qobuz_view_, u"qobuz"_s, IconLoader::Load(u"qobuz"_s, true, 0, 32), tr("Qobuz")); #endif // Add the playing widget to the fancy tab widget ui_->tabs->AddBottomWidget(ui_->widget_playing); - ui_->tabs->SetBackgroundPixmap(QPixmap(QStringLiteral(":/pictures/sidebar-background.png"))); + ui_->tabs->SetBackgroundPixmap(QPixmap(u":/pictures/sidebar-background.png"_s)); ui_->tabs->LoadSettings(QLatin1String(kSettingsGroup)); track_position_timer_->setInterval(kTrackPositionUpdateTimeMs); @@ -441,59 +441,59 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Help menu - ui_->action_about_strawberry->setIcon(IconLoader::Load(QStringLiteral("strawberry"))); - ui_->action_about_qt->setIcon(QIcon(QStringLiteral(":/qt-project.org/qmessagebox/images/qtlogo-64.png"))); + ui_->action_about_strawberry->setIcon(IconLoader::Load(u"strawberry"_s)); + ui_->action_about_qt->setIcon(QIcon(u":/qt-project.org/qmessagebox/images/qtlogo-64.png"_s)); // Music menu - ui_->action_open_file->setIcon(IconLoader::Load(QStringLiteral("document-open"))); - ui_->action_open_cd->setIcon(IconLoader::Load(QStringLiteral("media-optical"))); - ui_->action_previous_track->setIcon(IconLoader::Load(QStringLiteral("media-skip-backward"))); - ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); - ui_->action_stop->setIcon(IconLoader::Load(QStringLiteral("media-playback-stop"))); - ui_->action_stop_after_this_track->setIcon(IconLoader::Load(QStringLiteral("media-playback-stop"))); - ui_->action_next_track->setIcon(IconLoader::Load(QStringLiteral("media-skip-forward"))); - ui_->action_quit->setIcon(IconLoader::Load(QStringLiteral("application-exit"))); + ui_->action_open_file->setIcon(IconLoader::Load(u"document-open"_s)); + ui_->action_open_cd->setIcon(IconLoader::Load(u"media-optical"_s)); + ui_->action_previous_track->setIcon(IconLoader::Load(u"media-skip-backward"_s)); + ui_->action_play_pause->setIcon(IconLoader::Load(u"media-playback-start"_s)); + ui_->action_stop->setIcon(IconLoader::Load(u"media-playback-stop"_s)); + ui_->action_stop_after_this_track->setIcon(IconLoader::Load(u"media-playback-stop"_s)); + ui_->action_next_track->setIcon(IconLoader::Load(u"media-skip-forward"_s)); + ui_->action_quit->setIcon(IconLoader::Load(u"application-exit"_s)); // Playlist - ui_->action_add_file->setIcon(IconLoader::Load(QStringLiteral("document-open"))); - ui_->action_add_folder->setIcon(IconLoader::Load(QStringLiteral("document-open-folder"))); - ui_->action_add_stream->setIcon(IconLoader::Load(QStringLiteral("document-open-remote"))); - ui_->action_shuffle_mode->setIcon(IconLoader::Load(QStringLiteral("media-playlist-shuffle"))); - ui_->action_repeat_mode->setIcon(IconLoader::Load(QStringLiteral("media-playlist-repeat"))); - ui_->action_new_playlist->setIcon(IconLoader::Load(QStringLiteral("document-new"))); - ui_->action_save_playlist->setIcon(IconLoader::Load(QStringLiteral("document-save"))); - ui_->action_load_playlist->setIcon(IconLoader::Load(QStringLiteral("document-open"))); - ui_->action_jump->setIcon(IconLoader::Load(QStringLiteral("go-jump"))); - ui_->action_clear_playlist->setIcon(IconLoader::Load(QStringLiteral("edit-clear-list"))); - ui_->action_shuffle->setIcon(IconLoader::Load(QStringLiteral("media-playlist-shuffle"))); - ui_->action_remove_duplicates->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); - ui_->action_remove_unavailable->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); - ui_->action_remove_from_playlist->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); - ui_->action_save_all_playlists->setIcon(IconLoader::Load(QStringLiteral("document-save-all"))); + ui_->action_add_file->setIcon(IconLoader::Load(u"document-open"_s)); + ui_->action_add_folder->setIcon(IconLoader::Load(u"document-open-folder"_s)); + ui_->action_add_stream->setIcon(IconLoader::Load(u"document-open-remote"_s)); + ui_->action_shuffle_mode->setIcon(IconLoader::Load(u"media-playlist-shuffle"_s)); + ui_->action_repeat_mode->setIcon(IconLoader::Load(u"media-playlist-repeat"_s)); + ui_->action_new_playlist->setIcon(IconLoader::Load(u"document-new"_s)); + ui_->action_save_playlist->setIcon(IconLoader::Load(u"document-save"_s)); + ui_->action_load_playlist->setIcon(IconLoader::Load(u"document-open"_s)); + ui_->action_jump->setIcon(IconLoader::Load(u"go-jump"_s)); + ui_->action_clear_playlist->setIcon(IconLoader::Load(u"edit-clear-list"_s)); + ui_->action_shuffle->setIcon(IconLoader::Load(u"media-playlist-shuffle"_s)); + ui_->action_remove_duplicates->setIcon(IconLoader::Load(u"list-remove"_s)); + ui_->action_remove_unavailable->setIcon(IconLoader::Load(u"list-remove"_s)); + ui_->action_remove_from_playlist->setIcon(IconLoader::Load(u"list-remove"_s)); + ui_->action_save_all_playlists->setIcon(IconLoader::Load(u"document-save-all"_s)); // Configure - ui_->action_cover_manager->setIcon(IconLoader::Load(QStringLiteral("document-download"))); - ui_->action_edit_track->setIcon(IconLoader::Load(QStringLiteral("edit-rename"))); - ui_->action_edit_value->setIcon(IconLoader::Load(QStringLiteral("edit-rename"))); - ui_->action_selection_set_value->setIcon(IconLoader::Load(QStringLiteral("edit-rename"))); - ui_->action_equalizer->setIcon(IconLoader::Load(QStringLiteral("equalizer"))); - ui_->action_transcoder->setIcon(IconLoader::Load(QStringLiteral("tools-wizard"))); - ui_->action_update_collection->setIcon(IconLoader::Load(QStringLiteral("view-refresh"))); - ui_->action_full_collection_scan->setIcon(IconLoader::Load(QStringLiteral("view-refresh"))); - ui_->action_stop_collection_scan->setIcon(IconLoader::Load(QStringLiteral("dialog-error"))); - ui_->action_settings->setIcon(IconLoader::Load(QStringLiteral("configure"))); - ui_->action_import_data_from_last_fm->setIcon(IconLoader::Load(QStringLiteral("scrobble"))); - ui_->action_console->setIcon(IconLoader::Load(QStringLiteral("keyboard"))); - ui_->action_toggle_show_sidebar->setIcon(IconLoader::Load(QStringLiteral("view-choose"))); - ui_->action_auto_complete_tags->setIcon(IconLoader::Load(QStringLiteral("musicbrainz"))); + ui_->action_cover_manager->setIcon(IconLoader::Load(u"document-download"_s)); + ui_->action_edit_track->setIcon(IconLoader::Load(u"edit-rename"_s)); + ui_->action_edit_value->setIcon(IconLoader::Load(u"edit-rename"_s)); + ui_->action_selection_set_value->setIcon(IconLoader::Load(u"edit-rename"_s)); + ui_->action_equalizer->setIcon(IconLoader::Load(u"equalizer"_s)); + ui_->action_transcoder->setIcon(IconLoader::Load(u"tools-wizard"_s)); + ui_->action_update_collection->setIcon(IconLoader::Load(u"view-refresh"_s)); + ui_->action_full_collection_scan->setIcon(IconLoader::Load(u"view-refresh"_s)); + ui_->action_stop_collection_scan->setIcon(IconLoader::Load(u"dialog-error"_s)); + ui_->action_settings->setIcon(IconLoader::Load(u"configure"_s)); + ui_->action_import_data_from_last_fm->setIcon(IconLoader::Load(u"scrobble"_s)); + ui_->action_console->setIcon(IconLoader::Load(u"keyboard"_s)); + ui_->action_toggle_show_sidebar->setIcon(IconLoader::Load(u"view-choose"_s)); + ui_->action_auto_complete_tags->setIcon(IconLoader::Load(u"musicbrainz"_s)); // Scrobble - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble-disabled"))); - ui_->action_love->setIcon(IconLoader::Load(QStringLiteral("love"))); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(u"scrobble-disabled"_s)); + ui_->action_love->setIcon(IconLoader::Load(u"love"_s)); // File view connections QObject::connect(file_view_, &FileView::AddToPlaylist, this, &MainWindow::AddToPlaylist); @@ -545,15 +545,15 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(ui_->action_full_collection_scan, &QAction::triggered, &*app_->collection(), &SCollection::FullScan); QObject::connect(ui_->action_stop_collection_scan, &QAction::triggered, &*app_->collection(), &SCollection::StopScan); QObject::connect(ui_->action_add_files_to_transcoder, &QAction::triggered, this, &MainWindow::AddFilesToTranscoder); - ui_->action_add_files_to_transcoder->setIcon(IconLoader::Load(QStringLiteral("tools-wizard"))); + ui_->action_add_files_to_transcoder->setIcon(IconLoader::Load(u"tools-wizard"_s)); QObject::connect(ui_->action_toggle_scrobbling, &QAction::triggered, &*app_->scrobbler(), &AudioScrobbler::ToggleScrobbling); QObject::connect(ui_->action_love, &QAction::triggered, this, &MainWindow::Love); QObject::connect(&*app_->scrobbler(), &AudioScrobbler::ErrorMessage, this, &MainWindow::ShowErrorDialog); // Playlist view actions - ui_->action_next_playlist->setShortcuts(QList() << QKeySequence::fromString(QStringLiteral("Ctrl+Tab")) << QKeySequence::fromString(QStringLiteral("Ctrl+PgDown"))); - ui_->action_previous_playlist->setShortcuts(QList() << QKeySequence::fromString(QStringLiteral("Ctrl+Shift+Tab")) << QKeySequence::fromString(QStringLiteral("Ctrl+PgUp"))); + ui_->action_next_playlist->setShortcuts(QList() << QKeySequence::fromString(u"Ctrl+Tab"_s) << QKeySequence::fromString(u"Ctrl+PgDown"_s)); + ui_->action_previous_playlist->setShortcuts(QList() << QKeySequence::fromString(u"Ctrl+Shift+Tab"_s) << QKeySequence::fromString(u"Ctrl+PgUp"_s)); // Actions for switching tabs will be global to the entire window, so adding them here addAction(ui_->action_next_playlist); @@ -673,7 +673,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(collection_view_group, &QActionGroup::triggered, this, &MainWindow::ChangeCollectionFilterMode); - QAction *collection_config_action = new QAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure collection..."), this); + QAction *collection_config_action = new QAction(IconLoader::Load(u"configure"_s), tr("Configure collection..."), this); QObject::connect(collection_config_action, &QAction::triggered, this, &MainWindow::ShowCollectionConfig); collection_view_->filter_widget()->SetSettingsGroup(QLatin1String(CollectionSettingsPage::kSettingsGroup)); collection_view_->filter_widget()->Init(app_->collection()->model(), app_->collection()->model()->filter()); @@ -723,14 +723,14 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(playlist_menu_, &QMenu::aboutToHide, this, &MainWindow::PlaylistMenuHidden); playlist_play_pause_ = playlist_menu_->addAction(tr("Play"), this, &MainWindow::PlaylistPlay); playlist_menu_->addAction(ui_->action_stop); - playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-stop")), tr("Stop after this track"), this, &MainWindow::PlaylistStopAfter); - playlist_queue_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Toggle queue status"), this, &MainWindow::PlaylistQueue); - playlist_queue_->setShortcut(QKeySequence(QStringLiteral("Ctrl+D"))); + playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load(u"media-playback-stop"_s), tr("Stop after this track"), this, &MainWindow::PlaylistStopAfter); + playlist_queue_ = playlist_menu_->addAction(IconLoader::Load(u"go-next"_s), tr("Toggle queue status"), this, &MainWindow::PlaylistQueue); + playlist_queue_->setShortcut(QKeySequence(u"Ctrl+D"_s)); ui_->playlist->addAction(playlist_queue_); - playlist_queue_play_next_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue selected tracks to play next"), this, &MainWindow::PlaylistQueuePlayNext); - playlist_queue_play_next_->setShortcut(QKeySequence(QStringLiteral("Ctrl+Shift+D"))); + playlist_queue_play_next_ = playlist_menu_->addAction(IconLoader::Load(u"go-next"_s), tr("Queue selected tracks to play next"), this, &MainWindow::PlaylistQueuePlayNext); + playlist_queue_play_next_->setShortcut(QKeySequence(u"Ctrl+Shift+D"_s)); ui_->playlist->addAction(playlist_queue_play_next_); - playlist_skip_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("media-skip-forward")), tr("Toggle skip status"), this, &MainWindow::PlaylistSkip); + playlist_skip_ = playlist_menu_->addAction(IconLoader::Load(u"media-skip-forward"_s), tr("Toggle skip status"), this, &MainWindow::PlaylistSkip); ui_->playlist->addAction(playlist_skip_); playlist_menu_->addSeparator(); @@ -743,20 +743,20 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS #ifdef HAVE_MUSICBRAINZ playlist_menu_->addAction(ui_->action_auto_complete_tags); #endif - playlist_rescan_songs_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("view-refresh")), tr("Rescan song(s)..."), this, &MainWindow::RescanSongs); + playlist_rescan_songs_ = playlist_menu_->addAction(IconLoader::Load(u"view-refresh"_s), tr("Rescan song(s)..."), this, &MainWindow::RescanSongs); playlist_menu_->addAction(playlist_rescan_songs_); playlist_menu_->addAction(ui_->action_add_files_to_transcoder); playlist_menu_->addSeparator(); - playlist_copy_url_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Copy URL(s)..."), this, &MainWindow::PlaylistCopyUrl); - playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-find")), tr("Show in collection..."), this, &MainWindow::ShowInCollection); - playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("document-open-folder")), tr("Show in file browser..."), this, &MainWindow::PlaylistOpenInBrowser); - playlist_organize_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Organize files..."), this, &MainWindow::PlaylistMoveToCollection); - playlist_copy_to_collection_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Copy to collection..."), this, &MainWindow::PlaylistCopyToCollection); - playlist_move_to_collection_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("go-jump")), tr("Move to collection..."), this, &MainWindow::PlaylistMoveToCollection); + playlist_copy_url_ = playlist_menu_->addAction(IconLoader::Load(u"edit-copy"_s), tr("Copy URL(s)..."), this, &MainWindow::PlaylistCopyUrl); + playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load(u"edit-find"_s), tr("Show in collection..."), this, &MainWindow::ShowInCollection); + playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load(u"document-open-folder"_s), tr("Show in file browser..."), this, &MainWindow::PlaylistOpenInBrowser); + playlist_organize_ = playlist_menu_->addAction(IconLoader::Load(u"edit-copy"_s), tr("Organize files..."), this, &MainWindow::PlaylistMoveToCollection); + playlist_copy_to_collection_ = playlist_menu_->addAction(IconLoader::Load(u"edit-copy"_s), tr("Copy to collection..."), this, &MainWindow::PlaylistCopyToCollection); + playlist_move_to_collection_ = playlist_menu_->addAction(IconLoader::Load(u"go-jump"_s), tr("Move to collection..."), this, &MainWindow::PlaylistMoveToCollection); #ifndef Q_OS_WIN - playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("device")), tr("Copy to device..."), this, &MainWindow::PlaylistCopyToDevice); + playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load(u"device"_s), tr("Copy to device..."), this, &MainWindow::PlaylistCopyToDevice); #endif - playlist_delete_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from disk..."), this, &MainWindow::PlaylistDelete); + playlist_delete_ = playlist_menu_->addAction(IconLoader::Load(u"edit-delete"_s), tr("Delete from disk..."), this, &MainWindow::PlaylistDelete); playlist_menu_->addSeparator(); playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_clear_playlist); @@ -845,7 +845,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(ui_->analyzer, &AnalyzerContainer::WheelEvent, this, &MainWindow::VolumeWheelEvent); // Statusbar widgets - ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).horizontalAdvance(QStringLiteral("WW selected of WW tracks - [ WW:WW ]"))); + ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).horizontalAdvance(u"WW selected of WW tracks - [ WW:WW ]"_s)); ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page); QObject::connect(ui_->multi_loading_indicator, &MultiLoadingIndicator::TaskCountChange, this, &MainWindow::TaskCountChanged); @@ -872,7 +872,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS PlayingWidgetPositionChanged(ui_->widget_playing->show_above_status_bar()); StyleSheetLoader *css_loader = new StyleSheetLoader(this); - css_loader->SetStyleSheet(this, QStringLiteral(":/style/strawberry.css")); + css_loader->SetStyleSheet(this, u":/style/strawberry.css"_s); // Load playlists app_->playlist_manager()->Init(app_->collection_backend(), app_->playlist_backend(), ui_->playlist_sequence, ui_->playlist); @@ -991,7 +991,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(close_window_shortcut, &QShortcut::activated, this, &MainWindow::ToggleHide); QAction *action_focus_search = new QAction(this); - action_focus_search->setShortcuts(QList() << QKeySequence(QStringLiteral("Ctrl+F"))); + action_focus_search->setShortcuts(QList() << QKeySequence(u"Ctrl+F"_s)); addAction(action_focus_search); QObject::connect(action_focus_search, &QAction::triggered, this, &MainWindow::FocusSearchField); @@ -1014,7 +1014,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS #endif #ifdef Q_OS_LINUX - if (!Utilities::GetEnv(QStringLiteral("SNAP")).isEmpty() && !Utilities::GetEnv(QStringLiteral("SNAP_NAME")).isEmpty()) { + if (!Utilities::GetEnv(u"SNAP"_s).isEmpty() && !Utilities::GetEnv(u"SNAP_NAME"_s).isEmpty()) { Settings s; s.beginGroup(kSettingsGroup); const bool ignore_snap = s.value("ignore_snap", false).toBool(); @@ -1036,9 +1036,9 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS if (!ignore_rosetta) { MessageDialog *rosetta_message = new MessageDialog(this); rosetta_message->set_settings_group(QLatin1String(kSettingsGroup)); - rosetta_message->set_do_not_show_message_again(QStringLiteral("ignore_rosetta")); + rosetta_message->set_do_not_show_message_again(u"ignore_rosetta"_s); rosetta_message->setAttribute(Qt::WA_DeleteOnClose); - rosetta_message->ShowMessage(tr("Strawberry running under Rosetta"), tr("You are running Strawberry under Rosetta. Running Strawberry under Rosetta is unsupported and known to have issues. You should download Strawberry for the correct CPU architecture from %1").arg(QLatin1String("downloads.strawberrymusicplayer.org")), IconLoader::Load(QStringLiteral("dialog-warning"))); + rosetta_message->ShowMessage(tr("Strawberry running under Rosetta"), tr("You are running Strawberry under Rosetta. Running Strawberry under Rosetta is unsupported and known to have issues. You should download Strawberry for the correct CPU architecture from %1").arg(QLatin1String("downloads.strawberrymusicplayer.org")), IconLoader::Load(u"dialog-warning"_s)); } } #endif @@ -1061,7 +1061,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS sponsor_message->set_settings_group(QLatin1String(kSettingsGroup)); sponsor_message->set_do_not_show_message_again(QLatin1String(do_not_show_sponsor_message_key)); sponsor_message->setAttribute(Qt::WA_DeleteOnClose); - sponsor_message->ShowMessage(tr("Sponsoring Strawberry"), tr("Strawberry is free and open source software. If you like Strawberry, please consider sponsoring the project. For more information about sponsorship see our website %1").arg(QStringLiteral("www.strawberrymusicplayer.org")), IconLoader::Load(QStringLiteral("dialog-information"))); + sponsor_message->ShowMessage(tr("Sponsoring Strawberry"), tr("Strawberry is free and open source software. If you like Strawberry, please consider sponsoring the project. For more information about sponsorship see our website %1").arg(u"www.strawberrymusicplayer.org"_s), IconLoader::Load(u"dialog-information"_s)); } } } @@ -1330,11 +1330,11 @@ void MainWindow::EngineChanged(const EngineBase::Type enginetype) { void MainWindow::MediaStopped() { - setWindowTitle(QStringLiteral("Strawberry Music Player")); + setWindowTitle(u"Strawberry Music Player"_s); ui_->action_stop->setEnabled(false); ui_->action_stop_after_this_track->setEnabled(false); - ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + ui_->action_play_pause->setIcon(IconLoader::Load(u"media-playback-start"_s)); ui_->action_play_pause->setText(tr("Play")); ui_->action_play_pause->setEnabled(true); @@ -1371,7 +1371,7 @@ void MainWindow::MediaPaused() { ui_->action_stop->setEnabled(true); ui_->action_stop_after_this_track->setEnabled(true); - ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + ui_->action_play_pause->setIcon(IconLoader::Load(u"media-playback-start"_s)); ui_->action_play_pause->setText(tr("Play")); ui_->action_play_pause->setEnabled(true); @@ -1391,7 +1391,7 @@ void MainWindow::MediaPlaying() { ui_->action_stop->setEnabled(true); ui_->action_stop_after_this_track->setEnabled(true); - ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); + ui_->action_play_pause->setIcon(IconLoader::Load(u"media-playback-pause"_s)); ui_->action_play_pause->setText(tr("Pause")); bool enable_play_pause(false); @@ -1713,11 +1713,11 @@ void MainWindow::UpdateTrackSliderPosition() { void MainWindow::UpdateTaskbarProgress(const bool visible, const double progress) { QVariantMap map; - QDBusMessage msg = QDBusMessage::createSignal(QStringLiteral("/org/strawberrymusicplayer/strawberry"), QStringLiteral("com.canonical.Unity.LauncherEntry"), QStringLiteral("Update")); + QDBusMessage msg = QDBusMessage::createSignal(u"/org/strawberrymusicplayer/strawberry"_s, u"com.canonical.Unity.LauncherEntry"_s, u"Update"_s); - map.insert(QStringLiteral("progress-visible"), visible); - map.insert(QStringLiteral("progress"), progress); - msg << QStringLiteral("application://org.strawberrymusicplayer.strawberry.desktop") << map; + map.insert(u"progress-visible"_s, visible); + map.insert(u"progress"_s, progress); + msg << u"application://org.strawberrymusicplayer.strawberry.desktop"_s << map; QDBusConnection::sessionBus().send(msg); @@ -1849,11 +1849,11 @@ void MainWindow::PlaylistRightClick(const QPoint global_pos, const QModelIndex & // Is this song currently playing? if (app_->playlist_manager()->current()->current_row() == source_index.row() && app_->player()->GetState() == EngineBase::State::Playing) { playlist_play_pause_->setText(tr("Pause")); - playlist_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); + playlist_play_pause_->setIcon(IconLoader::Load(u"media-playback-pause"_s)); } else { playlist_play_pause_->setText(tr("Play")); - playlist_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + playlist_play_pause_->setIcon(IconLoader::Load(u"media-playback-start"_s)); } // Are we allowed to pause? @@ -1965,11 +1965,11 @@ void MainWindow::PlaylistRightClick(const QPoint global_pos, const QModelIndex & else playlist_skip_->setText(tr("Toggle skip status")); } - if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load(QStringLiteral("go-previous"))); - else playlist_queue_->setIcon(IconLoader::Load(QStringLiteral("go-next"))); + if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load(u"go-previous"_s)); + else playlist_queue_->setIcon(IconLoader::Load(u"go-next"_s)); - if (in_skipped < selected) playlist_skip_->setIcon(IconLoader::Load(QStringLiteral("media-skip-forward"))); - else playlist_skip_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + if (in_skipped < selected) playlist_skip_->setIcon(IconLoader::Load(u"media-skip-forward"_s)); + else playlist_skip_->setIcon(IconLoader::Load(u"media-playback-start"_s)); if (!index.isValid()) { @@ -1986,7 +1986,7 @@ void MainWindow::PlaylistRightClick(const QPoint global_pos, const QModelIndex & QString column_name = Playlist::column_name(column); QString column_value = app_->playlist_manager()->current()->data(source_index).toString(); - if (column_value.length() > 25) column_value = column_value.left(25) + QStringLiteral("..."); + if (column_value.length() > 25) column_value = column_value.left(25) + u"..."_s; ui_->action_selection_set_value->setText(tr("Set %1 to \"%2\"...").arg(column_name.toLower(), column_value)); ui_->action_edit_value->setText(tr("Edit tag \"%1\"...").arg(column_name)); @@ -2030,7 +2030,7 @@ void MainWindow::PlaylistRightClick(const QPoint global_pos, const QModelIndex & // Create the playlist submenu if songs are selected. if (selected > 0) { QMenu *add_to_another_menu = new QMenu(tr("Add to another playlist"), this); - add_to_another_menu->setIcon(IconLoader::Load(QStringLiteral("list-add"))); + add_to_another_menu->setIcon(IconLoader::Load(u"list-add"_s)); const QList playlist_ids = app_->playlist_manager()->playlist_ids(); for (const int playlist_id : playlist_ids) { @@ -2884,7 +2884,7 @@ void MainWindow::CheckFullRescanRevisions() { // If we have any... if (!reasons.isEmpty()) { - QString message = tr("The version of Strawberry you've just updated to requires a full collection rescan because of the new features listed below:") + QStringLiteral("
    "); + QString message = tr("The version of Strawberry you've just updated to requires a full collection rescan because of the new features listed below:") + u"
      "_s; for (const QString &reason : reasons) { message += "
    • "_L1 + reason + "
    • "_L1; } @@ -2996,10 +2996,10 @@ void MainWindow::HandleNotificationPreview(const OSDBase::Behaviour type, const qLog(Debug) << "The current playlist is empty, showing a fake song"; // Create a fake song Song fake(Song::Source::LocalFile); - fake.Init(QStringLiteral("Title"), QStringLiteral("Artist"), QStringLiteral("Album"), 123); - fake.set_genre(QStringLiteral("Classical")); - fake.set_composer(QStringLiteral("Anonymous")); - fake.set_performer(QStringLiteral("Anonymous")); + fake.Init(u"Title"_s, u"Artist"_s, u"Album"_s, 123); + fake.set_genre(u"Classical"_s); + fake.set_composer(u"Anonymous"_s); + fake.set_performer(u"Anonymous"_s); fake.set_track(1); fake.set_disc(1); fake.set_year(2011); @@ -3142,12 +3142,12 @@ void MainWindow::SetToggleScrobblingIcon(const bool value) { if (value) { if (app_->playlist_manager()->active() && app_->playlist_manager()->active()->scrobbled()) - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble"), true, 22)); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(u"scrobble"_s, true, 22)); else - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble"), true, 22)); // TODO: Create a faint version of the icon + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(u"scrobble"_s, true, 22)); // TODO: Create a faint version of the icon } else { - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble-disabled"), true, 22)); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(u"scrobble-disabled"_s, true, 22)); } } @@ -3193,7 +3193,7 @@ void MainWindow::PlaylistDelete() { app_->player()->Next(); } - SharedPtr storage = make_shared(Song::Source::LocalFile, QStringLiteral("/")); + SharedPtr storage = make_shared(Song::Source::LocalFile, u"/"_s); DeleteFiles *delete_files = new DeleteFiles(app_->task_manager(), storage, true); QObject::connect(delete_files, &DeleteFiles::Finished, this, &MainWindow::DeleteFilesFinished); delete_files->Start(selected_songs); diff --git a/src/core/networkaccessmanager.cpp b/src/core/networkaccessmanager.cpp index 75f475c0..5da08f8c 100644 --- a/src/core/networkaccessmanager.cpp +++ b/src/core/networkaccessmanager.cpp @@ -33,6 +33,8 @@ #include "networkaccessmanager.h" #include "threadsafenetworkdiskcache.h" +using namespace Qt::Literals::StringLiterals; + NetworkAccessManager::NetworkAccessManager(QObject *parent) : QNetworkAccessManager(parent) { @@ -56,7 +58,7 @@ QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkR new_request.setHeader(QNetworkRequest::UserAgentHeader, user_agent); if (op == QNetworkAccessManager::PostOperation && !new_request.header(QNetworkRequest::ContentTypeHeader).isValid()) { - new_request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); + new_request.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s); } // Prefer the cache unless the caller has changed the setting already diff --git a/src/core/qtsystemtrayicon.cpp b/src/core/qtsystemtrayicon.cpp index b2f8e917..b8a02cad 100644 --- a/src/core/qtsystemtrayicon.cpp +++ b/src/core/qtsystemtrayicon.cpp @@ -34,12 +34,14 @@ #include "iconloader.h" #include "qtsystemtrayicon.h" +using namespace Qt::Literals::StringLiterals; + SystemTrayIcon::SystemTrayIcon(QObject *parent) : QSystemTrayIcon(parent), menu_(new QMenu), app_name_(QCoreApplication::applicationName()), - pixmap_playing_(QStringLiteral(":/pictures/tiny-play.png")), - pixmap_paused_(QStringLiteral(":/pictures/tiny-pause.png")), + pixmap_playing_(u":/pictures/tiny-play.png"_s), + pixmap_paused_(u":/pictures/tiny-pause.png"_s), action_play_pause_(nullptr), action_stop_(nullptr), action_stop_after_this_track_(nullptr), @@ -51,8 +53,8 @@ SystemTrayIcon::SystemTrayIcon(QObject *parent) app_name_[0] = app_name_[0].toUpper(); - const QIcon icon = IconLoader::Load(QStringLiteral("strawberry")); - const QIcon icon_grey = IconLoader::Load(QStringLiteral("strawberry-grey")); + const QIcon icon = IconLoader::Load(u"strawberry"_s); + const QIcon icon_grey = IconLoader::Load(u"strawberry-grey"_s); pixmap_normal_ = icon.pixmap(48, QIcon::Normal); if (icon_grey.isNull()) { pixmap_grey_ = icon.pixmap(48, QIcon::Disabled); @@ -143,7 +145,7 @@ void SystemTrayIcon::SetPlaying(bool enable_play_pause) { action_stop_->setEnabled(true); action_stop_after_this_track_->setEnabled(true); - action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); + action_play_pause_->setIcon(IconLoader::Load(u"media-playback-pause"_s)); action_play_pause_->setText(tr("Pause")); action_play_pause_->setEnabled(enable_play_pause); @@ -156,7 +158,7 @@ void SystemTrayIcon::SetPaused() { action_stop_->setEnabled(true); action_stop_after_this_track_->setEnabled(true); - action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + action_play_pause_->setIcon(IconLoader::Load(u"media-playback-start"_s)); action_play_pause_->setText(tr("Play")); action_play_pause_->setEnabled(true); @@ -170,7 +172,7 @@ void SystemTrayIcon::SetStopped() { action_stop_->setEnabled(false); action_stop_after_this_track_->setEnabled(false); - action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + action_play_pause_->setIcon(IconLoader::Load(u"media-playback-start"_s)); action_play_pause_->setText(tr("Play")); action_play_pause_->setEnabled(true); diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 689bc200..a953fc00 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -47,11 +47,9 @@ #include "song.h" #include "songloader.h" #include "database.h" -#include "sqlrow.h" #include "engine/enginebase.h" #include "tagreader/tagreaderclient.h" #include "collection/collectionbackend.h" -#include "collection/collectionquery.h" #include "playlistparsers/cueparser.h" #include "playlistparsers/parserbase.h" #include "playlistparsers/playlistparser.h" @@ -60,6 +58,8 @@ # include "device/cddasongloader.h" #endif +using namespace Qt::Literals::StringLiterals; + namespace { constexpr int kDefaultTimeout = 5000; } @@ -81,15 +81,15 @@ SongLoader::SongLoader(SharedPtr collection_backend, success_(false) { if (sRawUriSchemes.isEmpty()) { - sRawUriSchemes << QStringLiteral("udp") - << QStringLiteral("mms") - << QStringLiteral("mmsh") - << QStringLiteral("mmst") - << QStringLiteral("mmsu") - << QStringLiteral("rtsp") - << QStringLiteral("rtspu") - << QStringLiteral("rtspt") - << QStringLiteral("rtsph"); + sRawUriSchemes << u"udp"_s + << u"mms"_s + << u"mmsh"_s + << u"mmst"_s + << u"mmsu"_s + << u"rtsp"_s + << u"rtspu"_s + << u"rtspt"_s + << u"rtsph"_s; } timeout_timer_->setSingleShot(true); @@ -537,7 +537,7 @@ void SongLoader::TypeFound(GstElement *typefind, const uint probability, GstCaps // Check the mimetype instance->mime_type_ = QString::fromUtf8(gst_structure_get_name(gst_caps_get_structure(caps, 0))); qLog(Debug) << "Mime type is" << instance->mime_type_; - if (instance->mime_type_ == QStringLiteral("text/plain") || instance->mime_type_ == QStringLiteral("text/uri-list")) { + if (instance->mime_type_ == u"text/plain"_s || instance->mime_type_ == u"text/uri-list"_s) { // Yeah it might be a playlist, let's get some data and have a better look instance->state_ = State::WaitingForMagic; return; @@ -688,10 +688,10 @@ void SongLoader::MagicReady() { qLog(Debug) << "Magic says" << parser_->name(); - if (parser_->name() == QStringLiteral("ASX/INI") && url_.scheme() == QStringLiteral("http")) { + if (parser_->name() == u"ASX/INI"_s && url_.scheme() == u"http"_s) { // This is actually a weird MS-WMSP stream. Changing the protocol to MMS from HTTP makes it playable. parser_ = nullptr; - url_.setScheme(QStringLiteral("mms")); + url_.setScheme(u"mms"_s); StopTypefindAsync(true); } diff --git a/src/core/stylesheetloader.cpp b/src/core/stylesheetloader.cpp index 61834b55..73337285 100644 --- a/src/core/stylesheetloader.cpp +++ b/src/core/stylesheetloader.cpp @@ -95,26 +95,26 @@ void StyleSheetLoader::UpdateStyleSheet(QWidget *widget, SharedPtrreplace(QStringLiteral("%palette-") + name + QStringLiteral("-lighter"), palette.color(role).lighter().name(), Qt::CaseInsensitive); - css->replace(QStringLiteral("%palette-") + name + QStringLiteral("-darker"), palette.color(role).darker().name(), Qt::CaseInsensitive); - css->replace(QStringLiteral("%palette-") + name, palette.color(role).name(), Qt::CaseInsensitive); + css->replace(u"%palette-"_s + name + u"-lighter"_s, palette.color(role).lighter().name(), Qt::CaseInsensitive); + css->replace(u"%palette-"_s + name + u"-darker"_s, palette.color(role).darker().name(), Qt::CaseInsensitive); + css->replace(u"%palette-"_s + name, palette.color(role).name(), Qt::CaseInsensitive); } diff --git a/src/core/temporaryfile.cpp b/src/core/temporaryfile.cpp index 0dd35b35..d2259d27 100644 --- a/src/core/temporaryfile.cpp +++ b/src/core/temporaryfile.cpp @@ -25,6 +25,8 @@ #include "temporaryfile.h" +using namespace Qt::Literals::StringLiterals; + TemporaryFile::TemporaryFile(const QString &filename_pattern) { int i = 0; @@ -56,7 +58,7 @@ TemporaryFile::~TemporaryFile() { QString TemporaryFile::GenerateFilename(const QString &filename_pattern) const { - static const QString random_chars = QStringLiteral("abcdefghijklmnopqrstuvwxyz0123456789"); + static const QString random_chars = u"abcdefghijklmnopqrstuvwxyz0123456789"_s; QString filename = filename_pattern; diff --git a/src/core/threadsafenetworkdiskcache.cpp b/src/core/threadsafenetworkdiskcache.cpp index 986c745e..7bdbc202 100644 --- a/src/core/threadsafenetworkdiskcache.cpp +++ b/src/core/threadsafenetworkdiskcache.cpp @@ -34,6 +34,8 @@ #include "threadsafenetworkdiskcache.h" +using namespace Qt::Literals::StringLiterals; + QMutex ThreadSafeNetworkDiskCache::sMutex; int ThreadSafeNetworkDiskCache::sInstances = 0; QNetworkDiskCache *ThreadSafeNetworkDiskCache::sCache = nullptr; @@ -46,9 +48,9 @@ ThreadSafeNetworkDiskCache::ThreadSafeNetworkDiskCache(QObject *parent) : QAbstr if (!sCache) { sCache = new QNetworkDiskCache; #ifdef Q_OS_WIN32 - sCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + QStringLiteral("/strawberry/networkcache")); + sCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + u"/strawberry/networkcache"_s); #else - sCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/networkcache")); + sCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + u"/networkcache"_s); #endif } diff --git a/src/covermanager/albumcoverchoicecontroller.cpp b/src/covermanager/albumcoverchoicecontroller.cpp index 9d490a04..2b09741b 100644 --- a/src/covermanager/albumcoverchoicecontroller.cpp +++ b/src/covermanager/albumcoverchoicecontroller.cpp @@ -106,16 +106,16 @@ AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget *parent) search_cover_auto_(nullptr), save_embedded_cover_override_(false) { - cover_from_file_ = new QAction(IconLoader::Load(QStringLiteral("document-open")), tr("Load cover from disk..."), this); - cover_to_file_ = new QAction(IconLoader::Load(QStringLiteral("document-save")), tr("Save cover to disk..."), this); - cover_from_url_ = new QAction(IconLoader::Load(QStringLiteral("download")), tr("Load cover from URL..."), this); - search_for_cover_ = new QAction(IconLoader::Load(QStringLiteral("search")), tr("Search for album covers..."), this); - unset_cover_ = new QAction(IconLoader::Load(QStringLiteral("list-remove")), tr("Unset cover"), this); - delete_cover_ = new QAction(IconLoader::Load(QStringLiteral("list-remove")), tr("Delete cover"), this); - clear_cover_ = new QAction(IconLoader::Load(QStringLiteral("list-remove")), tr("Clear cover"), this); + cover_from_file_ = new QAction(IconLoader::Load(u"document-open"_s), tr("Load cover from disk..."), this); + cover_to_file_ = new QAction(IconLoader::Load(u"document-save"_s), tr("Save cover to disk..."), this); + cover_from_url_ = new QAction(IconLoader::Load(u"download"_s), tr("Load cover from URL..."), this); + search_for_cover_ = new QAction(IconLoader::Load(u"search"_s), tr("Search for album covers..."), this); + unset_cover_ = new QAction(IconLoader::Load(u"list-remove"_s), tr("Unset cover"), this); + delete_cover_ = new QAction(IconLoader::Load(u"list-remove"_s), tr("Delete cover"), this); + clear_cover_ = new QAction(IconLoader::Load(u"list-remove"_s), tr("Clear cover"), this); separator1_ = new QAction(this); separator1_->setSeparator(true); - show_cover_ = new QAction(IconLoader::Load(QStringLiteral("zoom-in")), tr("Show fullsize..."), this); + show_cover_ = new QAction(IconLoader::Load(u"zoom-in"_s), tr("Show fullsize..."), this); search_cover_auto_ = new QAction(tr("Search automatically"), this); search_cover_auto_->setCheckable(true); @@ -135,7 +135,7 @@ void AlbumCoverChoiceController::Init(Application *app) { app_ = app; cover_fetcher_ = new AlbumCoverFetcher(app_->cover_providers(), app->network(), this); - cover_searcher_ = new AlbumCoverSearcher(QIcon(QStringLiteral(":/pictures/cdcase.png")), app, this); + cover_searcher_ = new AlbumCoverSearcher(QIcon(u":/pictures/cdcase.png"_s), app, this); cover_searcher_->Init(cover_fetcher_); QObject::connect(cover_fetcher_, &AlbumCoverFetcher::AlbumCoverFetched, this, &AlbumCoverChoiceController::AlbumCoverFetched); @@ -148,7 +148,7 @@ void AlbumCoverChoiceController::ReloadSettings() { s.beginGroup(CoversSettingsPage::kSettingsGroup); cover_options_.cover_type = static_cast(s.value(CoversSettingsPage::kSaveType, static_cast(CoverOptions::CoverType::Cache)).toInt()); cover_options_.cover_filename = static_cast(s.value(CoversSettingsPage::kSaveFilename, static_cast(CoverOptions::CoverFilename::Pattern)).toInt()); - cover_options_.cover_pattern = s.value(CoversSettingsPage::kSavePattern, QStringLiteral("%albumartist-%album")).toString(); + cover_options_.cover_pattern = s.value(CoversSettingsPage::kSavePattern, u"%albumartist-%album"_s).toString(); cover_options_.cover_overwrite = s.value(CoversSettingsPage::kSaveOverwrite, false).toBool(); cover_options_.cover_lowercase = s.value(CoversSettingsPage::kSaveLowercase, false).toBool(); cover_options_.cover_replace_spaces = s.value(CoversSettingsPage::kSaveReplaceSpaces, false).toBool(); @@ -179,7 +179,7 @@ AlbumCoverImageResult AlbumCoverChoiceController::LoadImageFromFile(Song *song) return AlbumCoverImageResult(); } - QString cover_file = QFileDialog::getOpenFileName(this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + QStringLiteral(";;") + tr(kAllFilesFilter)); + QString cover_file = QFileDialog::getOpenFileName(this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + u";;"_s + tr(kAllFilesFilter)); if (cover_file.isEmpty()) return AlbumCoverImageResult(); QFile file(cover_file); @@ -210,7 +210,7 @@ QUrl AlbumCoverChoiceController::LoadCoverFromFile(Song *song) { if (!song->url().isValid() || !song->url().isLocalFile() || song->effective_albumartist().isEmpty() || song->album().isEmpty()) return QUrl(); - QString cover_file = QFileDialog::getOpenFileName(this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + QStringLiteral(";;") + tr(kAllFilesFilter)); + QString cover_file = QFileDialog::getOpenFileName(this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + u";;"_s + tr(kAllFilesFilter)); if (cover_file.isEmpty() || QImage(cover_file).isNull()) return QUrl(); switch (get_save_album_cover_type()) { @@ -241,12 +241,12 @@ void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const A } initial_file_name = initial_file_name + QLatin1Char('-') + (song.effective_album().isEmpty() ? tr("unknown") : song.effective_album()) + ".jpg"_L1; initial_file_name = initial_file_name.toLower(); - static const QRegularExpression regex_whitespaces(QStringLiteral("\\s")); - initial_file_name.replace(regex_whitespaces, QStringLiteral("-")); + static const QRegularExpression regex_whitespaces(u"\\s"_s); + initial_file_name.replace(regex_whitespaces, u"-"_s); static const QRegularExpression regex_invalid_fat_characters(QLatin1String(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption); initial_file_name.remove(regex_invalid_fat_characters); - QString save_filename = QFileDialog::getSaveFileName(this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + QStringLiteral(";;") + tr(kAllFilesFilter)); + QString save_filename = QFileDialog::getSaveFileName(this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + u";;"_s + tr(kAllFilesFilter)); if (save_filename.isEmpty()) return; @@ -659,7 +659,7 @@ QUrl AlbumCoverChoiceController::SaveCoverToFileAutomatic(const Song::Source sou const AlbumCoverImageResult &result, const bool force_overwrite) { - QString filepath = CoverUtils::CoverFilePath(cover_options_, source, artist, album, album_id, album_dir, result.cover_url, QStringLiteral("jpg")); + QString filepath = CoverUtils::CoverFilePath(cover_options_, source, artist, album, album_id, album_dir, result.cover_url, u"jpg"_s); if (filepath.isEmpty()) return QUrl(); QFile file(filepath); @@ -745,7 +745,7 @@ bool AlbumCoverChoiceController::IsKnownImageExtension(const QString &suffix) { if (!sImageExtensions) { sImageExtensions = new QSet(); - (*sImageExtensions) << QStringLiteral("png") << QStringLiteral("jpg") << QStringLiteral("jpeg") << QStringLiteral("bmp") << QStringLiteral("gif") << QStringLiteral("xpm") << QStringLiteral("pbm") << QStringLiteral("pgm") << QStringLiteral("ppm") << QStringLiteral("xbm"); + (*sImageExtensions) << u"png"_s << u"jpg"_s << u"jpeg"_s << u"bmp"_s << u"gif"_s << u"xpm"_s << u"pbm"_s << u"pgm"_s << u"ppm"_s << u"xbm"_s; } return sImageExtensions->contains(suffix); diff --git a/src/covermanager/albumcoverexport.cpp b/src/covermanager/albumcoverexport.cpp index 720bad68..121c8c2d 100644 --- a/src/covermanager/albumcoverexport.cpp +++ b/src/covermanager/albumcoverexport.cpp @@ -59,7 +59,7 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { s.beginGroup(kSettingsGroup); // Restore last accepted settings - ui_->fileName->setText(s.value("fileName", QStringLiteral("cover")).toString()); + ui_->fileName->setText(s.value("fileName", u"cover"_s).toString()); ui_->doNotOverwrite->setChecked(static_cast(s.value("overwrite", static_cast(OverwriteMode::None)).toInt()) == OverwriteMode::None); ui_->overwriteAll->setChecked(static_cast(s.value("overwrite", static_cast(OverwriteMode::All)).toInt()) == OverwriteMode::All); ui_->overwriteSmaller->setChecked(static_cast(s.value("overwrite", static_cast(OverwriteMode::Smaller)).toInt()) == OverwriteMode::Smaller); @@ -77,7 +77,7 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { if (!result.cancelled_) { QString fileName = ui_->fileName->text(); if (fileName.isEmpty()) { - fileName = QStringLiteral("cover"); + fileName = u"cover"_s; } OverwriteMode overwrite_mode = ui_->doNotOverwrite->isChecked() ? OverwriteMode::None : (ui_->overwriteAll->isChecked() ? OverwriteMode::All : OverwriteMode::Smaller); bool forceSize = ui_->forceSize->isChecked(); diff --git a/src/covermanager/albumcoverloaderoptions.cpp b/src/covermanager/albumcoverloaderoptions.cpp index c9a0ab42..5a6c7f3e 100644 --- a/src/covermanager/albumcoverloaderoptions.cpp +++ b/src/covermanager/albumcoverloaderoptions.cpp @@ -38,7 +38,7 @@ AlbumCoverLoaderOptions::Types AlbumCoverLoaderOptions::LoadTypes() { Settings s; s.beginGroup(CoversSettingsPage::kSettingsGroup); - const QStringList all_cover_types = QStringList() << QStringLiteral("art_unset") << QStringLiteral("art_embedded") << QStringLiteral("art_manual") << QStringLiteral("art_automatic"); + const QStringList all_cover_types = QStringList() << u"art_unset"_s << u"art_embedded"_s << u"art_manual"_s << u"art_automatic"_s; const QStringList cover_types_strlist = s.value(CoversSettingsPage::kTypes, all_cover_types).toStringList(); for (const QString &cover_type_str : cover_types_strlist) { if (cover_type_str == "art_unset"_L1) { diff --git a/src/covermanager/albumcovermanager.cpp b/src/covermanager/albumcovermanager.cpp index 6936ffe2..95193c5e 100644 --- a/src/covermanager/albumcovermanager.cpp +++ b/src/covermanager/albumcovermanager.cpp @@ -67,7 +67,6 @@ #include "core/application.h" #include "core/iconloader.h" #include "core/database.h" -#include "core/sqlrow.h" #include "core/settings.h" #include "utilities/strutils.h" #include "utilities/fileutils.h" @@ -118,8 +117,8 @@ AlbumCoverManager::AlbumCoverManager(Application *app, SharedPtraction_fetch->setIcon(IconLoader::Load(QStringLiteral("download"))); - ui_->export_covers->setIcon(IconLoader::Load(QStringLiteral("document-save"))); - ui_->view->setIcon(IconLoader::Load(QStringLiteral("view-choose"))); - ui_->button_fetch->setIcon(IconLoader::Load(QStringLiteral("download"))); - ui_->action_add_to_playlist->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); - ui_->action_load->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); + ui_->action_fetch->setIcon(IconLoader::Load(u"download"_s)); + ui_->export_covers->setIcon(IconLoader::Load(u"document-save"_s)); + ui_->view->setIcon(IconLoader::Load(u"view-choose"_s)); + ui_->button_fetch->setIcon(IconLoader::Load(u"download"_s)); + ui_->action_add_to_playlist->setIcon(IconLoader::Load(u"media-playback-start"_s)); + ui_->action_load->setIcon(IconLoader::Load(u"media-playback-start"_s)); album_cover_choice_controller_->Init(app_); @@ -921,12 +920,12 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex &idx) const { CollectionQuery q(db, collection_backend_->songs_table()); q.SetColumnSpec(Song::kRowIdColumnSpec); - q.AddWhere(QStringLiteral("album"), idx.data(Role_Album).toString()); - q.SetOrderBy(QStringLiteral("disc, track, title")); + q.AddWhere(u"album"_s, idx.data(Role_Album).toString()); + q.SetOrderBy(u"disc, track, title"_s); QString albumartist = idx.data(Role_AlbumArtist).toString(); if (!albumartist.isEmpty()) { - q.AddWhere(QStringLiteral("effective_albumartist"), albumartist); + q.AddWhere(u"effective_albumartist"_s, albumartist); } q.AddCompilationRequirement(albumartist.isEmpty()); diff --git a/src/covermanager/albumcoversearcher.cpp b/src/covermanager/albumcoversearcher.cpp index 2efa0068..4b643535 100644 --- a/src/covermanager/albumcoversearcher.cpp +++ b/src/covermanager/albumcoversearcher.cpp @@ -62,6 +62,8 @@ #include "albumcoverimageresult.h" #include "ui_albumcoversearcher.h" +using namespace Qt::Literals::StringLiterals; + namespace { constexpr int kMargin = 4; constexpr int kPaddingX = 3; @@ -222,7 +224,7 @@ void AlbumCoverSearcher::SearchFinished(const quint64 id, const CoverProviderSea QStandardItem *item = new QStandardItem; item->setIcon(no_cover_icon_); - item->setText(result.artist + QStringLiteral(" - ") + result.album); + item->setText(result.artist + u" - "_s + result.album); item->setData(result.image_url, Role_ImageURL); item->setData(new_id, Role_ImageRequestId); item->setData(false, Role_ImageFetchFinished); diff --git a/src/covermanager/coversearchstatistics.cpp b/src/covermanager/coversearchstatistics.cpp index 811d82eb..f3c2d765 100644 --- a/src/covermanager/coversearchstatistics.cpp +++ b/src/covermanager/coversearchstatistics.cpp @@ -27,6 +27,8 @@ #include "coversearchstatistics.h" +using namespace Qt::Literals::StringLiterals; + CoverSearchStatistics::CoverSearchStatistics() : network_requests_made_(0), bytes_transferred_(0), @@ -62,7 +64,7 @@ CoverSearchStatistics &CoverSearchStatistics::operator+=(const CoverSearchStatis QString CoverSearchStatistics::AverageDimensions() const { if (chosen_images_ == 0) { - return QStringLiteral("0x0"); + return u"0x0"_s; } return QString::number(chosen_width_ / chosen_images_) + QLatin1Char('x') + QString::number(chosen_height_ / chosen_images_); diff --git a/src/covermanager/coversearchstatisticsdialog.cpp b/src/covermanager/coversearchstatisticsdialog.cpp index fbe246d8..387a879f 100644 --- a/src/covermanager/coversearchstatisticsdialog.cpp +++ b/src/covermanager/coversearchstatisticsdialog.cpp @@ -36,6 +36,8 @@ #include "coversearchstatisticsdialog.h" #include "ui_coversearchstatisticsdialog.h" +using namespace Qt::Literals::StringLiterals; + CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget *parent) : QDialog(parent), ui_(new Ui_CoverSearchStatisticsDialog) { @@ -44,7 +46,7 @@ CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget *parent) details_layout_->setSpacing(0); setStyleSheet( - QStringLiteral("#details {" + u"#details {" " background-color: palette(base);" "}" "#details QLabel[type=\"label\"] {" @@ -55,7 +57,7 @@ CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget *parent) "#details QLabel[type=\"value\"] {" " font-weight: bold;" " max-width: 100px;" - "}")); + "}"_s); } CoverSearchStatisticsDialog::~CoverSearchStatisticsDialog() { delete ui_; } @@ -80,7 +82,7 @@ void CoverSearchStatisticsDialog::Show(const CoverSearchStatistics &statistics) AddLine(tr("Total network requests made"), QString::number(statistics.network_requests_made_)); AddLine(tr("Average image size"), statistics.AverageDimensions()); - AddLine(tr("Total bytes transferred"), statistics.bytes_transferred_ > 0 ? Utilities::PrettySize(statistics.bytes_transferred_) : QStringLiteral("0 bytes")); + AddLine(tr("Total bytes transferred"), statistics.bytes_transferred_ > 0 ? Utilities::PrettySize(statistics.bytes_transferred_) : u"0 bytes"_s); details_layout_->addStretch(); @@ -93,8 +95,8 @@ void CoverSearchStatisticsDialog::AddLine(const QString &label, const QString &v QLabel *label1 = new QLabel(label); QLabel *label2 = new QLabel(value); - label1->setProperty("type", QStringLiteral("label")); - label2->setProperty("type", QStringLiteral("value")); + label1->setProperty("type", u"label"_s); + label2->setProperty("type", u"value"_s); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(label1); diff --git a/src/covermanager/currentalbumcoverloader.cpp b/src/covermanager/currentalbumcoverloader.cpp index 7aa0c156..29f7ddeb 100644 --- a/src/covermanager/currentalbumcoverloader.cpp +++ b/src/covermanager/currentalbumcoverloader.cpp @@ -38,18 +38,19 @@ #include "currentalbumcoverloader.h" using std::make_unique; +using namespace Qt::Literals::StringLiterals; CurrentAlbumCoverLoader::CurrentAlbumCoverLoader(Application *app, QObject *parent) : QObject(parent), app_(app), - temp_file_pattern_(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + QStringLiteral("/strawberry-cover-XXXXXX.jpg")), + temp_file_pattern_(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + u"/strawberry-cover-XXXXXX.jpg"_s), id_(0) { setObjectName(QLatin1String(metaObject()->className())); options_.options = AlbumCoverLoaderOptions::Option::RawImageData | AlbumCoverLoaderOptions::Option::OriginalImage | AlbumCoverLoaderOptions::Option::ScaledImage; options_.desired_scaled_size = QSize(120, 120); - options_.default_cover = QStringLiteral(":/pictures/cdcase.png"); + options_.default_cover = u":/pictures/cdcase.png"_s; QObject::connect(&*app_->playlist_manager(), &PlaylistManager::CurrentSongChanged, this, &CurrentAlbumCoverLoader::LoadAlbumCover); QObject::connect(&*app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &CurrentAlbumCoverLoader::AlbumCoverReady); diff --git a/src/covermanager/deezercoverprovider.cpp b/src/covermanager/deezercoverprovider.cpp index 088dac7f..e16159e2 100644 --- a/src/covermanager/deezercoverprovider.cpp +++ b/src/covermanager/deezercoverprovider.cpp @@ -56,7 +56,7 @@ constexpr int kLimit = 10; } DeezerCoverProvider::DeezerCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Deezer"), true, false, 2.0, true, true, app, network, parent) {} + : JsonCoverProvider(u"Deezer"_s, true, false, 2.0, true, true, app, network, parent) {} DeezerCoverProvider::~DeezerCoverProvider() { @@ -88,9 +88,9 @@ bool DeezerCoverProvider::StartSearch(const QString &artist, const QString &albu } } - const ParamList params = ParamList() << Param(QStringLiteral("output"), QStringLiteral("json")) - << Param(QStringLiteral("q"), query) - << Param(QStringLiteral("limit"), QString::number(kLimit)); + const ParamList params = ParamList() << Param(u"output"_s, u"json"_s) + << Param(u"q"_s, query) + << Param(u"limit"_s, QString::number(kLimit)); QUrlQuery url_query; for (const Param ¶m : params) { @@ -167,7 +167,7 @@ QJsonValue DeezerCoverProvider::ExtractData(const QByteArray &data) { if (json_obj.contains("error"_L1)) { QJsonValue value_error = json_obj["error"_L1]; if (!value_error.isObject()) { - Error(QStringLiteral("Error missing object"), json_obj); + Error(u"Error missing object"_s, json_obj); return QJsonValue(); } QJsonObject obj_error = value_error.toObject(); @@ -178,7 +178,7 @@ QJsonValue DeezerCoverProvider::ExtractData(const QByteArray &data) { } if (!json_obj.contains("data"_L1) && !json_obj.contains("DATA"_L1)) { - Error(QStringLiteral("Json reply object is missing data."), json_obj); + Error(u"Json reply object is missing data."_s, json_obj); return QJsonValue(); } @@ -220,7 +220,7 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) for (const QJsonValue &json_value : std::as_const(array_data)) { if (!json_value.isObject()) { - Error(QStringLiteral("Invalid Json reply, data array value is not a object.")); + Error(u"Invalid Json reply, data array value is not a object."_s); continue; } QJsonObject json_obj = json_value.toObject(); @@ -233,39 +233,39 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) } if (!json_obj.contains("id"_L1) || !obj_album.contains("id"_L1)) { - Error(QStringLiteral("Invalid Json reply, data array value object is missing ID."), json_obj); + Error(u"Invalid Json reply, data array value object is missing ID."_s, json_obj); continue; } if (!obj_album.contains("type"_L1)) { - Error(QStringLiteral("Invalid Json reply, data array value album object is missing type."), obj_album); + Error(u"Invalid Json reply, data array value album object is missing type."_s, obj_album); continue; } QString type = obj_album["type"_L1].toString(); if (type != "album"_L1) { - Error(QStringLiteral("Invalid Json reply, data array value album object has incorrect type returned"), obj_album); + Error(u"Invalid Json reply, data array value album object has incorrect type returned"_s, obj_album); continue; } if (!json_obj.contains("artist"_L1)) { - Error(QStringLiteral("Invalid Json reply, data array value object is missing artist."), json_obj); + Error(u"Invalid Json reply, data array value object is missing artist."_s, json_obj); continue; } QJsonValue value_artist = json_obj["artist"_L1]; if (!value_artist.isObject()) { - Error(QStringLiteral("Invalid Json reply, data array value artist is not a object."), value_artist); + Error(u"Invalid Json reply, data array value artist is not a object."_s, value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); if (!obj_artist.contains("name"_L1)) { - Error(QStringLiteral("Invalid Json reply, data array value artist object is missing name."), obj_artist); + Error(u"Invalid Json reply, data array value artist object is missing name."_s, obj_artist); continue; } QString artist = obj_artist["name"_L1].toString(); if (!obj_album.contains("title"_L1)) { - Error(QStringLiteral("Invalid Json reply, data array value album object is missing title."), obj_album); + Error(u"Invalid Json reply, data array value album object is missing title."_s, obj_album); continue; } QString album = obj_album["title"_L1].toString(); @@ -275,8 +275,8 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) cover_result.album = Song::AlbumRemoveDiscMisc(album); bool have_cover = false; - const QList> cover_sizes = QList>() << qMakePair(QStringLiteral("cover_xl"), QSize(1000, 1000)) - << qMakePair(QStringLiteral("cover_big"), QSize(500, 500)); + const QList> cover_sizes = QList>() << qMakePair(u"cover_xl"_s, QSize(1000, 1000)) + << qMakePair(u"cover_big"_s, QSize(500, 500)); for (const QPair &cover_size : cover_sizes) { if (!obj_album.contains(cover_size.first)) continue; QString cover = obj_album[cover_size.first].toString(); @@ -294,7 +294,7 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) } if (!have_cover) { - Error(QStringLiteral("Invalid Json reply, data array value album object is missing cover."), obj_album); + Error(u"Invalid Json reply, data array value album object is missing cover."_s, obj_album); } } diff --git a/src/covermanager/discogscoverprovider.cpp b/src/covermanager/discogscoverprovider.cpp index 7d50d938..d45d7fbe 100644 --- a/src/covermanager/discogscoverprovider.cpp +++ b/src/covermanager/discogscoverprovider.cpp @@ -59,7 +59,7 @@ const char *DiscogsCoverProvider::kSecretKeyB64 = "ZkFIcmlaSER4aHhRSlF2U3d0bm5ZV const int DiscogsCoverProvider::kRequestsDelay = 1000; DiscogsCoverProvider::DiscogsCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Discogs"), false, false, 0.0, false, false, app, network, parent), + : JsonCoverProvider(u"Discogs"_s, false, false, 0.0, false, false, app, network, parent), timer_flush_requests_(new QTimer(this)) { timer_flush_requests_->setInterval(kRequestsDelay); @@ -127,16 +127,16 @@ void DiscogsCoverProvider::FlushRequests() { void DiscogsCoverProvider::SendSearchRequest(SharedPtr search) { - ParamList params = ParamList() << Param(QStringLiteral("format"), QStringLiteral("album")) - << Param(QStringLiteral("artist"), search->artist.toLower()) - << Param(QStringLiteral("release_title"), search->album.toLower()); + ParamList params = ParamList() << Param(u"format"_s, u"album"_s) + << Param(u"artist"_s, search->artist.toLower()) + << Param(u"release_title"_s, search->album.toLower()); switch (search->type) { case DiscogsCoverType::Master: - params << Param(QStringLiteral("type"), QStringLiteral("master")); + params << Param(u"type"_s, u"master"_s); break; case DiscogsCoverType::Release: - params << Param(QStringLiteral("type"), QStringLiteral("release")); + params << Param(u"type"_s, u"release"_s); break; } @@ -147,8 +147,8 @@ void DiscogsCoverProvider::SendSearchRequest(SharedPtr network, QObject *parent) : CoverProvider(name, enabled, authentication_required, quality, batch, allow_missing_album, app, network, parent) {} @@ -45,18 +47,18 @@ QJsonObject JsonCoverProvider::ExtractJsonObj(const QByteArray &data) { } if (json_doc.isEmpty()) { - Error(QStringLiteral("Received empty Json document."), data); + Error(u"Received empty Json document."_s, data); return QJsonObject(); } if (!json_doc.isObject()) { - Error(QStringLiteral("Json document is not an object."), json_doc); + Error(u"Json document is not an object."_s, json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error(QStringLiteral("Received empty Json object."), json_doc); + Error(u"Received empty Json object."_s, json_doc); return QJsonObject(); } diff --git a/src/covermanager/lastfmcoverprovider.cpp b/src/covermanager/lastfmcoverprovider.cpp index a13dc4a8..75eb29d1 100644 --- a/src/covermanager/lastfmcoverprovider.cpp +++ b/src/covermanager/lastfmcoverprovider.cpp @@ -56,7 +56,7 @@ constexpr char kSecret[] = "80fd738f49596e9709b1bf9319c444a8"; } // namespace LastFmCoverProvider::LastFmCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Last.fm"), true, false, 1.0, true, false, app, network, parent) {} + : JsonCoverProvider(u"Last.fm"_s, true, false, 1.0, true, false, app, network, parent) {} LastFmCoverProvider::~LastFmCoverProvider() { @@ -91,9 +91,9 @@ bool LastFmCoverProvider::StartSearch(const QString &artist, const QString &albu } } - ParamList params = ParamList() << Param(QStringLiteral("api_key"), QLatin1String(kApiKey)) - << Param(QStringLiteral("lang"), QLocale().name().left(2).toLower()) - << Param(QStringLiteral("method"), method) + ParamList params = ParamList() << Param(u"api_key"_s, QLatin1String(kApiKey)) + << Param(u"lang"_s, QLocale().name().left(2).toLower()) + << Param(u"method"_s, method) << Param(type, query); std::sort(params.begin(), params.end()); @@ -109,13 +109,13 @@ bool LastFmCoverProvider::StartSearch(const QString &artist, const QString &albu QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5); QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, u'0').toLower(); - url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("api_sig"))), QString::fromLatin1(QUrl::toPercentEncoding(signature))); - url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("format"))), QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("json")))); + url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(u"api_sig"_s)), QString::fromLatin1(QUrl::toPercentEncoding(signature))); + url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(u"format"_s)), QString::fromLatin1(QUrl::toPercentEncoding(u"json"_s))); QUrl url(QString::fromLatin1(kUrl)); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); + req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s); QNetworkReply *reply = network_->post(req, url_query.toString(QUrl::FullyEncoded).toUtf8()); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, id, type]() { QueryFinished(reply, id, type); }); @@ -157,20 +157,20 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons return; } else { - Error(QStringLiteral("Json reply is missing results."), json_obj); + Error(u"Json reply is missing results."_s, json_obj); Q_EMIT SearchFinished(id, results); return; } if (!value_results.isObject()) { - Error(QStringLiteral("Json results is not a object."), value_results); + Error(u"Json results is not a object."_s, value_results); Q_EMIT SearchFinished(id, results); return; } QJsonObject obj_results = value_results.toObject(); if (obj_results.isEmpty()) { - Error(QStringLiteral("Json results object is empty."), value_results); + Error(u"Json results object is empty."_s, value_results); Q_EMIT SearchFinished(id, results); return; } @@ -182,7 +182,7 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons value_matches = obj_results["albummatches"_L1]; } else { - Error(QStringLiteral("Json results object is missing albummatches."), obj_results); + Error(u"Json results object is missing albummatches."_s, obj_results); Q_EMIT SearchFinished(id, results); return; } @@ -192,21 +192,21 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons value_matches = obj_results["trackmatches"_L1]; } else { - Error(QStringLiteral("Json results object is missing trackmatches."), obj_results); + Error(u"Json results object is missing trackmatches."_s, obj_results); Q_EMIT SearchFinished(id, results); return; } } if (!value_matches.isObject()) { - Error(QStringLiteral("Json albummatches or trackmatches is not an object."), value_matches); + Error(u"Json albummatches or trackmatches is not an object."_s, value_matches); Q_EMIT SearchFinished(id, results); return; } QJsonObject obj_matches = value_matches.toObject(); if (obj_matches.isEmpty()) { - Error(QStringLiteral("Json albummatches or trackmatches object is empty."), value_matches); + Error(u"Json albummatches or trackmatches object is empty."_s, value_matches); Q_EMIT SearchFinished(id, results); return; } @@ -220,7 +220,7 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons value_type = obj_matches[type]; if (!value_type.isArray()) { - Error(QStringLiteral("Json album value in albummatches object is not an array."), value_type); + Error(u"Json album value in albummatches object is not an array."_s, value_type); Q_EMIT SearchFinished(id, results); return; } @@ -229,12 +229,12 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons for (const QJsonValue &value : array_type) { if (!value.isObject()) { - Error(QStringLiteral("Invalid Json reply, value in albummatches/trackmatches array is not a object.")); + Error(u"Invalid Json reply, value in albummatches/trackmatches array is not a object."_s); continue; } QJsonObject obj = value.toObject(); if (!obj.contains("artist"_L1) || !obj.contains("image"_L1) || !obj.contains("name"_L1)) { - Error(QStringLiteral("Invalid Json reply, album is missing artist, image or name."), obj); + Error(u"Invalid Json reply, album is missing artist, image or name."_s, obj); continue; } QString artist = obj["artist"_L1].toString(); @@ -245,7 +245,7 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons QJsonValue json_image = obj["image"_L1]; if (!json_image.isArray()) { - Error(QStringLiteral("Invalid Json reply, album image is not a array."), json_image); + Error(u"Invalid Json reply, album image is not a array."_s, json_image); continue; } const QJsonArray array_image = json_image.toArray(); @@ -253,12 +253,12 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons LastFmImageSize image_size_use = LastFmImageSize::Unknown; for (const QJsonValue &value_image : array_image) { if (!value_image.isObject()) { - Error(QStringLiteral("Invalid Json reply, album image value is not an object.")); + Error(u"Invalid Json reply, album image value is not an object."_s); continue; } QJsonObject obj_image = value_image.toObject(); if (!obj_image.contains("#text"_L1) || !obj_image.contains("size"_L1)) { - Error(QStringLiteral("Invalid Json reply, album image value is missing #text or size."), obj_image); + Error(u"Invalid Json reply, album image value is missing #text or size."_s, obj_image); continue; } QString image_url = obj_image["#text"_L1].toString(); diff --git a/src/covermanager/musicbrainzcoverprovider.cpp b/src/covermanager/musicbrainzcoverprovider.cpp index 3f1760ed..4a778438 100644 --- a/src/covermanager/musicbrainzcoverprovider.cpp +++ b/src/covermanager/musicbrainzcoverprovider.cpp @@ -54,7 +54,7 @@ constexpr int kRequestsDelay = 1000; } // namespace MusicbrainzCoverProvider::MusicbrainzCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("MusicBrainz"), true, false, 1.5, true, false, app, network, parent), + : JsonCoverProvider(u"MusicBrainz"_s, true, false, 1.5, true, false, app, network, parent), timer_flush_requests_(new QTimer(this)) { timer_flush_requests_->setInterval(kRequestsDelay); @@ -96,9 +96,9 @@ void MusicbrainzCoverProvider::SendSearchRequest(const SearchRequest &request) { QString query = QStringLiteral("release:\"%1\" AND artist:\"%2\"").arg(request.album.trimmed().replace(u'"', "\""_L1), request.artist.trimmed().replace(u'"', "\""_L1)); QUrlQuery url_query; - url_query.addQueryItem(QStringLiteral("query"), query); - url_query.addQueryItem(QStringLiteral("limit"), QString::number(kLimit)); - url_query.addQueryItem(QStringLiteral("fmt"), QStringLiteral("json")); + url_query.addQueryItem(u"query"_s, query); + url_query.addQueryItem(u"limit"_s, QString::number(kLimit)); + url_query.addQueryItem(u"fmt"_s, u"json"_s); QUrl url(QString::fromLatin1(kReleaseSearchUrl)); url.setQuery(url_query); @@ -148,7 +148,7 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int Error(error); } else { - Error(QStringLiteral("Json reply is missing releases."), json_obj); + Error(u"Json reply is missing releases."_s, json_obj); } Q_EMIT SearchFinished(search_id, results); return; @@ -156,7 +156,7 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int QJsonValue value_releases = json_obj["releases"_L1]; if (!value_releases.isArray()) { - Error(QStringLiteral("Json releases is not an array."), value_releases); + Error(u"Json releases is not an array."_s, value_releases); Q_EMIT SearchFinished(search_id, results); return; } @@ -170,18 +170,18 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int for (const QJsonValue &value_release : array_releases) { if (!value_release.isObject()) { - Error(QStringLiteral("Invalid Json reply, releases array value is not an object.")); + Error(u"Invalid Json reply, releases array value is not an object."_s); continue; } QJsonObject obj_release = value_release.toObject(); if (!obj_release.contains("id"_L1) || !obj_release.contains("artist-credit"_L1) || !obj_release.contains("title"_L1)) { - Error(QStringLiteral("Invalid Json reply, releases array object is missing id, artist-credit or title."), obj_release); + Error(u"Invalid Json reply, releases array object is missing id, artist-credit or title."_s, obj_release); continue; } QJsonValue json_artists = obj_release["artist-credit"_L1]; if (!json_artists.isArray()) { - Error(QStringLiteral("Invalid Json reply, artist-credit is not a array."), json_artists); + Error(u"Invalid Json reply, artist-credit is not a array."_s, json_artists); continue; } const QJsonArray array_artists = json_artists.toArray(); @@ -189,24 +189,24 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int QString artist; for (const QJsonValue &value_artist : array_artists) { if (!value_artist.isObject()) { - Error(QStringLiteral("Invalid Json reply, artist is not a object.")); + Error(u"Invalid Json reply, artist is not a object."_s); continue; } QJsonObject obj_artist = value_artist.toObject(); if (!obj_artist.contains("artist"_L1)) { - Error(QStringLiteral("Invalid Json reply, artist is missing."), obj_artist); + Error(u"Invalid Json reply, artist is missing."_s, obj_artist); continue; } QJsonValue value_artist2 = obj_artist["artist"_L1]; if (!value_artist2.isObject()) { - Error(QStringLiteral("Invalid Json reply, artist is not an object."), value_artist2); + Error(u"Invalid Json reply, artist is not an object."_s, value_artist2); continue; } QJsonObject obj_artist2 = value_artist2.toObject(); if (!obj_artist2.contains("name"_L1)) { - Error(QStringLiteral("Invalid Json reply, artist is missing name."), value_artist2); + Error(u"Invalid Json reply, artist is missing name."_s, value_artist2); continue; } artist = obj_artist2["name"_L1].toString(); diff --git a/src/covermanager/musixmatchcoverprovider.cpp b/src/covermanager/musixmatchcoverprovider.cpp index 2f18ac13..f3bf5731 100644 --- a/src/covermanager/musixmatchcoverprovider.cpp +++ b/src/covermanager/musixmatchcoverprovider.cpp @@ -43,7 +43,7 @@ using namespace Qt::Literals::StringLiterals; MusixmatchCoverProvider::MusixmatchCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Musixmatch"), true, false, 1.0, true, false, app, network, parent) {} + : JsonCoverProvider(u"Musixmatch"_s, true, false, 1.0, true, false, app, network, parent) {} MusixmatchCoverProvider::~MusixmatchCoverProvider() { @@ -104,7 +104,7 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int const QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error(QStringLiteral("Empty reply received from server.")); + Error(u"Empty reply received from server."_s); Q_EMIT SearchFinished(id, results); return; } @@ -130,7 +130,7 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int return; } - static const QRegularExpression regex_html_tag(QStringLiteral("<[^>]*>")); + static const QRegularExpression regex_html_tag(u"<[^>]*>"_s); if (content_json.contains(regex_html_tag)) { // Make sure it's not HTML code. Q_EMIT SearchFinished(id, results); return; @@ -146,54 +146,54 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int } if (json_doc.isEmpty()) { - Error(QStringLiteral("Received empty Json document."), data); + Error(u"Received empty Json document."_s, data); Q_EMIT SearchFinished(id, results); return; } if (!json_doc.isObject()) { - Error(QStringLiteral("Json document is not an object."), json_doc); + Error(u"Json document is not an object."_s, json_doc); Q_EMIT SearchFinished(id, results); return; } QJsonObject obj_data = json_doc.object(); if (obj_data.isEmpty()) { - Error(QStringLiteral("Received empty Json object."), json_doc); + Error(u"Received empty Json object."_s, json_doc); Q_EMIT SearchFinished(id, results); return; } if (!obj_data.contains("props"_L1) || !obj_data["props"_L1].isObject()) { - Error(QStringLiteral("Json reply is missing props."), obj_data); + Error(u"Json reply is missing props."_s, obj_data); Q_EMIT SearchFinished(id, results); return; } obj_data = obj_data["props"_L1].toObject(); if (!obj_data.contains("pageProps"_L1) || !obj_data["pageProps"_L1].isObject()) { - Error(QStringLiteral("Json props is missing pageProps."), obj_data); + Error(u"Json props is missing pageProps."_s, obj_data); Q_EMIT SearchFinished(id, results); return; } obj_data = obj_data["pageProps"_L1].toObject(); if (!obj_data.contains("data"_L1) || !obj_data["data"_L1].isObject()) { - Error(QStringLiteral("Json pageProps is missing data."), obj_data); + Error(u"Json pageProps is missing data."_s, obj_data); Q_EMIT SearchFinished(id, results); return; } obj_data = obj_data["data"_L1].toObject(); if (!obj_data.contains("albumGet"_L1) || !obj_data["albumGet"_L1].isObject()) { - Error(QStringLiteral("Json data is missing albumGet."), obj_data); + Error(u"Json data is missing albumGet."_s, obj_data); Q_EMIT SearchFinished(id, results); return; } obj_data = obj_data["albumGet"_L1].toObject(); if (!obj_data.contains("data"_L1) || !obj_data["data"_L1].isObject()) { - Error(QStringLiteral("Json albumGet reply is missing data."), obj_data); + Error(u"Json albumGet reply is missing data."_s, obj_data); Q_EMIT SearchFinished(id, results); return; } @@ -212,9 +212,9 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int return; } - const QList> cover_sizes = QList>() << qMakePair(QStringLiteral("coverImage800x800"), QSize(800, 800)) - << qMakePair(QStringLiteral("coverImage500x500"), QSize(500, 500)) - << qMakePair(QStringLiteral("coverImage350x350"), QSize(350, 350)); + const QList> cover_sizes = QList>() << qMakePair(u"coverImage800x800"_s, QSize(800, 800)) + << qMakePair(u"coverImage500x500"_s, QSize(500, 500)) + << qMakePair(u"coverImage350x350"_s, QSize(350, 350)); for (const QPair &cover_size : cover_sizes) { if (!obj_data.contains(cover_size.first)) continue; diff --git a/src/covermanager/opentidalcoverprovider.cpp b/src/covermanager/opentidalcoverprovider.cpp index 4f57e567..205f4095 100644 --- a/src/covermanager/opentidalcoverprovider.cpp +++ b/src/covermanager/opentidalcoverprovider.cpp @@ -62,7 +62,7 @@ constexpr const int kRequestsDelay = 1000; using std::make_shared; OpenTidalCoverProvider::OpenTidalCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("OpenTidal"), true, false, 2.5, true, false, app, network, parent), + : JsonCoverProvider(u"OpenTidal"_s, true, false, 2.5, true, false, app, network, parent), login_timer_(new QTimer(this)), timer_flush_requests_(new QTimer(this)), login_in_progress_(false), @@ -178,7 +178,7 @@ void OpenTidalCoverProvider::Login() { req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); req.setRawHeader("Authorization", "Basic " + QByteArray(QByteArray::fromBase64(kApiClientIdB64) + ":" + QByteArray::fromBase64(kApiClientSecretB64)).toBase64()); QUrlQuery url_query; - url_query.addQueryItem(QStringLiteral("grant_type"), QStringLiteral("client_credentials")); + url_query.addQueryItem(u"grant_type"_s, u"client_credentials"_s); QNetworkReply *reply = network_->post(req, url_query.toString(QUrl::FullyEncoded).toUtf8()); replies_ << reply; QObject::connect(reply, &QNetworkReply::sslErrors, this, &OpenTidalCoverProvider::HandleLoginSSLErrors); @@ -331,14 +331,14 @@ void OpenTidalCoverProvider::SendSearchRequest(SearchRequestPtr search_request) } QUrlQuery url_query; - url_query.addQueryItem(QStringLiteral("query"), QString::fromUtf8(QUrl::toPercentEncoding(query))); - url_query.addQueryItem(QStringLiteral("limit"), QString::number(kLimit)); - url_query.addQueryItem(QStringLiteral("countryCode"), QStringLiteral("US")); + url_query.addQueryItem(u"query"_s, QString::fromUtf8(QUrl::toPercentEncoding(query))); + url_query.addQueryItem(u"limit"_s, QString::number(kLimit)); + url_query.addQueryItem(u"countryCode"_s, u"US"_s); QUrl url(QLatin1String(kApiUrl) + "/search"_L1); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/vnd.tidal.v1+json")); + req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/vnd.tidal.v1+json"_s); req.setRawHeader("Authorization", token_type_.toUtf8() + " " + access_token_.toUtf8()); QNetworkReply *reply = network_->get(req); diff --git a/src/covermanager/qobuzcoverprovider.cpp b/src/covermanager/qobuzcoverprovider.cpp index 99e59480..c4b0a09c 100644 --- a/src/covermanager/qobuzcoverprovider.cpp +++ b/src/covermanager/qobuzcoverprovider.cpp @@ -54,7 +54,7 @@ constexpr int kLimit = 10; } QobuzCoverProvider::QobuzCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Qobuz"), true, true, 2.0, true, true, app, network, parent), + : JsonCoverProvider(u"Qobuz"_s, true, true, 2.0, true, true, app, network, parent), service_(app->streaming_services()->Service()) {} QobuzCoverProvider::~QobuzCoverProvider() { @@ -87,9 +87,9 @@ bool QobuzCoverProvider::StartSearch(const QString &artist, const QString &album } } - ParamList params = ParamList() << Param(QStringLiteral("query"), query) - << Param(QStringLiteral("limit"), QString::number(kLimit)) - << Param(QStringLiteral("app_id"), service_->app_id()); + ParamList params = ParamList() << Param(u"query"_s, query) + << Param(u"limit"_s, QString::number(kLimit)) + << Param(u"app_id"_s, service_->app_id()); std::sort(params.begin(), params.end()); @@ -103,7 +103,7 @@ bool QobuzCoverProvider::StartSearch(const QString &artist, const QString &album QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); + req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s); req.setRawHeader("X-App-Id", service_->app_id().toUtf8()); req.setRawHeader("X-User-Auth-Token", service_->user_auth_token().toUtf8()); QNetworkReply *reply = network_->get(req); @@ -188,27 +188,27 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { value_type = json_obj["tracks"_L1]; } else { - Error(QStringLiteral("Json reply is missing albums and tracks object."), json_obj); + Error(u"Json reply is missing albums and tracks object."_s, json_obj); Q_EMIT SearchFinished(id, results); return; } if (!value_type.isObject()) { - Error(QStringLiteral("Json albums or tracks is not a object."), value_type); + Error(u"Json albums or tracks is not a object."_s, value_type); Q_EMIT SearchFinished(id, results); return; } QJsonObject obj_type = value_type.toObject(); if (!obj_type.contains("items"_L1)) { - Error(QStringLiteral("Json albums or tracks object does not contain items."), obj_type); + Error(u"Json albums or tracks object does not contain items."_s, obj_type); Q_EMIT SearchFinished(id, results); return; } QJsonValue value_items = obj_type["items"_L1]; if (!value_items.isArray()) { - Error(QStringLiteral("Json albums or track object items is not a array."), value_items); + Error(u"Json albums or track object items is not a array."_s, value_items); Q_EMIT SearchFinished(id, results); return; } @@ -217,7 +217,7 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { for (const QJsonValue &value : array_items) { if (!value.isObject()) { - Error(QStringLiteral("Invalid Json reply, value in items is not a object.")); + Error(u"Invalid Json reply, value in items is not a object."_s); continue; } QJsonObject item_obj = value.toObject(); @@ -225,7 +225,7 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { QJsonObject obj_album; if (item_obj.contains("album"_L1)) { if (!item_obj["album"_L1].isObject()) { - Error(QStringLiteral("Invalid Json reply, items album is not a object."), item_obj); + Error(u"Invalid Json reply, items album is not a object."_s, item_obj); continue; } obj_album = item_obj["album"_L1].toObject(); @@ -235,7 +235,7 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { } if (!obj_album.contains("artist"_L1) || !obj_album.contains("image"_L1) || !obj_album.contains("title"_L1)) { - Error(QStringLiteral("Invalid Json reply, item is missing artist, title or image."), obj_album); + Error(u"Invalid Json reply, item is missing artist, title or image."_s, obj_album); continue; } @@ -244,12 +244,12 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { // Artist QJsonValue value_artist = obj_album["artist"_L1]; if (!value_artist.isObject()) { - Error(QStringLiteral("Invalid Json reply, items (album) artist is not a object."), value_artist); + Error(u"Invalid Json reply, items (album) artist is not a object."_s, value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); if (!obj_artist.contains("name"_L1)) { - Error(QStringLiteral("Invalid Json reply, items (album) artist is missing name."), obj_artist); + Error(u"Invalid Json reply, items (album) artist is missing name."_s, obj_artist); continue; } QString artist = obj_artist["name"_L1].toString(); @@ -257,12 +257,12 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { // Image QJsonValue value_image = obj_album["image"_L1]; if (!value_image.isObject()) { - Error(QStringLiteral("Invalid Json reply, items (album) image is not a object."), value_image); + Error(u"Invalid Json reply, items (album) image is not a object."_s, value_image); continue; } QJsonObject obj_image = value_image.toObject(); if (!obj_image.contains("large"_L1)) { - Error(QStringLiteral("Invalid Json reply, items (album) image is missing large."), obj_image); + Error(u"Invalid Json reply, items (album) image is missing large."_s, obj_image); continue; } QUrl cover_url(obj_image["large"_L1].toString()); diff --git a/src/covermanager/spotifycoverprovider.cpp b/src/covermanager/spotifycoverprovider.cpp index 2742fd6d..b33caacf 100644 --- a/src/covermanager/spotifycoverprovider.cpp +++ b/src/covermanager/spotifycoverprovider.cpp @@ -42,10 +42,6 @@ #include "core/application.h" #include "core/networkaccessmanager.h" #include "core/logging.h" -#include "core/settings.h" -#include "core/localredirectserver.h" -#include "utilities/randutils.h" -#include "utilities/timeconstants.h" #include "streaming/streamingservices.h" #include "spotify/spotifyservice.h" #include "albumcoverfetcher.h" @@ -60,7 +56,7 @@ constexpr int kLimit = 10; } // namespace SpotifyCoverProvider::SpotifyCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Spotify"), true, true, 2.5, true, true, app, network, parent), + : JsonCoverProvider(u"Spotify"_s, true, true, 2.5, true, true, app, network, parent), service_(app->streaming_services()->Service()) {} SpotifyCoverProvider::~SpotifyCoverProvider() { @@ -98,20 +94,20 @@ bool SpotifyCoverProvider::StartSearch(const QString &artist, const QString &alb } } - const ParamList params = ParamList() << Param(QStringLiteral("q"), query) - << Param(QStringLiteral("type"), type) - << Param(QStringLiteral("limit"), QString::number(kLimit)); + const ParamList params = ParamList() << Param(u"q"_s, query) + << Param(u"type"_s, type) + << Param(u"limit"_s, QString::number(kLimit)); QUrlQuery url_query; for (const Param ¶m : params) { url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(param.first)), QString::fromLatin1(QUrl::toPercentEncoding(param.second))); } - QUrl url(QLatin1String(kApiUrl) + QStringLiteral("/search")); + QUrl url(QLatin1String(kApiUrl) + u"/search"_s); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); + req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s); req.setRawHeader("Authorization", "Bearer " + service_->access_token().toUtf8()); QNetworkReply *reply = network_->get(req); diff --git a/src/covermanager/tidalcoverprovider.cpp b/src/covermanager/tidalcoverprovider.cpp index 15e48e91..0cefaaf4 100644 --- a/src/covermanager/tidalcoverprovider.cpp +++ b/src/covermanager/tidalcoverprovider.cpp @@ -52,7 +52,7 @@ constexpr int kLimit = 10; } TidalCoverProvider::TidalCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider(QStringLiteral("Tidal"), true, true, 2.5, true, true, app, network, parent), + : JsonCoverProvider(u"Tidal"_s, true, true, 2.5, true, true, app, network, parent), service_(app->streaming_services()->Service()) {} TidalCoverProvider::~TidalCoverProvider() { @@ -87,9 +87,9 @@ bool TidalCoverProvider::StartSearch(const QString &artist, const QString &album } } - const ParamList params = ParamList() << Param(QStringLiteral("query"), query) - << Param(QStringLiteral("limit"), QString::number(kLimit)) - << Param(QStringLiteral("countryCode"), service_->country_code()); + const ParamList params = ParamList() << Param(u"query"_s, query) + << Param(u"limit"_s, QString::number(kLimit)) + << Param(u"countryCode"_s, service_->country_code()); QUrlQuery url_query; for (const Param ¶m : params) { @@ -100,7 +100,7 @@ bool TidalCoverProvider::StartSearch(const QString &artist, const QString &album url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); + req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s); if (service_->oauth() && !service_->access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + service_->access_token().toUtf8()); else if (!service_->session_id().isEmpty()) req.setRawHeader("X-Tidal-SessionId", service_->session_id().toUtf8()); @@ -183,7 +183,7 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { } if (!json_obj.contains("items"_L1)) { - Error(QStringLiteral("Json object is missing items."), json_obj); + Error(u"Json object is missing items."_s, json_obj); Q_EMIT SearchFinished(id, CoverProviderSearchResults()); return; } @@ -204,23 +204,23 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { for (const QJsonValue &value_item : array_items) { if (!value_item.isObject()) { - Error(QStringLiteral("Invalid Json reply, items array item is not a object.")); + Error(u"Invalid Json reply, items array item is not a object."_s); continue; } QJsonObject obj_item = value_item.toObject(); if (!obj_item.contains("artist"_L1)) { - Error(QStringLiteral("Invalid Json reply, items array item is missing artist."), obj_item); + Error(u"Invalid Json reply, items array item is missing artist."_s, obj_item); continue; } QJsonValue value_artist = obj_item["artist"_L1]; if (!value_artist.isObject()) { - Error(QStringLiteral("Invalid Json reply, items array item artist is not a object."), value_artist); + Error(u"Invalid Json reply, items array item artist is not a object."_s, value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); if (!obj_artist.contains("name"_L1)) { - Error(QStringLiteral("Invalid Json reply, items array item artist is missing name."), obj_artist); + Error(u"Invalid Json reply, items array item artist is missing name."_s, obj_artist); continue; } QString artist = obj_artist["name"_L1].toString(); @@ -232,7 +232,7 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { obj_album = value_album.toObject(); } else { - Error(QStringLiteral("Invalid Json reply, items array item album is not a object."), value_album); + Error(u"Invalid Json reply, items array item album is not a object."_s, value_album); continue; } } @@ -241,7 +241,7 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { } if (!obj_album.contains("title"_L1) || !obj_album.contains("cover"_L1)) { - Error(QStringLiteral("Invalid Json reply, items array item album is missing title or cover."), obj_album); + Error(u"Invalid Json reply, items array item album is missing title or cover."_s, obj_album); continue; } QString album = obj_album["title"_L1].toString(); @@ -252,9 +252,9 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { cover_result.album = Song::AlbumRemoveDiscMisc(album); cover_result.number = ++i; - const QList> cover_sizes = QList>() << qMakePair(QStringLiteral("1280x1280"), QSize(1280, 1280)) - << qMakePair(QStringLiteral("750x750"), QSize(750, 750)) - << qMakePair(QStringLiteral("640x640"), QSize(640, 640)); + const QList> cover_sizes = QList>() << qMakePair(u"1280x1280"_s, QSize(1280, 1280)) + << qMakePair(u"750x750"_s, QSize(750, 750)) + << qMakePair(u"640x640"_s, QSize(640, 640)); for (const QPair &cover_size : cover_sizes) { QUrl cover_url(QStringLiteral("%1/images/%2/%3.jpg").arg(QLatin1String(TidalService::kResourcesUrl), cover, cover_size.first)); cover_result.image_url = cover_url; diff --git a/src/device/cddalister.cpp b/src/device/cddalister.cpp index 8c7af2f5..32f0059d 100644 --- a/src/device/cddalister.cpp +++ b/src/device/cddalister.cpp @@ -37,6 +37,8 @@ #include "cddalister.h" #include "core/logging.h" +using namespace Qt::Literals::StringLiterals; + QStringList CddaLister::DeviceUniqueIDs() { return devices_list_; } QVariantList CddaLister::DeviceIcons(const QString &id) { @@ -44,7 +46,7 @@ QVariantList CddaLister::DeviceIcons(const QString &id) { Q_UNUSED(id) QVariantList icons; - icons << QStringLiteral("media-optical"); + icons << u"media-optical"_s; return icons; } @@ -105,12 +107,12 @@ QString CddaLister::MakeFriendlyName(const QString &id) { return QString::fromUtf8(cd_info.psz_model); } cdio_destroy(cdio); - return QStringLiteral("CD (") + id + QLatin1Char(')'); + return u"CD ("_s + id + QLatin1Char(')'); } QList CddaLister::MakeDeviceUrls(const QString &id) { - return QList() << QUrl(QStringLiteral("cdda://") + id); + return QList() << QUrl(u"cdda://"_s + id); } void CddaLister::UnmountDevice(const QString &id) { @@ -142,7 +144,7 @@ bool CddaLister::Init() { } #ifdef Q_OS_MACOS // Every track is detected as a separate device on Darwin. The raw disk looks like /dev/rdisk1 - if (!device.contains(QRegularExpression(QStringLiteral("^/dev/rdisk[0-9]$")))) { + if (!device.contains(QRegularExpression(u"^/dev/rdisk[0-9]$"_s))) { continue; } #endif diff --git a/src/device/cddasongloader.cpp b/src/device/cddasongloader.cpp index 02bc8dda..9a7d16db 100644 --- a/src/device/cddasongloader.cpp +++ b/src/device/cddasongloader.cpp @@ -47,6 +47,8 @@ using std::make_shared; +using namespace Qt::Literals::StringLiterals; + CddaSongLoader::CddaSongLoader(const QUrl &url, QObject *parent) : QObject(parent), url_(url), @@ -73,7 +75,7 @@ void CddaSongLoader::LoadSongs() { QMutexLocker locker(&mutex_load_); cdio_ = cdio_open(url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); if (cdio_ == nullptr) { - Error(QStringLiteral("Unable to open CDIO device.")); + Error(u"Unable to open CDIO device."_s); return; } diff --git a/src/device/devicedatabasebackend.cpp b/src/device/devicedatabasebackend.cpp index efda5cff..1784de02 100644 --- a/src/device/devicedatabasebackend.cpp +++ b/src/device/devicedatabasebackend.cpp @@ -88,7 +88,7 @@ DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QStringLiteral("SELECT ROWID, unique_id, friendly_name, size, icon, schema_version, transcode_mode, transcode_format FROM devices")); + q.prepare(u"SELECT ROWID, unique_id, friendly_name, size, icon, schema_version, transcode_mode, transcode_format FROM devices"_s); if (!q.Exec()) { db_->ReportErrors(q); return ret; @@ -132,13 +132,13 @@ int DeviceDatabaseBackend::AddDevice(const Device &device) { // Insert the device into the devices table SqlQuery q(db); - q.prepare(QStringLiteral("INSERT INTO devices (unique_id, friendly_name, size, icon, transcode_mode, transcode_format) VALUES (:unique_id, :friendly_name, :size, :icon, :transcode_mode, :transcode_format)")); - q.BindValue(QStringLiteral(":unique_id"), device.unique_id_); - q.BindValue(QStringLiteral(":friendly_name"), device.friendly_name_); - q.BindValue(QStringLiteral(":size"), device.size_); - q.BindValue(QStringLiteral(":icon"), device.icon_name_); - q.BindValue(QStringLiteral(":transcode_mode"), static_cast(device.transcode_mode_)); - q.BindValue(QStringLiteral(":transcode_format"), static_cast(device.transcode_format_)); + q.prepare(u"INSERT INTO devices (unique_id, friendly_name, size, icon, transcode_mode, transcode_format) VALUES (:unique_id, :friendly_name, :size, :icon, :transcode_mode, :transcode_format)"_s); + q.BindValue(u":unique_id"_s, device.unique_id_); + q.BindValue(u":friendly_name"_s, device.friendly_name_); + q.BindValue(u":size"_s, device.size_); + q.BindValue(u":icon"_s, device.icon_name_); + q.BindValue(u":transcode_mode"_s, static_cast(device.transcode_mode_)); + q.BindValue(u":transcode_format"_s, static_cast(device.transcode_format_)); if (!q.Exec()) { db_->ReportErrors(q); return -1; @@ -172,8 +172,8 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { // Remove the device from the devices table { SqlQuery q(db); - q.prepare(QStringLiteral("DELETE FROM devices WHERE ROWID=:id")); - q.BindValue(QStringLiteral(":id"), id); + q.prepare(u"DELETE FROM devices WHERE ROWID=:id"_s); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -234,11 +234,11 @@ void DeviceDatabaseBackend::SetDeviceOptions(const int id, const QString &friend " transcode_mode=:transcode_mode," " transcode_format=:transcode_format" " WHERE ROWID=:id")); - q.BindValue(QStringLiteral(":friendly_name"), friendly_name); - q.BindValue(QStringLiteral(":icon_name"), icon_name); - q.BindValue(QStringLiteral(":transcode_mode"), static_cast(mode)); - q.BindValue(QStringLiteral(":transcode_format"), static_cast(format)); - q.BindValue(QStringLiteral(":id"), id); + q.BindValue(u":friendly_name"_s, friendly_name); + q.BindValue(u":icon_name"_s, icon_name); + q.BindValue(u":transcode_mode"_s, static_cast(mode)); + q.BindValue(u":transcode_format"_s, static_cast(format)); + q.BindValue(u":id"_s, id); if (!q.Exec()) { db_->ReportErrors(q); } diff --git a/src/device/devicelister.cpp b/src/device/devicelister.cpp index a8d7cbd2..d7510048 100644 --- a/src/device/devicelister.cpp +++ b/src/device/devicelister.cpp @@ -115,48 +115,48 @@ QString GetIpodColour(Itdb_IpodModel model) { case ITDB_IPOD_MODEL_MINI_GREEN: case ITDB_IPOD_MODEL_NANO_GREEN: case ITDB_IPOD_MODEL_SHUFFLE_GREEN: - return QStringLiteral("green"); + return u"green"_s; case ITDB_IPOD_MODEL_MINI_BLUE: case ITDB_IPOD_MODEL_NANO_BLUE: case ITDB_IPOD_MODEL_SHUFFLE_BLUE: - return QStringLiteral("blue"); + return u"blue"_s; case ITDB_IPOD_MODEL_MINI_PINK: case ITDB_IPOD_MODEL_NANO_PINK: case ITDB_IPOD_MODEL_SHUFFLE_PINK: - return QStringLiteral("pink"); + return u"pink"_s; case ITDB_IPOD_MODEL_MINI_GOLD: - return QStringLiteral("gold"); + return u"gold"_s; case ITDB_IPOD_MODEL_NANO_WHITE: case ITDB_IPOD_MODEL_VIDEO_WHITE: - return QStringLiteral("white"); + return u"white"_s; case ITDB_IPOD_MODEL_NANO_SILVER: case ITDB_IPOD_MODEL_CLASSIC_SILVER: - return QStringLiteral("silver"); + return u"silver"_s; case ITDB_IPOD_MODEL_NANO_RED: case ITDB_IPOD_MODEL_SHUFFLE_RED: - return QStringLiteral("red"); + return u"red"_s; case ITDB_IPOD_MODEL_NANO_YELLOW: - return QStringLiteral("yellow"); + return u"yellow"_s; case ITDB_IPOD_MODEL_NANO_PURPLE: case ITDB_IPOD_MODEL_SHUFFLE_PURPLE: - return QStringLiteral("purple"); + return u"purple"_s; case ITDB_IPOD_MODEL_NANO_ORANGE: case ITDB_IPOD_MODEL_SHUFFLE_ORANGE: - return QStringLiteral("orange"); + return u"orange"_s; case ITDB_IPOD_MODEL_NANO_BLACK: case ITDB_IPOD_MODEL_VIDEO_BLACK: case ITDB_IPOD_MODEL_CLASSIC_BLACK: - return QStringLiteral("black"); + return u"black"_s; default: return QString(); @@ -172,7 +172,7 @@ QString GetIpodModel(Itdb_IpodModel model) { case ITDB_IPOD_MODEL_MINI_PINK: case ITDB_IPOD_MODEL_MINI_GREEN: case ITDB_IPOD_MODEL_MINI_GOLD: - return QStringLiteral("mini"); + return u"mini"_s; case ITDB_IPOD_MODEL_NANO_WHITE: case ITDB_IPOD_MODEL_NANO_BLACK: @@ -184,7 +184,7 @@ QString GetIpodModel(Itdb_IpodModel model) { case ITDB_IPOD_MODEL_NANO_YELLOW: case ITDB_IPOD_MODEL_NANO_PURPLE: case ITDB_IPOD_MODEL_NANO_ORANGE: - return QStringLiteral("nano"); + return u"nano"_s; case ITDB_IPOD_MODEL_SHUFFLE: case ITDB_IPOD_MODEL_SHUFFLE_SILVER: @@ -193,17 +193,17 @@ QString GetIpodModel(Itdb_IpodModel model) { case ITDB_IPOD_MODEL_SHUFFLE_GREEN: case ITDB_IPOD_MODEL_SHUFFLE_ORANGE: case ITDB_IPOD_MODEL_SHUFFLE_RED: - return QStringLiteral("shuffle"); + return u"shuffle"_s; case ITDB_IPOD_MODEL_COLOR: case ITDB_IPOD_MODEL_REGULAR: case ITDB_IPOD_MODEL_CLASSIC_SILVER: case ITDB_IPOD_MODEL_CLASSIC_BLACK: - return QStringLiteral("standard"); + return u"standard"_s; case ITDB_IPOD_MODEL_COLOR_U2: case ITDB_IPOD_MODEL_REGULAR_U2: - return QStringLiteral("U2"); + return u"U2"_s; default: return QString(); @@ -218,7 +218,7 @@ QUrl DeviceLister::MakeUrlFromLocalPath(const QString &path) const { if (IsIpod(path)) { QUrl ret; - ret.setScheme(QStringLiteral("ipod")); + ret.setScheme(u"ipod"_s); ret.setPath(QDir::fromNativeSeparators(path)); return ret; } @@ -244,7 +244,7 @@ QVariantList DeviceLister::GuessIconForPath(const QString &path) { const Itdb_IpodInfo *info = itdb_device_get_ipod_info(device); if (info->ipod_model == ITDB_IPOD_MODEL_INVALID) { - ret << QStringLiteral("device-ipod"); + ret << u"device-ipod"_s; } else { QString model = GetIpodModel(info->ipod_model); @@ -260,7 +260,7 @@ QVariantList DeviceLister::GuessIconForPath(const QString &path) { } if (ret.isEmpty()) { - ret << QStringLiteral("device-ipod"); + ret << u"device-ipod"_s; } } @@ -280,7 +280,7 @@ QVariantList DeviceLister::GuessIconForModel(const QString &vendor, const QStrin QVariantList ret; if (vendor.startsWith("Google"_L1) && model.contains("Nexus"_L1)) { - ret << QStringLiteral("phone-google-nexus-one"); + ret << u"phone-google-nexus-one"_s; } return ret; diff --git a/src/device/devicemanager.cpp b/src/device/devicemanager.cpp index 6cd7c6df..c19776be 100644 --- a/src/device/devicemanager.cpp +++ b/src/device/devicemanager.cpp @@ -91,7 +91,7 @@ const int DeviceManager::kDeviceIconOverlaySize = 16; DeviceManager::DeviceManager(Application *app, QObject *parent) : SimpleTreeModel(new DeviceInfo(this), parent), app_(app), - not_connected_overlay_(IconLoader::Load(QStringLiteral("edit-delete"))) { + not_connected_overlay_(IconLoader::Load(u"edit-delete"_s)) { setObjectName(QLatin1String(metaObject()->className())); @@ -604,7 +604,7 @@ SharedPtr DeviceManager::Connect(DeviceInfo *info) { // If it was "ipod" or "mtp" then the user compiled out support and the device won't work properly. if (url.scheme() == "mtp"_L1 || url.scheme() == "gphoto2"_L1) { if (QMessageBox::critical(nullptr, tr("This device will not work properly"), - tr("This is an MTP device, but you compiled Strawberry without libmtp support.") + QStringLiteral(" ") + + tr("This is an MTP device, but you compiled Strawberry without libmtp support.") + u" "_s + tr("If you continue, this device will work slowly and songs copied to it may not work."), QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) return ret; diff --git a/src/device/deviceproperties.cpp b/src/device/deviceproperties.cpp index 71cb757f..0e53f753 100644 --- a/src/device/deviceproperties.cpp +++ b/src/device/deviceproperties.cpp @@ -57,6 +57,8 @@ #include "transcoder/transcoder.h" #include "ui_deviceproperties.h" +using namespace Qt::Literals::StringLiterals; + DeviceProperties::DeviceProperties(QWidget *parent) : QDialog(parent), ui_(new Ui_DeviceProperties), @@ -87,13 +89,13 @@ void DeviceProperties::ShowDevice(const QModelIndex &idx) { if (ui_->icon->count() == 0) { // Only load the icons the first time the dialog is shown - const QStringList icon_names = QStringList() << QStringLiteral("device") - << QStringLiteral("device-usb-drive") - << QStringLiteral("device-usb-flash") - << QStringLiteral("media-optical") - << QStringLiteral("device-ipod") - << QStringLiteral("device-ipod-nano") - << QStringLiteral("device-phone"); + const QStringList icon_names = QStringList() << u"device"_s + << u"device-usb-drive"_s + << u"device-usb-flash"_s + << u"media-optical"_s + << u"device-ipod"_s + << u"device-ipod-nano"_s + << u"device-phone"_s; for (const QString &icon_name : icon_names) { diff --git a/src/device/deviceview.cpp b/src/device/deviceview.cpp index 43777466..d9b7ccdf 100644 --- a/src/device/deviceview.cpp +++ b/src/device/deviceview.cpp @@ -236,19 +236,19 @@ void DeviceView::contextMenuEvent(QContextMenuEvent *e) { collection_menu_ = new QMenu(this); // Device menu - eject_action_ = device_menu_->addAction(IconLoader::Load(QStringLiteral("media-eject")), tr("Safely remove device"), this, &DeviceView::Unmount); - forget_action_ = device_menu_->addAction(IconLoader::Load(QStringLiteral("list-remove")), tr("Forget device"), this, &DeviceView::Forget); + eject_action_ = device_menu_->addAction(IconLoader::Load(u"media-eject"_s), tr("Safely remove device"), this, &DeviceView::Unmount); + forget_action_ = device_menu_->addAction(IconLoader::Load(u"list-remove"_s), tr("Forget device"), this, &DeviceView::Forget); device_menu_->addSeparator(); - properties_action_ = device_menu_->addAction(IconLoader::Load(QStringLiteral("configure")), tr("Device properties..."), this, &DeviceView::Properties); + properties_action_ = device_menu_->addAction(IconLoader::Load(u"configure"_s), tr("Device properties..."), this, &DeviceView::Properties); // Collection menu - add_to_playlist_action_ = collection_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &DeviceView::AddToPlaylist); - load_action_ = collection_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &DeviceView::Load); - open_in_new_playlist_ = collection_menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &DeviceView::OpenInNewPlaylist); + add_to_playlist_action_ = collection_menu_->addAction(IconLoader::Load(u"media-playback-start"_s), tr("Append to current playlist"), this, &DeviceView::AddToPlaylist); + load_action_ = collection_menu_->addAction(IconLoader::Load(u"media-playback-start"_s), tr("Replace current playlist"), this, &DeviceView::Load); + open_in_new_playlist_ = collection_menu_->addAction(IconLoader::Load(u"document-new"_s), tr("Open in new playlist"), this, &DeviceView::OpenInNewPlaylist); collection_menu_->addSeparator(); - organize_action_ = collection_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Copy to collection..."), this, &DeviceView::Organize); - delete_action_ = collection_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from device..."), this, &DeviceView::Delete); + organize_action_ = collection_menu_->addAction(IconLoader::Load(u"edit-copy"_s), tr("Copy to collection..."), this, &DeviceView::Organize); + delete_action_ = collection_menu_->addAction(IconLoader::Load(u"edit-delete"_s), tr("Delete from device..."), this, &DeviceView::Delete); } menu_index_ = currentIndex(); diff --git a/src/device/giolister.cpp b/src/device/giolister.cpp index 8950566a..f9e0e0b0 100644 --- a/src/device/giolister.cpp +++ b/src/device/giolister.cpp @@ -228,12 +228,12 @@ QList GioLister::MakeDeviceUrls(const QString &id) { for (QString uri : std::as_const(uris)) { // gphoto2 gives invalid hostnames with []:, characters in - static const QRegularExpression regex_url_usb(QStringLiteral("//\\[usb:(\\d+),(\\d+)\\]")); - uri.replace(regex_url_usb, QStringLiteral("//usb-\\1-\\2")); + static const QRegularExpression regex_url_usb(u"//\\[usb:(\\d+),(\\d+)\\]"_s); + uri.replace(regex_url_usb, u"//usb-\\1-\\2"_s); QUrl url; - static const QRegularExpression regex_url_schema(QStringLiteral("..+:.*")); + static const QRegularExpression regex_url_schema(u"..+:.*"_s); if (uri.contains(regex_url_schema)) { url = QUrl::fromEncoded(uri.toUtf8()); } @@ -245,16 +245,16 @@ QList GioLister::MakeDeviceUrls(const QString &id) { // Special case for file:// GIO URIs - we have to check whether they point to an ipod. if (url.isLocalFile() && IsIpod(url.path())) { - url.setScheme(QStringLiteral("ipod")); + url.setScheme(u"ipod"_s); } - static const QRegularExpression regex_usb_digit(QStringLiteral("usb/(\\d+)/(\\d+)")); + static const QRegularExpression regex_usb_digit(u"usb/(\\d+)/(\\d+)"_s); QRegularExpression device_re(regex_usb_digit); QRegularExpressionMatch re_match = device_re.match(unix_device); if (re_match.hasMatch()) { QUrlQuery url_query(url); - url_query.addQueryItem(QStringLiteral("busnum"), re_match.captured(1)); - url_query.addQueryItem(QStringLiteral("devnum"), re_match.captured(2)); + url_query.addQueryItem(u"busnum"_s, re_match.captured(1)); + url_query.addQueryItem(u"devnum"_s, re_match.captured(2)); url.setQuery(url_query); } diff --git a/src/device/gpoddevice.cpp b/src/device/gpoddevice.cpp index eee333c9..3fc96334 100644 --- a/src/device/gpoddevice.cpp +++ b/src/device/gpoddevice.cpp @@ -52,6 +52,7 @@ class DeviceLister; class DeviceManager; using std::make_shared; +using namespace Qt::Literals::StringLiterals; GPodDevice::GPodDevice(const QUrl &url, DeviceLister *lister, const QString &unique_id, SharedPtr manager, Application *app, const int database_id, const bool first_time, QObject *parent) : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time, parent), @@ -195,12 +196,12 @@ bool GPodDevice::CopyToStorage(const CopyJob &job, QString &error_text) { bool result = false; if (!job.cover_image_.isNull()) { #ifdef Q_OS_LINUX - QString temp_path = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/organize"); + QString temp_path = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + u"/organize"_s; #else QString temp_path = QStandardPaths::writableLocation(QStandardPaths::TempLocation); #endif if (!QDir(temp_path).exists()) QDir().mkpath(temp_path); - SharedPtr cover_file = make_shared(temp_path + QStringLiteral("/track-albumcover-XXXXXX.jpg")); + SharedPtr cover_file = make_shared(temp_path + u"/track-albumcover-XXXXXX.jpg"_s); if (!cover_file->filename().isEmpty()) { const QImage &image = job.cover_image_; if (image.save(cover_file->filename(), "JPG")) { diff --git a/src/device/macosdevicelister.mm b/src/device/macosdevicelister.mm index dbc55107..fcad47da 100644 --- a/src/device/macosdevicelister.mm +++ b/src/device/macosdevicelister.mm @@ -723,18 +723,18 @@ QList MacOsDeviceLister::MakeDeviceUrls(const QString &serial) { const MTPDevice &device = mtp_devices_[serial]; QString str = QString::asprintf("gphoto2://usb-%d-%d/", device.bus, device.address); QUrlQuery url_query; - url_query.addQueryItem(QStringLiteral("vendor"), device.vendor); - url_query.addQueryItem(QStringLiteral("vendor_id"), QString::number(device.vendor_id)); - url_query.addQueryItem(QStringLiteral("product"), device.product); - url_query.addQueryItem(QStringLiteral("product_id"), QString::number(device.product_id)); - url_query.addQueryItem(QStringLiteral("quirks"), QString::number(device.quirks)); + url_query.addQueryItem(u"vendor"_s, device.vendor); + url_query.addQueryItem(u"vendor_id"_s, QString::number(device.vendor_id)); + url_query.addQueryItem(u"product"_s, device.product); + url_query.addQueryItem(u"product_id"_s, QString::number(device.product_id)); + url_query.addQueryItem(u"quirks"_s, QString::number(device.quirks)); QUrl url(str); url.setQuery(url_query); return QList() << url; } if (IsCDDevice(serial)) { - return QList() << QUrl(QStringLiteral("cdda:///dev/r") + serial); + return QList() << QUrl(u"cdda:///dev/r"_s + serial); } QString bsd_name = current_devices_[serial]; @@ -762,7 +762,7 @@ QVariantList MacOsDeviceLister::DeviceIcons(const QString &serial) { } if (IsCDDevice(serial)) { - return QVariantList() << QStringLiteral("media-optical"); + return QVariantList() << u"media-optical"_s; } QString bsd_name = current_devices_[serial]; diff --git a/src/device/mtpconnection.cpp b/src/device/mtpconnection.cpp index d1a285ad..7cfac671 100644 --- a/src/device/mtpconnection.cpp +++ b/src/device/mtpconnection.cpp @@ -33,11 +33,13 @@ #include "core/logging.h" #include "mtpconnection.h" +using namespace Qt::Literals::StringLiterals; + MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent), device_(nullptr) { QString hostname = url.host(); // Parse the URL - static const QRegularExpression host_re(QStringLiteral("^usb-(\\d+)-(\\d+)$")); + static const QRegularExpression host_re(u"^usb-(\\d+)-(\\d+)$"_s); unsigned int bus_location = 0; unsigned int device_num = 0; @@ -49,9 +51,9 @@ MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent) bus_location = re_match.captured(1).toUInt(); device_num = re_match.captured(2).toUInt(); } - else if (url_query.hasQueryItem(QStringLiteral("busnum"))) { - bus_location = url_query.queryItemValue(QStringLiteral("busnum")).toUInt(); - device_num = url_query.queryItemValue(QStringLiteral("devnum")).toUInt(); + else if (url_query.hasQueryItem(u"busnum"_s)) { + bus_location = url_query.queryItemValue(u"busnum"_s).toUInt(); + device_num = url_query.queryItemValue(u"devnum"_s).toUInt(); } else { error_text_ = tr("Invalid MTP device: %1").arg(hostname); @@ -59,13 +61,13 @@ MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent) return; } - if (url_query.hasQueryItem(QStringLiteral("vendor"))) { + if (url_query.hasQueryItem(u"vendor"_s)) { LIBMTP_raw_device_t *raw_device = static_cast(malloc(sizeof(LIBMTP_raw_device_t))); - raw_device->device_entry.vendor = url_query.queryItemValue(QStringLiteral("vendor")).toLatin1().data(); - raw_device->device_entry.product = url_query.queryItemValue(QStringLiteral("product")).toLatin1().data(); - raw_device->device_entry.vendor_id = url_query.queryItemValue(QStringLiteral("vendor_id")).toUShort(); - raw_device->device_entry.product_id = url_query.queryItemValue(QStringLiteral("product_id")).toUShort(); - raw_device->device_entry.device_flags = url_query.queryItemValue(QStringLiteral("quirks")).toUInt(); + raw_device->device_entry.vendor = url_query.queryItemValue(u"vendor"_s).toLatin1().data(); + raw_device->device_entry.product = url_query.queryItemValue(u"product"_s).toLatin1().data(); + raw_device->device_entry.vendor_id = url_query.queryItemValue(u"vendor_id"_s).toUShort(); + raw_device->device_entry.product_id = url_query.queryItemValue(u"product_id"_s).toUShort(); + raw_device->device_entry.device_flags = url_query.queryItemValue(u"quirks"_s).toUInt(); raw_device->bus_location = bus_location; raw_device->devnum = device_num; @@ -122,16 +124,16 @@ QString MtpConnection::ErrorString(const LIBMTP_error_number_t error_number) { switch(error_number) { case LIBMTP_ERROR_NO_DEVICE_ATTACHED: - return QStringLiteral("No Devices have been found."); + return u"No Devices have been found."_s; case LIBMTP_ERROR_CONNECTING: - return QStringLiteral("There has been an error connecting."); + return u"There has been an error connecting."_s; case LIBMTP_ERROR_MEMORY_ALLOCATION: - return QStringLiteral("Memory Allocation Error."); + return u"Memory Allocation Error."_s; case LIBMTP_ERROR_GENERAL: default: - return QStringLiteral("Unknown error, please report this to the libmtp developers."); + return u"Unknown error, please report this to the libmtp developers."_s; case LIBMTP_ERROR_NONE: - return QStringLiteral("Successfully connected."); + return u"Successfully connected."_s; } } diff --git a/src/device/mtpdevice.cpp b/src/device/mtpdevice.cpp index 1bacb8df..601a3cae 100644 --- a/src/device/mtpdevice.cpp +++ b/src/device/mtpdevice.cpp @@ -78,7 +78,7 @@ MtpDevice::~MtpDevice() { bool MtpDevice::Init() { - InitBackendDirectory(QStringLiteral("/"), first_time_, false); + InitBackendDirectory(u"/"_s, first_time_, false); model_->Init(); loader_ = new MtpLoader(url_, app_->task_manager(), backend_); diff --git a/src/device/udisks2lister.cpp b/src/device/udisks2lister.cpp index cf4df7a7..93f1b753 100644 --- a/src/device/udisks2lister.cpp +++ b/src/device/udisks2lister.cpp @@ -190,7 +190,7 @@ void Udisks2Lister::UpdateDeviceFreeSpace(const QString &id) { bool Udisks2Lister::Init() { - udisks2_interface_ = make_unique(QLatin1String(kUDisks2Service), QStringLiteral("/org/freedesktop/UDisks2"), QDBusConnection::systemBus()); + udisks2_interface_ = make_unique(QLatin1String(kUDisks2Service), u"/org/freedesktop/UDisks2"_s, QDBusConnection::systemBus()); QDBusPendingReply reply = udisks2_interface_->GetManagedObjects(); reply.waitForFinished(); @@ -411,7 +411,7 @@ Udisks2Lister::PartitionData Udisks2Lister::ReadPartitionData(const QDBusObjectP } QString Udisks2Lister::PartitionData::unique_id() const { - return QStringLiteral("Udisks2/%1/%2/%3/%4/%5") + return u"Udisks2/%1/%2/%3/%4/%5"_s .arg(serial, vendor, model) .arg(capacity) .arg(uuid); diff --git a/src/dialogs/about.cpp b/src/dialogs/about.cpp index fed737a9..b79d57e5 100644 --- a/src/dialogs/about.cpp +++ b/src/dialogs/about.cpp @@ -45,50 +45,50 @@ About::About(QWidget *parent) : QDialog(parent), ui_{} { setWindowTitle(tr("About Strawberry")); strawberry_authors_ \ - << Person(QStringLiteral("Jonas Kvinge")); + << Person(u"Jonas Kvinge"_s); strawberry_contributors_ \ - << Person(QStringLiteral("Gavin D. Howard")) - << Person(QStringLiteral("Martin Delille")) - << Person(QStringLiteral("Roman Lebedev")) - << Person(QStringLiteral("Daniel Ostertag")) - << Person(QStringLiteral("Gustavo L Conte")); + << Person(u"Gavin D. Howard"_s) + << Person(u"Martin Delille"_s) + << Person(u"Roman Lebedev"_s) + << Person(u"Daniel Ostertag"_s) + << Person(u"Gustavo L Conte"_s); clementine_authors_ - << Person(QStringLiteral("David Sansome")) - << Person(QStringLiteral("John Maguire")) - << Person(QStringLiteral("PaweÅ‚ Bara")) - << Person(QStringLiteral("Arnaud Bienner")); + << Person(u"David Sansome"_s) + << Person(u"John Maguire"_s) + << Person(u"PaweÅ‚ Bara"_s) + << Person(u"Arnaud Bienner"_s); clementine_contributors_ \ - << Person(QStringLiteral("Jakub Stachowski")) - << Person(QStringLiteral("Paul Cifarelli")) - << Person(QStringLiteral("Felipe Rivera")) - << Person(QStringLiteral("Alexander Peitz")) - << Person(QStringLiteral("Andreas Muttscheller")) - << Person(QStringLiteral("Mark Furneaux")) - << Person(QStringLiteral("Florian Bigard")) - << Person(QStringLiteral("Alex Bikadorov")) - << Person(QStringLiteral("Mattias Andersson")) - << Person(QStringLiteral("Alan Briolat")) - << Person(QStringLiteral("Arun Narayanankutty")) - << Person(QStringLiteral("BartÅ‚omiej Burdukiewicz")) - << Person(QStringLiteral("Andre Siviero")) - << Person(QStringLiteral("Santiago Gil")) - << Person(QStringLiteral("Tyler Rhodes")) - << Person(QStringLiteral("Vikram Ambrose")) - << Person(QStringLiteral("David Guillen")) - << Person(QStringLiteral("Krzysztof Sobiecki")) - << Person(QStringLiteral("Valeriy Malov")) - << Person(QStringLiteral("Nick Lanham")); + << Person(u"Jakub Stachowski"_s) + << Person(u"Paul Cifarelli"_s) + << Person(u"Felipe Rivera"_s) + << Person(u"Alexander Peitz"_s) + << Person(u"Andreas Muttscheller"_s) + << Person(u"Mark Furneaux"_s) + << Person(u"Florian Bigard"_s) + << Person(u"Alex Bikadorov"_s) + << Person(u"Mattias Andersson"_s) + << Person(u"Alan Briolat"_s) + << Person(u"Arun Narayanankutty"_s) + << Person(u"BartÅ‚omiej Burdukiewicz"_s) + << Person(u"Andre Siviero"_s) + << Person(u"Santiago Gil"_s) + << Person(u"Tyler Rhodes"_s) + << Person(u"Vikram Ambrose"_s) + << Person(u"David Guillen"_s) + << Person(u"Krzysztof Sobiecki"_s) + << Person(u"Valeriy Malov"_s) + << Person(u"Nick Lanham"_s); strawberry_thanks_ \ - << Person(QStringLiteral("Mark Kretschmann")) - << Person(QStringLiteral("Max Howell")) - << Person(QStringLiteral("Artur Rona")) - << Person(QStringLiteral("Robert-André Mauchin")) - << Person(QStringLiteral("Thomas Pierson")) - << Person(QStringLiteral("Fabio Loli")); + << Person(u"Mark Kretschmann"_s) + << Person(u"Max Howell"_s) + << Person(u"Artur Rona"_s) + << Person(u"Robert-André Mauchin"_s) + << Person(u"Thomas Pierson"_s) + << Person(u"Fabio Loli"_s); QFont title_font; title_font.setBold(true); diff --git a/src/dialogs/console.cpp b/src/dialogs/console.cpp index bd138ed4..a7903e3d 100644 --- a/src/dialogs/console.cpp +++ b/src/dialogs/console.cpp @@ -40,6 +40,8 @@ #include "core/application.h" #include "core/database.h" +using namespace Qt::Literals::StringLiterals; + Console::Console(Application *app, QWidget *parent) : QDialog(parent), ui_{}, app_(app) { ui_.setupUi(this); @@ -48,7 +50,7 @@ Console::Console(Application *app, QWidget *parent) : QDialog(parent), ui_{}, ap QObject::connect(ui_.run, &QPushButton::clicked, this, &Console::RunQuery); - QFont font(QStringLiteral("Monospace")); + QFont font(u"Monospace"_s); font.setStyleHint(QFont::TypeWriter); ui_.output->setFont(font); @@ -69,7 +71,7 @@ void Console::RunQuery() { return; } - ui_.output->append(QStringLiteral("> ") + query.executedQuery() + QStringLiteral("")); + ui_.output->append(u"> "_s + query.executedQuery() + u""_s); while (query.next() && query.isValid()) { QSqlRecord record = query.record(); diff --git a/src/dialogs/edittagdialog.cpp b/src/dialogs/edittagdialog.cpp index b99b08b9..28d30df1 100644 --- a/src/dialogs/edittagdialog.cpp +++ b/src/dialogs/edittagdialog.cpp @@ -147,7 +147,7 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent) ui_->loading_label->hide(); ui_->label_lyrics->hide(); - ui_->fetch_tag->setIcon(QPixmap::fromImage(QImage(QStringLiteral(":/pictures/musicbrainz.png")))); + ui_->fetch_tag->setIcon(QPixmap::fromImage(QImage(u":/pictures/musicbrainz.png"_s))); #ifdef HAVE_MUSICBRAINZ ui_->fetch_tag->setEnabled(true); #else @@ -235,8 +235,8 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent) ui_->summary_art->installEventFilter(this); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-previous")), tr("Previous"), this); - next_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-next")), tr("Next"), this); + previous_button_ = new QPushButton(IconLoader::Load(u"go-previous"_s), tr("Previous"), this); + next_button_ = new QPushButton(IconLoader::Load(u"go-next"_s), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); @@ -315,7 +315,7 @@ void EditTagDialog::hideEvent(QHideEvent *e) { void EditTagDialog::accept() { // Show the loading indicator - if (!SetLoading(tr("Saving tracks") + QStringLiteral("..."))) return; + if (!SetLoading(tr("Saving tracks") + u"..."_s)) return; SaveData(); @@ -416,7 +416,7 @@ QList EditTagDialog::LoadData(const SongList &songs) { void EditTagDialog::SetSongs(const SongList &s, const PlaylistItemPtrList &items) { // Show the loading indicator - if (!SetLoading(tr("Loading tracks") + QStringLiteral("..."))) return; + if (!SetLoading(tr("Loading tracks") + u"..."_s)) return; data_.clear(); playlist_items_ = items; @@ -790,12 +790,12 @@ void EditTagDialog::UpdateSummaryTab(const Song &song) { cover_options.device_pixel_ratio = devicePixelRatioF(); summary_cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options, song); - ui_->summary->setText(QStringLiteral("

      ") + song.PrettyTitleWithArtist().toHtmlEscaped() + QStringLiteral("

      ")); + ui_->summary->setText(u"

      "_s + song.PrettyTitleWithArtist().toHtmlEscaped() + u"

      "_s); ui_->length->setText(Utilities::PrettyTimeNanosec(song.length_nanosec())); - SetText(ui_->samplerate, song.samplerate(), QStringLiteral("Hz")); - SetText(ui_->bitdepth, song.bitdepth(), QStringLiteral("Bit")); + SetText(ui_->samplerate, song.samplerate(), u"Hz"_s); + SetText(ui_->bitdepth, song.bitdepth(), u"Bit"_s); SetText(ui_->bitrate, song.bitrate(), tr("kbps")); ui_->ebur128_integrated_loudness->setText(song.Ebur128LoudnessLUFSToText()); ui_->ebur128_loudness_range->setText(song.Ebur128LoudnessRangeLUToText()); diff --git a/src/dialogs/lastfmimportdialog.cpp b/src/dialogs/lastfmimportdialog.cpp index e1733608..a30b64f9 100644 --- a/src/dialogs/lastfmimportdialog.cpp +++ b/src/dialogs/lastfmimportdialog.cpp @@ -31,6 +31,8 @@ #include "core/iconloader.h" #include "scrobbler/lastfmimport.h" +using namespace Qt::Literals::StringLiterals; + LastFMImportDialog::LastFMImportDialog(SharedPtr lastfm_import, QWidget *parent) : QDialog(parent), ui_(new Ui_LastFMImportDialog), @@ -41,7 +43,7 @@ LastFMImportDialog::LastFMImportDialog(SharedPtr lastfm_import, QW ui_->setupUi(this); - setWindowIcon(IconLoader::Load(QStringLiteral("scrobble"))); + setWindowIcon(IconLoader::Load(u"scrobble"_s)); ui_->stackedWidget->setCurrentWidget(ui_->page_start); diff --git a/src/dialogs/snapdialog.cpp b/src/dialogs/snapdialog.cpp index ac248edd..ec180cd7 100644 --- a/src/dialogs/snapdialog.cpp +++ b/src/dialogs/snapdialog.cpp @@ -31,7 +31,7 @@ SnapDialog::SnapDialog(QWidget *parent) : MessageDialog(parent) { setWindowTitle(tr("Strawberry is running as a Snap")); - const QIcon icon = IconLoader::Load(QStringLiteral("dialog-warning")); + const QIcon icon = IconLoader::Load(u"dialog-warning"_s); const QPixmap pixmap = icon.pixmap(QSize(64, 64), devicePixelRatioF()); ui_->label_logo->setPixmap(pixmap); diff --git a/src/engine/alsadevicefinder.cpp b/src/engine/alsadevicefinder.cpp index e4819032..bf8f5dcf 100644 --- a/src/engine/alsadevicefinder.cpp +++ b/src/engine/alsadevicefinder.cpp @@ -31,7 +31,9 @@ #include "alsadevicefinder.h" #include "enginedevice.h" -AlsaDeviceFinder::AlsaDeviceFinder() : DeviceFinder(QStringLiteral("alsa"), { QStringLiteral("alsa"), QStringLiteral("alsasink") }) {} +using namespace Qt::Literals::StringLiterals; + +AlsaDeviceFinder::AlsaDeviceFinder() : DeviceFinder(u"alsa"_s, { u"alsa"_s, u"alsasink"_s }) {} EngineDeviceList AlsaDeviceFinder::ListDevices() { diff --git a/src/engine/alsapcmdevicefinder.cpp b/src/engine/alsapcmdevicefinder.cpp index bdba9717..185fb097 100644 --- a/src/engine/alsapcmdevicefinder.cpp +++ b/src/engine/alsapcmdevicefinder.cpp @@ -28,7 +28,9 @@ #include "alsapcmdevicefinder.h" #include "enginedevice.h" -AlsaPCMDeviceFinder::AlsaPCMDeviceFinder() : DeviceFinder(QStringLiteral("alsa"), { QStringLiteral("alsa"), QStringLiteral("alsasink") }) {} +using namespace Qt::Literals::StringLiterals; + +AlsaPCMDeviceFinder::AlsaPCMDeviceFinder() : DeviceFinder(u"alsa"_s, { u"alsa"_s, u"alsasink"_s }) {} EngineDeviceList AlsaPCMDeviceFinder::ListDevices() { diff --git a/src/engine/asiodevicefinder.cpp b/src/engine/asiodevicefinder.cpp index 341292d2..877d1069 100644 --- a/src/engine/asiodevicefinder.cpp +++ b/src/engine/asiodevicefinder.cpp @@ -28,7 +28,9 @@ #include "enginedevice.h" #include "core/logging.h" -AsioDeviceFinder::AsioDeviceFinder() : DeviceFinder(QStringLiteral("asio"), { QStringLiteral("asiosink") }) {} +using namespace Qt::Literals::StringLiterals; + +AsioDeviceFinder::AsioDeviceFinder() : DeviceFinder(u"asio"_s, { u"asiosink"_s }) {} EngineDeviceList AsioDeviceFinder::ListDevices() { diff --git a/src/engine/chromaprinter.cpp b/src/engine/chromaprinter.cpp index ddb232ef..2d30dd81 100644 --- a/src/engine/chromaprinter.cpp +++ b/src/engine/chromaprinter.cpp @@ -39,6 +39,8 @@ #include "core/logging.h" #include "core/signalchecker.h" +using namespace Qt::Literals::StringLiterals; + #ifndef u_int32_t using u_int32_t = unsigned int; #endif @@ -80,11 +82,11 @@ QString Chromaprinter::CreateFingerprint() { return QString(); } - GstElement *src = CreateElement(QStringLiteral("filesrc"), pipeline); - GstElement *decode = CreateElement(QStringLiteral("decodebin"), pipeline); - GstElement *convert = CreateElement(QStringLiteral("audioconvert"), pipeline); - GstElement *resample = CreateElement(QStringLiteral("audioresample"), pipeline); - GstElement *sink = CreateElement(QStringLiteral("appsink"), pipeline); + GstElement *src = CreateElement(u"filesrc"_s, pipeline); + GstElement *decode = CreateElement(u"decodebin"_s, pipeline); + GstElement *convert = CreateElement(u"audioconvert"_s, pipeline); + GstElement *resample = CreateElement(u"audioresample"_s, pipeline); + GstElement *sink = CreateElement(u"appsink"_s, pipeline); if (!src || !decode || !convert || !resample || !sink) { gst_object_unref(pipeline); diff --git a/src/engine/ebur128analysis.cpp b/src/engine/ebur128analysis.cpp index 7d806404..ce42f118 100644 --- a/src/engine/ebur128analysis.cpp +++ b/src/engine/ebur128analysis.cpp @@ -395,11 +395,11 @@ std::optional EBUR128AnalysisImpl::Compute(const Song &song) { return std::nullopt; } - GstElement *src = CreateElement(QStringLiteral("filesrc"), pipeline); - GstElement *decode = CreateElement(QStringLiteral("decodebin"), pipeline); - GstElement *convert = CreateElement(QStringLiteral("audioconvert"), pipeline); - GstElement *queue = CreateElement(QStringLiteral("queue2"), pipeline); - GstElement *sink = CreateElement(QStringLiteral("appsink"), pipeline); + GstElement *src = CreateElement(u"filesrc"_s, pipeline); + GstElement *decode = CreateElement(u"decodebin"_s, pipeline); + GstElement *convert = CreateElement(u"audioconvert"_s, pipeline); + GstElement *queue = CreateElement(u"queue2"_s, pipeline); + GstElement *sink = CreateElement(u"appsink"_s, pipeline); if (!src || !decode || !convert || !queue || !sink) { gst_object_unref(pipeline); diff --git a/src/engine/enginebase.cpp b/src/engine/enginebase.cpp index 8e85c86a..0481398f 100644 --- a/src/engine/enginebase.cpp +++ b/src/engine/enginebase.cpp @@ -94,9 +94,9 @@ EngineBase::Type EngineBase::TypeFromName(const QString &name) { QString EngineBase::Name(const Type type) { switch (type) { - case Type::GStreamer: return QStringLiteral("gstreamer"); + case Type::GStreamer: return u"gstreamer"_s; case Type::None: - default: return QStringLiteral("None"); + default: return u"None"_s; } } @@ -104,9 +104,9 @@ QString EngineBase::Name(const Type type) { QString EngineBase::Description(const Type type) { switch (type) { - case Type::GStreamer: return QStringLiteral("GStreamer"); + case Type::GStreamer: return u"GStreamer"_s; case Type::None: - default: return QStringLiteral("None"); + default: return u"None"_s; } } @@ -207,7 +207,7 @@ void EngineBase::ReloadSettings() { bool http2_enabled = s.value("http2", false).toBool(); if (http2_enabled != http2_enabled_) { http2_enabled_ = http2_enabled; - Utilities::SetEnv("SOUP_FORCE_HTTP1", http2_enabled_ ? ""_L1 : QStringLiteral("1")); + Utilities::SetEnv("SOUP_FORCE_HTTP1", http2_enabled_ ? ""_L1 : u"1"_s); qLog(Debug) << "SOUP_FORCE_HTTP1:" << (http2_enabled_ ? "OFF" : "ON"); } diff --git a/src/engine/enginedevice.cpp b/src/engine/enginedevice.cpp index 41715891..b8454fe2 100644 --- a/src/engine/enginedevice.cpp +++ b/src/engine/enginedevice.cpp @@ -26,27 +26,27 @@ EngineDevice::EngineDevice() : card(0), device(0) {} QString EngineDevice::GuessIconName() const { if (description.contains("mcintosh"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("mcintosh"); + return u"mcintosh"_s; } if (description.contains("electrocompaniet"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("electrocompaniet"); + return u"electrocompaniet"_s; } if (description.contains("intel"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("intel"); + return u"intel"_s; } if (description.contains("realtek"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("realtek"); + return u"realtek"_s; } if (description.contains("nvidia"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("nvidia"); + return u"nvidia"_s; } if (description.contains("headset"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("headset"); + return u"headset"_s; } if (description.contains("pulseaudio"_L1, Qt::CaseInsensitive)) { - return QStringLiteral("pulseaudio"); + return u"pulseaudio"_s; } - return QStringLiteral("soundcard"); + return u"soundcard"_s; } diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp index 68e58e30..dcff4a76 100644 --- a/src/engine/gstengine.cpp +++ b/src/engine/gstengine.cpp @@ -189,7 +189,7 @@ void GstEngine::StartPreloading(const QUrl &media_url, const QUrl &stream_url, c if (current_pipeline_) { current_pipeline_->PrepareNextUrl(media_url, stream_url, gst_url, beginning_nanosec, force_stop_at_end ? end_nanosec : 0); // Add request to discover the stream - if (discoverer_ && media_url.scheme() != QStringLiteral("spotify")) { + if (discoverer_ && media_url.scheme() != u"spotify"_s) { if (!gst_discoverer_discover_uri_async(discoverer_, gst_url.constData())) { qLog(Error) << "Failed to start stream discovery for" << gst_url; } @@ -258,7 +258,7 @@ bool GstEngine::Load(const QUrl &media_url, const QUrl &stream_url, const Engine } // Add request to discover the stream - if (discoverer_ && media_url.scheme() != QStringLiteral("spotify")) { + if (discoverer_ && media_url.scheme() != u"spotify"_s) { if (!gst_discoverer_discover_uri_async(discoverer_, gst_url.constData())) { qLog(Error) << "Failed to start stream discovery for" << gst_url; } @@ -1162,12 +1162,12 @@ void GstEngine::StreamDiscoveryFinished(GstDiscoverer *discoverer, gpointer self QString GstEngine::GSTdiscovererErrorMessage(GstDiscovererResult result) { switch (result) { - case GST_DISCOVERER_URI_INVALID: return QStringLiteral("The URI is invalid"); - case GST_DISCOVERER_TIMEOUT: return QStringLiteral("The discovery timed-out"); - case GST_DISCOVERER_BUSY: return QStringLiteral("The discoverer was already discovering a file"); - case GST_DISCOVERER_MISSING_PLUGINS: return QStringLiteral("Some plugins are missing for full discovery"); + case GST_DISCOVERER_URI_INVALID: return u"The URI is invalid"_s; + case GST_DISCOVERER_TIMEOUT: return u"The discovery timed-out"_s; + case GST_DISCOVERER_BUSY: return u"The discoverer was already discovering a file"_s; + case GST_DISCOVERER_MISSING_PLUGINS: return u"Some plugins are missing for full discovery"_s; case GST_DISCOVERER_ERROR: - default: return QStringLiteral("An error happened and the GError is set"); + default: return u"An error happened and the GError is set"_s; } } diff --git a/src/engine/gstenginepipeline.cpp b/src/engine/gstenginepipeline.cpp index 54cf362c..d4e74977 100644 --- a/src/engine/gstenginepipeline.cpp +++ b/src/engine/gstenginepipeline.cpp @@ -286,17 +286,17 @@ QString GstEnginePipeline::GstStateText(const GstState state) { switch (state) { case GST_STATE_VOID_PENDING: - return QStringLiteral("Pending"); + return u"Pending"_s; case GST_STATE_NULL: - return QStringLiteral("Null"); + return u"Null"_s; case GST_STATE_READY: - return QStringLiteral("Ready"); + return u"Ready"_s; case GST_STATE_PAUSED: - return QStringLiteral("Paused"); + return u"Paused"_s; case GST_STATE_PLAYING: - return QStringLiteral("Playing"); + return u"Playing"_s; default: - return QStringLiteral("Unknown"); + return u"Unknown"_s; } } @@ -424,10 +424,10 @@ bool GstEnginePipeline::InitFromUrl(const QUrl &media_url, const QUrl &stream_ur guint version_major = 0, version_minor = 0, version_micro = 0, version_nano = 0; gst_plugins_base_version(&version_major, &version_minor, &version_micro, &version_nano); if (QVersionNumber::compare(QVersionNumber(static_cast(version_major), static_cast(version_minor)), QVersionNumber(1, 24)) >= 0) { - pipeline_ = CreateElement(QStringLiteral("playbin3"), QStringLiteral("pipeline"), nullptr, error); + pipeline_ = CreateElement(u"playbin3"_s, u"pipeline"_s, nullptr, error); } else { - pipeline_ = CreateElement(QStringLiteral("playbin"), QStringLiteral("pipeline"), nullptr, error); + pipeline_ = CreateElement(u"playbin"_s, u"pipeline"_s, nullptr, error); } if (!pipeline_) return false; @@ -602,31 +602,31 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create all the other elements - audioqueue_ = CreateElement(QStringLiteral("queue2"), QStringLiteral("audioqueue"), audiobin_, error); + audioqueue_ = CreateElement(u"queue2"_s, u"audioqueue"_s, audiobin_, error); if (!audioqueue_) { return false; } - audioqueueconverter_ = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("audioqueueconverter"), audiobin_, error); + audioqueueconverter_ = CreateElement(u"audioconvert"_s, u"audioqueueconverter"_s, audiobin_, error); if (!audioqueueconverter_) { return false; } - GstElement *audiosinkconverter = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("audiosinkconverter"), audiobin_, error); + GstElement *audiosinkconverter = CreateElement(u"audioconvert"_s, u"audiosinkconverter"_s, audiobin_, error); if (!audiosinkconverter) { return false; } // Create the volume element if it's enabled. if (volume_enabled_ && !volume_) { - volume_sw_ = CreateElement(QStringLiteral("volume"), QStringLiteral("volume_sw"), audiobin_, error); + volume_sw_ = CreateElement(u"volume"_s, u"volume_sw"_s, audiobin_, error); if (!volume_sw_) { return false; } } if (fading_enabled_) { - volume_fading_ = CreateElement(QStringLiteral("volume"), QStringLiteral("volume_fading"), audiobin_, error); + volume_fading_ = CreateElement(u"volume"_s, u"volume_fading"_s, audiobin_, error); if (!volume_fading_) { return false; } @@ -637,7 +637,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the stereo balancer elements if it's enabled. if (stereo_balancer_enabled_) { - audiopanorama_ = CreateElement(QStringLiteral("audiopanorama"), QStringLiteral("audiopanorama"), audiobin_, error); + audiopanorama_ = CreateElement(u"audiopanorama"_s, u"audiopanorama"_s, audiobin_, error); if (!audiopanorama_) { return false; } @@ -647,11 +647,11 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the equalizer elements if it's enabled. if (eq_enabled_) { - equalizer_preamp_ = CreateElement(QStringLiteral("volume"), QStringLiteral("equalizer_preamp"), audiobin_, error); + equalizer_preamp_ = CreateElement(u"volume"_s, u"equalizer_preamp"_s, audiobin_, error); if (!equalizer_preamp_) { return false; } - equalizer_ = CreateElement(QStringLiteral("equalizer-nbands"), QStringLiteral("equalizer_nbands"), audiobin_, error); + equalizer_ = CreateElement(u"equalizer-nbands"_s, u"equalizer_nbands"_s, audiobin_, error); if (!equalizer_) { return false; } @@ -701,15 +701,15 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { GstElement *rglimiter = nullptr; GstElement *rgconverter = nullptr; if (rg_enabled_) { - rgvolume = CreateElement(QStringLiteral("rgvolume"), QStringLiteral("rgvolume"), audiobin_, error); + rgvolume = CreateElement(u"rgvolume"_s, u"rgvolume"_s, audiobin_, error); if (!rgvolume) { return false; } - rglimiter = CreateElement(QStringLiteral("rglimiter"), QStringLiteral("rglimiter"), audiobin_, error); + rglimiter = CreateElement(u"rglimiter"_s, u"rglimiter"_s, audiobin_, error); if (!rglimiter) { return false; } - rgconverter = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("rgconverter"), audiobin_, error); + rgconverter = CreateElement(u"audioconvert"_s, u"rgconverter"_s, audiobin_, error); if (!rgconverter) { return false; } @@ -723,7 +723,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the EBU R 128 loudness normalization volume element if enabled. if (ebur128_loudness_normalization_) { - volume_ebur128_ = CreateElement(QStringLiteral("volume"), QStringLiteral("ebur128_volume"), audiobin_, error); + volume_ebur128_ = CreateElement(u"volume"_s, u"ebur128_volume"_s, audiobin_, error); if (!volume_ebur128_) { return false; } @@ -735,7 +735,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { GstElement *bs2b = nullptr; if (bs2b_enabled_) { - bs2b = CreateElement(QStringLiteral("bs2b"), QStringLiteral("bs2b"), audiobin_, error); + bs2b = CreateElement(u"bs2b"_s, u"bs2b"_s, audiobin_, error); if (!bs2b) { return false; } @@ -781,7 +781,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link all elements if (!gst_element_link(audioqueue_, audioqueueconverter_)) { - error = QStringLiteral("Failed to link audio queue to audio queue converter."); + error = u"Failed to link audio queue to audio queue converter."_s; return false; } @@ -1568,7 +1568,7 @@ void GstEnginePipeline::TagMessageReceived(GstMessage *msg) { if (!engine_metadata.title.isEmpty() && engine_metadata.artist.isEmpty() && engine_metadata.album.isEmpty()) { QStringList title_splitted; if (engine_metadata.title.contains(" - "_L1)) { - title_splitted = engine_metadata.title.split(QStringLiteral(" - ")); + title_splitted = engine_metadata.title.split(u" - "_s); } else if (engine_metadata.title.contains(u'~')) { title_splitted = engine_metadata.title.split(u'~'); diff --git a/src/engine/macosdevicefinder.cpp b/src/engine/macosdevicefinder.cpp index de63e7d9..aa6ee0fb 100644 --- a/src/engine/macosdevicefinder.cpp +++ b/src/engine/macosdevicefinder.cpp @@ -65,7 +65,7 @@ std::unique_ptr GetProperty(const AudioDeviceID &device_id, const AudioObject } // namespace -MacOsDeviceFinder::MacOsDeviceFinder() : DeviceFinder(QStringLiteral("osxaudio"), { QStringLiteral("osxaudio"), QStringLiteral("osx"), QStringLiteral("osxaudiosink") }) {} +MacOsDeviceFinder::MacOsDeviceFinder() : DeviceFinder(u"osxaudio"_s, { u"osxaudio"_s, u"osx"_s, u"osxaudiosink"_s }) {} EngineDeviceList MacOsDeviceFinder::ListDevices() { diff --git a/src/engine/mmdevicefinder.cpp b/src/engine/mmdevicefinder.cpp index ead7521c..2a01c932 100644 --- a/src/engine/mmdevicefinder.cpp +++ b/src/engine/mmdevicefinder.cpp @@ -36,12 +36,14 @@ #include "enginedevice.h" #include "core/logging.h" +using namespace Qt::Literals::StringLiterals; + #ifdef _MSC_VER DEFINE_GUID(IID_IMMDeviceEnumerator, 0xa95664d2, 0x9614, 0x4f35, 0xa7, 0x46, 0xde, 0x8d, 0xb6, 0x36, 0x17, 0xe6); DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xbcde0395, 0xe52f, 0x467c, 0x8e, 0x3d, 0xc4, 0x57, 0x92, 0x91, 0x69, 0x2e); #endif -MMDeviceFinder::MMDeviceFinder() : DeviceFinder(QStringLiteral("mmdevice"), { QStringLiteral("wasapisink") }) {} +MMDeviceFinder::MMDeviceFinder() : DeviceFinder(u"mmdevice"_s, { u"wasapisink"_s }) {} EngineDeviceList MMDeviceFinder::ListDevices() { diff --git a/src/engine/pulsedevicefinder.cpp b/src/engine/pulsedevicefinder.cpp index 969a1d22..662b8911 100644 --- a/src/engine/pulsedevicefinder.cpp +++ b/src/engine/pulsedevicefinder.cpp @@ -33,7 +33,9 @@ #include "pulsedevicefinder.h" #include "enginedevice.h" -PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder(QStringLiteral("pulseaudio"), { QStringLiteral("pulseaudio"), QStringLiteral("pulse"), QStringLiteral("pulsesink") }), mainloop_(nullptr), context_(nullptr) {} +using namespace Qt::Literals::StringLiterals; + +PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder(u"pulseaudio"_s, { u"pulseaudio"_s, u"pulse"_s, u"pulsesink"_s }), mainloop_(nullptr), context_(nullptr) {} bool PulseDeviceFinder::Initialize() { diff --git a/src/engine/uwpdevicefinder.cpp b/src/engine/uwpdevicefinder.cpp index c87b2893..f1891e2f 100644 --- a/src/engine/uwpdevicefinder.cpp +++ b/src/engine/uwpdevicefinder.cpp @@ -45,7 +45,7 @@ using namespace ABI::Windows::Devices::Enumeration; using namespace Qt::Literals::StringLiterals; -UWPDeviceFinder::UWPDeviceFinder() : DeviceFinder(QStringLiteral("uwpdevice"), { QStringLiteral("wasapi2sink") }) {} +UWPDeviceFinder::UWPDeviceFinder() : DeviceFinder(u"uwpdevice"_s, { u"wasapi2sink"_s }) {} namespace { diff --git a/src/equalizer/equalizer.cpp b/src/equalizer/equalizer.cpp index 4cc8c4b7..4aceaaad 100644 --- a/src/equalizer/equalizer.cpp +++ b/src/equalizer/equalizer.cpp @@ -49,6 +49,8 @@ #include "equalizerslider.h" #include "ui_equalizer.h" +using namespace Qt::Literals::StringLiterals; + namespace { constexpr char kSettingsGroup[] = "Equalizer"; const char *kGainText[] = { "60", "170", "310", "600", "1k", "3k", "6k", "12k", "14k", "16k" }; @@ -62,8 +64,8 @@ Equalizer::Equalizer(QWidget *parent) ui_->setupUi(this); // Icons - ui_->preset_del->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); - ui_->preset_save->setIcon(IconLoader::Load(QStringLiteral("document-save"))); + ui_->preset_del->setIcon(IconLoader::Load(u"list-remove"_s)); + ui_->preset_save->setIcon(IconLoader::Load(u"document-save"_s)); preamp_ = AddSlider(tr("Pre-amp")); @@ -114,7 +116,7 @@ void Equalizer::ReloadSettings() { if (count == 0) LoadDefaultPresets(); // Selected preset - QString selected_preset = s.value("selected_preset", QStringLiteral("Custom")).toString(); + QString selected_preset = s.value("selected_preset", u"Custom"_s).toString(); QString selected_preset_display_name = tr(qUtf8Printable(selected_preset)); int selected_index = ui_->preset->findText(selected_preset_display_name); if (selected_index != -1) ui_->preset->setCurrentIndex(selected_index); diff --git a/src/globalshortcuts/globalshortcutsbackend-gnome.cpp b/src/globalshortcuts/globalshortcutsbackend-gnome.cpp index adfb53ef..b12028ae 100644 --- a/src/globalshortcuts/globalshortcutsbackend-gnome.cpp +++ b/src/globalshortcuts/globalshortcutsbackend-gnome.cpp @@ -122,9 +122,9 @@ void GlobalShortcutsBackendGnome::GnomeMediaKeyPressed(const QString &applicatio Q_UNUSED(application) auto shortcuts = manager_->shortcuts(); - if (key == "Play"_L1) shortcuts[QStringLiteral("play_pause")].action->trigger(); - if (key == "Stop"_L1) shortcuts[QStringLiteral("stop")].action->trigger(); - if (key == "Next"_L1) shortcuts[QStringLiteral("next_track")].action->trigger(); - if (key == "Previous"_L1) shortcuts[QStringLiteral("prev_track")].action->trigger(); + if (key == "Play"_L1) shortcuts[u"play_pause"_s].action->trigger(); + if (key == "Stop"_L1) shortcuts[u"stop"_s].action->trigger(); + if (key == "Next"_L1) shortcuts[u"next_track"_s].action->trigger(); + if (key == "Previous"_L1) shortcuts[u"prev_track"_s].action->trigger(); } diff --git a/src/globalshortcuts/globalshortcutsbackend-kde.cpp b/src/globalshortcuts/globalshortcutsbackend-kde.cpp index ff66c8bd..664c19d5 100644 --- a/src/globalshortcuts/globalshortcutsbackend-kde.cpp +++ b/src/globalshortcuts/globalshortcutsbackend-kde.cpp @@ -38,6 +38,8 @@ #include "kglobalaccel.h" #include "kglobalaccelcomponent.h" +using namespace Qt::Literals::StringLiterals; + namespace { constexpr char kKdeService[] = "org.kde.kglobalaccel"; constexpr char kKdePath[] = "/kglobalaccel"; @@ -102,7 +104,7 @@ void GlobalShortcutsBackendKDE::RegisterFinished(QDBusPendingCallWatcher *watche watcher->deleteLater(); if (!reply.isValid()) { - if (reply.error().name() != QStringLiteral("org.kde.kglobalaccel.NoSuchComponent")) { + if (reply.error().name() != u"org.kde.kglobalaccel.NoSuchComponent"_s) { qLog(Error) << "Failed to register:" << reply.error().name() << reply.error().message(); } return; diff --git a/src/globalshortcuts/globalshortcutsbackend-mate.cpp b/src/globalshortcuts/globalshortcutsbackend-mate.cpp index ed2f8e41..013bd37c 100644 --- a/src/globalshortcuts/globalshortcutsbackend-mate.cpp +++ b/src/globalshortcuts/globalshortcutsbackend-mate.cpp @@ -122,9 +122,9 @@ void GlobalShortcutsBackendMate::MateMediaKeyPressed(const QString &application, Q_UNUSED(application) auto shortcuts = manager_->shortcuts(); - if (key == "Play"_L1) shortcuts[QStringLiteral("play_pause")].action->trigger(); - if (key == "Stop"_L1) shortcuts[QStringLiteral("stop")].action->trigger(); - if (key == "Next"_L1) shortcuts[QStringLiteral("next_track")].action->trigger(); - if (key == "Previous"_L1) shortcuts[QStringLiteral("prev_track")].action->trigger(); + if (key == "Play"_L1) shortcuts[u"play_pause"_s].action->trigger(); + if (key == "Stop"_L1) shortcuts[u"stop"_s].action->trigger(); + if (key == "Next"_L1) shortcuts[u"next_track"_s].action->trigger(); + if (key == "Previous"_L1) shortcuts[u"prev_track"_s].action->trigger(); } diff --git a/src/globalshortcuts/globalshortcutsbackend.cpp b/src/globalshortcuts/globalshortcutsbackend.cpp index 74819b2d..1bce3bdf 100644 --- a/src/globalshortcuts/globalshortcutsbackend.cpp +++ b/src/globalshortcuts/globalshortcutsbackend.cpp @@ -25,6 +25,8 @@ #include "globalshortcutsbackend.h" #include "globalshortcutsmanager.h" +using namespace Qt::Literals::StringLiterals; + GlobalShortcutsBackend::GlobalShortcutsBackend(GlobalShortcutsManager *manager, const Type type, QObject *parent) : QObject(parent), manager_(manager), @@ -35,19 +37,19 @@ QString GlobalShortcutsBackend::name() const { switch (type_) { case Type::None: - return QStringLiteral("None"); + return u"None"_s; case Type::KDE: - return QStringLiteral("KDE"); + return u"KDE"_s; case Type::Gnome: - return QStringLiteral("Gnome"); + return u"Gnome"_s; case Type::Mate: - return QStringLiteral("Mate"); + return u"Mate"_s; case Type::X11: - return QStringLiteral("X11"); + return u"X11"_s; case Type::macOS: - return QStringLiteral("macOS"); + return u"macOS"_s; case Type::Win: - return QStringLiteral("Windows"); + return u"Windows"_s; } return QString(); diff --git a/src/globalshortcuts/globalshortcutsmanager.cpp b/src/globalshortcuts/globalshortcutsmanager.cpp index 2f7f125d..b16022d2 100644 --- a/src/globalshortcuts/globalshortcutsmanager.cpp +++ b/src/globalshortcuts/globalshortcutsmanager.cpp @@ -60,31 +60,33 @@ #include "settings/globalshortcutssettingspage.h" +using namespace Qt::Literals::StringLiterals; + GlobalShortcutsManager::GlobalShortcutsManager(QWidget *parent) : QWidget(parent) { settings_.beginGroup(GlobalShortcutsSettingsPage::kSettingsGroup); // Create actions - AddShortcut(QStringLiteral("play"), tr("Play"), std::bind(&GlobalShortcutsManager::Play, this)); - AddShortcut(QStringLiteral("pause"), tr("Pause"), std::bind(&GlobalShortcutsManager::Pause, this)); - AddShortcut(QStringLiteral("play_pause"), tr("Play/Pause"), std::bind(&GlobalShortcutsManager::PlayPause, this), QKeySequence(Qt::Key_MediaPlay)); - AddShortcut(QStringLiteral("stop"), tr("Stop"), std::bind(&GlobalShortcutsManager::Stop, this), QKeySequence(Qt::Key_MediaStop)); - AddShortcut(QStringLiteral("stop_after"), tr("Stop playing after current track"), std::bind(&GlobalShortcutsManager::StopAfter, this)); - AddShortcut(QStringLiteral("next_track"), tr("Next track"), std::bind(&GlobalShortcutsManager::Next, this), QKeySequence(Qt::Key_MediaNext)); - AddShortcut(QStringLiteral("prev_track"), tr("Previous track"), std::bind(&GlobalShortcutsManager::Previous, this), QKeySequence(Qt::Key_MediaPrevious)); - AddShortcut(QStringLiteral("restart_or_prev_track"), tr("Restart or previous track"), std::bind(&GlobalShortcutsManager::RestartOrPrevious, this)); - AddShortcut(QStringLiteral("inc_volume"), tr("Increase volume"), std::bind(&GlobalShortcutsManager::IncVolume, this)); - AddShortcut(QStringLiteral("dec_volume"), tr("Decrease volume"), std::bind(&GlobalShortcutsManager::DecVolume, this)); - AddShortcut(QStringLiteral("mute"), tr("Mute"), std::bind(&GlobalShortcutsManager::Mute, this)); - AddShortcut(QStringLiteral("seek_forward"), tr("Seek forward"), std::bind(&GlobalShortcutsManager::SeekForward, this)); - AddShortcut(QStringLiteral("seek_backward"), tr("Seek backward"), std::bind(&GlobalShortcutsManager::SeekBackward, this)); - AddShortcut(QStringLiteral("show_hide"), tr("Show/Hide"), std::bind(&GlobalShortcutsManager::ShowHide, this)); - AddShortcut(QStringLiteral("show_osd"), tr("Show OSD"), std::bind(&GlobalShortcutsManager::ShowOSD, this)); - AddShortcut(QStringLiteral("toggle_pretty_osd"), tr("Toggle Pretty OSD"), std::bind(&GlobalShortcutsManager::TogglePrettyOSD, this)); // Toggling possible only for pretty OSD - AddShortcut(QStringLiteral("shuffle_mode"), tr("Change shuffle mode"), std::bind(&GlobalShortcutsManager::CycleShuffleMode, this)); - AddShortcut(QStringLiteral("repeat_mode"), tr("Change repeat mode"), std::bind(&GlobalShortcutsManager::CycleRepeatMode, this)); - AddShortcut(QStringLiteral("toggle_scrobbling"), tr("Enable/disable scrobbling"), std::bind(&GlobalShortcutsManager::ToggleScrobbling, this)); - AddShortcut(QStringLiteral("love"), tr("Love"), std::bind(&GlobalShortcutsManager::Love, this)); + AddShortcut(u"play"_s, tr("Play"), std::bind(&GlobalShortcutsManager::Play, this)); + AddShortcut(u"pause"_s, tr("Pause"), std::bind(&GlobalShortcutsManager::Pause, this)); + AddShortcut(u"play_pause"_s, tr("Play/Pause"), std::bind(&GlobalShortcutsManager::PlayPause, this), QKeySequence(Qt::Key_MediaPlay)); + AddShortcut(u"stop"_s, tr("Stop"), std::bind(&GlobalShortcutsManager::Stop, this), QKeySequence(Qt::Key_MediaStop)); + AddShortcut(u"stop_after"_s, tr("Stop playing after current track"), std::bind(&GlobalShortcutsManager::StopAfter, this)); + AddShortcut(u"next_track"_s, tr("Next track"), std::bind(&GlobalShortcutsManager::Next, this), QKeySequence(Qt::Key_MediaNext)); + AddShortcut(u"prev_track"_s, tr("Previous track"), std::bind(&GlobalShortcutsManager::Previous, this), QKeySequence(Qt::Key_MediaPrevious)); + AddShortcut(u"restart_or_prev_track"_s, tr("Restart or previous track"), std::bind(&GlobalShortcutsManager::RestartOrPrevious, this)); + AddShortcut(u"inc_volume"_s, tr("Increase volume"), std::bind(&GlobalShortcutsManager::IncVolume, this)); + AddShortcut(u"dec_volume"_s, tr("Decrease volume"), std::bind(&GlobalShortcutsManager::DecVolume, this)); + AddShortcut(u"mute"_s, tr("Mute"), std::bind(&GlobalShortcutsManager::Mute, this)); + AddShortcut(u"seek_forward"_s, tr("Seek forward"), std::bind(&GlobalShortcutsManager::SeekForward, this)); + AddShortcut(u"seek_backward"_s, tr("Seek backward"), std::bind(&GlobalShortcutsManager::SeekBackward, this)); + AddShortcut(u"show_hide"_s, tr("Show/Hide"), std::bind(&GlobalShortcutsManager::ShowHide, this)); + AddShortcut(u"show_osd"_s, tr("Show OSD"), std::bind(&GlobalShortcutsManager::ShowOSD, this)); + AddShortcut(u"toggle_pretty_osd"_s, tr("Toggle Pretty OSD"), std::bind(&GlobalShortcutsManager::TogglePrettyOSD, this)); // Toggling possible only for pretty OSD + AddShortcut(u"shuffle_mode"_s, tr("Change shuffle mode"), std::bind(&GlobalShortcutsManager::CycleShuffleMode, this)); + AddShortcut(u"repeat_mode"_s, tr("Change repeat mode"), std::bind(&GlobalShortcutsManager::CycleRepeatMode, this)); + AddShortcut(u"toggle_scrobbling"_s, tr("Enable/disable scrobbling"), std::bind(&GlobalShortcutsManager::ToggleScrobbling, this)); + AddShortcut(u"love"_s, tr("Love"), std::bind(&GlobalShortcutsManager::Love, this)); // Create backends - these do the actual shortcut registration diff --git a/src/lyrics/azlyricscomlyricsprovider.cpp b/src/lyrics/azlyricscomlyricsprovider.cpp index c18b2680..30467258 100644 --- a/src/lyrics/azlyricscomlyricsprovider.cpp +++ b/src/lyrics/azlyricscomlyricsprovider.cpp @@ -29,6 +29,8 @@ #include "lyricssearchrequest.h" #include "azlyricscomlyricsprovider.h" +using namespace Qt::Literals::StringLiterals; + namespace { constexpr char kUrl[] = "https://www.azlyrics.com/lyrics/"; constexpr char kStartTag[] = "
      "; @@ -37,11 +39,11 @@ constexpr char kLyricsStart[] = "