diff --git a/ext/libstrawberry-common/core/logging.cpp b/ext/libstrawberry-common/core/logging.cpp index 924c438d..8cf8e6e8 100644 --- a/ext/libstrawberry-common/core/logging.cpp +++ b/ext/libstrawberry-common/core/logging.cpp @@ -158,7 +158,7 @@ static void MessageHandler(QtMsgType type, const QMessageLogContext&, const QStr } for (const QString &line : message.split('\n')) { - BufferedDebug d = CreateLogger(level, "unknown", -1, nullptr); + BufferedDebug d = CreateLogger(level, QStringLiteral("unknown"), -1, nullptr); d << line.toLocal8Bit().constData(); if (d.buf_) { d.buf_->close(); @@ -228,7 +228,7 @@ static QString ParsePrettyFunction(const char *pretty_function) { QString class_name = pretty_function; const qint64 paren = class_name.indexOf('('); if (paren != -1) { - const qint64 colons = class_name.lastIndexOf("::", paren); + const qint64 colons = class_name.lastIndexOf(QLatin1String("::"), paren); if (colons != -1) { class_name = class_name.left(colons); } @@ -284,7 +284,7 @@ static T CreateLogger(Level level, const QString &class_name, int line, const ch } T ret(type); - ret.nospace() << QDateTime::currentDateTime().toString("hh:mm:ss.zzz").toLatin1().constData() << level_name << function_line.leftJustified(32).toLatin1().constData(); + ret.nospace() << QDateTime::currentDateTime().toString(QStringLiteral("hh:mm:ss.zzz")).toLatin1().constData() << level_name << function_line.leftJustified(32).toLatin1().constData(); return ret.space(); @@ -310,7 +310,7 @@ QString CXXDemangle(const QString &mangled_function) { QString LinuxDemangle(const QString &symbol); QString LinuxDemangle(const QString &symbol) { - QRegularExpression regex("\\(([^+]+)"); + QRegularExpression regex(QStringLiteral("\\(([^+]+)")); QRegularExpressionMatch match = regex.match(symbol); if (!match.hasMatch()) { return symbol; @@ -392,7 +392,7 @@ namespace { template QString print_duration(T duration, const std::string &unit) { - return QString("%1%2").arg(duration.count()).arg(unit.c_str()); + return QStringLiteral("%1%2").arg(duration.count()).arg(unit.c_str()); } } // namespace diff --git a/ext/libstrawberry-common/core/workerpool.h b/ext/libstrawberry-common/core/workerpool.h index 246f97f2..c53d9758 100644 --- a/ext/libstrawberry-common/core/workerpool.h +++ b/ext/libstrawberry-common/core/workerpool.h @@ -171,7 +171,7 @@ WorkerPool::WorkerPool(QObject *parent) local_server_name_ = qApp->applicationName().toLower(); if (local_server_name_.isEmpty()) { - local_server_name_ = "workerpool"; + local_server_name_ = QStringLiteral("workerpool"); } } @@ -243,8 +243,8 @@ void WorkerPool::DoStart() { QStringList search_path; search_path << QCoreApplication::applicationDirPath(); #if defined(Q_OS_UNIX) - search_path << "/usr/libexec"; - search_path << "/usr/local/libexec"; + search_path << QStringLiteral("/usr/libexec"); + search_path << QStringLiteral("/usr/local/libexec"); #endif #if defined(Q_OS_MACOS) search_path << QDir::cleanPath(QCoreApplication::applicationDirPath() + "/../PlugIns"); @@ -294,7 +294,7 @@ void WorkerPool::StartOneWorker(Worker *worker) { // Create a server, find an unused name and start listening forever { const quint32 unique_number = QRandomGenerator::global()->bounded(static_cast(quint64(this) & 0xFFFFFFFF)); - const QString name = QString("%1_%2").arg(local_server_name_).arg(unique_number); + const QString name = QStringLiteral("%1_%2").arg(local_server_name_).arg(unique_number); if (worker->local_server_->listen(name)) { break; diff --git a/ext/libstrawberry-tagreader/tagreaderbase.cpp b/ext/libstrawberry-tagreader/tagreaderbase.cpp index 18c07c89..13eab8d2 100644 --- a/ext/libstrawberry-tagreader/tagreaderbase.cpp +++ b/ext/libstrawberry-tagreader/tagreaderbase.cpp @@ -135,7 +135,7 @@ TagReaderBase::Cover TagReaderBase::LoadCoverFromRequest(const QString &song_fil cover_image.save(&buffer, "JPEG"); buffer.close(); } - return Cover(cover_data, "image/jpeg"); + return Cover(cover_data, QStringLiteral("image/jpeg")); } return Cover(); diff --git a/ext/libstrawberry-tagreader/tagreadergme.cpp b/ext/libstrawberry-tagreader/tagreadergme.cpp index 2883aee4..96be7f68 100644 --- a/ext/libstrawberry-tagreader/tagreadergme.cpp +++ b/ext/libstrawberry-tagreader/tagreadergme.cpp @@ -36,16 +36,16 @@ #include "tagreadertaglib.h" bool GME::IsSupportedFormat(const QFileInfo &file_info) { - return file_info.exists() && (file_info.completeSuffix().endsWith("spc", Qt::CaseInsensitive) || file_info.completeSuffix().endsWith("vgm"), Qt::CaseInsensitive); + return file_info.exists() && (file_info.completeSuffix().endsWith(QLatin1String("spc"), Qt::CaseInsensitive) || file_info.completeSuffix().endsWith(QLatin1String("vgm")), Qt::CaseInsensitive); } bool GME::ReadFile(const QFileInfo &file_info, spb::tagreader::SongMetadata *song_info) { - if (file_info.completeSuffix().endsWith("spc"), Qt::CaseInsensitive) { + if (file_info.completeSuffix().endsWith(QLatin1String("spc")), Qt::CaseInsensitive) { SPC::Read(file_info, song_info); return true; } - if (file_info.completeSuffix().endsWith("vgm", Qt::CaseInsensitive)) { + if (file_info.completeSuffix().endsWith(QLatin1String("vgm"), Qt::CaseInsensitive)) { VGM::Read(file_info, song_info); return true; } @@ -75,7 +75,7 @@ void GME::SPC::Read(const QFileInfo &file_info, spb::tagreader::SongMetadata *so qLog(Debug) << "Reading tags from SPC file" << file_info.fileName(); // Check for header -- more reliable than file name alone. - if (!file.read(33).startsWith(QString("SNES-SPC700").toLatin1())) return; + if (!file.read(33).startsWith(QStringLiteral("SNES-SPC700").toLatin1())) return; // First order of business -- get any tag values that exist within the core file information. // These only allow for a certain number of bytes per field, @@ -125,7 +125,7 @@ void GME::SPC::Read(const QFileInfo &file_info, spb::tagreader::SongMetadata *so // Check for XID6 data -- this is infrequently used, but being able to fill in data from this is ideal before trying to rely on APETAG values. // XID6 format follows EA's binary file format standard named "IFF" file.seek(XID6_OFFSET); - if (has_id6 && file.read(4) == QString("xid6").toLatin1()) { + if (has_id6 && file.read(4) == QStringLiteral("xid6").toLatin1()) { QByteArray xid6_head_data = file.read(4); if (xid6_head_data.size() >= 4) { qint64 xid6_size = xid6_head_data[0] | (xid6_head_data[1] << 8) | (xid6_head_data[2] << 16) | xid6_head_data[3]; @@ -195,7 +195,7 @@ void GME::VGM::Read(const QFileInfo &file_info, spb::tagreader::SongMetadata *so qLog(Debug) << "Reading tags from VGM file" << file_info.fileName(); - if (!file.read(4).startsWith(QString("Vgm ").toLatin1())) return; + if (!file.read(4).startsWith(QStringLiteral("Vgm ").toLatin1())) return; file.seek(GD3_TAG_PTR); QByteArray gd3_head = file.read(4); diff --git a/ext/libstrawberry-tagreader/tagreadertaglib.cpp b/ext/libstrawberry-tagreader/tagreadertaglib.cpp index 7660e283..fca4e0f9 100644 --- a/ext/libstrawberry-tagreader/tagreadertaglib.cpp +++ b/ext/libstrawberry-tagreader/tagreadertaglib.cpp @@ -677,7 +677,7 @@ bool TagReaderTagLib::ReadFile(const QString &filename, spb::tagreader::SongMeta // well, it wasn't set, but if the artist is VA assume it's a compilation const QString albumartist = QString::fromUtf8(song->albumartist().data(), static_cast(song->albumartist().size())); const QString artist = QString::fromUtf8(song->artist().data(), static_cast(song->artist().size())); - if (artist.compare("various artists") == 0 || albumartist.compare("various artists") == 0) { + if (artist.compare(QLatin1String("various artists")) == 0 || albumartist.compare(QLatin1String("various artists")) == 0) { song->set_compilation(true); } } @@ -824,7 +824,7 @@ void TagReaderTagLib::SetVorbisComments(TagLib::Ogg::XiphComment *vorbis_comment vorbis_comment->addField("PERFORMER", StdStringToTaglibString(song.performer()), true); vorbis_comment->addField("GROUPING", StdStringToTaglibString(song.grouping()), true); vorbis_comment->addField("DISCNUMBER", QStringToTaglibString(song.disc() <= 0 ? QString() : QString::number(song.disc())), true); - vorbis_comment->addField("COMPILATION", QStringToTaglibString(song.compilation() ? "1" : QString()), true); + vorbis_comment->addField("COMPILATION", QStringToTaglibString(song.compilation() ? QStringLiteral("1") : QString()), true); // Try to be coherent, the two forms are used but the first one is preferred @@ -849,19 +849,19 @@ bool TagReaderTagLib::SaveFile(const spb::tagreader::SaveFileRequest &request) c QStringList save_tags_options; if (save_tags) { - save_tags_options << "tags"; + save_tags_options << QStringLiteral("tags"); } if (save_playcount) { - save_tags_options << "playcount"; + save_tags_options << QStringLiteral("playcount"); } if (save_rating) { - save_tags_options << "rating"; + save_tags_options << QStringLiteral("rating"); } if (save_cover) { - save_tags_options << "embedded cover"; + save_tags_options << QStringLiteral("embedded cover"); } - qLog(Debug) << "Saving" << save_tags_options.join(", ") << "to" << filename; + qLog(Debug) << "Saving" << save_tags_options.join(QStringLiteral(", ")) << "to" << filename; const Cover cover = LoadCoverFromRequest(request); @@ -1427,7 +1427,7 @@ void TagReaderTagLib::SetPlaycount(TagLib::APE::Tag *tag, const spb::tagreader:: void TagReaderTagLib::SetPlaycount(TagLib::ID3v2::Tag *tag, const spb::tagreader::SongMetadata &song) const { - SetUserTextFrame("FMPS_Playcount", QString::number(song.playcount()), tag); + SetUserTextFrame(QStringLiteral("FMPS_Playcount"), QString::number(song.playcount()), tag); TagLib::ID3v2::PopularimeterFrame *frame = GetPOPMFrameFromTag(tag); if (frame) { frame->setCounter(song.playcount()); @@ -1546,7 +1546,7 @@ void TagReaderTagLib::SetRating(TagLib::APE::Tag *tag, const spb::tagreader::Son void TagReaderTagLib::SetRating(TagLib::ID3v2::Tag *tag, const spb::tagreader::SongMetadata &song) const { - SetUserTextFrame("FMPS_Rating", QString::number(song.rating()), tag); + SetUserTextFrame(QStringLiteral("FMPS_Rating"), QString::number(song.rating()), tag); TagLib::ID3v2::PopularimeterFrame *frame = GetPOPMFrameFromTag(tag); if (frame) { frame->setRating(ConvertToPOPMRating(song.rating())); diff --git a/src/analyzer/rainbowanalyzer.cpp b/src/analyzer/rainbowanalyzer.cpp index 49267315..56d514f4 100644 --- a/src/analyzer/rainbowanalyzer.cpp +++ b/src/analyzer/rainbowanalyzer.cpp @@ -65,8 +65,8 @@ RainbowAnalyzer::RainbowAnalyzer(const RainbowType rbtype, QWidget *parent) background_brush_(QColor(0x0f, 0x43, 0x73)) { rainbowtype = rbtype; - cat_dash_[0] = QPixmap(":/pictures/nyancat.png"); - cat_dash_[1] = QPixmap(":/pictures/rainbowdash.png"); + cat_dash_[0] = QPixmap(QStringLiteral(":/pictures/nyancat.png")); + cat_dash_[1] = QPixmap(QStringLiteral(":/pictures/rainbowdash.png")); 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 e02d1003..2807bc20 100644 --- a/src/collection/collectionbackend.cpp +++ b/src/collection/collectionbackend.cpp @@ -175,9 +175,9 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con // Do the dirs table { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_)); - q.BindValue(":path", new_path); - q.BindValue(":id", id); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -192,9 +192,9 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con // Do the subdirs table { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET path=:path || substr(path, %2) WHERE directory=:id").arg(subdirs_table_).arg(path_len)); - q.BindValue(":path", new_url); - q.BindValue(":id", id); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -204,9 +204,9 @@ void CollectionBackend::ChangeDirPath(const int id, const QString &old_path, con // Do the songs table { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET url=:path || substr(url, %2) WHERE directory=:id").arg(songs_table_).arg(path_len)); - q.BindValue(":path", new_url); - q.BindValue(":id", id); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -225,7 +225,7 @@ CollectionDirectoryList CollectionBackend::GetAllDirectories() { CollectionDirectoryList ret; SqlQuery q(db); - q.prepare(QString("SELECT ROWID, path FROM %1").arg(dirs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, path FROM %1").arg(dirs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return ret; @@ -253,8 +253,8 @@ CollectionSubdirectoryList CollectionBackend::SubdirsInDirectory(const int id) { CollectionSubdirectoryList CollectionBackend::SubdirsInDirectory(const int id, QSqlDatabase &db) { SqlQuery q(db); - q.prepare(QString("SELECT path, mtime FROM %1 WHERE directory_id = :dir").arg(subdirs_table_)); - q.BindValue(":dir", id); + q.prepare(QStringLiteral("SELECT path, mtime FROM %1 WHERE directory_id = :dir").arg(subdirs_table_)); + q.BindValue(QStringLiteral(":dir"), id); if (!q.Exec()) { db_->ReportErrors(q); return CollectionSubdirectoryList(); @@ -279,7 +279,7 @@ void CollectionBackend::UpdateTotalSongCount() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT COUNT(*) FROM %1 WHERE unavailable = 0").arg(songs_table_)); + q.prepare(QStringLiteral("SELECT COUNT(*) FROM %1 WHERE unavailable = 0").arg(songs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -299,7 +299,7 @@ void CollectionBackend::UpdateTotalArtistCount() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT COUNT(DISTINCT artist) FROM %1 WHERE unavailable = 0").arg(songs_table_)); + q.prepare(QStringLiteral("SELECT COUNT(DISTINCT artist) FROM %1 WHERE unavailable = 0").arg(songs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -319,7 +319,7 @@ void CollectionBackend::UpdateTotalAlbumCount() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT COUNT(*) FROM (SELECT DISTINCT effective_albumartist, album FROM %1 WHERE unavailable = 0)").arg(songs_table_)); + q.prepare(QStringLiteral("SELECT COUNT(*) FROM (SELECT DISTINCT effective_albumartist, album FROM %1 WHERE unavailable = 0)").arg(songs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -342,8 +342,8 @@ void CollectionBackend::AddDirectory(const QString &path) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (path, subdirs) VALUES (:path, 1)").arg(dirs_table_)); - q.BindValue(":path", db_path); + q.prepare(QStringLiteral("INSERT INTO %1 (path, subdirs) VALUES (:path, 1)").arg(dirs_table_)); + q.BindValue(QStringLiteral(":path"), db_path); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -370,8 +370,8 @@ void CollectionBackend::RemoveDirectory(const CollectionDirectory &dir) { // Delete the subdirs that were in this directory { SqlQuery q(db); - q.prepare(QString("DELETE FROM %1 WHERE directory_id = :id").arg(subdirs_table_)); - q.BindValue(":id", dir.id); + q.prepare(QStringLiteral("DELETE FROM %1 WHERE directory_id = :id").arg(subdirs_table_)); + q.BindValue(QStringLiteral(":id"), dir.id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -381,8 +381,8 @@ void CollectionBackend::RemoveDirectory(const CollectionDirectory &dir) { // Now remove the directory itself { SqlQuery q(db); - q.prepare(QString("DELETE FROM %1 WHERE ROWID = :id").arg(dirs_table_)); - q.BindValue(":id", dir.id); + q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(dirs_table_)); + q.BindValue(QStringLiteral(":id"), dir.id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -401,8 +401,8 @@ SongList CollectionBackend::FindSongsInDirectory(const int id) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE directory_id = :directory_id").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":directory_id", id); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE directory_id = :directory_id").arg(Song::kColumnSpec, songs_table_)); + q.BindValue(QStringLiteral(":directory_id"), id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -424,8 +424,8 @@ SongList CollectionBackend::SongsWithMissingFingerprint(const int id) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE directory_id = :directory_id AND unavailable = 0 AND (fingerprint IS NULL OR fingerprint = '')").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":directory_id", id); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE directory_id = :directory_id AND unavailable = 0 AND (fingerprint IS NULL OR fingerprint = '')").arg(Song::kColumnSpec, songs_table_)); + q.BindValue(QStringLiteral(":directory_id"), id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -447,8 +447,8 @@ SongList CollectionBackend::SongsWithMissingLoudnessCharacteristics(const int id QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %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::kColumnSpec, songs_table_)); - q.BindValue(":directory_id", id); + q.prepare(QStringLiteral("SELECT ROWID, %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::kColumnSpec, songs_table_)); + q.BindValue(QStringLiteral(":directory_id"), id); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -490,9 +490,9 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub if (subdir.mtime == 0) { // Delete the subdirectory SqlQuery q(db); - q.prepare(QString("DELETE FROM %1 WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(":id", subdir.directory_id); - q.BindValue(":path", subdir.path); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -503,9 +503,9 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub bool exists = false; { SqlQuery q(db); - q.prepare(QString("SELECT ROWID FROM %1 WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(":id", subdir.directory_id); - q.BindValue(":path", subdir.path); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -515,10 +515,10 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub if (exists) { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET mtime = :mtime WHERE directory_id = :id AND path = :path").arg(subdirs_table_)); - q.BindValue(":mtime", subdir.mtime); - q.BindValue(":id", subdir.directory_id); - q.BindValue(":path", subdir.path); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -526,10 +526,10 @@ void CollectionBackend::AddOrUpdateSubdirs(const CollectionSubdirectoryList &sub } else { SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (directory_id, path, mtime) VALUES (:id, :path, :mtime)").arg(subdirs_table_)); - q.BindValue(":id", subdir.directory_id); - q.BindValue(":path", subdir.path); - q.BindValue(":mtime", subdir.mtime); + 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); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -548,7 +548,7 @@ SongList CollectionBackend::GetAllSongs() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2").arg(Song::kColumnSpec, songs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -584,8 +584,8 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { // This is to fix a possible race condition when a directory is removed while CollectionWatcher is scanning it. if (!dirs_table_.isEmpty()) { SqlQuery check_dir(db); - check_dir.prepare(QString("SELECT ROWID FROM %1 WHERE ROWID = :id").arg(dirs_table_)); - check_dir.BindValue(":id", song.directory_id()); + check_dir.prepare(QStringLiteral("SELECT ROWID FROM %1 WHERE ROWID = :id").arg(dirs_table_)); + check_dir.BindValue(QStringLiteral(":id"), song.directory_id()); if (!check_dir.Exec()) { db_->ReportErrors(check_dir); return; @@ -604,9 +604,9 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { // Update { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); song.BindToQuery(&q); - q.BindValue(":id", song.id()); + q.BindValue(QStringLiteral(":id"), song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -615,9 +615,9 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); song.BindToFtsQuery(&q); - q.BindValue(":id", song.id()); + q.BindValue(QStringLiteral(":id"), song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -643,9 +643,9 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { // Update { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); new_song.BindToQuery(&q); - q.BindValue(":id", new_song.id()); + q.BindValue(QStringLiteral(":id"), new_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -654,9 +654,9 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); new_song.BindToFtsQuery(&q); - q.BindValue(":id", new_song.id()); + q.BindValue(QStringLiteral(":id"), new_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -675,7 +675,7 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { int id = -1; { // Insert the row and create a new ID SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (%2) VALUES (%3)").arg(songs_table_, Song::kColumnSpec, Song::kBindSpec)); + q.prepare(QStringLiteral("INSERT INTO %1 (%2) VALUES (%3)").arg(songs_table_, Song::kColumnSpec, Song::kBindSpec)); song.BindToQuery(&q); if (!q.Exec()) { db_->ReportErrors(q); @@ -689,8 +689,8 @@ void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { { // Add to the FTS index SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (ROWID, %2) VALUES (:id, %3)").arg(fts_table_, Song::kFtsColumnSpec, Song::kFtsBindSpec)); - q.BindValue(":id", id); + q.prepare(QStringLiteral("INSERT INTO %1 (ROWID, %2) VALUES (:id, %3)").arg(fts_table_, Song::kFtsColumnSpec, Song::kFtsBindSpec)); + q.BindValue(QStringLiteral(":id"), id); song.BindToFtsQuery(&q); if (!q.Exec()) { db_->ReportErrors(q); @@ -750,9 +750,9 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(songs_table_, Song::kUpdateSpec)); new_song.BindToQuery(&q); - q.BindValue(":id", old_song.id()); + q.BindValue(QStringLiteral(":id"), old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -760,9 +760,9 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { } { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); + q.prepare(QStringLiteral("UPDATE %1 SET %2 WHERE ROWID = :id").arg(fts_table_, Song::kFtsUpdateSpec)); new_song.BindToFtsQuery(&q); - q.BindValue(":id", old_song.id()); + q.BindValue(QStringLiteral(":id"), old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -781,7 +781,7 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { int id = -1; { SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (%2) VALUES (%3)").arg(songs_table_, Song::kColumnSpec, Song::kBindSpec)); + q.prepare(QStringLiteral("INSERT INTO %1 (%2) VALUES (%3)").arg(songs_table_, Song::kColumnSpec, Song::kBindSpec)); new_song.BindToQuery(&q); if (!q.Exec()) { db_->ReportErrors(q); @@ -795,8 +795,8 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { { // Add to the FTS index SqlQuery q(db); - q.prepare(QString("INSERT INTO %1 (ROWID, %2) VALUES (:id, %3)").arg(fts_table_, Song::kFtsColumnSpec, Song::kFtsBindSpec)); - q.BindValue(":id", id); + q.prepare(QStringLiteral("INSERT INTO %1 (ROWID, %2) VALUES (:id, %3)").arg(fts_table_, Song::kFtsColumnSpec, Song::kFtsBindSpec)); + q.BindValue(QStringLiteral(":id"), id); new_song.BindToFtsQuery(&q); if (!q.Exec()) { db_->ReportErrors(q); @@ -816,8 +816,8 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { if (!new_songs.contains(old_song.song_id())) { { SqlQuery q(db); - q.prepare(QString("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(":id", old_song.id()); + q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); + q.BindValue(QStringLiteral(":id"), old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -825,8 +825,8 @@ void CollectionBackend::UpdateSongsBySongID(const SongMap &new_songs) { } { SqlQuery q(db); - q.prepare(QString("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_)); - q.BindValue(":id", old_song.id()); + q.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_)); + q.BindValue(QStringLiteral(":id"), old_song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -853,12 +853,12 @@ void CollectionBackend::UpdateMTimesOnly(const SongList &songs) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET mtime = :mtime WHERE ROWID = :id").arg(songs_table_)); + q.prepare(QStringLiteral("UPDATE %1 SET mtime = :mtime WHERE ROWID = :id").arg(songs_table_)); ScopedTransaction transaction(&db); for (const Song &song : songs) { - q.BindValue(":mtime", song.mtime()); - q.BindValue(":id", song.id()); + q.BindValue(QStringLiteral(":mtime"), song.mtime()); + q.BindValue(QStringLiteral(":id"), song.id()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -874,19 +874,19 @@ void CollectionBackend::DeleteSongs(const SongList &songs) { QSqlDatabase db(db_->Connect()); SqlQuery remove(db); - remove.prepare(QString("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); + remove.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_)); SqlQuery remove_fts(db); - remove_fts.prepare(QString("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_)); + remove_fts.prepare(QStringLiteral("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_)); ScopedTransaction transaction(&db); for (const Song &song : songs) { - remove.BindValue(":id", song.id()); + remove.BindValue(QStringLiteral(":id"), song.id()); if (!remove.Exec()) { db_->ReportErrors(remove); return; } - remove_fts.BindValue(":id", song.id()); + remove_fts.BindValue(QStringLiteral(":id"), song.id()); if (!remove_fts.Exec()) { db_->ReportErrors(remove_fts); return; @@ -908,11 +908,11 @@ void CollectionBackend::MarkSongsUnavailable(const SongList &songs, const bool u QSqlDatabase db(db_->Connect()); SqlQuery query(db); - query.prepare(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id").arg(songs_table_).arg(static_cast(unavailable))); + query.prepare(QStringLiteral("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id").arg(songs_table_).arg(static_cast(unavailable))); ScopedTransaction transaction(&db); for (const Song &song : songs) { - query.BindValue(":id", song.id()); + query.BindValue(QStringLiteral(":id"), song.id()); if (!query.Exec()) { db_->ReportErrors(query); return; @@ -957,7 +957,7 @@ QStringList CollectionBackend::GetAll(const QString &column, const CollectionFil QStringList CollectionBackend::GetAllArtists(const CollectionFilterOptions &opt) { - return GetAll("artist", opt); + return GetAll(QStringLiteral("artist"), opt); } QStringList CollectionBackend::GetAllArtistsWithAlbums(const CollectionFilterOptions &opt) { @@ -967,16 +967,16 @@ QStringList CollectionBackend::GetAllArtistsWithAlbums(const CollectionFilterOpt // Albums with 'albumartist' field set: CollectionQuery query(db, songs_table_, fts_table_, opt); - query.SetColumnSpec("DISTINCT albumartist"); + query.SetColumnSpec(QStringLiteral("DISTINCT albumartist")); query.AddCompilationRequirement(false); - query.AddWhere("album", "", "!="); + query.AddWhere(QStringLiteral("album"), "", QStringLiteral("!=")); // Albums with no 'albumartist' (extract 'artist'): CollectionQuery query2(db, songs_table_, fts_table_, opt); - query2.SetColumnSpec("DISTINCT artist"); + query2.SetColumnSpec(QStringLiteral("DISTINCT artist")); query2.AddCompilationRequirement(false); - query2.AddWhere("album", "", "!="); - query2.AddWhere("albumartist", "", "="); + query2.AddWhere(QStringLiteral("album"), "", QStringLiteral("!=")); + query2.AddWhere(QStringLiteral("albumartist"), "", QStringLiteral("=")); if (!query.Exec()) { ReportErrors(query); @@ -1015,7 +1015,7 @@ SongList CollectionBackend::GetArtistSongs(const QString &effective_albumartist, CollectionQuery query(db, songs_table_, fts_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere("effective_albumartist", effective_albumartist); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1033,8 +1033,8 @@ SongList CollectionBackend::GetAlbumSongs(const QString &effective_albumartist, CollectionQuery query(db, songs_table_, fts_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere("effective_albumartist", effective_albumartist); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(QStringLiteral("album"), album); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1052,7 +1052,7 @@ SongList CollectionBackend::GetSongsByAlbum(const QString &album, const Collecti CollectionQuery query(db, songs_table_, fts_table_, opt); query.AddCompilationRequirement(false); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("album"), album); SongList songs; if (!ExecCollectionQuery(&query, songs)) { @@ -1130,10 +1130,10 @@ SongList CollectionBackend::GetSongsByForeignId(const QStringList &ids, const QS QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QString in = ids.join(","); + QString in = ids.join(QStringLiteral(",")); SqlQuery q(db); - q.prepare(QString("SELECT %3.ROWID, %2, %3.%4 FROM %3, %1 WHERE %3.%4 IN (in) AND %1.ROWID = %3.ROWID AND unavailable = 0").arg(songs_table_, Song::kColumnSpec, table, column, in)); + q.prepare(QStringLiteral("SELECT %3.ROWID, %2, %3.%4 FROM %3, %1 WHERE %3.%4 IN (in) AND %1.ROWID = %3.ROWID AND unavailable = 0").arg(songs_table_, Song::kColumnSpec, table, column, in)); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -1161,10 +1161,10 @@ Song CollectionBackend::GetSongById(const int id, QSqlDatabase &db) { SongList CollectionBackend::GetSongsById(const QStringList &ids, QSqlDatabase &db) { - QString in = ids.join(","); + QString in = ids.join(QStringLiteral(",")); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE ROWID IN (%3)").arg(Song::kColumnSpec, songs_table_, in)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE ROWID IN (%3)").arg(Song::kColumnSpec, songs_table_, in)); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -1186,13 +1186,13 @@ Song CollectionBackend::GetSongByUrl(const QUrl &url, const qint64 beginning) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND beginning = :beginning AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND beginning = :beginning AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":url1", url); - q.BindValue(":url2", url.toString()); - q.BindValue(":url3", url.toString(QUrl::FullyEncoded)); - q.BindValue(":url4", url.toEncoded()); - q.BindValue(":beginning", beginning); + q.BindValue(QStringLiteral(":url1"), url); + q.BindValue(QStringLiteral(":url2"), url.toString()); + q.BindValue(QStringLiteral(":url3"), url.toString(QUrl::FullyEncoded)); + q.BindValue(QStringLiteral(":url4"), url.toEncoded()); + q.BindValue(QStringLiteral(":beginning"), beginning); if (!q.Exec()) { db_->ReportErrors(q); @@ -1216,13 +1216,13 @@ Song CollectionBackend::GetSongByUrlAndTrack(const QUrl &url, const int track) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND track = :track AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND track = :track AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":url1", url); - q.BindValue(":url2", url.toString()); - q.BindValue(":url3", url.toString(QUrl::FullyEncoded)); - q.BindValue(":url4", url.toEncoded()); - q.BindValue(":track", track); + q.BindValue(QStringLiteral(":url1"), url); + q.BindValue(QStringLiteral(":url2"), url.toString()); + q.BindValue(QStringLiteral(":url3"), url.toString(QUrl::FullyEncoded)); + q.BindValue(QStringLiteral(":url4"), url.toEncoded()); + q.BindValue(QStringLiteral(":track"), track); if (!q.Exec()) { db_->ReportErrors(q); @@ -1246,13 +1246,13 @@ SongList CollectionBackend::GetSongsByUrl(const QUrl &url, const bool unavailabl QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = :unavailable").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = :unavailable").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":url1", url); - q.BindValue(":url2", url.toString()); - q.BindValue(":url3", url.toString(QUrl::FullyEncoded)); - q.BindValue(":url4", url.toEncoded()); - q.BindValue(":unavailable", (unavailable ? 1 : 0)); + q.BindValue(QStringLiteral(":url1"), url); + q.BindValue(QStringLiteral(":url2"), url.toString()); + q.BindValue(QStringLiteral(":url3"), url.toString(QUrl::FullyEncoded)); + q.BindValue(QStringLiteral(":url4"), url.toEncoded()); + q.BindValue(QStringLiteral(":unavailable"), (unavailable ? 1 : 0)); SongList songs; if (q.Exec()) { @@ -1303,10 +1303,10 @@ SongList CollectionBackend::GetSongsBySongId(const QStringList &song_ids, QSqlDa for (const QString &song_id : song_ids) { song_ids2 << "'" + song_id + "'"; } - QString in = song_ids2.join(","); + QString in = song_ids2.join(QStringLiteral(",")); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE SONG_ID IN (%3)").arg(Song::kColumnSpec, songs_table_, in)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE SONG_ID IN (%3)").arg(Song::kColumnSpec, songs_table_, in)); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -1329,8 +1329,8 @@ SongList CollectionBackend::GetSongsByFingerprint(const QString &fingerprint) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE fingerprint = :fingerprint").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":fingerprint", fingerprint); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE fingerprint = :fingerprint").arg(Song::kColumnSpec, songs_table_)); + q.BindValue(QStringLiteral(":fingerprint"), fingerprint); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -1360,7 +1360,7 @@ SongList CollectionBackend::GetCompilationSongs(const QString &album, const Coll CollectionQuery query(db, songs_table_, fts_table_, opt); query.SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); query.AddCompilationRequirement(true); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1385,7 +1385,7 @@ void CollectionBackend::CompilationsNeedUpdating() { // Look for albums that have songs by more than one 'effective album artist' in the same directory SqlQuery q(db); - q.prepare(QString("SELECT effective_albumartist, album, url, compilation_detected FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_)); + q.prepare(QStringLiteral("SELECT effective_albumartist, album, url, compilation_detected FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1452,11 +1452,11 @@ bool CollectionBackend::UpdateCompilations(const QSqlDatabase &db, SongList &del { // Get song, so we can tell the model its updated SqlQuery q(db); - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); - q.BindValue(":url1", url); - q.BindValue(":url2", url.toString()); - q.BindValue(":url3", url.toString(QUrl::FullyEncoded)); - q.BindValue(":url4", url.toEncoded()); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE (url = :url1 OR url = :url2 OR url = :url3 OR url = :url4) AND unavailable = 0").arg(Song::kColumnSpec, songs_table_)); + q.BindValue(QStringLiteral(":url1"), url); + q.BindValue(QStringLiteral(":url2"), url.toString()); + q.BindValue(QStringLiteral(":url3"), url.toString(QUrl::FullyEncoded)); + q.BindValue(QStringLiteral(":url4"), url.toEncoded()); if (q.Exec()) { while (q.next()) { Song song(source_); @@ -1474,12 +1474,12 @@ bool CollectionBackend::UpdateCompilations(const QSqlDatabase &db, SongList &del // Update the song SqlQuery q(db); - q.prepare(QString("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(":compilation_detected", static_cast(compilation_detected)); - q.BindValue(":url1", url); - q.BindValue(":url2", url.toString()); - q.BindValue(":url3", url.toString(QUrl::FullyEncoded)); - q.BindValue(":url4", url.toEncoded()); + 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); + q.BindValue(QStringLiteral(":url2"), url.toString()); + q.BindValue(QStringLiteral(":url3"), url.toString(QUrl::FullyEncoded)); + q.BindValue(QStringLiteral(":url4"), url.toEncoded()); if (!q.Exec()) { db_->ReportErrors(q); return false; @@ -1495,15 +1495,15 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist, QSqlDatabase db(db_->Connect()); CollectionQuery query(db, songs_table_, fts_table_, opt); - query.SetColumnSpec("url, filetype, cue_path, effective_albumartist, album, compilation_effective, art_embedded, art_automatic, art_manual, art_unset"); - query.SetOrderBy("effective_albumartist, album, url"); + 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")); if (compilation_required) { query.AddCompilationRequirement(true); } else if (!artist.isEmpty()) { query.AddCompilationRequirement(false); - query.AddWhere("effective_albumartist", artist); + query.AddWhere(QStringLiteral("effective_albumartist"), artist); } if (!query.Exec()) { @@ -1531,7 +1531,7 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist, album_info.art_embedded = query.Value(6).toBool(); const QString art_automatic = query.Value(7).toString(); - if (art_automatic.contains(QRegularExpression("..+:.*"))) { + if (art_automatic.contains(QRegularExpression(QStringLiteral("..+:.*")))) { album_info.art_automatic = QUrl::fromEncoded(art_automatic.toUtf8()); } else { @@ -1539,7 +1539,7 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist, } const QString art_manual = query.Value(8).toString(); - if (art_manual.contains(QRegularExpression("..+:.*"))) { + if (art_manual.contains(QRegularExpression(QStringLiteral("..+:.*")))) { album_info.art_manual = QUrl::fromEncoded(art_manual.toUtf8()); } else { @@ -1586,11 +1586,11 @@ CollectionBackend::Album CollectionBackend::GetAlbumArt(const QString &effective ret.album_artist = effective_albumartist; CollectionQuery query(db, songs_table_, fts_table_); - query.SetColumnSpec("url, art_embedded, art_automatic, art_manual, art_unset"); + query.SetColumnSpec(QStringLiteral("url, art_embedded, art_automatic, art_manual, art_unset")); if (!effective_albumartist.isEmpty()) { - query.AddWhere("effective_albumartist", effective_albumartist); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); } - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1623,8 +1623,8 @@ void CollectionBackend::UpdateEmbeddedAlbumArt(const QString &effective_albumart // Get the songs before they're updated CollectionQuery query(db, songs_table_, fts_table_); query.SetColumnSpec("ROWID, " + Song::kColumnSpec); - query.AddWhere("effective_albumartist", effective_albumartist); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1639,13 +1639,13 @@ void CollectionBackend::UpdateEmbeddedAlbumArt(const QString &effective_albumart } // Update the songs - QString sql = QString("UPDATE %1 SET art_embedded = :art_embedded, art_unset = 0 WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_); + QString sql = 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_); SqlQuery q(db); q.prepare(sql); - q.BindValue(":art_embedded", art_embedded ? 1 : 0); - q.BindValue(":effective_albumartist", effective_albumartist); - q.BindValue(":album", album); + q.BindValue(QStringLiteral(":art_embedded"), art_embedded ? 1 : 0); + q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); + q.BindValue(QStringLiteral(":album"), album); if (!q.Exec()) { db_->ReportErrors(q); @@ -1685,8 +1685,8 @@ void CollectionBackend::UpdateManualAlbumArt(const QString &effective_albumartis CollectionQuery query(db, songs_table_, fts_table_); query.SetColumnSpec("ROWID, " + Song::kColumnSpec); - query.AddWhere("effective_albumartist", effective_albumartist); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1701,10 +1701,10 @@ void CollectionBackend::UpdateManualAlbumArt(const QString &effective_albumartis } SqlQuery q(db); - q.prepare(QString("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(":art_manual", art_manual.isValid() ? art_manual.toString(QUrl::FullyEncoded) : ""); - q.BindValue(":effective_albumartist", effective_albumartist); - q.BindValue(":album", album); + 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) : QLatin1String("")); + q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist); + q.BindValue(QStringLiteral(":album"), album); if (!q.Exec()) { db_->ReportErrors(q); @@ -1743,8 +1743,8 @@ void CollectionBackend::UnsetAlbumArt(const QString &effective_albumartist, cons CollectionQuery query(db, songs_table_, fts_table_); query.SetColumnSpec("ROWID, " + Song::kColumnSpec); - query.AddWhere("effective_albumartist", effective_albumartist); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1759,9 +1759,9 @@ void CollectionBackend::UnsetAlbumArt(const QString &effective_albumartist, cons } SqlQuery q(db); - q.prepare(QString("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(":effective_albumartist", effective_albumartist); - q.BindValue(":album", album); + 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); if (!q.Exec()) { db_->ReportErrors(q); @@ -1800,8 +1800,8 @@ void CollectionBackend::ClearAlbumArt(const QString &effective_albumartist, cons CollectionQuery query(db, songs_table_, fts_table_); query.SetColumnSpec("ROWID, " + Song::kColumnSpec); - query.AddWhere("effective_albumartist", effective_albumartist); - query.AddWhere("album", album); + query.AddWhere(QStringLiteral("effective_albumartist"), effective_albumartist); + query.AddWhere(QStringLiteral("album"), album); if (!query.Exec()) { ReportErrors(query); @@ -1816,10 +1816,10 @@ void CollectionBackend::ClearAlbumArt(const QString &effective_albumartist, cons } SqlQuery q(db); - q.prepare(QString("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(":art_unset", art_unset ? 1 : 0); - q.BindValue(":effective_albumartist", effective_albumartist); - q.BindValue(":album", album); + 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); if (!q.Exec()) { db_->ReportErrors(q); @@ -1855,8 +1855,8 @@ void CollectionBackend::ForceCompilation(const QString &album, const QListReportErrors(q); @@ -1913,9 +1913,9 @@ void CollectionBackend::IncrementPlayCount(const int id) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET playcount = playcount + 1, lastplayed = :now WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(":now", QDateTime::currentDateTime().toSecsSinceEpoch()); - q.BindValue(":id", id); + q.prepare(QStringLiteral("UPDATE %1 SET playcount = playcount + 1, lastplayed = :now WHERE ROWID = :id").arg(songs_table_)); + q.BindValue(QStringLiteral(":now"), QDateTime::currentDateTime().toSecsSinceEpoch()); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1936,8 +1936,8 @@ void CollectionBackend::IncrementSkipCount(const int id, const float progress) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET skipcount = skipcount + 1 WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(":id", id); + q.prepare(QStringLiteral("UPDATE %1 SET skipcount = skipcount + 1 WHERE ROWID = :id").arg(songs_table_)); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -1982,8 +1982,8 @@ bool CollectionBackend::ResetPlayStatistics(const QStringList &id_str_list) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET playcount = 0, skipcount = 0, lastplayed = -1 WHERE ROWID IN (:ids)").arg(songs_table_)); - q.BindValue(":ids", id_str_list.join(",")); + 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(QStringLiteral(","))); if (!q.Exec()) { db_->ReportErrors(q); return false; @@ -2073,14 +2073,14 @@ SongList CollectionBackend::GetSongsBy(const QString &artist, const QString &alb SongList songs; SqlQuery q(db); if (album.isEmpty()) { - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE artist = :artist COLLATE NOCASE AND title = :title COLLATE NOCASE").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE artist = :artist COLLATE NOCASE AND title = :title COLLATE NOCASE").arg(Song::kColumnSpec, songs_table_)); } else { - q.prepare(QString("SELECT ROWID, %1 FROM %2 WHERE artist = :artist COLLATE NOCASE AND album = :album COLLATE NOCASE AND title = :title COLLATE NOCASE").arg(Song::kColumnSpec, songs_table_)); + q.prepare(QStringLiteral("SELECT ROWID, %1 FROM %2 WHERE artist = :artist COLLATE NOCASE AND album = :album COLLATE NOCASE AND title = :title COLLATE NOCASE").arg(Song::kColumnSpec, songs_table_)); } - q.BindValue(":artist", artist); - if (!album.isEmpty()) q.BindValue(":album", album); - q.BindValue(":title", title); + q.BindValue(QStringLiteral(":artist"), artist); + if (!album.isEmpty()) q.BindValue(QStringLiteral(":album"), album); + q.BindValue(QStringLiteral(":title"), title); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -2111,9 +2111,9 @@ void CollectionBackend::UpdateLastPlayed(const QString &artist, const QString &a continue; } SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET lastplayed = :lastplayed WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(":lastplayed", lastplayed); - q.BindValue(":id", song.id()); + 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()); if (!q.Exec()) { db_->ReportErrors(q); continue; @@ -2137,9 +2137,9 @@ void CollectionBackend::UpdatePlayCount(const QString &artist, const QString &ti for (const Song &song : songs) { SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET playcount = :playcount WHERE ROWID = :id").arg(songs_table_)); - q.BindValue(":playcount", playcount); - q.BindValue(":id", song.id()); + 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()); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2170,10 +2170,10 @@ void CollectionBackend::UpdateSongsRating(const QList &id_list, const float for (int i : id_list) { id_str_list << QString::number(i); } - QString ids = id_str_list.join(","); + QString ids = id_str_list.join(QStringLiteral(",")); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET rating = :rating WHERE ROWID IN (%2)").arg(songs_table_, ids)); - q.BindValue(":rating", rating); + q.prepare(QStringLiteral("UPDATE %1 SET rating = :rating WHERE ROWID IN (%2)").arg(songs_table_, ids)); + q.BindValue(QStringLiteral(":rating"), rating); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2200,9 +2200,9 @@ void CollectionBackend::UpdateLastSeen(const int directory_id, const int expire_ QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("UPDATE %1 SET lastseen = :lastseen WHERE directory_id = :directory_id AND unavailable = 0").arg(songs_table_)); - q.BindValue(":lastseen", QDateTime::currentDateTime().toSecsSinceEpoch()); - q.BindValue(":directory_id", directory_id); + q.prepare(QStringLiteral("UPDATE %1 SET lastseen = :lastseen WHERE directory_id = :directory_id AND unavailable = 0").arg(songs_table_)); + q.BindValue(QStringLiteral(":lastseen"), QDateTime::currentDateTime().toSecsSinceEpoch()); + q.BindValue(QStringLiteral(":directory_id"), directory_id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -2220,9 +2220,9 @@ void CollectionBackend::ExpireSongs(const int directory_id, const int expire_una QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("SELECT %1.ROWID, " + Song::JoinSpec("%1") + " FROM %1 LEFT JOIN playlist_items ON %1.ROWID = playlist_items.collection_id WHERE %1.directory_id = :directory_id AND %1.unavailable = 1 AND %1.lastseen > 0 AND %1.lastseen < :time AND playlist_items.collection_id IS NULL").arg(songs_table_)); - q.BindValue(":directory_id", directory_id); - q.BindValue(":time", QDateTime::currentDateTime().toSecsSinceEpoch() - (expire_unavailable_songs_days * 86400)); + q.prepare(QString("SELECT %1.ROWID, " + Song::JoinSpec(QStringLiteral("%1")) + " FROM %1 LEFT JOIN playlist_items ON %1.ROWID = playlist_items.collection_id WHERE %1.directory_id = :directory_id AND %1.unavailable = 1 AND %1.lastseen > 0 AND %1.lastseen < :time AND playlist_items.collection_id IS NULL").arg(songs_table_)); + q.BindValue(QStringLiteral(":directory_id"), directory_id); + q.BindValue(QStringLiteral(":time"), QDateTime::currentDateTime().toSecsSinceEpoch() - (expire_unavailable_songs_days * 86400)); if (!q.Exec()) { db_->ReportErrors(q); return; diff --git a/src/collection/collectiondirectorymodel.cpp b/src/collection/collectiondirectorymodel.cpp index dccbeeff..ef0453f7 100644 --- a/src/collection/collectiondirectorymodel.cpp +++ b/src/collection/collectiondirectorymodel.cpp @@ -41,7 +41,7 @@ using std::make_shared; CollectionDirectoryModel::CollectionDirectoryModel(SharedPtr backend, QObject *parent) : QStandardItemModel(parent), - dir_icon_(IconLoader::Load("document-open-folder")), + dir_icon_(IconLoader::Load(QStringLiteral("document-open-folder"))), backend_(backend) { QObject::connect(&*backend_, &CollectionBackend::DirectoryDiscovered, this, &CollectionDirectoryModel::DirectoryDiscovered); diff --git a/src/collection/collectionfilterwidget.cpp b/src/collection/collectionfilterwidget.cpp index c183c108..19dde695 100644 --- a/src/collection/collectionfilterwidget.cpp +++ b/src/collection/collectionfilterwidget.cpp @@ -72,34 +72,34 @@ CollectionFilterWidget::CollectionFilterWidget(QWidget *parent) ui_->setupUi(this); - QString available_fields = Song::kFtsColumns.join(", ").replace(QRegularExpression("\\bfts"), ""); - available_fields += QString(", ") + Song::kNumericalColumns.join(", "); + QString available_fields = Song::kFtsColumns.join(QStringLiteral(", ")).replace(QRegularExpression(QStringLiteral("\\bfts")), QLatin1String("")); + available_fields += QStringLiteral(", ") + Song::kNumericalColumns.join(QStringLiteral(", ")); ui_->search_field->setToolTip( - QString("

") + + QStringLiteral("

") + tr("Prefix a word with a field name to limit the search to that field, e.g.:") + - QString(" ") + - QString("") + + QStringLiteral(" ") + + QStringLiteral("") + tr("artist") + - QString(":Strawbs ") + - tr("searches the collection for all artists that contain the word %1. ").arg("Strawbs") + - QString("

") + + QStringLiteral(":Strawbs ") + + tr("searches the collection for all artists that contain the word %1. ").arg(QStringLiteral("Strawbs")) + + QStringLiteral("

") + tr("Search terms for numerical fields can be prefixed with %1 or %2 to refine the search, e.g.: ") .arg(" =, !=, <, >, <=", ">=") + - QString("") + + QStringLiteral("") + tr("rating") + - QString("") + - QString(":>=") + - QString("4") + + QStringLiteral("") + + QStringLiteral(":>=") + + QStringLiteral("4") + - QString("

") + + QStringLiteral("

") + tr("Available fields") + - QString(": ") + - QString("") + - QString("") + + QStringLiteral(": ") + + QStringLiteral("") + + QStringLiteral("") + available_fields + - QString(".") + - QString("

") + QStringLiteral(".") + + QStringLiteral("

") ); QObject::connect(ui_->search_field, &QSearchField::returnPressed, this, &CollectionFilterWidget::ReturnPressed); @@ -109,7 +109,7 @@ CollectionFilterWidget::CollectionFilterWidget(QWidget *parent) filter_delay_->setSingleShot(true); // Icons - ui_->options->setIcon(IconLoader::Load("configure")); + ui_->options->setIcon(IconLoader::Load(QStringLiteral("configure"))); // Filter by age QActionGroup *filter_age_group = new QActionGroup(this); @@ -229,10 +229,10 @@ void CollectionFilterWidget::ReloadSettings() { QString CollectionFilterWidget::group_by_version() const { if (settings_prefix_.isEmpty()) { - return "group_by_version"; + return QStringLiteral("group_by_version"); } else { - return QString("%1_group_by_version").arg(settings_prefix_); + return QStringLiteral("%1_group_by_version").arg(settings_prefix_); } } @@ -240,10 +240,10 @@ QString CollectionFilterWidget::group_by_version() const { QString CollectionFilterWidget::group_by_key() const { if (settings_prefix_.isEmpty()) { - return "group_by"; + return QStringLiteral("group_by"); } else { - return QString("%1_group_by").arg(settings_prefix_); + return QStringLiteral("%1_group_by").arg(settings_prefix_); } } @@ -253,10 +253,10 @@ QString CollectionFilterWidget::group_by_key(const int number) const { return gr QString CollectionFilterWidget::separate_albums_by_grouping_key() const { if (settings_prefix_.isEmpty()) { - return "separate_albums_by_grouping"; + return QStringLiteral("separate_albums_by_grouping"); } else { - return QString("%1_separate_albums_by_grouping").arg(settings_prefix_); + return QStringLiteral("%1_separate_albums_by_grouping").arg(settings_prefix_); } } diff --git a/src/collection/collectionmodel.cpp b/src/collection/collectionmodel.cpp index e5b12ac2..ab977cca 100644 --- a/src/collection/collectionmodel.cpp +++ b/src/collection/collectionmodel.cpp @@ -91,8 +91,8 @@ CollectionModel::CollectionModel(SharedPtr backend, Applicati total_artist_count_(0), total_album_count_(0), separate_albums_by_grouping_(false), - artist_icon_(IconLoader::Load("folder-sound")), - album_icon_(IconLoader::Load("cdcase")), + artist_icon_(IconLoader::Load(QStringLiteral("folder-sound"))), + album_icon_(IconLoader::Load(QStringLiteral("cdcase"))), init_task_id_(-1), use_pretty_covers_(true), show_dividers_(true), @@ -109,7 +109,7 @@ CollectionModel::CollectionModel(SharedPtr backend, Applicati QObject::connect(&*app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &CollectionModel::AlbumCoverLoaded); } - QIcon nocover = IconLoader::Load("cdcase"); + QIcon nocover = IconLoader::Load(QStringLiteral("cdcase")); if (!nocover.isNull()) { QList nocover_sizes = nocover.availableSizes(); no_cover_icon_ = nocover.pixmap(nocover_sizes.last()).scaled(kPrettyCoverSize, kPrettyCoverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); @@ -307,7 +307,7 @@ CollectionItem *CollectionModel::CreateCompilationArtistNode(const bool signal, if (parent != root_ && !parent->key.isEmpty()) parent->compilation_artist_node_->key.append(parent->key); parent->compilation_artist_node_->key.append(tr("Various artists")); parent->compilation_artist_node_->display_text = tr("Various artists"); - parent->compilation_artist_node_->sort_text = " various"; + parent->compilation_artist_node_->sort_text = QStringLiteral(" various"); parent->compilation_artist_node_->container_level = parent->container_level + 1; if (signal) endInsertRows(); @@ -396,10 +396,10 @@ QString CollectionModel::ContainerKey(const GroupBy group_by, const bool separat } else { if (song.bitdepth() <= 0) { - key = QString("%1 (%2)").arg(song.TextForFiletype(), QString::number(song.samplerate() / 1000.0, 'G', 5)); + key = QStringLiteral("%1 (%2)").arg(song.TextForFiletype(), QString::number(song.samplerate() / 1000.0, 'G', 5)); } else { - key = QString("%1 (%2/%3)").arg(song.TextForFiletype(), QString::number(song.samplerate() / 1000.0, 'G', 5)).arg(song.bitdepth()); + key = QStringLiteral("%1 (%2/%3)").arg(song.TextForFiletype(), QString::number(song.samplerate() / 1000.0, 'G', 5)).arg(song.bitdepth()); } } break; @@ -432,7 +432,7 @@ QString CollectionModel::DividerKey(const GroupBy group_by, CollectionItem *item case GroupBy::Format: case GroupBy::FileType: { QChar c = item->sort_text[0]; - if (c.isDigit()) return "0"; + if (c.isDigit()) return QStringLiteral("0"); if (c == ' ') return QString(); if (c.decompositionTag() != QChar::NoDecomposition) { QString decomposition = c.decomposition(); @@ -487,7 +487,7 @@ QString CollectionModel::DividerDisplayText(const GroupBy group_by, const QStrin case GroupBy::Genre: case GroupBy::FileType: case GroupBy::Format: - if (key == "0") return "0-9"; + if (key == "0") return QStringLiteral("0-9"); return key.toUpper(); case GroupBy::YearAlbum: @@ -631,7 +631,7 @@ QString CollectionModel::AlbumIconPixmapCacheKey(const QModelIndex &idx) const { idx_copy = idx_copy.parent(); } - return Song::TextForSource(backend_->source()) + "/" + path.join("/"); + return Song::TextForSource(backend_->source()) + "/" + path.join(QStringLiteral("/")); } @@ -1054,82 +1054,82 @@ void CollectionModel::SetQueryColumnSpec(const GroupBy group_by, const bool sepa // Say what group_by of thing we want to get back from the database. switch (group_by) { case GroupBy::AlbumArtist: - query_options->set_column_spec("DISTINCT effective_albumartist"); + query_options->set_column_spec(QStringLiteral("DISTINCT effective_albumartist")); break; case GroupBy::Artist: - query_options->set_column_spec("DISTINCT artist"); + query_options->set_column_spec(QStringLiteral("DISTINCT artist")); break; case GroupBy::Album:{ - QString query("DISTINCT album, album_id"); + QString query(QStringLiteral("DISTINCT album, album_id")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::AlbumDisc:{ - QString query("DISTINCT album, album_id, disc"); + QString query(QStringLiteral("DISTINCT album, album_id, disc")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::YearAlbum:{ - QString query("DISTINCT year, album, album_id"); + QString query(QStringLiteral("DISTINCT year, album, album_id")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::YearAlbumDisc:{ - QString query("DISTINCT year, album, album_id, disc"); + QString query(QStringLiteral("DISTINCT year, album, album_id, disc")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::OriginalYearAlbum:{ - QString query("DISTINCT year, originalyear, album, album_id"); + QString query(QStringLiteral("DISTINCT year, originalyear, album, album_id")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::OriginalYearAlbumDisc:{ - QString query("DISTINCT year, originalyear, album, album_id, disc"); + QString query(QStringLiteral("DISTINCT year, originalyear, album, album_id, disc")); if (separate_albums_by_grouping) query.append(", grouping"); query_options->set_column_spec(query); break; } case GroupBy::Disc: - query_options->set_column_spec("DISTINCT disc"); + query_options->set_column_spec(QStringLiteral("DISTINCT disc")); break; case GroupBy::Year: - query_options->set_column_spec("DISTINCT year"); + query_options->set_column_spec(QStringLiteral("DISTINCT year")); break; case GroupBy::OriginalYear: - query_options->set_column_spec("DISTINCT effective_originalyear"); + query_options->set_column_spec(QStringLiteral("DISTINCT effective_originalyear")); break; case GroupBy::Genre: - query_options->set_column_spec("DISTINCT genre"); + query_options->set_column_spec(QStringLiteral("DISTINCT genre")); break; case GroupBy::Composer: - query_options->set_column_spec("DISTINCT composer"); + query_options->set_column_spec(QStringLiteral("DISTINCT composer")); break; case GroupBy::Performer: - query_options->set_column_spec("DISTINCT performer"); + query_options->set_column_spec(QStringLiteral("DISTINCT performer")); break; case GroupBy::Grouping: - query_options->set_column_spec("DISTINCT grouping"); + query_options->set_column_spec(QStringLiteral("DISTINCT grouping")); break; case GroupBy::FileType: - query_options->set_column_spec("DISTINCT filetype"); + query_options->set_column_spec(QStringLiteral("DISTINCT filetype")); break; case GroupBy::Format: - query_options->set_column_spec("DISTINCT filetype, samplerate, bitdepth"); + query_options->set_column_spec(QStringLiteral("DISTINCT filetype, samplerate, bitdepth")); break; case GroupBy::Samplerate: - query_options->set_column_spec("DISTINCT samplerate"); + query_options->set_column_spec(QStringLiteral("DISTINCT samplerate")); break; case GroupBy::Bitdepth: - query_options->set_column_spec("DISTINCT bitdepth"); + query_options->set_column_spec(QStringLiteral("DISTINCT bitdepth")); break; case GroupBy::Bitrate: - query_options->set_column_spec("DISTINCT bitrate"); + query_options->set_column_spec(QStringLiteral("DISTINCT bitrate")); break; case GroupBy::None: case GroupBy::GroupByCount: @@ -1151,7 +1151,7 @@ void CollectionModel::AddQueryWhere(const GroupBy group_by, const bool separate_ else { // Don't duplicate compilations outside the Various artists node query_options->set_compilation_requirement(CollectionQueryOptions::CompilationRequirement::Off); - query_options->AddWhere("effective_albumartist", item->metadata.effective_albumartist()); + query_options->AddWhere(QStringLiteral("effective_albumartist"), item->metadata.effective_albumartist()); } break; case GroupBy::Artist: @@ -1161,85 +1161,85 @@ void CollectionModel::AddQueryWhere(const GroupBy group_by, const bool separate_ else { // Don't duplicate compilations outside the Various artists node query_options->set_compilation_requirement(CollectionQueryOptions::CompilationRequirement::Off); - query_options->AddWhere("artist", item->metadata.artist()); + query_options->AddWhere(QStringLiteral("artist"), item->metadata.artist()); } break; case GroupBy::Album: - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::AlbumDisc: - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - query_options->AddWhere("disc", item->metadata.disc()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + query_options->AddWhere(QStringLiteral("disc"), item->metadata.disc()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::YearAlbum: - query_options->AddWhere("year", item->metadata.year()); - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("year"), item->metadata.year()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::YearAlbumDisc: - query_options->AddWhere("year", item->metadata.year()); - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - query_options->AddWhere("disc", item->metadata.disc()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("year"), item->metadata.year()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + query_options->AddWhere(QStringLiteral("disc"), item->metadata.disc()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::OriginalYearAlbum: - query_options->AddWhere("year", item->metadata.year()); - query_options->AddWhere("originalyear", item->metadata.originalyear()); - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("year"), item->metadata.year()); + query_options->AddWhere(QStringLiteral("originalyear"), item->metadata.originalyear()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::OriginalYearAlbumDisc: - query_options->AddWhere("year", item->metadata.year()); - query_options->AddWhere("originalyear", item->metadata.originalyear()); - query_options->AddWhere("album", item->metadata.album()); - query_options->AddWhere("album_id", item->metadata.album_id()); - query_options->AddWhere("disc", item->metadata.disc()); - if (separate_albums_by_grouping) query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("year"), item->metadata.year()); + query_options->AddWhere(QStringLiteral("originalyear"), item->metadata.originalyear()); + query_options->AddWhere(QStringLiteral("album"), item->metadata.album()); + query_options->AddWhere(QStringLiteral("album_id"), item->metadata.album_id()); + query_options->AddWhere(QStringLiteral("disc"), item->metadata.disc()); + if (separate_albums_by_grouping) query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::Disc: - query_options->AddWhere("disc", item->metadata.disc()); + query_options->AddWhere(QStringLiteral("disc"), item->metadata.disc()); break; case GroupBy::Year: - query_options->AddWhere("year", item->metadata.year()); + query_options->AddWhere(QStringLiteral("year"), item->metadata.year()); break; case GroupBy::OriginalYear: - query_options->AddWhere("effective_originalyear", item->metadata.effective_originalyear()); + query_options->AddWhere(QStringLiteral("effective_originalyear"), item->metadata.effective_originalyear()); break; case GroupBy::Genre: - query_options->AddWhere("genre", item->metadata.genre()); + query_options->AddWhere(QStringLiteral("genre"), item->metadata.genre()); break; case GroupBy::Composer: - query_options->AddWhere("composer", item->metadata.composer()); + query_options->AddWhere(QStringLiteral("composer"), item->metadata.composer()); break; case GroupBy::Performer: - query_options->AddWhere("performer", item->metadata.performer()); + query_options->AddWhere(QStringLiteral("performer"), item->metadata.performer()); break; case GroupBy::Grouping: - query_options->AddWhere("grouping", item->metadata.grouping()); + query_options->AddWhere(QStringLiteral("grouping"), item->metadata.grouping()); break; case GroupBy::FileType: - query_options->AddWhere("filetype", static_cast(item->metadata.filetype())); + query_options->AddWhere(QStringLiteral("filetype"), static_cast(item->metadata.filetype())); break; case GroupBy::Format: - query_options->AddWhere("filetype", static_cast(item->metadata.filetype())); - query_options->AddWhere("samplerate", item->metadata.samplerate()); - query_options->AddWhere("bitdepth", item->metadata.bitdepth()); + query_options->AddWhere(QStringLiteral("filetype"), static_cast(item->metadata.filetype())); + query_options->AddWhere(QStringLiteral("samplerate"), item->metadata.samplerate()); + query_options->AddWhere(QStringLiteral("bitdepth"), item->metadata.bitdepth()); break; case GroupBy::Samplerate: - query_options->AddWhere("samplerate", item->metadata.samplerate()); + query_options->AddWhere(QStringLiteral("samplerate"), item->metadata.samplerate()); break; case GroupBy::Bitdepth: - query_options->AddWhere("bitdepth", item->metadata.bitdepth()); + query_options->AddWhere(QStringLiteral("bitdepth"), item->metadata.bitdepth()); break; case GroupBy::Bitrate: - query_options->AddWhere("bitrate", item->metadata.bitrate()); + query_options->AddWhere(QStringLiteral("bitrate"), item->metadata.bitrate()); break; case GroupBy::None: case GroupBy::GroupByCount: @@ -1745,12 +1745,12 @@ QString CollectionModel::PrettyDisc(const int disc) { QString CollectionModel::SortText(QString text) { if (text.isEmpty()) { - text = " unknown"; + text = QStringLiteral(" unknown"); } else { text = text.toLower(); } - text = text.remove(QRegularExpression("[^\\w ]", QRegularExpression::UseUnicodePropertiesOption)); + text = text.remove(QRegularExpression(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption)); return text; @@ -1776,27 +1776,27 @@ QString CollectionModel::SortTextForArtist(QString artist, const bool skip_artic QString CollectionModel::SortTextForNumber(const int number) { - return QString("%1").arg(number, 4, 10, QChar('0')); + return QStringLiteral("%1").arg(number, 4, 10, QChar('0')); } QString CollectionModel::SortTextForYear(const int year) { QString str = QString::number(year); - return QString("0").repeated(qMax(0, 4 - str.length())) + str; + return QStringLiteral("0").repeated(qMax(0, 4 - str.length())) + str; } QString CollectionModel::SortTextForBitrate(const int bitrate) { QString str = QString::number(bitrate); - return QString("0").repeated(qMax(0, 3 - str.length())) + str; + return QStringLiteral("0").repeated(qMax(0, 3 - str.length())) + str; } QString CollectionModel::SortTextForSong(const Song &song) { QString ret = QString::number(std::max(0, song.disc()) * 1000 + std::max(0, song.track())); - ret.prepend(QString("0").repeated(6 - ret.length())); + ret.prepend(QStringLiteral("0").repeated(6 - ret.length())); ret.append(song.url().toString()); return ret; @@ -1818,7 +1818,7 @@ Qt::ItemFlags CollectionModel::flags(const QModelIndex &idx) const { } QStringList CollectionModel::mimeTypes() const { - return QStringList() << "text/uri-list"; + return QStringList() << QStringLiteral("text/uri-list"); } QMimeData *CollectionModel::mimeData(const QModelIndexList &indexes) const { diff --git a/src/collection/collectionquery.cpp b/src/collection/collectionquery.cpp index e7b6f60d..62d060bb 100644 --- a/src/collection/collectionquery.cpp +++ b/src/collection/collectionquery.cpp @@ -54,9 +54,9 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta // 3) Remove colons which don't correspond to column names. // Split on whitespace - QString filter_text = filter_options.filter_text().replace(QRegularExpression(":\\s+"), ":"); + QString filter_text = filter_options.filter_text().replace(QRegularExpression(QStringLiteral(":\\s+")), QStringLiteral(":")); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QStringList tokens(filter_text.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts)); + QStringList tokens(filter_text.split(QRegularExpression(QStringLiteral("\\s+")), Qt::SkipEmptyParts)); #else QStringList tokens(filter_text.split(QRegularExpression("\\s+"), QString::SkipEmptyParts)); #endif @@ -69,7 +69,7 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta if (token.contains(':')) { const QString columntoken = token.section(':', 0, 0); - QString subtoken = token.section(':', 1, -1).replace(":", " ").trimmed(); + QString subtoken = token.section(':', 1, -1).replace(QLatin1String(":"), QLatin1String(" ")).trimmed(); if (subtoken.isEmpty()) continue; if (Song::kFtsColumns.contains("fts" + columntoken, Qt::CaseInsensitive)) { if (!query.isEmpty()) query.append(" "); @@ -77,10 +77,10 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta } else if (Song::kNumericalColumns.contains(columntoken, Qt::CaseInsensitive)) { QString comparator = RemoveSqlOperator(subtoken); - if (columntoken.compare("rating", Qt::CaseInsensitive) == 0) { + if (columntoken.compare(QLatin1String("rating"), Qt::CaseInsensitive) == 0) { AddWhereRating(subtoken, comparator); } - else if (columntoken.compare("length", Qt::CaseInsensitive) == 0) { + else if (columntoken.compare(QLatin1String("length"), Qt::CaseInsensitive) == 0) { // Time is saved in nanoseconds, so add 9 0's QString parsedTime = QString::number(Utilities::ParseSearchTime(subtoken)) + "000000000"; AddWhere(columntoken, parsedTime, comparator); @@ -91,7 +91,7 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta } // Not a valid filter, remove else { - token = token.replace(":", " ").trimmed(); + token = token.replace(QLatin1String(":"), QLatin1String(" ")).trimmed(); if (!token.isEmpty()) { if (!query.isEmpty()) query.append(" "); query += "\"" + token + "\"*"; @@ -104,7 +104,7 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta } } if (!query.isEmpty()) { - where_clauses_ << "fts.%fts_table_noprefix MATCH ?"; + where_clauses_ << QStringLiteral("fts.%fts_table_noprefix MATCH ?"); bound_values_ << query; join_with_fts_ = true; } @@ -113,7 +113,7 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta if (filter_options.max_age() != -1) { qint64 cutoff = QDateTime::currentDateTime().toSecsSinceEpoch() - filter_options.max_age(); - where_clauses_ << "ctime > ?"; + where_clauses_ << QStringLiteral("ctime > ?"); bound_values_ << cutoff; } @@ -126,15 +126,15 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta duplicates_only_ = filter_options.filter_mode() == CollectionFilterOptions::FilterMode::Duplicates; if (filter_options.filter_mode() == CollectionFilterOptions::FilterMode::Untagged) { - where_clauses_ << "(artist = '' OR album = '' OR title ='')"; + where_clauses_ << QStringLiteral("(artist = '' OR album = '' OR title ='')"); } } QString CollectionQuery::RemoveSqlOperator(QString &token) { - QString op = "="; - static QRegularExpression rxOp("^(=|<[>=]?|>=?|!=)"); + QString op = QStringLiteral("="); + static QRegularExpression rxOp(QStringLiteral("^(=|<[>=]?|>=?|!=)")); QRegularExpressionMatch match = rxOp.match(token); if (match.hasMatch()) { op = match.captured(0); @@ -142,7 +142,7 @@ QString CollectionQuery::RemoveSqlOperator(QString &token) { token.remove(rxOp); if (op == "!=") { - op = "<>"; + op = QStringLiteral("<>"); } return op; @@ -152,16 +152,16 @@ QString CollectionQuery::RemoveSqlOperator(QString &token) { void CollectionQuery::AddWhere(const QString &column, const QVariant &value, const QString &op) { // Ignore 'literal' for IN - if (op.compare("IN", Qt::CaseInsensitive) == 0) { + if (op.compare(QLatin1String("IN"), Qt::CaseInsensitive) == 0) { QStringList values = value.toStringList(); QStringList final_values; final_values.reserve(values.count()); for (const QString &single_value : values) { - final_values.append("?"); + final_values.append(QStringLiteral("?")); bound_values_ << single_value; } - where_clauses_ << QString("%1 IN (" + final_values.join(",") + ")").arg(column); + where_clauses_ << QString("%1 IN (" + final_values.join(QStringLiteral(",")) + ")").arg(column); } else { // Do integers inline - sqlite seems to get confused when you pass integers to bound parameters @@ -170,7 +170,7 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con #else if (value.type() == QVariant::Int) { #endif - where_clauses_ << QString("%1 %2 %3").arg(column, op, value.toString()); + where_clauses_ << QStringLiteral("%1 %2 %3").arg(column, op, value.toString()); } else if ( #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) @@ -179,11 +179,11 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con value.type() == QVariant::String #endif && value.toString().isNull()) { - where_clauses_ << QString("%1 %2 ?").arg(column, op); - bound_values_ << QString(""); + where_clauses_ << QStringLiteral("%1 %2 ?").arg(column, op); + bound_values_ << QLatin1String(""); } else { - where_clauses_ << QString("%1 %2 ?").arg(column, op); + where_clauses_ << QStringLiteral("%1 %2 ?").arg(column, op); bound_values_ << value; } } @@ -192,7 +192,7 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con void CollectionQuery::AddWhereArtist(const QVariant &value) { - where_clauses_ << QString("((artist = ? AND albumartist = '') OR albumartist = ?)"); + where_clauses_ << QStringLiteral("((artist = ? AND albumartist = '') OR albumartist = ?)"); bound_values_ << value; bound_values_ << value; @@ -206,25 +206,25 @@ void CollectionQuery::AddWhereRating(const QVariant &value, const QString &op) { // So we have to use a certain tolerance, so that the searched value is definetly included. const float tolerance = 0.001F; if (op == "<") { - AddWhere("rating", parsed_rating-tolerance, "<"); + AddWhere(QStringLiteral("rating"), parsed_rating-tolerance, QStringLiteral("<")); } else if (op == ">") { - AddWhere("rating", parsed_rating+tolerance, ">"); + AddWhere(QStringLiteral("rating"), parsed_rating+tolerance, QStringLiteral(">")); } else if (op == "<=") { - AddWhere("rating", parsed_rating+tolerance, "<="); + AddWhere(QStringLiteral("rating"), parsed_rating+tolerance, QStringLiteral("<=")); } else if (op == ">=") { - AddWhere("rating", parsed_rating-tolerance, ">="); + AddWhere(QStringLiteral("rating"), parsed_rating-tolerance, QStringLiteral(">=")); } else if (op == "<>") { - where_clauses_ << QString("(rating?)"); + where_clauses_ << QStringLiteral("(rating?)"); bound_values_ << parsed_rating - tolerance; bound_values_ << parsed_rating + tolerance; } else /* (op == "=") */ { - AddWhere("rating", parsed_rating+tolerance, "<"); - AddWhere("rating", parsed_rating-tolerance, ">"); + AddWhere(QStringLiteral("rating"), parsed_rating+tolerance, QStringLiteral("<")); + AddWhere(QStringLiteral("rating"), parsed_rating-tolerance, QStringLiteral(">")); } } @@ -233,7 +233,7 @@ void CollectionQuery::AddCompilationRequirement(const bool compilation) { // The unary + is added to prevent sqlite from using the index idx_comp_artist. // When joining with fts, sqlite 3.8 has a tendency to use this index and thereby nesting the tables in an order which gives very poor performance - where_clauses_ << QString("+compilation_effective = %1").arg(compilation ? 1 : 0); + where_clauses_ << QStringLiteral("+compilation_effective = %1").arg(compilation ? 1 : 0); } @@ -251,26 +251,26 @@ bool CollectionQuery::Exec() { QString sql; if (join_with_fts_) { - sql = QString("SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID").arg(column_spec_, songs_table_, fts_table_); + sql = QStringLiteral("SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID").arg(column_spec_, songs_table_, fts_table_); } else { - sql = QString("SELECT %1 FROM %2 %3").arg(column_spec_, songs_table_, GetInnerQuery()); + sql = QStringLiteral("SELECT %1 FROM %2 %3").arg(column_spec_, songs_table_, GetInnerQuery()); } QStringList where_clauses(where_clauses_); if (!include_unavailable_) { - where_clauses << "unavailable = 0"; + where_clauses << QStringLiteral("unavailable = 0"); } - if (!where_clauses.isEmpty()) sql += " WHERE " + where_clauses.join(" AND "); + if (!where_clauses.isEmpty()) sql += " WHERE " + where_clauses.join(QStringLiteral(" AND ")); if (!order_by_.isEmpty()) sql += " ORDER BY " + order_by_; if (limit_ != -1) sql += " LIMIT " + QString::number(limit_); - sql.replace("%songs_table", songs_table_); - sql.replace("%fts_table_noprefix", fts_table_.section('.', -1, -1)); - sql.replace("%fts_table", fts_table_); + sql.replace(QLatin1String("%songs_table"), songs_table_); + sql.replace(QLatin1String("%fts_table_noprefix"), fts_table_.section('.', -1, -1)); + sql.replace(QLatin1String("%fts_table"), fts_table_); if (!QSqlQuery::prepare(sql)) return false; diff --git a/src/collection/collectionquery.h b/src/collection/collectionquery.h index 0121bdd8..c8952706 100644 --- a/src/collection/collectionquery.h +++ b/src/collection/collectionquery.h @@ -67,9 +67,9 @@ class CollectionQuery : public QSqlQuery { QString RemoveSqlOperator(QString &token); // Adds a fragment of WHERE clause. When executed, this Query will connect all the fragments with AND operator. // Please note that IN operator expects a QStringList as value. - void AddWhere(const QString &column, const QVariant &value, const QString &op = "="); + void AddWhere(const QString &column, const QVariant &value, const QString &op = QStringLiteral("=")); void AddWhereArtist(const QVariant &value); - void AddWhereRating(const QVariant &value, const QString &op = "="); + void AddWhereRating(const QVariant &value, const QString &op = QStringLiteral("=")); void SetBoundValues(const QVariantList &bound_values) { bound_values_ = bound_values; } void SetDuplicatesOnly(const bool duplicates_only) { duplicates_only_ = duplicates_only; } diff --git a/src/collection/collectionqueryoptions.h b/src/collection/collectionqueryoptions.h index 785315ff..33764b9e 100644 --- a/src/collection/collectionqueryoptions.h +++ b/src/collection/collectionqueryoptions.h @@ -51,7 +51,7 @@ class CollectionQueryOptions { void set_query_have_compilations(const bool query_have_compilations) { query_have_compilations_ = query_have_compilations; } QList where_clauses() const { return where_clauses_; } - void AddWhere(const QString &column, const QVariant &value, const QString &op = "="); + void AddWhere(const QString &column, const QVariant &value, const QString &op = QStringLiteral("=")); private: QString column_spec_; diff --git a/src/collection/collectionview.cpp b/src/collection/collectionview.cpp index f64f33b9..0b438dc3 100644 --- a/src/collection/collectionview.cpp +++ b/src/collection/collectionview.cpp @@ -80,7 +80,7 @@ CollectionView::CollectionView(QWidget *parent) total_song_count_(-1), total_artist_count_(-1), total_album_count_(-1), - nomusic_(":/pictures/nomusic.png"), + nomusic_(QStringLiteral(":/pictures/nomusic.png")), context_menu_(nullptr), action_load_(nullptr), action_add_to_playlist_(nullptr), @@ -109,7 +109,7 @@ CollectionView::CollectionView(QWidget *parent) setDragDropMode(QAbstractItemView::DragOnly); setSelectionMode(QAbstractItemView::ExtendedSelection); - setStyleSheet("QTreeView::item{padding-top:1px;}"); + setStyleSheet(QStringLiteral("QTreeView::item{padding-top:1px;}")); } @@ -364,29 +364,29 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) { if (!context_menu_) { context_menu_ = new QMenu(this); - action_add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &CollectionView::AddToPlaylist); - action_load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &CollectionView::Load); - action_open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &CollectionView::OpenInNewPlaylist); + 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); context_menu_->addSeparator(); - action_add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, &CollectionView::AddToPlaylistEnqueue); - action_add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue to play next"), this, &CollectionView::AddToPlaylistEnqueueNext); + 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); context_menu_->addSeparator(); - action_search_for_this_ = context_menu_->addAction(IconLoader::Load("edit-find"), tr("Search for this"), this, &CollectionView::SearchForThis); + action_search_for_this_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-find")), tr("Search for this"), this, &CollectionView::SearchForThis); context_menu_->addSeparator(); - action_organize_ = context_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organize files..."), this, &CollectionView::Organize); + action_organize_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Organize files..."), this, &CollectionView::Organize); #ifndef Q_OS_WIN - action_copy_to_device_ = context_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, &CollectionView::CopyToDevice); + action_copy_to_device_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("device")), tr("Copy to device..."), this, &CollectionView::CopyToDevice); #endif - action_delete_files_ = context_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, &CollectionView::Delete); + action_delete_files_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from disk..."), this, &CollectionView::Delete); context_menu_->addSeparator(); - action_edit_track_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit track information..."), this, &CollectionView::EditTracks); - action_edit_tracks_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit tracks information..."), this, &CollectionView::EditTracks); - action_show_in_browser_ = context_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, &CollectionView::ShowInBrowser); + 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); context_menu_->addSeparator(); @@ -582,7 +582,7 @@ void CollectionView::SearchForThis() { if (!songs.isEmpty()) { last_selected_song_ = songs.last(); } - search = QString("title:%1").arg(last_selected_song_.title()); + search = QStringLiteral("title:%1").arg(last_selected_song_.title()); break; } @@ -598,53 +598,53 @@ void CollectionView::SearchForThis() { switch (container_group_by) { case CollectionModel::GroupBy::AlbumArtist: - search = QString("albumartist:%1").arg(item->metadata.effective_albumartist()); + search = QStringLiteral("albumartist:%1").arg(item->metadata.effective_albumartist()); break; case CollectionModel::GroupBy::Artist: - search = QString("artist:%1").arg(item->metadata.artist()); + search = QStringLiteral("artist:%1").arg(item->metadata.artist()); break; case CollectionModel::GroupBy::Album: - search = QString("album:%1").arg(item->metadata.album()); + search = QStringLiteral("album:%1").arg(item->metadata.album()); break; case CollectionModel::GroupBy::AlbumDisc: - search = QString("album:%1").arg(item->metadata.album()); + search = QStringLiteral("album:%1").arg(item->metadata.album()); break; case CollectionModel::GroupBy::YearAlbum: case CollectionModel::GroupBy::YearAlbumDisc:{ - search = QString("year:%1 album:%2").arg(item->metadata.year()).arg(item->metadata.album()); + search = QStringLiteral("year:%1 album:%2").arg(item->metadata.year()).arg(item->metadata.album()); break; } case CollectionModel::GroupBy::OriginalYearAlbum: case CollectionModel::GroupBy::OriginalYearAlbumDisc:{ - search = QString("year:%1 album:%2").arg(item->metadata.effective_originalyear()).arg(item->metadata.album()); + search = QStringLiteral("year:%1 album:%2").arg(item->metadata.effective_originalyear()).arg(item->metadata.album()); break; } case CollectionModel::GroupBy::Year: - search = QString("year:%1").arg(item->metadata.year()); + search = QStringLiteral("year:%1").arg(item->metadata.year()); break; case CollectionModel::GroupBy::OriginalYear: - search = QString("year:%1").arg(item->metadata.effective_originalyear()); + search = QStringLiteral("year:%1").arg(item->metadata.effective_originalyear()); break; case CollectionModel::GroupBy::Genre: - search = QString("genre:%1").arg(item->metadata.genre()); + search = QStringLiteral("genre:%1").arg(item->metadata.genre()); break; case CollectionModel::GroupBy::Composer: - search = QString("composer:%1").arg(item->metadata.composer()); + search = QStringLiteral("composer:%1").arg(item->metadata.composer()); break; case CollectionModel::GroupBy::Performer: - search = QString("performer:%1").arg(item->metadata.performer()); + search = QStringLiteral("performer:%1").arg(item->metadata.performer()); break; case CollectionModel::GroupBy::Grouping: - search = QString("grouping:%1").arg(item->metadata.grouping()); + search = QStringLiteral("grouping:%1").arg(item->metadata.grouping()); break; case CollectionModel::GroupBy::Samplerate: - search = QString("samplerate:%1").arg(item->metadata.samplerate()); + search = QStringLiteral("samplerate:%1").arg(item->metadata.samplerate()); break; case CollectionModel::GroupBy::Bitdepth: - search = QString("bitdepth:%1").arg(item->metadata.bitdepth()); + search = QStringLiteral("bitdepth:%1").arg(item->metadata.bitdepth()); break; case CollectionModel::GroupBy::Bitrate: - search = QString("bitrate:%1").arg(item->metadata.bitrate()); + search = QStringLiteral("bitrate:%1").arg(item->metadata.bitrate()); break; default: search = model()->data(current, Qt::DisplayRole).toString(); diff --git a/src/collection/collectionwatcher.cpp b/src/collection/collectionwatcher.cpp index 34cf221d..86310bf8 100644 --- a/src/collection/collectionwatcher.cpp +++ b/src/collection/collectionwatcher.cpp @@ -70,8 +70,8 @@ using namespace std::chrono_literals; -QStringList CollectionWatcher::sValidImages = QStringList() << "jpg" << "png" << "gif" << "jpeg"; -QStringList CollectionWatcher::kIgnoredExtensions = QStringList() << "tmp" << "tar" << "gz" << "bz2" << "xz" << "tbz" << "tgz" << "z" << "zip" << "rar"; +QStringList CollectionWatcher::sValidImages = QStringList() << QStringLiteral("jpg") << QStringLiteral("png") << QStringLiteral("gif") << QStringLiteral("jpeg"); +QStringList CollectionWatcher::kIgnoredExtensions = QStringList() << QStringLiteral("tmp") << QStringLiteral("tar") << QStringLiteral("gz") << QStringLiteral("bz2") << QStringLiteral("xz") << QStringLiteral("tbz") << QStringLiteral("tgz") << QStringLiteral("z") << QStringLiteral("zip") << QStringLiteral("rar"); CollectionWatcher::CollectionWatcher(Song::Source source, QObject *parent) : QObject(parent), @@ -154,7 +154,7 @@ void CollectionWatcher::ReloadSettings() { s.beginGroup(CollectionSettingsPage::kSettingsGroup); scan_on_startup_ = s.value("startup_scan", true).toBool(); monitor_ = s.value("monitor", true).toBool(); - QStringList filters = s.value("cover_art_patterns", QStringList() << "front" << "cover").toStringList(); + QStringList filters = s.value("cover_art_patterns", QStringList() << QStringLiteral("front") << QStringLiteral("cover")).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(); @@ -612,7 +612,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu Chromaprinter chromaprinter(file); fingerprint = chromaprinter.CreateFingerprint(); if (fingerprint.isEmpty()) { - fingerprint = "NONE"; + fingerprint = QStringLiteral("NONE"); } } #endif @@ -639,7 +639,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu Chromaprinter chromaprinter(file); fingerprint = chromaprinter.CreateFingerprint(); if (fingerprint.isEmpty()) { - fingerprint = "NONE"; + fingerprint = QStringLiteral("NONE"); } } #endif @@ -892,50 +892,50 @@ void CollectionWatcher::AddChangedSong(const QString &file, const Song &matching } else { if (matching_song.url() != new_song.url()) { - changes << "file path"; + changes << QStringLiteral("file path"); notify_new = true; } if (matching_song.fingerprint() != new_song.fingerprint()) { - changes << "fingerprint"; + changes << QStringLiteral("fingerprint"); notify_new = true; } if (!matching_song.IsMetadataEqual(new_song)) { - changes << "metadata"; + changes << QStringLiteral("metadata"); notify_new = true; } if (!matching_song.IsPlayStatisticsEqual(new_song)) { - changes << "play statistics"; + changes << QStringLiteral("play statistics"); notify_new = true; } if (!matching_song.IsRatingEqual(new_song)) { - changes << "rating"; + changes << QStringLiteral("rating"); notify_new = true; } if (!matching_song.IsArtEqual(new_song)) { - changes << "album art"; + changes << QStringLiteral("album art"); notify_new = true; } if (!matching_song.IsAcoustIdEqual(new_song)) { - changes << "acoustid"; + changes << QStringLiteral("acoustid"); notify_new = true; } if (!matching_song.IsMusicBrainzEqual(new_song)) { - changes << "musicbrainz"; + changes << QStringLiteral("musicbrainz"); notify_new = true; } if (!matching_song.IsEBUR128Equal(new_song)) { - changes << "ebur128 loudness characteristics"; + changes << QStringLiteral("ebur128 loudness characteristics"); notify_new = true; } if (matching_song.mtime() != new_song.mtime()) { - changes << "mtime"; + changes << QStringLiteral("mtime"); } if (changes.isEmpty()) { qLog(Debug) << "Song" << file << "unchanged."; } else { - qLog(Debug) << "Song" << file << changes.join(", ") << "changed."; + qLog(Debug) << "Song" << file << changes.join(QStringLiteral(", ")) << "changed."; } } diff --git a/src/collection/collectionwatcher.h b/src/collection/collectionwatcher.h index f3d07091..4b1c0a01 100644 --- a/src/collection/collectionwatcher.h +++ b/src/collection/collectionwatcher.h @@ -252,11 +252,11 @@ class CollectionWatcher : public QObject { }; inline QString CollectionWatcher::NoExtensionPart(const QString &fileName) { - return fileName.contains('.') ? fileName.section('.', 0, -2) : ""; + return fileName.contains('.') ? fileName.section('.', 0, -2) : QLatin1String(""); } // Thanks Amarok inline QString CollectionWatcher::ExtensionPart(const QString &fileName) { - return fileName.contains( '.' ) ? fileName.mid( fileName.lastIndexOf('.') + 1 ).toLower() : ""; + return fileName.contains( '.' ) ? fileName.mid( fileName.lastIndexOf('.') + 1 ).toLower() : QLatin1String(""); } inline QString CollectionWatcher::DirectoryPart(const QString &fileName) { return fileName.section('/', 0, -2); diff --git a/src/collection/savedgroupingmanager.cpp b/src/collection/savedgroupingmanager.cpp index c553dd56..c58b7643 100644 --- a/src/collection/savedgroupingmanager.cpp +++ b/src/collection/savedgroupingmanager.cpp @@ -56,7 +56,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("edit-delete")); + ui_->remove->setIcon(IconLoader::Load(QStringLiteral("edit-delete"))); ui_->remove->setEnabled(false); ui_->remove->setShortcut(QKeySequence::Delete); diff --git a/src/context/contextalbum.cpp b/src/context/contextalbum.cpp index 7e4b080c..bb718a22 100644 --- a/src/context/contextalbum.cpp +++ b/src/context/contextalbum.cpp @@ -56,7 +56,7 @@ ContextAlbum::ContextAlbum(QWidget *parent) album_cover_choice_controller_(nullptr), downloading_covers_(false), timeline_fade_(new QTimeLine(kFadeTimeLineMs, this)), - image_strawberry_(":/pictures/strawberry.png"), + image_strawberry_(QStringLiteral(":/pictures/strawberry.png")), image_original_(image_strawberry_), pixmap_current_opacity_(1.0), desired_height_(width()) { diff --git a/src/context/contextview.cpp b/src/context/contextview.cpp index 7a946b4a..48d40d5b 100644 --- a/src/context/contextview.cpp +++ b/src/context/contextview.cpp @@ -409,15 +409,15 @@ void ContextView::NoSong() { QString html; if (collectionview_->TotalSongs() == 1) html += tr("%1 song").arg(collectionview_->TotalSongs()); else html += tr("%1 songs").arg(collectionview_->TotalSongs()); - html += "
"; + html += QLatin1String("
"); if (collectionview_->TotalArtists() == 1) html += tr("%1 artist").arg(collectionview_->TotalArtists()); else html += tr("%1 artists").arg(collectionview_->TotalArtists()); - html += "
"; + html += QLatin1String("
"); if (collectionview_->TotalAlbums() == 1) html += tr("%1 album").arg(collectionview_->TotalAlbums()); else html += tr("%1 albums").arg(collectionview_->TotalAlbums()); - html += "
"; + html += QLatin1String("
"); label_stop_summary_->setFont(font_normal_); label_stop_summary_->setText(html); @@ -438,7 +438,7 @@ void ContextView::UpdateFonts() { void ContextView::SetSong() { textedit_top_->setFont(font_headline_); - textedit_top_->SetText(QString("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song_playing_, "
", true), Utilities::ReplaceMessage(summary_fmt_, song_playing_, "
", true))); + textedit_top_->SetText(QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song_playing_, QStringLiteral("
"), true), Utilities::ReplaceMessage(summary_fmt_, song_playing_, QStringLiteral("
"), true))); label_stop_summary_->clear(); @@ -474,7 +474,7 @@ void ContextView::SetSong() { else { label_samplerate_title_->show(); label_samplerate_->show(); - SetLabelText(label_samplerate_, song_playing_.samplerate(), "Hz"); + SetLabelText(label_samplerate_, song_playing_.samplerate(), QStringLiteral("Hz")); } if (song_playing_.bitdepth() <= 0) { label_bitdepth_title_->hide(); @@ -484,7 +484,7 @@ void ContextView::SetSong() { else { label_bitdepth_title_->show(); label_bitdepth_->show(); - SetLabelText(label_bitdepth_, song_playing_.bitdepth(), "Bit"); + SetLabelText(label_bitdepth_, song_playing_.bitdepth(), QStringLiteral("Bit")); } if (song_playing_.bitrate() <= 0) { label_bitrate_title_->hide(); @@ -546,7 +546,7 @@ void ContextView::SetSong() { void ContextView::UpdateSong(const Song &song) { - textedit_top_->SetText(QString("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song, "
", true), Utilities::ReplaceMessage(summary_fmt_, song, "
", true))); + textedit_top_->SetText(QStringLiteral("%1
%2").arg(Utilities::ReplaceMessage(title_fmt_, song, QStringLiteral("
"), true), Utilities::ReplaceMessage(summary_fmt_, song, QStringLiteral("
"), true))); if (action_show_data_->isChecked()) { if (song.filetype() != song_playing_.filetype()) label_filetype_->setText(song.TextForFiletype()); @@ -571,7 +571,7 @@ void ContextView::UpdateSong(const Song &song) { else { label_samplerate_title_->show(); label_samplerate_->show(); - SetLabelText(label_samplerate_, song.samplerate(), "Hz"); + SetLabelText(label_samplerate_, song.samplerate(), QStringLiteral("Hz")); } } if (song.bitdepth() != song_playing_.bitdepth()) { @@ -583,7 +583,7 @@ void ContextView::UpdateSong(const Song &song) { else { label_bitdepth_title_->show(); label_bitdepth_->show(); - SetLabelText(label_bitdepth_, song.bitdepth(), "Bit"); + SetLabelText(label_bitdepth_, song.bitdepth(), QStringLiteral("Bit")); } } if (song.bitrate() != song_playing_.bitrate()) { @@ -632,7 +632,7 @@ void ContextView::UpdateLyrics(const quint64 id, const QString &provider, const if (static_cast(id) != lyrics_id_) return; if (lyrics.isEmpty()) { - lyrics_ = "No lyrics found.\n"; + lyrics_ = QStringLiteral("No lyrics found.\n"); } else { lyrics_ = lyrics + "\n\n(Lyrics from " + provider + ")\n"; diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index ef62d84c..9c995f7a 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -112,7 +112,7 @@ CommandlineOptions::CommandlineOptions(int argc, char **argv) #endif // Remove the -session option that KDE passes - RemoveArg("-session", 2); + RemoveArg(QStringLiteral("-session"), 2); } @@ -301,16 +301,16 @@ bool CommandlineOptions::Parse() { volume_modifier_ = -4; break; case LongOptions::Quiet: - log_levels_ = "1"; + log_levels_ = QStringLiteral("1"); break; case LongOptions::Verbose: - log_levels_ = "3"; + log_levels_ = QStringLiteral("3"); break; case LongOptions::LogLevels: log_levels_ = OptArgToString(optarg); break; case LongOptions::Version: { - QString version_text = QString(kVersionText).arg(STRAWBERRY_VERSION_DISPLAY); + QString version_text = QString::fromUtf8(kVersionText).arg(QStringLiteral(STRAWBERRY_VERSION_DISPLAY)); std::cout << version_text.toLocal8Bit().constData() << std::endl; std::exit(0); } diff --git a/src/core/database.cpp b/src/core/database.cpp index 3797a871..8e42214a 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -114,7 +114,7 @@ QSqlDatabase Database::Connect() { } } - const QString connection_id = QString("%1_thread_%2").arg(connection_id_).arg(reinterpret_cast(QThread::currentThread())); + const QString connection_id = QStringLiteral("%1_thread_%2").arg(connection_id_).arg(reinterpret_cast(QThread::currentThread())); // Try to find an existing connection for this thread QSqlDatabase db; @@ -122,12 +122,12 @@ QSqlDatabase Database::Connect() { db = QSqlDatabase::database(connection_id); } else { - db = QSqlDatabase::addDatabase("QSQLITE", connection_id); + db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), connection_id); } if (db.isOpen()) { return db; } - db.setConnectOptions("QSQLITE_BUSY_TIMEOUT=30000"); + db.setConnectOptions(QStringLiteral("QSQLITE_BUSY_TIMEOUT=30000")); //qLog(Debug) << "Opened database with connection id" << connection_id; if (injected_database_name_.isNull()) { @@ -161,9 +161,9 @@ QSqlDatabase Database::Connect() { // Attach the db SqlQuery q(db); - q.prepare("ATTACH DATABASE :filename AS :alias"); - q.BindValue(":filename", filename); - q.BindValue(":alias", key); + q.prepare(QStringLiteral("ATTACH DATABASE :filename AS :alias")); + q.BindValue(QStringLiteral(":filename"), filename); + q.BindValue(QStringLiteral(":alias"), key); if (!q.Exec()) { qFatal("Couldn't attach external database '%s'", key.toLatin1().constData()); } @@ -181,7 +181,7 @@ QSqlDatabase Database::Connect() { } // Find out if there are any tables in this database SqlQuery q(db); - q.prepare(QString("SELECT ROWID FROM %1.sqlite_master WHERE type='table'").arg(key)); + q.prepare(QStringLiteral("SELECT ROWID FROM %1.sqlite_master WHERE type='table'").arg(key)); if (!q.Exec() || !q.next()) { q.finish(); ExecSchemaCommandsFromFile(db, attached_databases_[key].schema_, 0); @@ -196,7 +196,7 @@ void Database::Close() { QMutexLocker l(&connect_mutex_); - const QString connection_id = QString("%1_thread_%2").arg(connection_id_).arg(reinterpret_cast(QThread::currentThread())); + const QString connection_id = QStringLiteral("%1_thread_%2").arg(connection_id_).arg(reinterpret_cast(QThread::currentThread())); // Try to find an existing connection for this thread if (QSqlDatabase::connectionNames().contains(connection_id)) { @@ -218,7 +218,7 @@ int Database::SchemaVersion(QSqlDatabase *db) { int schema_version = 0; { SqlQuery q(*db); - q.prepare("SELECT version FROM schema_version"); + q.prepare(QStringLiteral("SELECT version FROM schema_version")); if (q.Exec() && q.next()) { schema_version = q.value(0).toInt(); } @@ -259,8 +259,8 @@ void Database::RecreateAttachedDb(const QString &database_name) { QSqlDatabase db(Connect()); SqlQuery q(db); - q.prepare("DETACH DATABASE :alias"); - q.BindValue(":alias", database_name); + q.prepare(QStringLiteral("DETACH DATABASE :alias")); + q.BindValue(QStringLiteral(":alias"), database_name); if (!q.Exec()) { qLog(Warning) << "Failed to detach database" << database_name; return; @@ -289,9 +289,9 @@ void Database::AttachDatabaseOnDbConnection(const QString &database_name, const // Attach the db SqlQuery q(db); - q.prepare("ATTACH DATABASE :filename AS :alias"); - q.BindValue(":filename", database.filename_); - q.BindValue(":alias", database_name); + q.prepare(QStringLiteral("ATTACH DATABASE :filename AS :alias")); + q.BindValue(QStringLiteral(":filename"), database.filename_); + q.BindValue(QStringLiteral(":alias"), database_name); if (!q.Exec()) { qFatal("Couldn't attach external database '%s'", database_name.toLatin1().constData()); } @@ -305,8 +305,8 @@ void Database::DetachDatabase(const QString &database_name) { QSqlDatabase db(Connect()); SqlQuery q(db); - q.prepare("DETACH DATABASE :alias"); - q.BindValue(":alias", database_name); + q.prepare(QStringLiteral("DETACH DATABASE :alias")); + q.BindValue(QStringLiteral(":alias"), database_name); if (!q.Exec()) { qLog(Warning) << "Failed to detach database" << database_name; return; @@ -321,10 +321,10 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { QString filename; if (version == 0) { - filename = ":/schema/schema.sql"; + filename = QStringLiteral(":/schema/schema.sql"); } else { - filename = QString(":/schema/schema-%1.sql").arg(version); + filename = QStringLiteral(":/schema/schema-%1.sql").arg(version); qLog(Debug) << "Applying database schema update" << version << "from" << filename; } @@ -335,9 +335,9 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { void Database::UrlEncodeFilenameColumn(const QString &table, QSqlDatabase &db) { SqlQuery select(db); - select.prepare(QString("SELECT ROWID, filename FROM %1").arg(table)); + select.prepare(QStringLiteral("SELECT ROWID, filename FROM %1").arg(table)); SqlQuery update(db); - update.prepare(QString("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table)); + update.prepare(QStringLiteral("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table)); if (!select.Exec()) { ReportErrors(select); } @@ -346,14 +346,14 @@ void Database::UrlEncodeFilenameColumn(const QString &table, QSqlDatabase &db) { const int rowid = select.value(0).toInt(); const QString filename = select.value(1).toString(); - if (filename.isEmpty() || filename.contains("://")) { + if (filename.isEmpty() || filename.contains(QLatin1String("://"))) { continue; } const QUrl url = QUrl::fromLocalFile(filename); - update.BindValue(":filename", url.toEncoded()); - update.BindValue(":id", rowid); + update.BindValue(QStringLiteral(":filename"), url.toEncoded()); + update.BindValue(QStringLiteral(":id"), rowid); if (!update.Exec()) { ReportErrors(update); } @@ -370,8 +370,8 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase &db, const QString &filen } QByteArray data = schema_file.readAll(); QString schema = QString::fromUtf8(data); - if (schema.contains("\r\n")) { - schema = schema.replace("\r\n", "\n"); + if (schema.contains(QLatin1String("\r\n"))) { + schema = schema.replace(QLatin1String("\r\n"), QLatin1String("\n")); } schema_file.close(); ExecSchemaCommands(db, schema, schema_version, in_transaction); @@ -382,7 +382,7 @@ void Database::ExecSchemaCommands(QSqlDatabase &db, const QString &schema, int s // Run each command QStringList commands; - commands = schema.split(QRegularExpression("; *\n\n")); + commands = schema.split(QRegularExpression(QStringLiteral("; *\n\n"))); // We don't want this list to reflect possible DB schema changes, so we initialize it before executing any statements. // If no outer transaction is provided the song tables need to be queried before beginning an inner transaction! @@ -408,7 +408,7 @@ void Database::ExecSongTablesCommands(QSqlDatabase &db, const QStringList &song_ if (command.contains(kMagicAllSongsTables)) { for (const QString &table : song_tables) { // Another horrible hack: device songs tables don't have matching _fts tables, so if this command tries to touch one, ignore it. - if (table.startsWith("device_") && command.contains(QString(kMagicAllSongsTables) + "_fts")) { + if (table.startsWith(QLatin1String("device_")) && command.contains(QString(kMagicAllSongsTables) + "_fts")) { continue; } @@ -443,14 +443,14 @@ QStringList Database::SongsTables(QSqlDatabase &db, const int schema_version) { // look for the tables in the main db for (const QString &table : db.tables()) { - if (table == "songs" || table.endsWith("_songs")) ret << table; + if (table == "songs" || table.endsWith(QLatin1String("_songs"))) ret << table; } // look for the tables in attached dbs QStringList keys = attached_databases_.keys(); for (const QString &key : keys) { SqlQuery q(db); - q.prepare(QString("SELECT NAME FROM %1.sqlite_master WHERE type='table' AND name='songs' OR name LIKE '%songs'").arg(key)); + q.prepare(QStringLiteral("SELECT NAME FROM %1.sqlite_master WHERE type='table' AND name='songs' OR name LIKE '%songs'").arg(key)); if (q.Exec()) { while (q.next()) { QString tab_name = key + "." + q.value(0).toString(); @@ -462,7 +462,7 @@ QStringList Database::SongsTables(QSqlDatabase &db, const int schema_version) { } } - ret << "playlist_items"; + ret << QStringLiteral("playlist_items"); return ret; @@ -488,7 +488,7 @@ bool Database::IntegrityCheck(const QSqlDatabase &db) { bool ok = false; // Ask for 10 error messages at most. SqlQuery q(db); - q.prepare("PRAGMA integrity_check(10)"); + q.prepare(QStringLiteral("PRAGMA integrity_check(10)")); if (q.Exec()) { bool error_reported = false; while (q.next()) { @@ -553,7 +553,7 @@ bool Database::OpenDatabase(const QString &filename, sqlite3 **connection) { void Database::BackupFile(const QString &filename) { qLog(Debug) << "Starting database backup"; - QString dest_filename = QString("%1.bak").arg(filename); + QString dest_filename = QStringLiteral("%1.bak").arg(filename); const int task_id = app_->task_manager()->StartTask(tr("Backing up database")); sqlite3 *source_connection = nullptr; diff --git a/src/core/database.h b/src/core/database.h index 4ea1b15e..4cd0ec80 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -148,7 +148,7 @@ class MemoryDatabase : public Database { public: explicit MemoryDatabase(Application *app, QObject *parent = nullptr) - : Database(app, parent, ":memory:") {} + : Database(app, parent, QStringLiteral(":memory:")) {} ~MemoryDatabase() override { // Make sure Qt doesn't reuse the same database QSqlDatabase::removeDatabase(Connect().connectionName()); diff --git a/src/core/iconloader.cpp b/src/core/iconloader.cpp index f1cbed86..4a2c2ec3 100644 --- a/src/core/iconloader.cpp +++ b/src/core/iconloader.cpp @@ -127,7 +127,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(":/icons/%1x%2/%3.png"); + const QString path(QStringLiteral(":/icons/%1x%2/%3.png")); for (int s : 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/mainwindow.cpp b/src/core/mainwindow.cpp index 027532be..49d9e58d 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -363,7 +363,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Initialize the UI ui_->setupUi(this); - setWindowIcon(IconLoader::Load("strawberry")); + setWindowIcon(IconLoader::Load(QStringLiteral("strawberry"))); album_cover_choice_controller_->Init(app); @@ -375,24 +375,24 @@ 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_, "context", IconLoader::Load("strawberry", true, 0, 32), tr("Context")); - ui_->tabs->AddTab(collection_view_, "collection", IconLoader::Load("library-music", true, 0, 32), tr("Collection")); - ui_->tabs->AddTab(queue_view_, "queue", IconLoader::Load("footsteps", true, 0, 32), tr("Queue")); - ui_->tabs->AddTab(playlist_list_, "playlists", IconLoader::Load("view-media-playlist", true, 0, 32), tr("Playlists")); - ui_->tabs->AddTab(smartplaylists_view_, "smartplaylists", IconLoader::Load("view-media-playlist", true, 0, 32), tr("Smart playlists")); - ui_->tabs->AddTab(file_view_, "files", IconLoader::Load("document-open", true, 0, 32), tr("Files")); - ui_->tabs->AddTab(radio_view_, "radios", IconLoader::Load("radio", true, 0, 32), tr("Radios")); + 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")); #ifndef Q_OS_WIN - ui_->tabs->AddTab(device_view_, "devices", IconLoader::Load("device", true, 0, 32), tr("Devices")); + ui_->tabs->AddTab(device_view_, QStringLiteral("devices"), IconLoader::Load(QStringLiteral("device"), true, 0, 32), tr("Devices")); #endif #ifdef HAVE_SUBSONIC - ui_->tabs->AddTab(subsonic_view_, "subsonic", IconLoader::Load("subsonic", true, 0, 32), tr("Subsonic")); + ui_->tabs->AddTab(subsonic_view_, QStringLiteral("subsonic"), IconLoader::Load(QStringLiteral("subsonic"), true, 0, 32), tr("Subsonic")); #endif #ifdef HAVE_TIDAL - ui_->tabs->AddTab(tidal_view_, "tidal", IconLoader::Load("tidal", true, 0, 32), tr("Tidal")); + ui_->tabs->AddTab(tidal_view_, QStringLiteral("tidal"), IconLoader::Load(QStringLiteral("tidal"), true, 0, 32), tr("Tidal")); #endif #ifdef HAVE_QOBUZ - ui_->tabs->AddTab(qobuz_view_, "qobuz", IconLoader::Load("qobuz", true, 0, 32), tr("Qobuz")); + ui_->tabs->AddTab(qobuz_view_, QStringLiteral("qobuz"), IconLoader::Load(QStringLiteral("qobuz"), true, 0, 32), tr("Qobuz")); #endif // Add the playing widget to the fancy tab widget @@ -447,59 +447,59 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Help menu - ui_->action_about_strawberry->setIcon(IconLoader::Load("strawberry")); + ui_->action_about_strawberry->setIcon(IconLoader::Load(QStringLiteral("strawberry"))); ui_->action_about_qt->setIcon(QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png")); // Music menu - ui_->action_open_file->setIcon(IconLoader::Load("document-open")); - ui_->action_open_cd->setIcon(IconLoader::Load("media-optical")); - ui_->action_previous_track->setIcon(IconLoader::Load("media-skip-backward")); - ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start")); - ui_->action_stop->setIcon(IconLoader::Load("media-playback-stop")); - ui_->action_stop_after_this_track->setIcon(IconLoader::Load("media-playback-stop")); - ui_->action_next_track->setIcon(IconLoader::Load("media-skip-forward")); - ui_->action_quit->setIcon(IconLoader::Load("application-exit")); + 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"))); // Playlist - ui_->action_add_file->setIcon(IconLoader::Load("document-open")); - ui_->action_add_folder->setIcon(IconLoader::Load("document-open-folder")); - ui_->action_add_stream->setIcon(IconLoader::Load("document-open-remote")); - ui_->action_shuffle_mode->setIcon(IconLoader::Load("media-playlist-shuffle")); - ui_->action_repeat_mode->setIcon(IconLoader::Load("media-playlist-repeat")); - ui_->action_new_playlist->setIcon(IconLoader::Load("document-new")); - ui_->action_save_playlist->setIcon(IconLoader::Load("document-save")); - ui_->action_load_playlist->setIcon(IconLoader::Load("document-open")); - ui_->action_jump->setIcon(IconLoader::Load("go-jump")); - ui_->action_clear_playlist->setIcon(IconLoader::Load("edit-clear-list")); - ui_->action_shuffle->setIcon(IconLoader::Load("media-playlist-shuffle")); - ui_->action_remove_duplicates->setIcon(IconLoader::Load("list-remove")); - ui_->action_remove_unavailable->setIcon(IconLoader::Load("list-remove")); - ui_->action_remove_from_playlist->setIcon(IconLoader::Load("list-remove")); - ui_->action_save_all_playlists->setIcon(IconLoader::Load("document-save-all")); + 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"))); // Configure - ui_->action_cover_manager->setIcon(IconLoader::Load("document-download")); - ui_->action_edit_track->setIcon(IconLoader::Load("edit-rename")); - ui_->action_edit_value->setIcon(IconLoader::Load("edit-rename")); - ui_->action_selection_set_value->setIcon(IconLoader::Load("edit-rename")); - ui_->action_equalizer->setIcon(IconLoader::Load("equalizer")); - ui_->action_transcoder->setIcon(IconLoader::Load("tools-wizard")); - ui_->action_update_collection->setIcon(IconLoader::Load("view-refresh")); - ui_->action_full_collection_scan->setIcon(IconLoader::Load("view-refresh")); - ui_->action_abort_collection_scan->setIcon(IconLoader::Load("dialog-error")); - ui_->action_settings->setIcon(IconLoader::Load("configure")); - ui_->action_import_data_from_last_fm->setIcon(IconLoader::Load("scrobble")); - ui_->action_console->setIcon(IconLoader::Load("keyboard")); - ui_->action_toggle_show_sidebar->setIcon(IconLoader::Load("view-choose")); - ui_->action_auto_complete_tags->setIcon(IconLoader::Load("musicbrainz")); + 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_abort_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"))); // Scrobble - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load("scrobble-disabled")); - ui_->action_love->setIcon(IconLoader::Load("love")); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble-disabled"))); + ui_->action_love->setIcon(IconLoader::Load(QStringLiteral("love"))); // File view connections QObject::connect(file_view_, &FileView::AddToPlaylist, this, &MainWindow::AddToPlaylist); @@ -558,7 +558,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(ui_->action_abort_collection_scan, &QAction::triggered, &*app_->collection(), &SCollection::AbortScan); #if defined(HAVE_GSTREAMER) QObject::connect(ui_->action_add_files_to_transcoder, &QAction::triggered, this, &MainWindow::AddFilesToTranscoder); - ui_->action_add_files_to_transcoder->setIcon(IconLoader::Load("tools-wizard")); + ui_->action_add_files_to_transcoder->setIcon(IconLoader::Load(QStringLiteral("tools-wizard"))); #else ui_->action_add_files_to_transcoder->setDisabled(true); #endif @@ -568,8 +568,8 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS QObject::connect(&*app_->scrobbler(), &AudioScrobbler::ErrorMessage, this, &MainWindow::ShowErrorDialog); // Playlist view actions - ui_->action_next_playlist->setShortcuts(QList() << QKeySequence::fromString("Ctrl+Tab") << QKeySequence::fromString("Ctrl+PgDown")); - ui_->action_previous_playlist->setShortcuts(QList() << QKeySequence::fromString("Ctrl+Shift+Tab") << QKeySequence::fromString("Ctrl+PgUp")); + 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"))); // Actions for switching tabs will be global to the entire window, so adding them here addAction(ui_->action_next_playlist); @@ -688,7 +688,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("configure"), tr("Configure collection..."), this); + QAction *collection_config_action = new QAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure collection..."), this); QObject::connect(collection_config_action, &QAction::triggered, this, &MainWindow::ShowCollectionConfig); collection_view_->filter_widget()->SetSettingsGroup(CollectionSettingsPage::kSettingsGroup); collection_view_->filter_widget()->Init(app_->collection()->model()); @@ -731,14 +731,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("media-playback-stop"), tr("Stop after this track"), this, &MainWindow::PlaylistStopAfter); - playlist_queue_ = playlist_menu_->addAction(IconLoader::Load("go-next"), tr("Toggle queue status"), this, &MainWindow::PlaylistQueue); - playlist_queue_->setShortcut(QKeySequence("Ctrl+D")); + 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"))); ui_->playlist->addAction(playlist_queue_); - playlist_queue_play_next_ = playlist_menu_->addAction(IconLoader::Load("go-next"), tr("Queue selected tracks to play next"), this, &MainWindow::PlaylistQueuePlayNext); - playlist_queue_play_next_->setShortcut(QKeySequence("Ctrl+Shift+D")); + 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"))); ui_->playlist->addAction(playlist_queue_play_next_); - playlist_skip_ = playlist_menu_->addAction(IconLoader::Load("media-skip-forward"), tr("Toggle skip status"), this, &MainWindow::PlaylistSkip); + playlist_skip_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("media-skip-forward")), tr("Toggle skip status"), this, &MainWindow::PlaylistSkip); ui_->playlist->addAction(playlist_skip_); playlist_menu_->addSeparator(); @@ -751,22 +751,22 @@ 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("view-refresh"), tr("Rescan song(s)..."), this, &MainWindow::RescanSongs); + playlist_rescan_songs_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("view-refresh")), tr("Rescan song(s)..."), this, &MainWindow::RescanSongs); playlist_menu_->addAction(playlist_rescan_songs_); #ifdef HAVE_GSTREAMER playlist_menu_->addAction(ui_->action_add_files_to_transcoder); #endif playlist_menu_->addSeparator(); - playlist_copy_url_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy URL(s)..."), this, &MainWindow::PlaylistCopyUrl); - playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in collection..."), this, &MainWindow::ShowInCollection); - playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, &MainWindow::PlaylistOpenInBrowser); - playlist_organize_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organize files..."), this, &MainWindow::PlaylistMoveToCollection); - playlist_copy_to_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, &MainWindow::PlaylistCopyToCollection); - playlist_move_to_collection_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to collection..."), this, &MainWindow::PlaylistMoveToCollection); + 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); #if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) - playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, &MainWindow::PlaylistCopyToDevice); + playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("device")), tr("Copy to device..."), this, &MainWindow::PlaylistCopyToDevice); #endif - playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, &MainWindow::PlaylistDelete); + playlist_delete_ = playlist_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from disk..."), this, &MainWindow::PlaylistDelete); playlist_menu_->addSeparator(); playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_clear_playlist); @@ -854,7 +854,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("WW selected of WW tracks - [ WW:WW ]")); + ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).horizontalAdvance(QStringLiteral("WW selected of WW tracks - [ WW:WW ]"))); ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page); QObject::connect(ui_->multi_loading_indicator, &MultiLoadingIndicator::TaskCountChange, this, &MainWindow::TaskCountChanged); @@ -881,7 +881,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, ":/style/strawberry.css"); + css_loader->SetStyleSheet(this, QStringLiteral(":/style/strawberry.css")); // Load playlists app_->playlist_manager()->Init(app_->collection_backend(), app_->playlist_backend(), ui_->playlist_sequence, ui_->playlist); @@ -1008,7 +1008,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("Ctrl+F")); + action_focus_search->setShortcuts(QList() << QKeySequence(QStringLiteral("Ctrl+F"))); addAction(action_focus_search); QObject::connect(action_focus_search, &QAction::triggered, this, &MainWindow::FocusSearchField); @@ -1034,7 +1034,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS #endif #ifdef Q_OS_LINUX - if (!Utilities::GetEnv("SNAP").isEmpty() && !Utilities::GetEnv("SNAP_NAME").isEmpty()) { + if (!Utilities::GetEnv(QStringLiteral("SNAP")).isEmpty() && !Utilities::GetEnv(QStringLiteral("SNAP_NAME")).isEmpty()) { QSettings s; s.beginGroup(kSettingsGroup); const bool ignore_snap = s.value("ignore_snap", false).toBool(); @@ -1066,7 +1066,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS { QSettings s; s.beginGroup(kSettingsGroup); - const QString do_not_show_sponsor_message_key = QString("do_not_show_sponsor_message"); + const QString do_not_show_sponsor_message_key = QStringLiteral("do_not_show_sponsor_message"); const bool do_not_show_sponsor_message = s.value(do_not_show_sponsor_message_key, false).toBool(); s.endGroup(); if (!do_not_show_sponsor_message) { @@ -1074,7 +1074,7 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS sponsor_message->set_settings_group(kSettingsGroup); sponsor_message->set_do_not_show_message_again(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("www.strawberrymusicplayer.org"), IconLoader::Load("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(QStringLiteral("www.strawberrymusicplayer.org")), IconLoader::Load(QStringLiteral("dialog-information"))); } } @@ -1243,7 +1243,7 @@ void MainWindow::ReloadAllSettings() { void MainWindow::RefreshStyleSheet() { QString contents(styleSheet()); - setStyleSheet(""); + setStyleSheet(QLatin1String("")); setStyleSheet(contents); } @@ -1328,11 +1328,11 @@ void MainWindow::EngineChanged(const EngineBase::Type enginetype) { void MainWindow::MediaStopped() { - setWindowTitle("Strawberry Music Player"); + setWindowTitle(QStringLiteral("Strawberry Music Player")); ui_->action_stop->setEnabled(false); ui_->action_stop_after_this_track->setEnabled(false); - ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start")); + ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); ui_->action_play_pause->setText(tr("Play")); ui_->action_play_pause->setEnabled(true); @@ -1365,7 +1365,7 @@ void MainWindow::MediaPaused() { ui_->action_stop->setEnabled(true); ui_->action_stop_after_this_track->setEnabled(true); - ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start")); + ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); ui_->action_play_pause->setText(tr("Play")); ui_->action_play_pause->setEnabled(true); @@ -1381,7 +1381,7 @@ void MainWindow::MediaPlaying() { ui_->action_stop->setEnabled(true); ui_->action_stop_after_this_track->setEnabled(true); - ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-pause")); + ui_->action_play_pause->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); ui_->action_play_pause->setText(tr("Pause")); bool enable_play_pause(false); @@ -1784,7 +1784,7 @@ void MainWindow::UpdateTaskbarProgress(const bool visible, const double position map.insert(QStringLiteral("progress-visible"), visible); map.insert(QStringLiteral("progress"), position / length); - msg << QString("application://org.strawberrymusicplayer.strawberry.desktop") << map; + msg << QStringLiteral("application://org.strawberrymusicplayer.strawberry.desktop") << map; QDBusConnection::sessionBus().send(msg); @@ -1915,11 +1915,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("media-playback-pause")); + playlist_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); } else { playlist_play_pause_->setText(tr("Play")); - playlist_play_pause_->setIcon(IconLoader::Load("media-playback-start")); + playlist_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); } // Are we allowed to pause? @@ -2033,11 +2033,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("go-previous")); - else playlist_queue_->setIcon(IconLoader::Load("go-next")); + if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load(QStringLiteral("go-previous"))); + else playlist_queue_->setIcon(IconLoader::Load(QStringLiteral("go-next"))); - if (in_skipped < selected) playlist_skip_->setIcon(IconLoader::Load("media-skip-forward")); - else playlist_skip_->setIcon(IconLoader::Load("media-playback-start")); + if (in_skipped < selected) playlist_skip_->setIcon(IconLoader::Load(QStringLiteral("media-skip-forward"))); + else playlist_skip_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); if (!index.isValid()) { @@ -2100,7 +2100,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("list-add")); + add_to_another_menu->setIcon(IconLoader::Load(QStringLiteral("list-add"))); for (const PlaylistBackend::Playlist &playlist : app_->playlist_backend()->GetAllOpenPlaylists()) { // don't add the current playlist @@ -2297,7 +2297,7 @@ void MainWindow::AddFile() { PlaylistParser parser(app_->collection_backend()); // Show dialog - QStringList file_names = QFileDialog::getOpenFileNames(this, tr("Add file"), directory, QString("%1 (%2);;%3;;%4").arg(tr("Music"), FileView::kFileFilter, parser.filters(PlaylistParser::Type::Load), tr(kAllFilesFilterSpec))); + QStringList file_names = QFileDialog::getOpenFileNames(this, tr("Add file"), directory, QStringLiteral("%1 (%2);;%3;;%4").arg(tr("Music"), FileView::kFileFilter, parser.filters(PlaylistParser::Type::Load), tr(kAllFilesFilterSpec))); if (file_names.isEmpty()) return; @@ -2587,7 +2587,7 @@ bool MainWindow::LoadUrl(const QString &url) { return true; } #ifdef HAVE_TIDAL - else if (url.startsWith("tidal://login")) { + else if (url.startsWith(QLatin1String("tidal://login"))) { emit AuthorizationUrlReceived(QUrl(url)); return true; } @@ -3066,10 +3066,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("Title", "Artist", "Album", 123); - fake.set_genre("Classical"); - fake.set_composer("Anonymous"); - fake.set_performer("Anonymous"); + 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.set_track(1); fake.set_disc(1); fake.set_year(2011); @@ -3212,12 +3212,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("scrobble", true, 22)); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble"), true, 22)); else - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load("scrobble", true, 22)); // TODO: Create a faint version of the icon + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble"), true, 22)); // TODO: Create a faint version of the icon } else { - ui_->action_toggle_scrobbling->setIcon(IconLoader::Load("scrobble-disabled", true, 22)); + ui_->action_toggle_scrobbling->setIcon(IconLoader::Load(QStringLiteral("scrobble-disabled"), true, 22)); } } diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp index cb10d385..13a0ffb8 100644 --- a/src/core/mpris2.cpp +++ b/src/core/mpris2.cpp @@ -131,18 +131,18 @@ Mpris2::Mpris2(Application *app, QObject *parent) app_name_[0] = app_name_[0].toUpper(); - QStringList data_dirs = QString(qgetenv("XDG_DATA_DIRS")).split(":"); + QStringList data_dirs = QString(qgetenv("XDG_DATA_DIRS")).split(QStringLiteral(":")); if (!data_dirs.contains("/usr/local/share")) { - data_dirs.append("/usr/local/share"); + data_dirs.append(QStringLiteral("/usr/local/share")); } if (!data_dirs.contains("/usr/share")) { - data_dirs.append("/usr/share"); + data_dirs.append(QStringLiteral("/usr/share")); } for (const QString &data_dir : data_dirs) { - const QString desktopfilepath = QString("%1/applications/%2.desktop").arg(data_dir, QGuiApplication::desktopFileName()); + const QString desktopfilepath = QStringLiteral("%1/applications/%2.desktop").arg(data_dir, QGuiApplication::desktopFileName()); if (QFile::exists(desktopfilepath)) { desktopfilepath_ = desktopfilepath; break; @@ -165,37 +165,37 @@ void Mpris2::EngineStateChanged(EngineBase::State newState) { if (newState != EngineBase::State::Playing && newState != EngineBase::State::Paused) { last_metadata_ = QVariantMap(); - EmitNotification("Metadata"); + EmitNotification(QStringLiteral("Metadata")); } - EmitNotification("CanPlay"); - EmitNotification("CanPause"); - EmitNotification("PlaybackStatus", PlaybackStatus(newState)); - if (newState == EngineBase::State::Playing) EmitNotification("CanSeek", CanSeek(newState)); + EmitNotification(QStringLiteral("CanPlay")); + EmitNotification(QStringLiteral("CanPause")); + EmitNotification(QStringLiteral("PlaybackStatus"), PlaybackStatus(newState)); + if (newState == EngineBase::State::Playing) EmitNotification(QStringLiteral("CanSeek"), CanSeek(newState)); } void Mpris2::VolumeChanged() { - EmitNotification("Volume"); + EmitNotification(QStringLiteral("Volume")); } -void Mpris2::ShuffleModeChanged() { EmitNotification("Shuffle"); } +void Mpris2::ShuffleModeChanged() { EmitNotification(QStringLiteral("Shuffle")); } void Mpris2::RepeatModeChanged() { - EmitNotification("LoopStatus"); - EmitNotification("CanGoNext", CanGoNext()); - EmitNotification("CanGoPrevious", CanGoPrevious()); + EmitNotification(QStringLiteral("LoopStatus")); + EmitNotification(QStringLiteral("CanGoNext"), CanGoNext()); + EmitNotification(QStringLiteral("CanGoPrevious"), CanGoPrevious()); } void Mpris2::EmitNotification(const QString &name, const QVariant &value) { - EmitNotification(name, value, "org.mpris.MediaPlayer2.Player"); + EmitNotification(name, value, QStringLiteral("org.mpris.MediaPlayer2.Player")); } void Mpris2::EmitNotification(const QString &name, const QVariant &value, const QString &mprisEntity) { - QDBusMessage msg = QDBusMessage::createSignal(kMprisObjectPath, kFreedesktopPath, "PropertiesChanged"); + QDBusMessage msg = QDBusMessage::createSignal(kMprisObjectPath, kFreedesktopPath, QStringLiteral("PropertiesChanged")); QVariantMap map; map.insert(name, value); QVariantList args = QVariantList() << mprisEntity << map << QStringList(); @@ -244,45 +244,45 @@ QString Mpris2::DesktopEntry() const { return QGuiApplication::desktopFileName() QStringList Mpris2::SupportedUriSchemes() const { - static QStringList res = QStringList() << "file" - << "http" - << "cdda" - << "smb" - << "sftp"; + static QStringList res = QStringList() << QStringLiteral("file") + << QStringLiteral("http") + << QStringLiteral("cdda") + << QStringLiteral("smb") + << QStringLiteral("sftp"); return res; } QStringList Mpris2::SupportedMimeTypes() const { - static QStringList res = QStringList() << "x-content/audio-player" - << "application/ogg" - << "application/x-ogg" - << "application/x-ogm-audio" - << "audio/flac" - << "audio/ogg" - << "audio/vorbis" - << "audio/aac" - << "audio/mp4" - << "audio/mpeg" - << "audio/mpegurl" - << "audio/vnd.rn-realaudio" - << "audio/x-flac" - << "audio/x-oggflac" - << "audio/x-vorbis" - << "audio/x-vorbis+ogg" - << "audio/x-speex" - << "audio/x-wav" - << "audio/x-wavpack" - << "audio/x-ape" - << "audio/x-mp3" - << "audio/x-mpeg" - << "audio/x-mpegurl" - << "audio/x-ms-wma" - << "audio/x-musepack" - << "audio/x-pn-realaudio" - << "audio/x-scpls" - << "video/x-ms-asf"; + static QStringList res = QStringList() << QStringLiteral("x-content/audio-player") + << QStringLiteral("application/ogg") + << QStringLiteral("application/x-ogg") + << QStringLiteral("application/x-ogm-audio") + << QStringLiteral("audio/flac") + << QStringLiteral("audio/ogg") + << QStringLiteral("audio/vorbis") + << QStringLiteral("audio/aac") + << QStringLiteral("audio/mp4") + << QStringLiteral("audio/mpeg") + << QStringLiteral("audio/mpegurl") + << QStringLiteral("audio/vnd.rn-realaudio") + << QStringLiteral("audio/x-flac") + << QStringLiteral("audio/x-oggflac") + << QStringLiteral("audio/x-vorbis") + << QStringLiteral("audio/x-vorbis+ogg") + << QStringLiteral("audio/x-speex") + << QStringLiteral("audio/x-wav") + << QStringLiteral("audio/x-wavpack") + << QStringLiteral("audio/x-ape") + << QStringLiteral("audio/x-mp3") + << QStringLiteral("audio/x-mpeg") + << QStringLiteral("audio/x-mpegurl") + << QStringLiteral("audio/x-ms-wma") + << QStringLiteral("audio/x-musepack") + << QStringLiteral("audio/x-pn-realaudio") + << QStringLiteral("audio/x-scpls") + << QStringLiteral("video/x-ms-asf"); return res; @@ -299,9 +299,9 @@ QString Mpris2::PlaybackStatus() const { QString Mpris2::PlaybackStatus(EngineBase::State state) const { switch (state) { - case EngineBase::State::Playing: return "Playing"; - case EngineBase::State::Paused: return "Paused"; - default: return "Stopped"; + case EngineBase::State::Playing: return QStringLiteral("Playing"); + case EngineBase::State::Paused: return QStringLiteral("Paused"); + default: return QStringLiteral("Stopped"); } } @@ -309,14 +309,14 @@ QString Mpris2::PlaybackStatus(EngineBase::State state) const { QString Mpris2::LoopStatus() const { if (!app_->playlist_manager()->sequence()) { - return "None"; + return QStringLiteral("None"); } switch (app_->playlist_manager()->active() ? app_->playlist_manager()->active()->RepeatMode() : app_->playlist_manager()->sequence()->repeat_mode()) { case PlaylistSequence::RepeatMode::Album: - case PlaylistSequence::RepeatMode::Playlist: return "Playlist"; - case PlaylistSequence::RepeatMode::Track: return "Track"; - default: return "None"; + case PlaylistSequence::RepeatMode::Playlist: return QStringLiteral("Playlist"); + case PlaylistSequence::RepeatMode::Track: return QStringLiteral("Track"); + default: return QStringLiteral("None"); } } @@ -381,18 +381,18 @@ void Mpris2::SetRating(double rating) { } QDBusObjectPath Mpris2::current_track_id() const { - return QDBusObjectPath(QString("/org/strawberrymusicplayer/strawberry/Track/%1").arg(QString::number(app_->playlist_manager()->active()->current_row()))); + return QDBusObjectPath(QStringLiteral("/org/strawberrymusicplayer/strawberry/Track/%1").arg(QString::number(app_->playlist_manager()->active()->current_row()))); } // We send Metadata change notification as soon as the process of changing song starts... void Mpris2::CurrentSongChanged(const Song &song) { AlbumCoverLoaded(song); - EmitNotification("CanPlay"); - EmitNotification("CanPause"); - EmitNotification("CanGoNext", CanGoNext()); - EmitNotification("CanGoPrevious", CanGoPrevious()); - EmitNotification("CanSeek", CanSeek()); + EmitNotification(QStringLiteral("CanPlay")); + EmitNotification(QStringLiteral("CanPause")); + EmitNotification(QStringLiteral("CanGoNext"), CanGoNext()); + EmitNotification(QStringLiteral("CanGoPrevious"), CanGoPrevious()); + EmitNotification(QStringLiteral("CanSeek"), CanSeek()); } @@ -403,7 +403,7 @@ void Mpris2::AlbumCoverLoaded(const Song &song, const AlbumCoverLoaderResult &re song.ToXesam(&last_metadata_); using mpris::AddMetadata; - AddMetadata("mpris:trackid", current_track_id(), &last_metadata_); + AddMetadata(QStringLiteral("mpris:trackid"), current_track_id(), &last_metadata_); QUrl cover_url; if (result.album_cover.cover_url.isValid() && result.album_cover.cover_url.isLocalFile() && QFile(result.album_cover.cover_url.toLocalFile()).exists()) { @@ -420,13 +420,13 @@ void Mpris2::AlbumCoverLoaded(const Song &song, const AlbumCoverLoaderResult &re } if (cover_url.isValid()) { - AddMetadata("mpris:artUrl", cover_url.toString(), &last_metadata_); + AddMetadata(QStringLiteral("mpris:artUrl"), cover_url.toString(), &last_metadata_); } - AddMetadata("year", song.year(), &last_metadata_); - AddMetadata("bitrate", song.bitrate(), &last_metadata_); + AddMetadata(QStringLiteral("year"), song.year(), &last_metadata_); + AddMetadata(QStringLiteral("bitrate"), song.bitrate(), &last_metadata_); - EmitNotification("Metadata", last_metadata_); + EmitNotification(QStringLiteral("Metadata"), last_metadata_); } @@ -567,12 +567,12 @@ quint32 Mpris2::PlaylistCount() const { return app_->playlist_manager()->GetAllPlaylists().size(); } -QStringList Mpris2::Orderings() const { return QStringList() << "User"; } +QStringList Mpris2::Orderings() const { return QStringList() << QStringLiteral("User"); } namespace { QDBusObjectPath MakePlaylistPath(int id) { - return QDBusObjectPath(QString("/org/strawberrymusicplayer/strawberry/PlaylistId/%1").arg(id)); + return QDBusObjectPath(QStringLiteral("/org/strawberrymusicplayer/strawberry/PlaylistId/%1").arg(id)); } } // namespace @@ -648,7 +648,7 @@ void Mpris2::PlaylistChangedSlot(Playlist *playlist) { void Mpris2::PlaylistCollectionChanged(Playlist *playlist) { Q_UNUSED(playlist); - EmitNotification("PlaylistCount", "", "org.mpris.MediaPlayer2.Playlists"); + EmitNotification(QStringLiteral("PlaylistCount"), "", QStringLiteral("org.mpris.MediaPlayer2.Playlists")); } } // namespace mpris diff --git a/src/core/mpris_common.h b/src/core/mpris_common.h index e120eb22..adffabde 100644 --- a/src/core/mpris_common.h +++ b/src/core/mpris_common.h @@ -61,7 +61,7 @@ inline void AddMetadata(const QString &key, const QDBusObjectPath &metadata, QVa } inline QString AsMPRISDateTimeType(const qint64 time) { - return time != -1 ? QDateTime::fromSecsSinceEpoch(time).toString(Qt::ISODate) : ""; + return time != -1 ? QDateTime::fromSecsSinceEpoch(time).toString(Qt::ISODate) : QLatin1String(""); } } // namespace mpris diff --git a/src/core/networkaccessmanager.cpp b/src/core/networkaccessmanager.cpp index ad9ac22f..0a5d260e 100644 --- a/src/core/networkaccessmanager.cpp +++ b/src/core/networkaccessmanager.cpp @@ -49,7 +49,7 @@ QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkR user_agent = request.header(QNetworkRequest::UserAgentHeader).toByteArray(); } else { - user_agent = QString("%1 %2").arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion()).toUtf8(); + user_agent = QStringLiteral("%1 %2").arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion()).toUtf8(); } QNetworkRequest new_request(request); diff --git a/src/core/networkproxyfactory.cpp b/src/core/networkproxyfactory.cpp index 316f6b0d..479329db 100644 --- a/src/core/networkproxyfactory.cpp +++ b/src/core/networkproxyfactory.cpp @@ -112,7 +112,7 @@ QList NetworkProxyFactory::queryProxy(const QNetworkProxyQuery &q ret.setPort(env_url_.port()); ret.setUser(env_url_.userName()); ret.setPassword(env_url_.password()); - if (env_url_.scheme().startsWith("http")) { + if (env_url_.scheme().startsWith(QLatin1String("http"))) { ret.setType(QNetworkProxy::HttpProxy); } else { diff --git a/src/core/qtsystemtrayicon.cpp b/src/core/qtsystemtrayicon.cpp index 459a4e48..5be0f521 100644 --- a/src/core/qtsystemtrayicon.cpp +++ b/src/core/qtsystemtrayicon.cpp @@ -38,8 +38,8 @@ SystemTrayIcon::SystemTrayIcon(QObject *parent) : QSystemTrayIcon(parent), menu_(new QMenu), app_name_(QCoreApplication::applicationName()), - pixmap_playing_(":/pictures/tiny-play.png"), - pixmap_paused_(":/pictures/tiny-pause.png"), + pixmap_playing_(QStringLiteral(":/pictures/tiny-play.png")), + pixmap_paused_(QStringLiteral(":/pictures/tiny-pause.png")), action_play_pause_(nullptr), action_stop_(nullptr), action_stop_after_this_track_(nullptr), @@ -51,8 +51,8 @@ SystemTrayIcon::SystemTrayIcon(QObject *parent) app_name_[0] = app_name_[0].toUpper(); - const QIcon icon = IconLoader::Load("strawberry"); - const QIcon icon_grey = IconLoader::Load("strawberry-grey"); + const QIcon icon = IconLoader::Load(QStringLiteral("strawberry")); + const QIcon icon_grey = IconLoader::Load(QStringLiteral("strawberry-grey")); pixmap_normal_ = icon.pixmap(48, QIcon::Normal); if (icon_grey.isNull()) { pixmap_grey_ = icon.pixmap(48, QIcon::Disabled); @@ -143,7 +143,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("media-playback-pause")); + action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-pause"))); action_play_pause_->setText(tr("Pause")); action_play_pause_->setEnabled(enable_play_pause); @@ -156,7 +156,7 @@ void SystemTrayIcon::SetPaused() { action_stop_->setEnabled(true); action_stop_after_this_track_->setEnabled(true); - action_play_pause_->setIcon(IconLoader::Load("media-playback-start")); + action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); action_play_pause_->setText(tr("Play")); action_play_pause_->setEnabled(true); @@ -170,7 +170,7 @@ void SystemTrayIcon::SetStopped() { action_stop_->setEnabled(false); action_stop_after_this_track_->setEnabled(false); - action_play_pause_->setIcon(IconLoader::Load("media-playback-start")); + action_play_pause_->setIcon(IconLoader::Load(QStringLiteral("media-playback-start"))); action_play_pause_->setText(tr("Play")); action_play_pause_->setEnabled(true); diff --git a/src/core/song.cpp b/src/core/song.cpp index 471d4135..5c5f26db 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -61,128 +61,128 @@ #endif #include "tagreadermessages.pb.h" -const QStringList Song::kColumns = QStringList() << "title" - << "album" - << "artist" - << "albumartist" - << "track" - << "disc" - << "year" - << "originalyear" - << "genre" - << "compilation" - << "composer" - << "performer" - << "grouping" - << "comment" - << "lyrics" +const QStringList Song::kColumns = QStringList() << QStringLiteral("title") + << QStringLiteral("album") + << QStringLiteral("artist") + << QStringLiteral("albumartist") + << QStringLiteral("track") + << QStringLiteral("disc") + << QStringLiteral("year") + << QStringLiteral("originalyear") + << QStringLiteral("genre") + << QStringLiteral("compilation") + << QStringLiteral("composer") + << QStringLiteral("performer") + << QStringLiteral("grouping") + << QStringLiteral("comment") + << QStringLiteral("lyrics") - << "artist_id" - << "album_id" - << "song_id" + << QStringLiteral("artist_id") + << QStringLiteral("album_id") + << QStringLiteral("song_id") - << "beginning" - << "length" + << QStringLiteral("beginning") + << QStringLiteral("length") - << "bitrate" - << "samplerate" - << "bitdepth" + << QStringLiteral("bitrate") + << QStringLiteral("samplerate") + << QStringLiteral("bitdepth") - << "source" - << "directory_id" - << "url" - << "filetype" - << "filesize" - << "mtime" - << "ctime" - << "unavailable" + << QStringLiteral("source") + << QStringLiteral("directory_id") + << QStringLiteral("url") + << QStringLiteral("filetype") + << QStringLiteral("filesize") + << QStringLiteral("mtime") + << QStringLiteral("ctime") + << QStringLiteral("unavailable") - << "fingerprint" + << QStringLiteral("fingerprint") - << "playcount" - << "skipcount" - << "lastplayed" - << "lastseen" + << QStringLiteral("playcount") + << QStringLiteral("skipcount") + << QStringLiteral("lastplayed") + << QStringLiteral("lastseen") - << "compilation_detected" - << "compilation_on" - << "compilation_off" - << "compilation_effective" + << QStringLiteral("compilation_detected") + << QStringLiteral("compilation_on") + << QStringLiteral("compilation_off") + << QStringLiteral("compilation_effective") - << "art_embedded" - << "art_automatic" - << "art_manual" - << "art_unset" + << QStringLiteral("art_embedded") + << QStringLiteral("art_automatic") + << QStringLiteral("art_manual") + << QStringLiteral("art_unset") - << "effective_albumartist" - << "effective_originalyear" + << QStringLiteral("effective_albumartist") + << QStringLiteral("effective_originalyear") - << "cue_path" + << QStringLiteral("cue_path") - << "rating" + << QStringLiteral("rating") - << "acoustid_id" - << "acoustid_fingerprint" + << QStringLiteral("acoustid_id") + << QStringLiteral("acoustid_fingerprint") - << "musicbrainz_album_artist_id" - << "musicbrainz_artist_id" - << "musicbrainz_original_artist_id" - << "musicbrainz_album_id" - << "musicbrainz_original_album_id" - << "musicbrainz_recording_id" - << "musicbrainz_track_id" - << "musicbrainz_disc_id" - << "musicbrainz_release_group_id" - << "musicbrainz_work_id" + << QStringLiteral("musicbrainz_album_artist_id") + << QStringLiteral("musicbrainz_artist_id") + << QStringLiteral("musicbrainz_original_artist_id") + << QStringLiteral("musicbrainz_album_id") + << QStringLiteral("musicbrainz_original_album_id") + << QStringLiteral("musicbrainz_recording_id") + << QStringLiteral("musicbrainz_track_id") + << QStringLiteral("musicbrainz_disc_id") + << QStringLiteral("musicbrainz_release_group_id") + << QStringLiteral("musicbrainz_work_id") - << "ebur128_integrated_loudness_lufs" - << "ebur128_loudness_range_lu" + << QStringLiteral("ebur128_integrated_loudness_lufs") + << QStringLiteral("ebur128_loudness_range_lu") ; -const QString Song::kColumnSpec = Song::kColumns.join(", "); -const QString Song::kBindSpec = Utilities::Prepend(":", Song::kColumns).join(", "); -const QString Song::kUpdateSpec = Utilities::Updateify(Song::kColumns).join(", "); +const QString Song::kColumnSpec = Song::kColumns.join(QStringLiteral(", ")); +const QString Song::kBindSpec = Utilities::Prepend(QStringLiteral(":"), Song::kColumns).join(QStringLiteral(", ")); +const QString Song::kUpdateSpec = Utilities::Updateify(Song::kColumns).join(QStringLiteral(", ")); // used to indicate, what columns can be filtered numerically. Used by the CollectionQuery. -const QStringList Song::kNumericalColumns = QStringList() << "year" - << "length" - << "samplerate" - << "bitdepth" - << "bitrate" - << "rating" - << "playcount" - << "skipcount"; +const QStringList Song::kNumericalColumns = QStringList() << QStringLiteral("year") + << QStringLiteral("length") + << QStringLiteral("samplerate") + << QStringLiteral("bitdepth") + << QStringLiteral("bitrate") + << QStringLiteral("rating") + << QStringLiteral("playcount") + << QStringLiteral("skipcount"); -const QStringList Song::kFtsColumns = QStringList() << "ftstitle" - << "ftsalbum" - << "ftsartist" - << "ftsalbumartist" - << "ftscomposer" - << "ftsperformer" - << "ftsgrouping" - << "ftsgenre" - << "ftscomment"; +const QStringList Song::kFtsColumns = QStringList() << QStringLiteral("ftstitle") + << QStringLiteral("ftsalbum") + << QStringLiteral("ftsartist") + << QStringLiteral("ftsalbumartist") + << QStringLiteral("ftscomposer") + << QStringLiteral("ftsperformer") + << QStringLiteral("ftsgrouping") + << QStringLiteral("ftsgenre") + << QStringLiteral("ftscomment"); -const QString Song::kFtsColumnSpec = Song::kFtsColumns.join(", "); -const QString Song::kFtsBindSpec = Utilities::Prepend(":", Song::kFtsColumns).join(", "); -const QString Song::kFtsUpdateSpec = Utilities::Updateify(Song::kFtsColumns).join(", "); +const QString Song::kFtsColumnSpec = Song::kFtsColumns.join(QStringLiteral(", ")); +const QString Song::kFtsBindSpec = Utilities::Prepend(QStringLiteral(":"), Song::kFtsColumns).join(QStringLiteral(", ")); +const QString Song::kFtsUpdateSpec = Utilities::Updateify(Song::kFtsColumns).join(QStringLiteral(", ")); const Song::RegularExpressionList Song::kAlbumDisc = Song::RegularExpressionList() - << QRegularExpression("\\s+-*\\s*(Disc|CD)\\s*([0-9]{1,2})$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\(\\s*(Disc|CD)\\s*([0-9]{1,2})\\)$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\[\\s*(Disc|CD)\\s*([0-9]{1,2})\\]$", QRegularExpression::CaseInsensitiveOption); + << QRegularExpression(QStringLiteral("\\s+-*\\s*(Disc|CD)\\s*([0-9]{1,2})$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\(\\s*(Disc|CD)\\s*([0-9]{1,2})\\)$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\[\\s*(Disc|CD)\\s*([0-9]{1,2})\\]$"), QRegularExpression::CaseInsensitiveOption); const Song::RegularExpressionList Song::kRemastered = Song::RegularExpressionList() - << QRegularExpression("\\s+-*\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\(\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*\\)\\s*$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\[\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*\\]\\s*$", QRegularExpression::CaseInsensitiveOption); + << QRegularExpression(QStringLiteral("\\s+-*\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\(\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*\\)\\s*$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\[\\s*(([0-9]{4})*\\s*Remastered|([0-9]{4})*\\s*Remaster)\\s*(Version)*\\s*\\]\\s*$"), QRegularExpression::CaseInsensitiveOption); const Song::RegularExpressionList Song::kExplicit = Song::RegularExpressionList() - << QRegularExpression("\\s+-*\\s*Explicit\\s*$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\(\\s*Explicit\\s*\\)\\s*$", QRegularExpression::CaseInsensitiveOption) - << QRegularExpression("\\s+-*\\s*\\[\\s*Explicit\\s*\\]\\s*$", QRegularExpression::CaseInsensitiveOption); + << QRegularExpression(QStringLiteral("\\s+-*\\s*Explicit\\s*$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\(\\s*Explicit\\s*\\)\\s*$"), QRegularExpression::CaseInsensitiveOption) + << QRegularExpression(QStringLiteral("\\s+-*\\s*\\[\\s*Explicit\\s*\\]\\s*$"), QRegularExpression::CaseInsensitiveOption); const Song::RegularExpressionList Song::kAlbumMisc = Song::RegularExpressionList() << kRemastered @@ -192,12 +192,12 @@ const Song::RegularExpressionList Song::kTitleMisc = Song::RegularExpressionList << kRemastered << kExplicit; -const QStringList Song::kArticles = QStringList() << "the " << "a " << "an "; +const QStringList Song::kArticles = QStringList() << QStringLiteral("the ") << QStringLiteral("a ") << QStringLiteral("an "); -const QStringList Song::kAcceptedExtensions = QStringList() << "wav" << "flac" << "wv" << "ogg" << "oga" << "opus" << "spx" << "ape" << "mpc" - << "mp2" << "mp3" << "m4a" << "mp4" << "aac" << "asf" << "asx" << "wma" - << "aif << aiff" << "mka" << "tta" << "dsf" << "dsd" - << "ac3" << "dts" << "spc" << "vgm"; +const QStringList Song::kAcceptedExtensions = QStringList() << QStringLiteral("wav") << QStringLiteral("flac") << QStringLiteral("wv") << QStringLiteral("ogg") << QStringLiteral("oga") << QStringLiteral("opus") << QStringLiteral("spx") << QStringLiteral("ape") << QStringLiteral("mpc") + << QStringLiteral("mp2") << QStringLiteral("mp3") << QStringLiteral("m4a") << QStringLiteral("mp4") << QStringLiteral("aac") << QStringLiteral("asf") << QStringLiteral("asx") << QStringLiteral("wma") + << QStringLiteral("aif << aiff") << QStringLiteral("mka") << QStringLiteral("tta") << QStringLiteral("dsf") << QStringLiteral("dsd") + << QStringLiteral("ac3") << QStringLiteral("dts") << QStringLiteral("spc") << QStringLiteral("vgm"); struct Song::Private : public QSharedData { @@ -373,9 +373,9 @@ const QString &Song::grouping() const { return d->grouping_; } const QString &Song::comment() const { return d->comment_; } const QString &Song::lyrics() const { return d->lyrics_; } -QString Song::artist_id() const { return d->artist_id_.isNull() ? "" : d->artist_id_; } -QString Song::album_id() const { return d->album_id_.isNull() ? "" : d->album_id_; } -QString Song::song_id() const { return d->song_id_.isNull() ? "" : d->song_id_; } +QString Song::artist_id() const { return d->artist_id_.isNull() ? QLatin1String("") : d->artist_id_; } +QString Song::album_id() const { return d->album_id_.isNull() ? QLatin1String("") : d->album_id_; } +QString Song::song_id() const { return d->song_id_.isNull() ? QLatin1String("") : d->song_id_; } qint64 Song::beginning_nanosec() const { return d->beginning_; } qint64 Song::end_nanosec() const { return d->end_; } @@ -668,7 +668,7 @@ QString Song::sortable(const QString &v) { } QString Song::JoinSpec(const QString &table) { - return Utilities::Prepend(table + ".", kColumns).join(", "); + return Utilities::Prepend(table + ".", kColumns).join(QStringLiteral(", ")); } QString Song::PrettyTitle() const { @@ -722,7 +722,7 @@ QString Song::TitleWithCompilationArtist() const { if (title.isEmpty()) title = d->basefilename_; - if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.contains("various", Qt::CaseInsensitive)) title = d->artist_ + " - " + title; + if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.contains(QLatin1String("various"), Qt::CaseInsensitive)) title = d->artist_ + " - " + title; return title; @@ -730,10 +730,10 @@ QString Song::TitleWithCompilationArtist() const { QString Song::SampleRateBitDepthToText() const { - if (d->samplerate_ == -1) return QString(""); - if (d->bitdepth_ == -1) return QString("%1 hz").arg(d->samplerate_); + if (d->samplerate_ == -1) return QLatin1String(""); + if (d->bitdepth_ == -1) return QStringLiteral("%1 hz").arg(d->samplerate_); - return QString("%1 hz / %2 bit").arg(d->samplerate_).arg(d->bitdepth_); + return QStringLiteral("%1 hz / %2 bit").arg(d->samplerate_).arg(d->bitdepth_); } @@ -765,7 +765,7 @@ QString Song::PrettyRating() const { float rating = d->rating_; - if (rating == -1.0F) return "0"; + if (rating == -1.0F) return QStringLiteral("0"); return QString::number(static_cast(rating * 100)); @@ -899,10 +899,10 @@ Song::Source Song::SourceFromURL(const QUrl &url) { else if (url.scheme() == "subsonic") return Source::Subsonic; else if (url.scheme() == "qobuz") return Source::Qobuz; else if (url.scheme() == "http" || url.scheme() == "https" || url.scheme() == "rtsp") { - if (url.host().endsWith("tidal.com", Qt::CaseInsensitive)) { return Source::Tidal; } - if (url.host().endsWith("qobuz.com", Qt::CaseInsensitive)) { return Source::Qobuz; } - if (url.host().endsWith("somafm.com", Qt::CaseInsensitive)) { return Source::SomaFM; } - if (url.host().endsWith("radioparadise.com", Qt::CaseInsensitive)) { return Source::RadioParadise; } + if (url.host().endsWith(QLatin1String("tidal.com"), Qt::CaseInsensitive)) { return Source::Tidal; } + if (url.host().endsWith(QLatin1String("qobuz.com"), Qt::CaseInsensitive)) { return Source::Qobuz; } + if (url.host().endsWith(QLatin1String("somafm.com"), Qt::CaseInsensitive)) { return Source::SomaFM; } + if (url.host().endsWith(QLatin1String("radioparadise.com"), Qt::CaseInsensitive)) { return Source::RadioParadise; } return Source::Stream; } else return Source::Unknown; @@ -912,53 +912,53 @@ Song::Source Song::SourceFromURL(const QUrl &url) { QString Song::TextForSource(const Source source) { switch (source) { - case Source::LocalFile: return "file"; - case Source::Collection: return "collection"; - case Source::CDDA: return "cd"; - case Source::Device: return "device"; - case Source::Stream: return "stream"; - case Source::Tidal: return "tidal"; - case Source::Subsonic: return "subsonic"; - case Source::Qobuz: return "qobuz"; - case Source::SomaFM: return "somafm"; - case Source::RadioParadise: return "radioparadise"; - case Source::Unknown: return "unknown"; + case Source::LocalFile: return QStringLiteral("file"); + case Source::Collection: return QStringLiteral("collection"); + case Source::CDDA: return QStringLiteral("cd"); + case Source::Device: return QStringLiteral("device"); + case Source::Stream: return QStringLiteral("stream"); + case Source::Tidal: return QStringLiteral("tidal"); + case Source::Subsonic: return QStringLiteral("subsonic"); + case Source::Qobuz: return QStringLiteral("qobuz"); + case Source::SomaFM: return QStringLiteral("somafm"); + case Source::RadioParadise: return QStringLiteral("radioparadise"); + case Source::Unknown: return QStringLiteral("unknown"); } - return "unknown"; + return QStringLiteral("unknown"); } QString Song::DescriptionForSource(const Source source) { switch (source) { - case Source::LocalFile: return "File"; - case Source::Collection: return "Collection"; - case Source::CDDA: return "CD"; - case Source::Device: return "Device"; - case Source::Stream: return "Stream"; - case Source::Tidal: return "Tidal"; - case Source::Subsonic: return "Subsonic"; - case Source::Qobuz: return "Qobuz"; - case Source::SomaFM: return "SomaFM"; - case Source::RadioParadise: return "Radio Paradise"; - case Source::Unknown: return "Unknown"; + case Source::LocalFile: return QStringLiteral("File"); + case Source::Collection: return QStringLiteral("Collection"); + case Source::CDDA: return QStringLiteral("CD"); + case Source::Device: return QStringLiteral("Device"); + case Source::Stream: return QStringLiteral("Stream"); + case Source::Tidal: return QStringLiteral("Tidal"); + case Source::Subsonic: return QStringLiteral("Subsonic"); + case Source::Qobuz: return QStringLiteral("Qobuz"); + case Source::SomaFM: return QStringLiteral("SomaFM"); + case Source::RadioParadise: return QStringLiteral("Radio Paradise"); + case Source::Unknown: return QStringLiteral("Unknown"); } - return "unknown"; + return QStringLiteral("unknown"); } Song::Source Song::SourceFromText(const QString &source) { - if (source.compare("file", Qt::CaseInsensitive) == 0) return Source::LocalFile; - if (source.compare("collection", Qt::CaseInsensitive) == 0) return Source::Collection; - if (source.compare("cd", Qt::CaseInsensitive) == 0) return Source::CDDA; - if (source.compare("device", Qt::CaseInsensitive) == 0) return Source::Device; - if (source.compare("stream", Qt::CaseInsensitive) == 0) return Source::Stream; - if (source.compare("tidal", Qt::CaseInsensitive) == 0) return Source::Tidal; - if (source.compare("subsonic", Qt::CaseInsensitive) == 0) return Source::Subsonic; - if (source.compare("qobuz", Qt::CaseInsensitive) == 0) return Source::Qobuz; - if (source.compare("somafm", Qt::CaseInsensitive) == 0) return Source::SomaFM; - if (source.compare("radioparadise", Qt::CaseInsensitive) == 0) return Source::RadioParadise; + if (source.compare(QLatin1String("file"), Qt::CaseInsensitive) == 0) return Source::LocalFile; + if (source.compare(QLatin1String("collection"), Qt::CaseInsensitive) == 0) return Source::Collection; + if (source.compare(QLatin1String("cd"), Qt::CaseInsensitive) == 0) return Source::CDDA; + if (source.compare(QLatin1String("device"), Qt::CaseInsensitive) == 0) return Source::Device; + if (source.compare(QLatin1String("stream"), Qt::CaseInsensitive) == 0) return Source::Stream; + if (source.compare(QLatin1String("tidal"), Qt::CaseInsensitive) == 0) return Source::Tidal; + if (source.compare(QLatin1String("subsonic"), Qt::CaseInsensitive) == 0) return Source::Subsonic; + if (source.compare(QLatin1String("qobuz"), Qt::CaseInsensitive) == 0) return Source::Qobuz; + if (source.compare(QLatin1String("somafm"), Qt::CaseInsensitive) == 0) return Source::SomaFM; + if (source.compare(QLatin1String("radioparadise"), Qt::CaseInsensitive) == 0) return Source::RadioParadise; return Source::Unknown; @@ -967,50 +967,50 @@ Song::Source Song::SourceFromText(const QString &source) { QIcon Song::IconForSource(const Source source) { switch (source) { - case Source::LocalFile: return IconLoader::Load("folder-sound"); - case Source::Collection: return IconLoader::Load("library-music"); - case Source::CDDA: return IconLoader::Load("media-optical"); - case Source::Device: return IconLoader::Load("device"); - case Source::Stream: return IconLoader::Load("applications-internet"); - case Source::Tidal: return IconLoader::Load("tidal"); - case Source::Subsonic: return IconLoader::Load("subsonic"); - case Source::Qobuz: return IconLoader::Load("qobuz"); - case Source::SomaFM: return IconLoader::Load("somafm"); - case Source::RadioParadise: return IconLoader::Load("radioparadise"); - case Source::Unknown: return IconLoader::Load("edit-delete"); + case Source::LocalFile: return IconLoader::Load(QStringLiteral("folder-sound")); + case Source::Collection: return IconLoader::Load(QStringLiteral("library-music")); + case Source::CDDA: return IconLoader::Load(QStringLiteral("media-optical")); + case Source::Device: return IconLoader::Load(QStringLiteral("device")); + case Source::Stream: return IconLoader::Load(QStringLiteral("applications-internet")); + case Source::Tidal: return IconLoader::Load(QStringLiteral("tidal")); + case Source::Subsonic: return IconLoader::Load(QStringLiteral("subsonic")); + case Source::Qobuz: return IconLoader::Load(QStringLiteral("qobuz")); + case Source::SomaFM: return IconLoader::Load(QStringLiteral("somafm")); + case Source::RadioParadise: return IconLoader::Load(QStringLiteral("radioparadise")); + case Source::Unknown: return IconLoader::Load(QStringLiteral("edit-delete")); } - return IconLoader::Load("edit-delete"); + return IconLoader::Load(QStringLiteral("edit-delete")); } QString Song::TextForFiletype(const FileType filetype) { switch (filetype) { - case FileType::WAV: return "Wav"; - case FileType::FLAC: return "FLAC"; - case FileType::WavPack: return "WavPack"; - case FileType::OggFlac: return "Ogg FLAC"; - case FileType::OggVorbis: return "Ogg Vorbis"; - case FileType::OggOpus: return "Ogg Opus"; - case FileType::OggSpeex: return "Ogg Speex"; - case FileType::MPEG: return "MPEG"; - case FileType::MP4: return "MP4 AAC"; - case FileType::ASF: return "Windows Media audio"; - case FileType::AIFF: return "AIFF"; - case FileType::MPC: return "MPC"; - case FileType::TrueAudio: return "TrueAudio"; - case FileType::DSF: return "DSF"; - case FileType::DSDIFF: return "DSDIFF"; - case FileType::PCM: return "PCM"; - case FileType::APE: return "Monkey's Audio"; - case FileType::MOD: return "Module Music Format"; - case FileType::S3M: return "Module Music Format"; - case FileType::XM: return "Module Music Format"; - case FileType::IT: return "Module Music Format"; - case FileType::CDDA: return "CDDA"; - case FileType::SPC: return "SNES SPC700"; - case FileType::VGM: return "VGM"; - case FileType::Stream: return "Stream"; + case FileType::WAV: return QStringLiteral("Wav"); + case FileType::FLAC: return QStringLiteral("FLAC"); + case FileType::WavPack: return QStringLiteral("WavPack"); + case FileType::OggFlac: return QStringLiteral("Ogg FLAC"); + case FileType::OggVorbis: return QStringLiteral("Ogg Vorbis"); + case FileType::OggOpus: return QStringLiteral("Ogg Opus"); + case FileType::OggSpeex: return QStringLiteral("Ogg Speex"); + case FileType::MPEG: return QStringLiteral("MPEG"); + case FileType::MP4: return QStringLiteral("MP4 AAC"); + case FileType::ASF: return QStringLiteral("Windows Media audio"); + case FileType::AIFF: return QStringLiteral("AIFF"); + case FileType::MPC: return QStringLiteral("MPC"); + case FileType::TrueAudio: return QStringLiteral("TrueAudio"); + case FileType::DSF: return QStringLiteral("DSF"); + case FileType::DSDIFF: return QStringLiteral("DSDIFF"); + case FileType::PCM: return QStringLiteral("PCM"); + case FileType::APE: return QStringLiteral("Monkey's Audio"); + case FileType::MOD: return QStringLiteral("Module Music Format"); + case FileType::S3M: return QStringLiteral("Module Music Format"); + case FileType::XM: return QStringLiteral("Module Music Format"); + case FileType::IT: return QStringLiteral("Module Music Format"); + case FileType::CDDA: return QStringLiteral("CDDA"); + case FileType::SPC: return QStringLiteral("SNES SPC700"); + case FileType::VGM: return QStringLiteral("VGM"); + case FileType::Stream: return QStringLiteral("Stream"); case FileType::Unknown: default: return QObject::tr("Unknown"); } @@ -1020,30 +1020,30 @@ QString Song::TextForFiletype(const FileType filetype) { QString Song::ExtensionForFiletype(const FileType filetype) { switch (filetype) { - case FileType::WAV: return "wav"; - case FileType::FLAC: return "flac"; - case FileType::WavPack: return "wv"; - case FileType::OggFlac: return "flac"; - case FileType::OggVorbis: return "ogg"; - case FileType::OggOpus: return "opus"; - case FileType::OggSpeex: return "spx"; - case FileType::MPEG: return "mp3"; - case FileType::MP4: return "mp4"; - case FileType::ASF: return "wma"; - case FileType::AIFF: return "aiff"; - case FileType::MPC: return "mpc"; - case FileType::TrueAudio: return "tta"; - case FileType::DSF: return "dsf"; - case FileType::DSDIFF: return "dsd"; - case FileType::APE: return "ape"; - case FileType::MOD: return "mod"; - case FileType::S3M: return "s3m"; - case FileType::XM: return "xm"; - case FileType::IT: return "it"; - case FileType::SPC: return "spc"; - case FileType::VGM: return "vgm"; + case FileType::WAV: return QStringLiteral("wav"); + case FileType::FLAC: return QStringLiteral("flac"); + case FileType::WavPack: return QStringLiteral("wv"); + case FileType::OggFlac: return QStringLiteral("flac"); + case FileType::OggVorbis: return QStringLiteral("ogg"); + case FileType::OggOpus: return QStringLiteral("opus"); + case FileType::OggSpeex: return QStringLiteral("spx"); + case FileType::MPEG: return QStringLiteral("mp3"); + case FileType::MP4: return QStringLiteral("mp4"); + case FileType::ASF: return QStringLiteral("wma"); + case FileType::AIFF: return QStringLiteral("aiff"); + case FileType::MPC: return QStringLiteral("mpc"); + case FileType::TrueAudio: return QStringLiteral("tta"); + case FileType::DSF: return QStringLiteral("dsf"); + case FileType::DSDIFF: return QStringLiteral("dsd"); + case FileType::APE: return QStringLiteral("ape"); + case FileType::MOD: return QStringLiteral("mod"); + case FileType::S3M: return QStringLiteral("s3m"); + case FileType::XM: return QStringLiteral("xm"); + case FileType::IT: return QStringLiteral("it"); + case FileType::SPC: return QStringLiteral("spc"); + case FileType::VGM: return QStringLiteral("vgm"); case FileType::Unknown: - default: return "dat"; + default: return QStringLiteral("dat"); } } @@ -1051,31 +1051,31 @@ QString Song::ExtensionForFiletype(const FileType filetype) { QIcon Song::IconForFiletype(const FileType filetype) { switch (filetype) { - case FileType::WAV: return IconLoader::Load("wav"); - case FileType::FLAC: return IconLoader::Load("flac"); - case FileType::WavPack: return IconLoader::Load("wavpack"); - case FileType::OggFlac: return IconLoader::Load("flac"); - case FileType::OggVorbis: return IconLoader::Load("vorbis"); - case FileType::OggOpus: return IconLoader::Load("opus"); - case FileType::OggSpeex: return IconLoader::Load("speex"); - case FileType::MPEG: return IconLoader::Load("mp3"); - case FileType::MP4: return IconLoader::Load("mp4"); - case FileType::ASF: return IconLoader::Load("wma"); - case FileType::AIFF: return IconLoader::Load("aiff"); - case FileType::MPC: return IconLoader::Load("mpc"); - case FileType::TrueAudio: return IconLoader::Load("trueaudio"); - case FileType::DSF: return IconLoader::Load("dsf"); - case FileType::DSDIFF: return IconLoader::Load("dsd"); - case FileType::PCM: return IconLoader::Load("pcm"); - case FileType::APE: return IconLoader::Load("ape"); - case FileType::MOD: return IconLoader::Load("mod"); - case FileType::S3M: return IconLoader::Load("s3m"); - case FileType::XM: return IconLoader::Load("xm"); - case FileType::IT: return IconLoader::Load("it"); - case FileType::CDDA: return IconLoader::Load("cd"); - case FileType::Stream: return IconLoader::Load("applications-internet"); + case FileType::WAV: return IconLoader::Load(QStringLiteral("wav")); + case FileType::FLAC: return IconLoader::Load(QStringLiteral("flac")); + case FileType::WavPack: return IconLoader::Load(QStringLiteral("wavpack")); + case FileType::OggFlac: return IconLoader::Load(QStringLiteral("flac")); + case FileType::OggVorbis: return IconLoader::Load(QStringLiteral("vorbis")); + case FileType::OggOpus: return IconLoader::Load(QStringLiteral("opus")); + case FileType::OggSpeex: return IconLoader::Load(QStringLiteral("speex")); + case FileType::MPEG: return IconLoader::Load(QStringLiteral("mp3")); + case FileType::MP4: return IconLoader::Load(QStringLiteral("mp4")); + case FileType::ASF: return IconLoader::Load(QStringLiteral("wma")); + case FileType::AIFF: return IconLoader::Load(QStringLiteral("aiff")); + case FileType::MPC: return IconLoader::Load(QStringLiteral("mpc")); + case FileType::TrueAudio: return IconLoader::Load(QStringLiteral("trueaudio")); + case FileType::DSF: return IconLoader::Load(QStringLiteral("dsf")); + case FileType::DSDIFF: return IconLoader::Load(QStringLiteral("dsd")); + case FileType::PCM: return IconLoader::Load(QStringLiteral("pcm")); + case FileType::APE: return IconLoader::Load(QStringLiteral("ape")); + case FileType::MOD: return IconLoader::Load(QStringLiteral("mod")); + case FileType::S3M: return IconLoader::Load(QStringLiteral("s3m")); + case FileType::XM: return IconLoader::Load(QStringLiteral("xm")); + case FileType::IT: return IconLoader::Load(QStringLiteral("it")); + case FileType::CDDA: return IconLoader::Load(QStringLiteral("cd")); + case FileType::Stream: return IconLoader::Load(QStringLiteral("applications-internet")); case FileType::Unknown: - default: return IconLoader::Load("edit-delete"); + default: return IconLoader::Load(QStringLiteral("edit-delete")); } } @@ -1103,26 +1103,26 @@ bool Song::IsFileLossless() const { Song::FileType Song::FiletypeByMimetype(const QString &mimetype) { - if (mimetype.compare("audio/wav", Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-wav", Qt::CaseInsensitive) == 0) return FileType::WAV; - else if (mimetype.compare("audio/x-flac", Qt::CaseInsensitive) == 0) return FileType::FLAC; - else if (mimetype.compare("audio/x-wavpack", Qt::CaseInsensitive) == 0) return FileType::WavPack; - else if (mimetype.compare("audio/x-vorbis", Qt::CaseInsensitive) == 0) return FileType::OggVorbis; - else if (mimetype.compare("audio/x-opus", Qt::CaseInsensitive) == 0) return FileType::OggOpus; - else if (mimetype.compare("audio/x-speex", Qt::CaseInsensitive) == 0) return FileType::OggSpeex; + if (mimetype.compare(QLatin1String("audio/wav"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("audio/x-wav"), Qt::CaseInsensitive) == 0) return FileType::WAV; + else if (mimetype.compare(QLatin1String("audio/x-flac"), Qt::CaseInsensitive) == 0) return FileType::FLAC; + else if (mimetype.compare(QLatin1String("audio/x-wavpack"), Qt::CaseInsensitive) == 0) return FileType::WavPack; + else if (mimetype.compare(QLatin1String("audio/x-vorbis"), Qt::CaseInsensitive) == 0) return FileType::OggVorbis; + else if (mimetype.compare(QLatin1String("audio/x-opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus; + else if (mimetype.compare(QLatin1String("audio/x-speex"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex; // Gstreamer returns audio/mpeg for both MP3 and MP4/AAC. // else if (mimetype.compare("audio/mpeg", Qt::CaseInsensitive) == 0) return FileType::MPEG; - else if (mimetype.compare("audio/aac", Qt::CaseInsensitive) == 0) return FileType::MP4; - else if (mimetype.compare("audio/x-wma", Qt::CaseInsensitive) == 0) return FileType::ASF; - else if (mimetype.compare("audio/aiff", Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-aiff", Qt::CaseInsensitive) == 0) return FileType::AIFF; - else if (mimetype.compare("audio/x-musepack", Qt::CaseInsensitive) == 0) return FileType::MPC; - else if (mimetype.compare("application/x-project", Qt::CaseInsensitive) == 0) return FileType::MPC; - else if (mimetype.compare("audio/x-dsf", Qt::CaseInsensitive) == 0) return FileType::DSF; - else if (mimetype.compare("audio/x-dsd", Qt::CaseInsensitive) == 0) return FileType::DSDIFF; - else if (mimetype.compare("audio/x-ape", Qt::CaseInsensitive) == 0 || mimetype.compare("application/x-ape", Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-ffmpeg-parsed-ape", Qt::CaseInsensitive) == 0) return FileType::APE; - else if (mimetype.compare("audio/x-mod", Qt::CaseInsensitive) == 0) return FileType::MOD; - else if (mimetype.compare("audio/x-s3m", Qt::CaseInsensitive) == 0) return FileType::S3M; - else if (mimetype.compare("audio/x-spc", Qt::CaseInsensitive) == 0) return FileType::SPC; - else if (mimetype.compare("audio/x-vgm", Qt::CaseInsensitive) == 0) return FileType::VGM; + else if (mimetype.compare(QLatin1String("audio/aac"), Qt::CaseInsensitive) == 0) return FileType::MP4; + else if (mimetype.compare(QLatin1String("audio/x-wma"), Qt::CaseInsensitive) == 0) return FileType::ASF; + else if (mimetype.compare(QLatin1String("audio/aiff"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("audio/x-aiff"), Qt::CaseInsensitive) == 0) return FileType::AIFF; + else if (mimetype.compare(QLatin1String("audio/x-musepack"), Qt::CaseInsensitive) == 0) return FileType::MPC; + else if (mimetype.compare(QLatin1String("application/x-project"), Qt::CaseInsensitive) == 0) return FileType::MPC; + else if (mimetype.compare(QLatin1String("audio/x-dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF; + else if (mimetype.compare(QLatin1String("audio/x-dsd"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF; + else if (mimetype.compare(QLatin1String("audio/x-ape"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("application/x-ape"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("audio/x-ffmpeg-parsed-ape"), Qt::CaseInsensitive) == 0) return FileType::APE; + else if (mimetype.compare(QLatin1String("audio/x-mod"), Qt::CaseInsensitive) == 0) return FileType::MOD; + else if (mimetype.compare(QLatin1String("audio/x-s3m"), Qt::CaseInsensitive) == 0) return FileType::S3M; + else if (mimetype.compare(QLatin1String("audio/x-spc"), Qt::CaseInsensitive) == 0) return FileType::SPC; + else if (mimetype.compare(QLatin1String("audio/x-vgm"), Qt::CaseInsensitive) == 0) return FileType::VGM; else return FileType::Unknown; @@ -1130,56 +1130,56 @@ Song::FileType Song::FiletypeByMimetype(const QString &mimetype) { Song::FileType Song::FiletypeByDescription(const QString &text) { - if (text.compare("WAV", Qt::CaseInsensitive) == 0) return FileType::WAV; - else if (text.compare("Free Lossless Audio Codec (FLAC)", Qt::CaseInsensitive) == 0) return FileType::FLAC; - else if (text.compare("Wavpack", Qt::CaseInsensitive) == 0) return FileType::WavPack; - else if (text.compare("Vorbis", Qt::CaseInsensitive) == 0) return FileType::OggVorbis; - else if (text.compare("Opus", Qt::CaseInsensitive) == 0) return FileType::OggOpus; - else if (text.compare("Speex", Qt::CaseInsensitive) == 0) return FileType::OggSpeex; - else if (text.compare("MPEG-1 Layer 2 (MP2)", Qt::CaseInsensitive) == 0) return FileType::MPEG; - else if (text.compare("MPEG-1 Layer 3 (MP3)", Qt::CaseInsensitive) == 0) return FileType::MPEG; - else if (text.compare("MPEG-4 AAC", Qt::CaseInsensitive) == 0) return FileType::MP4; - else if (text.compare("WMA", Qt::CaseInsensitive) == 0) return FileType::ASF; - else if (text.compare("Audio Interchange File Format", Qt::CaseInsensitive) == 0) return FileType::AIFF; - else if (text.compare("MPC", Qt::CaseInsensitive) == 0) return FileType::MPC; - else if (text.compare("Musepack (MPC)", Qt::CaseInsensitive) == 0) return FileType::MPC; - else if (text.compare("audio/x-dsf", Qt::CaseInsensitive) == 0) return FileType::DSF; - else if (text.compare("audio/x-dsd", Qt::CaseInsensitive) == 0) return FileType::DSDIFF; - else if (text.compare("audio/x-ffmpeg-parsed-ape", Qt::CaseInsensitive) == 0) return FileType::APE; - else if (text.compare("Module Music Format (MOD)", Qt::CaseInsensitive) == 0) return FileType::MOD; - else if (text.compare("Module Music Format (MOD)", Qt::CaseInsensitive) == 0) return FileType::S3M; - else if (text.compare("SNES SPC700", Qt::CaseInsensitive) == 0) return FileType::SPC; - else if (text.compare("VGM", Qt::CaseInsensitive) == 0) return FileType::VGM; + if (text.compare(QLatin1String("WAV"), Qt::CaseInsensitive) == 0) return FileType::WAV; + else if (text.compare(QLatin1String("Free Lossless Audio Codec (FLAC)"), Qt::CaseInsensitive) == 0) return FileType::FLAC; + else if (text.compare(QLatin1String("Wavpack"), Qt::CaseInsensitive) == 0) return FileType::WavPack; + else if (text.compare(QLatin1String("Vorbis"), Qt::CaseInsensitive) == 0) return FileType::OggVorbis; + else if (text.compare(QLatin1String("Opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus; + else if (text.compare(QLatin1String("Speex"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex; + else if (text.compare(QLatin1String("MPEG-1 Layer 2 (MP2)"), Qt::CaseInsensitive) == 0) return FileType::MPEG; + else if (text.compare(QLatin1String("MPEG-1 Layer 3 (MP3)"), Qt::CaseInsensitive) == 0) return FileType::MPEG; + else if (text.compare(QLatin1String("MPEG-4 AAC"), Qt::CaseInsensitive) == 0) return FileType::MP4; + else if (text.compare(QLatin1String("WMA"), Qt::CaseInsensitive) == 0) return FileType::ASF; + else if (text.compare(QLatin1String("Audio Interchange File Format"), Qt::CaseInsensitive) == 0) return FileType::AIFF; + else if (text.compare(QLatin1String("MPC"), Qt::CaseInsensitive) == 0) return FileType::MPC; + else if (text.compare(QLatin1String("Musepack (MPC)"), Qt::CaseInsensitive) == 0) return FileType::MPC; + else if (text.compare(QLatin1String("audio/x-dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF; + else if (text.compare(QLatin1String("audio/x-dsd"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF; + else if (text.compare(QLatin1String("audio/x-ffmpeg-parsed-ape"), Qt::CaseInsensitive) == 0) return FileType::APE; + else if (text.compare(QLatin1String("Module Music Format (MOD)"), Qt::CaseInsensitive) == 0) return FileType::MOD; + else if (text.compare(QLatin1String("Module Music Format (MOD)"), Qt::CaseInsensitive) == 0) return FileType::S3M; + else if (text.compare(QLatin1String("SNES SPC700"), Qt::CaseInsensitive) == 0) return FileType::SPC; + else if (text.compare(QLatin1String("VGM"), Qt::CaseInsensitive) == 0) return FileType::VGM; else return FileType::Unknown; } Song::FileType Song::FiletypeByExtension(const QString &ext) { - if (ext.compare("wav", Qt::CaseInsensitive) == 0 || ext.compare("wave", Qt::CaseInsensitive) == 0) return FileType::WAV; - else if (ext.compare("flac", Qt::CaseInsensitive) == 0) return FileType::FLAC; - else if (ext.compare("wavpack", Qt::CaseInsensitive) == 0 || ext.compare("wv", Qt::CaseInsensitive) == 0) return FileType::WavPack; - else if (ext.compare("ogg", Qt::CaseInsensitive) == 0 || ext.compare("oga", Qt::CaseInsensitive) == 0) return FileType::OggVorbis; - else if (ext.compare("opus", Qt::CaseInsensitive) == 0) return FileType::OggOpus; - else if (ext.compare("speex", Qt::CaseInsensitive) == 0 || ext.compare("spx", Qt::CaseInsensitive) == 0) return FileType::OggSpeex; - else if (ext.compare("mp2", Qt::CaseInsensitive) == 0) return FileType::MPEG; - else if (ext.compare("mp3", Qt::CaseInsensitive) == 0) return FileType::MPEG; - else if (ext.compare("mp4", Qt::CaseInsensitive) == 0 || ext.compare("m4a", Qt::CaseInsensitive) == 0 || ext.compare("aac", Qt::CaseInsensitive) == 0) return FileType::MP4; - else if (ext.compare("asf", Qt::CaseInsensitive) == 0 || ext.compare("wma", Qt::CaseInsensitive) == 0) return FileType::ASF; - else if (ext.compare("aiff", Qt::CaseInsensitive) == 0 || ext.compare("aif", Qt::CaseInsensitive) == 0 || ext.compare("aifc", Qt::CaseInsensitive) == 0) return FileType::AIFF; - else if (ext.compare("mpc", Qt::CaseInsensitive) == 0 || ext.compare("mp+", Qt::CaseInsensitive) == 0 || ext.compare("mpp", Qt::CaseInsensitive) == 0) return FileType::MPC; - else if (ext.compare("dsf", Qt::CaseInsensitive) == 0) return FileType::DSF; - else if (ext.compare("dsd", Qt::CaseInsensitive) == 0 || ext.compare("dff", Qt::CaseInsensitive) == 0) return FileType::DSDIFF; - else if (ext.compare("ape", Qt::CaseInsensitive) == 0) return FileType::APE; - else if (ext.compare("mod", Qt::CaseInsensitive) == 0 || - ext.compare("module", Qt::CaseInsensitive) == 0 || - ext.compare("nst", Qt::CaseInsensitive) == 0|| - ext.compare("wow", Qt::CaseInsensitive) == 0) return FileType::MOD; - else if (ext.compare("s3m", Qt::CaseInsensitive) == 0) return FileType::S3M; - else if (ext.compare("xm", Qt::CaseInsensitive) == 0) return FileType::XM; - else if (ext.compare("it", Qt::CaseInsensitive) == 0) return FileType::IT; - else if (ext.compare("spc", Qt::CaseInsensitive) == 0) return FileType::SPC; - else if (ext.compare("vgm", Qt::CaseInsensitive) == 0) return FileType::VGM; + if (ext.compare(QLatin1String("wav"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wave"), Qt::CaseInsensitive) == 0) return FileType::WAV; + else if (ext.compare(QLatin1String("flac"), Qt::CaseInsensitive) == 0) return FileType::FLAC; + else if (ext.compare(QLatin1String("wavpack"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wv"), Qt::CaseInsensitive) == 0) return FileType::WavPack; + else if (ext.compare(QLatin1String("ogg"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("oga"), Qt::CaseInsensitive) == 0) return FileType::OggVorbis; + else if (ext.compare(QLatin1String("opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus; + else if (ext.compare(QLatin1String("speex"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("spx"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex; + else if (ext.compare(QLatin1String("mp2"), Qt::CaseInsensitive) == 0) return FileType::MPEG; + else if (ext.compare(QLatin1String("mp3"), Qt::CaseInsensitive) == 0) return FileType::MPEG; + else if (ext.compare(QLatin1String("mp4"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("m4a"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("aac"), Qt::CaseInsensitive) == 0) return FileType::MP4; + else if (ext.compare(QLatin1String("asf"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wma"), Qt::CaseInsensitive) == 0) return FileType::ASF; + else if (ext.compare(QLatin1String("aiff"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("aif"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("aifc"), Qt::CaseInsensitive) == 0) return FileType::AIFF; + else if (ext.compare(QLatin1String("mpc"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("mp+"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("mpp"), Qt::CaseInsensitive) == 0) return FileType::MPC; + else if (ext.compare(QLatin1String("dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF; + else if (ext.compare(QLatin1String("dsd"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("dff"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF; + else if (ext.compare(QLatin1String("ape"), Qt::CaseInsensitive) == 0) return FileType::APE; + else if (ext.compare(QLatin1String("mod"), Qt::CaseInsensitive) == 0 || + ext.compare(QLatin1String("module"), Qt::CaseInsensitive) == 0 || + ext.compare(QLatin1String("nst"), Qt::CaseInsensitive) == 0|| + ext.compare(QLatin1String("wow"), Qt::CaseInsensitive) == 0) return FileType::MOD; + else if (ext.compare(QLatin1String("s3m"), Qt::CaseInsensitive) == 0) return FileType::S3M; + else if (ext.compare(QLatin1String("xm"), Qt::CaseInsensitive) == 0) return FileType::XM; + else if (ext.compare(QLatin1String("it"), Qt::CaseInsensitive) == 0) return FileType::IT; + else if (ext.compare(QLatin1String("spc"), Qt::CaseInsensitive) == 0) return FileType::SPC; + else if (ext.compare(QLatin1String("vgm"), Qt::CaseInsensitive) == 0) return FileType::VGM; else return FileType::Unknown; @@ -1366,76 +1366,76 @@ void Song::ToProtobuf(spb::tagreader::SongMetadata *pb) const { void Song::InitFromQuery(const SqlRow &q, const bool reliable_metadata) { - d->id_ = q.value("rowid").isNull() ? -1 : q.value("rowid").toInt(); + d->id_ = q.value(QStringLiteral("rowid")).isNull() ? -1 : q.value(QStringLiteral("rowid")).toInt(); - set_title(q.ValueToString("title")); - set_album(q.ValueToString("album")); - set_artist(q.ValueToString("artist")); - set_albumartist(q.ValueToString("albumartist")); - d->track_ = q.ValueToInt("track"); - d->disc_ = q.ValueToInt("disc"); - d->year_ = q.ValueToInt("year"); - d->originalyear_ = q.ValueToInt("originalyear"); - d->genre_ = q.ValueToString("genre"); - d->compilation_ = q.value("compilation").toBool(); - d->composer_ = q.ValueToString("composer"); - d->performer_ = q.ValueToString("performer"); - d->grouping_ = q.ValueToString("grouping"); - d->comment_ = q.ValueToString("comment"); - d->lyrics_ = q.ValueToString("lyrics"); - d->artist_id_ = q.ValueToString("artist_id"); - d->album_id_ = q.ValueToString("album_id"); - d->song_id_ = q.ValueToString("song_id"); - d->beginning_ = q.value("beginning").isNull() ? 0 : q.value("beginning").toLongLong(); - set_length_nanosec(q.ValueToLongLong("length")); - d->bitrate_ = q.ValueToInt("bitrate"); - d->samplerate_ = q.ValueToInt("samplerate"); - d->bitdepth_ = q.ValueToInt("bitdepth"); - if (!q.value("ebur128_integrated_loudness_lufs").isNull()) { - d->ebur128_integrated_loudness_lufs_ = q.value("ebur128_integrated_loudness_lufs").toDouble(); + set_title(q.ValueToString(QStringLiteral("title"))); + set_album(q.ValueToString(QStringLiteral("album"))); + set_artist(q.ValueToString(QStringLiteral("artist"))); + set_albumartist(q.ValueToString(QStringLiteral("albumartist"))); + d->track_ = q.ValueToInt(QStringLiteral("track")); + d->disc_ = q.ValueToInt(QStringLiteral("disc")); + d->year_ = q.ValueToInt(QStringLiteral("year")); + d->originalyear_ = q.ValueToInt(QStringLiteral("originalyear")); + d->genre_ = q.ValueToString(QStringLiteral("genre")); + d->compilation_ = q.value(QStringLiteral("compilation")).toBool(); + d->composer_ = q.ValueToString(QStringLiteral("composer")); + d->performer_ = q.ValueToString(QStringLiteral("performer")); + d->grouping_ = q.ValueToString(QStringLiteral("grouping")); + d->comment_ = q.ValueToString(QStringLiteral("comment")); + d->lyrics_ = q.ValueToString(QStringLiteral("lyrics")); + d->artist_id_ = q.ValueToString(QStringLiteral("artist_id")); + d->album_id_ = q.ValueToString(QStringLiteral("album_id")); + d->song_id_ = q.ValueToString(QStringLiteral("song_id")); + d->beginning_ = q.value(QStringLiteral("beginning")).isNull() ? 0 : q.value(QStringLiteral("beginning")).toLongLong(); + set_length_nanosec(q.ValueToLongLong(QStringLiteral("length"))); + d->bitrate_ = q.ValueToInt(QStringLiteral("bitrate")); + d->samplerate_ = q.ValueToInt(QStringLiteral("samplerate")); + d->bitdepth_ = q.ValueToInt(QStringLiteral("bitdepth")); + if (!q.value(QStringLiteral("ebur128_integrated_loudness_lufs")).isNull()) { + d->ebur128_integrated_loudness_lufs_ = q.value(QStringLiteral("ebur128_integrated_loudness_lufs")).toDouble(); } - if (!q.value("ebur128_loudness_range_lu").isNull()) { - d->ebur128_loudness_range_lu_ = q.value("ebur128_loudness_range_lu").toDouble(); + if (!q.value(QStringLiteral("ebur128_loudness_range_lu")).isNull()) { + d->ebur128_loudness_range_lu_ = q.value(QStringLiteral("ebur128_loudness_range_lu")).toDouble(); } - d->source_ = static_cast(q.value("source").isNull() ? 0 : q.value("source").toInt()); - d->directory_id_ = q.ValueToInt("directory_id"); - set_url(QUrl::fromEncoded(q.ValueToString("url").toUtf8())); + d->source_ = static_cast(q.value(QStringLiteral("source")).isNull() ? 0 : q.value(QStringLiteral("source")).toInt()); + d->directory_id_ = q.ValueToInt(QStringLiteral("directory_id")); + set_url(QUrl::fromEncoded(q.ValueToString(QStringLiteral("url")).toUtf8())); d->basefilename_ = QFileInfo(d->url_.toLocalFile()).fileName(); - d->filetype_ = FileType(q.value("filetype").isNull() ? 0 : q.value("filetype").toInt()); - d->filesize_ = q.ValueToLongLong("filesize"); - d->mtime_ = q.ValueToLongLong("mtime"); - d->ctime_ = q.ValueToLongLong("ctime"); - d->unavailable_ = q.value("unavailable").toBool(); - d->fingerprint_ = q.ValueToString("fingerprint"); - d->playcount_ = q.ValueToUInt("playcount"); - d->skipcount_ = q.ValueToUInt("skipcount"); - d->lastplayed_ = q.ValueToLongLong("lastplayed"); - d->lastseen_ = q.ValueToLongLong("lastseen"); - d->compilation_detected_ = q.ValueToBool("compilation_detected"); - d->compilation_on_ = q.ValueToBool("compilation_on"); - d->compilation_off_ = q.ValueToBool("compilation_off"); + d->filetype_ = FileType(q.value(QStringLiteral("filetype")).isNull() ? 0 : q.value(QStringLiteral("filetype")).toInt()); + d->filesize_ = q.ValueToLongLong(QStringLiteral("filesize")); + d->mtime_ = q.ValueToLongLong(QStringLiteral("mtime")); + d->ctime_ = q.ValueToLongLong(QStringLiteral("ctime")); + d->unavailable_ = q.value(QStringLiteral("unavailable")).toBool(); + d->fingerprint_ = q.ValueToString(QStringLiteral("fingerprint")); + d->playcount_ = q.ValueToUInt(QStringLiteral("playcount")); + d->skipcount_ = q.ValueToUInt(QStringLiteral("skipcount")); + d->lastplayed_ = q.ValueToLongLong(QStringLiteral("lastplayed")); + d->lastseen_ = q.ValueToLongLong(QStringLiteral("lastseen")); + d->compilation_detected_ = q.ValueToBool(QStringLiteral("compilation_detected")); + d->compilation_on_ = q.ValueToBool(QStringLiteral("compilation_on")); + d->compilation_off_ = q.ValueToBool(QStringLiteral("compilation_off")); - d->art_embedded_ = q.ValueToBool("art_embedded"); - d->art_automatic_ = QUrl::fromEncoded(q.ValueToString("art_automatic").toUtf8()); - d->art_manual_ = QUrl::fromEncoded(q.ValueToString("art_manual").toUtf8()); - d->art_unset_ = q.ValueToBool("art_unset"); + d->art_embedded_ = q.ValueToBool(QStringLiteral("art_embedded")); + d->art_automatic_ = QUrl::fromEncoded(q.ValueToString(QStringLiteral("art_automatic")).toUtf8()); + d->art_manual_ = QUrl::fromEncoded(q.ValueToString(QStringLiteral("art_manual")).toUtf8()); + d->art_unset_ = q.ValueToBool(QStringLiteral("art_unset")); - d->cue_path_ = q.ValueToString("cue_path"); - d->rating_ = q.ValueToFloat("rating"); + d->cue_path_ = q.ValueToString(QStringLiteral("cue_path")); + d->rating_ = q.ValueToFloat(QStringLiteral("rating")); - d->acoustid_id_ = q.ValueToString("acoustid_id"); - d->acoustid_fingerprint_ = q.ValueToString("acoustid_fingerprint"); + d->acoustid_id_ = q.ValueToString(QStringLiteral("acoustid_id")); + d->acoustid_fingerprint_ = q.ValueToString(QStringLiteral("acoustid_fingerprint")); - d->musicbrainz_album_artist_id_ = q.ValueToString("musicbrainz_album_artist_id"); - d->musicbrainz_artist_id_ = q.ValueToString("musicbrainz_artist_id"); - d->musicbrainz_original_artist_id_ = q.ValueToString("musicbrainz_original_artist_id"); - d->musicbrainz_album_id_ = q.ValueToString("musicbrainz_album_id"); - d->musicbrainz_original_album_id_ = q.ValueToString("musicbrainz_original_album_id"); - d->musicbrainz_recording_id_ = q.ValueToString("musicbrainz_recording_id"); - d->musicbrainz_track_id_ = q.ValueToString("musicbrainz_track_id"); - d->musicbrainz_disc_id_ = q.ValueToString("musicbrainz_disc_id"); - d->musicbrainz_release_group_id_ = q.ValueToString("musicbrainz_release_group_id"); - d->musicbrainz_work_id_ = q.ValueToString("musicbrainz_work_id"); + d->musicbrainz_album_artist_id_ = q.ValueToString(QStringLiteral("musicbrainz_album_artist_id")); + d->musicbrainz_artist_id_ = q.ValueToString(QStringLiteral("musicbrainz_artist_id")); + d->musicbrainz_original_artist_id_ = q.ValueToString(QStringLiteral("musicbrainz_original_artist_id")); + d->musicbrainz_album_id_ = q.ValueToString(QStringLiteral("musicbrainz_album_id")); + d->musicbrainz_original_album_id_ = q.ValueToString(QStringLiteral("musicbrainz_original_album_id")); + d->musicbrainz_recording_id_ = q.ValueToString(QStringLiteral("musicbrainz_recording_id")); + d->musicbrainz_track_id_ = q.ValueToString(QStringLiteral("musicbrainz_track_id")); + d->musicbrainz_disc_id_ = q.ValueToString(QStringLiteral("musicbrainz_disc_id")); + d->musicbrainz_release_group_id_ = q.ValueToString(QStringLiteral("musicbrainz_release_group_id")); + d->musicbrainz_work_id_ = q.ValueToString(QStringLiteral("musicbrainz_work_id")); d->valid_ = true; d->init_from_file_ = reliable_metadata; @@ -1475,7 +1475,7 @@ void Song::InitArtAutomatic() { // Pick the first image file in the album directory. QFileInfo file(d->url_.toLocalFile()); QDir dir(file.path()); - QStringList files = dir.entryList(QStringList() << "*.jpg" << "*.png" << "*.gif" << "*.jpeg", QDir::Files|QDir::Readable, QDir::Name); + QStringList files = dir.entryList(QStringList() << QStringLiteral("*.jpg") << QStringLiteral("*.png") << QStringLiteral("*.gif") << QStringLiteral("*.jpeg"), QDir::Files|QDir::Readable, QDir::Name); if (files.count() > 0) { d->art_automatic_ = QUrl::fromLocalFile(file.path() + QDir::separator() + files.first()); } @@ -1510,7 +1510,7 @@ void Song::InitFromItdb(Itdb_Track *track, const QString &prefix) { d->source_ = Source::Device; QString filename = QString::fromLocal8Bit(track->ipod_path); filename.replace(':', '/'); - if (prefix.contains("://")) { + if (prefix.contains(QLatin1String("://"))) { set_url(QUrl(prefix + filename)); } else { @@ -1591,7 +1591,7 @@ void Song::InitFromMTP(const LIBMTP_track_t *track, const QString &host) { d->composer_ = QString::fromUtf8(track->composer); d->track_ = track->tracknumber; - d->url_ = QUrl(QString("mtp://%1/%2").arg(host, QString::number(track->item_id))); + d->url_ = QUrl(QStringLiteral("mtp://%1/%2").arg(host, QString::number(track->item_id))); d->basefilename_ = QString::number(track->item_id); d->filesize_ = static_cast(track->filesize); d->mtime_ = track->modificationdate; @@ -1674,96 +1674,96 @@ void Song::BindToQuery(SqlQuery *query) const { // Remember to bind these in the same order as kBindSpec - query->BindStringValue(":title", d->title_); - query->BindStringValue(":album", d->album_); - query->BindStringValue(":artist", d->artist_); - query->BindStringValue(":albumartist", d->albumartist_); - query->BindIntValue(":track", d->track_); - query->BindIntValue(":disc", d->disc_); - query->BindIntValue(":year", d->year_); - query->BindIntValue(":originalyear", d->originalyear_); - query->BindStringValue(":genre", d->genre_); - query->BindBoolValue(":compilation", d->compilation_); - query->BindStringValue(":composer", d->composer_); - query->BindStringValue(":performer", d->performer_); - query->BindStringValue(":grouping", d->grouping_); - query->BindStringValue(":comment", d->comment_); - query->BindStringValue(":lyrics", d->lyrics_); + query->BindStringValue(QStringLiteral(":title"), d->title_); + query->BindStringValue(QStringLiteral(":album"), d->album_); + query->BindStringValue(QStringLiteral(":artist"), d->artist_); + query->BindStringValue(QStringLiteral(":albumartist"), d->albumartist_); + query->BindIntValue(QStringLiteral(":track"), d->track_); + query->BindIntValue(QStringLiteral(":disc"), d->disc_); + query->BindIntValue(QStringLiteral(":year"), d->year_); + query->BindIntValue(QStringLiteral(":originalyear"), d->originalyear_); + query->BindStringValue(QStringLiteral(":genre"), d->genre_); + query->BindBoolValue(QStringLiteral(":compilation"), d->compilation_); + query->BindStringValue(QStringLiteral(":composer"), d->composer_); + query->BindStringValue(QStringLiteral(":performer"), d->performer_); + query->BindStringValue(QStringLiteral(":grouping"), d->grouping_); + query->BindStringValue(QStringLiteral(":comment"), d->comment_); + query->BindStringValue(QStringLiteral(":lyrics"), d->lyrics_); - query->BindStringValue(":artist_id", d->artist_id_); - query->BindStringValue(":album_id", d->album_id_); - query->BindStringValue(":song_id", d->song_id_); + query->BindStringValue(QStringLiteral(":artist_id"), d->artist_id_); + query->BindStringValue(QStringLiteral(":album_id"), d->album_id_); + query->BindStringValue(QStringLiteral(":song_id"), d->song_id_); - query->BindValue(":beginning", d->beginning_); - query->BindLongLongValue(":length", length_nanosec()); + query->BindValue(QStringLiteral(":beginning"), d->beginning_); + query->BindLongLongValue(QStringLiteral(":length"), length_nanosec()); - query->BindIntValue(":bitrate", d->bitrate_); - query->BindIntValue(":samplerate", d->samplerate_); - query->BindIntValue(":bitdepth", d->bitdepth_); + query->BindIntValue(QStringLiteral(":bitrate"), d->bitrate_); + query->BindIntValue(QStringLiteral(":samplerate"), d->samplerate_); + query->BindIntValue(QStringLiteral(":bitdepth"), d->bitdepth_); - query->BindValue(":source", static_cast(d->source_)); - query->BindNotNullIntValue(":directory_id", d->directory_id_); - query->BindUrlValue(":url", d->url_); - query->BindValue(":filetype", static_cast(d->filetype_)); - query->BindLongLongValueOrZero(":filesize", d->filesize_); - query->BindLongLongValueOrZero(":mtime", d->mtime_); - query->BindLongLongValueOrZero(":ctime", d->ctime_); - query->BindBoolValue(":unavailable", d->unavailable_); + query->BindValue(QStringLiteral(":source"), static_cast(d->source_)); + query->BindNotNullIntValue(QStringLiteral(":directory_id"), d->directory_id_); + query->BindUrlValue(QStringLiteral(":url"), d->url_); + query->BindValue(QStringLiteral(":filetype"), static_cast(d->filetype_)); + query->BindLongLongValueOrZero(QStringLiteral(":filesize"), d->filesize_); + query->BindLongLongValueOrZero(QStringLiteral(":mtime"), d->mtime_); + query->BindLongLongValueOrZero(QStringLiteral(":ctime"), d->ctime_); + query->BindBoolValue(QStringLiteral(":unavailable"), d->unavailable_); - query->BindStringValue(":fingerprint", d->fingerprint_); + query->BindStringValue(QStringLiteral(":fingerprint"), d->fingerprint_); - query->BindValue(":playcount", d->playcount_); - query->BindValue(":skipcount", d->skipcount_); - query->BindLongLongValue(":lastplayed", d->lastplayed_); - query->BindLongLongValue(":lastseen", d->lastseen_); + query->BindValue(QStringLiteral(":playcount"), d->playcount_); + query->BindValue(QStringLiteral(":skipcount"), d->skipcount_); + query->BindLongLongValue(QStringLiteral(":lastplayed"), d->lastplayed_); + query->BindLongLongValue(QStringLiteral(":lastseen"), d->lastseen_); - query->BindBoolValue(":compilation_detected", d->compilation_detected_); - query->BindBoolValue(":compilation_on", d->compilation_on_); - query->BindBoolValue(":compilation_off", d->compilation_off_); - query->BindBoolValue(":compilation_effective", is_compilation()); + query->BindBoolValue(QStringLiteral(":compilation_detected"), d->compilation_detected_); + query->BindBoolValue(QStringLiteral(":compilation_on"), d->compilation_on_); + query->BindBoolValue(QStringLiteral(":compilation_off"), d->compilation_off_); + query->BindBoolValue(QStringLiteral(":compilation_effective"), is_compilation()); - query->BindBoolValue(":art_embedded", d->art_embedded_); - query->BindUrlValue(":art_automatic", d->art_automatic_); - query->BindUrlValue(":art_manual", d->art_manual_); - query->BindBoolValue(":art_unset", d->art_unset_); + query->BindBoolValue(QStringLiteral(":art_embedded"), d->art_embedded_); + query->BindUrlValue(QStringLiteral(":art_automatic"), d->art_automatic_); + query->BindUrlValue(QStringLiteral(":art_manual"), d->art_manual_); + query->BindBoolValue(QStringLiteral(":art_unset"), d->art_unset_); - query->BindStringValue(":effective_albumartist", effective_albumartist()); - query->BindIntValue(":effective_originalyear", effective_originalyear()); + query->BindStringValue(QStringLiteral(":effective_albumartist"), effective_albumartist()); + query->BindIntValue(QStringLiteral(":effective_originalyear"), effective_originalyear()); - query->BindValue(":cue_path", d->cue_path_); + query->BindValue(QStringLiteral(":cue_path"), d->cue_path_); - query->BindFloatValue(":rating", d->rating_); + query->BindFloatValue(QStringLiteral(":rating"), d->rating_); - query->BindStringValue(":acoustid_id", d->acoustid_id_); - query->BindStringValue(":acoustid_fingerprint", d->acoustid_fingerprint_); + query->BindStringValue(QStringLiteral(":acoustid_id"), d->acoustid_id_); + query->BindStringValue(QStringLiteral(":acoustid_fingerprint"), d->acoustid_fingerprint_); - query->BindStringValue(":musicbrainz_album_artist_id", d->musicbrainz_album_artist_id_); - query->BindStringValue(":musicbrainz_artist_id", d->musicbrainz_artist_id_); - query->BindStringValue(":musicbrainz_original_artist_id", d->musicbrainz_original_artist_id_); - query->BindStringValue(":musicbrainz_album_id", d->musicbrainz_album_id_); - query->BindStringValue(":musicbrainz_original_album_id", d->musicbrainz_original_album_id_); - query->BindStringValue(":musicbrainz_recording_id", d->musicbrainz_recording_id_); - query->BindStringValue(":musicbrainz_track_id", d->musicbrainz_track_id_); - query->BindStringValue(":musicbrainz_disc_id", d->musicbrainz_disc_id_); - query->BindStringValue(":musicbrainz_release_group_id", d->musicbrainz_release_group_id_); - query->BindStringValue(":musicbrainz_work_id", d->musicbrainz_work_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_album_artist_id"), d->musicbrainz_album_artist_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_artist_id"), d->musicbrainz_artist_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_original_artist_id"), d->musicbrainz_original_artist_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_album_id"), d->musicbrainz_album_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_original_album_id"), d->musicbrainz_original_album_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_recording_id"), d->musicbrainz_recording_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_track_id"), d->musicbrainz_track_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_disc_id"), d->musicbrainz_disc_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_release_group_id"), d->musicbrainz_release_group_id_); + query->BindStringValue(QStringLiteral(":musicbrainz_work_id"), d->musicbrainz_work_id_); - query->BindDoubleOrNullValue(":ebur128_integrated_loudness_lufs", d->ebur128_integrated_loudness_lufs_); - query->BindDoubleOrNullValue(":ebur128_loudness_range_lu", d->ebur128_loudness_range_lu_); + query->BindDoubleOrNullValue(QStringLiteral(":ebur128_integrated_loudness_lufs"), d->ebur128_integrated_loudness_lufs_); + query->BindDoubleOrNullValue(QStringLiteral(":ebur128_loudness_range_lu"), d->ebur128_loudness_range_lu_); } void Song::BindToFtsQuery(SqlQuery *query) const { - query->BindValue(":ftstitle", d->title_); - query->BindValue(":ftsalbum", d->album_); - query->BindValue(":ftsartist", d->artist_); - query->BindValue(":ftsalbumartist", d->albumartist_); - query->BindValue(":ftscomposer", d->composer_); - query->BindValue(":ftsperformer", d->performer_); - query->BindValue(":ftsgrouping", d->grouping_); - query->BindValue(":ftsgenre", d->genre_); - query->BindValue(":ftscomment", d->comment_); + query->BindValue(QStringLiteral(":ftstitle"), d->title_); + query->BindValue(QStringLiteral(":ftsalbum"), d->album_); + query->BindValue(QStringLiteral(":ftsartist"), d->artist_); + query->BindValue(QStringLiteral(":ftsalbumartist"), d->albumartist_); + query->BindValue(QStringLiteral(":ftscomposer"), d->composer_); + query->BindValue(QStringLiteral(":ftsperformer"), d->performer_); + query->BindValue(QStringLiteral(":ftsgrouping"), d->grouping_); + query->BindValue(QStringLiteral(":ftsgenre"), d->genre_); + query->BindValue(QStringLiteral(":ftscomment"), d->comment_); } @@ -1774,23 +1774,23 @@ void Song::ToXesam(QVariantMap *map) const { using mpris::AddMetadataAsList; using mpris::AsMPRISDateTimeType; - AddMetadata("xesam:url", effective_stream_url().toString(), map); - AddMetadata("xesam:title", PrettyTitle(), map); - AddMetadataAsList("xesam:artist", artist(), map); - AddMetadata("xesam:album", album(), map); - AddMetadataAsList("xesam:albumArtist", albumartist(), map); - AddMetadata("mpris:length", (length_nanosec() / kNsecPerUsec), map); - AddMetadata("xesam:trackNumber", track(), map); - AddMetadataAsList("xesam:genre", genre(), map); - AddMetadata("xesam:discNumber", disc(), map); - AddMetadataAsList("xesam:comment", comment(), map); - AddMetadata("xesam:contentCreated", AsMPRISDateTimeType(ctime()), map); - AddMetadata("xesam:lastUsed", AsMPRISDateTimeType(lastplayed()), map); - AddMetadataAsList("xesam:composer", composer(), map); - AddMetadata("xesam:useCount", static_cast(playcount()), map); + AddMetadata(QStringLiteral("xesam:url"), effective_stream_url().toString(), map); + AddMetadata(QStringLiteral("xesam:title"), PrettyTitle(), map); + AddMetadataAsList(QStringLiteral("xesam:artist"), artist(), map); + AddMetadata(QStringLiteral("xesam:album"), album(), map); + AddMetadataAsList(QStringLiteral("xesam:albumArtist"), albumartist(), map); + AddMetadata(QStringLiteral("mpris:length"), (length_nanosec() / kNsecPerUsec), map); + AddMetadata(QStringLiteral("xesam:trackNumber"), track(), map); + AddMetadataAsList(QStringLiteral("xesam:genre"), genre(), map); + AddMetadata(QStringLiteral("xesam:discNumber"), disc(), map); + AddMetadataAsList(QStringLiteral("xesam:comment"), comment(), map); + AddMetadata(QStringLiteral("xesam:contentCreated"), AsMPRISDateTimeType(ctime()), map); + AddMetadata(QStringLiteral("xesam:lastUsed"), AsMPRISDateTimeType(lastplayed()), map); + AddMetadataAsList(QStringLiteral("xesam:composer"), composer(), map); + AddMetadata(QStringLiteral("xesam:useCount"), static_cast(playcount()), map); if (rating() != -1.0) { - AddMetadata("xesam:userRating", rating(), map); + AddMetadata(QStringLiteral("xesam:userRating"), rating(), map); } } @@ -1870,7 +1870,7 @@ void Song::MergeUserSetData(const Song &other, const bool merge_playcount, const } QString Song::AlbumKey() const { - return QString("%1|%2|%3").arg(is_compilation() ? "_compilation" : effective_albumartist(), has_cue() ? cue_path() : "", effective_album()); + return QStringLiteral("%1|%2|%3").arg(is_compilation() ? QStringLiteral("_compilation") : effective_albumartist(), has_cue() ? cue_path() : QLatin1String(""), effective_album()); } #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 66839c3a..1ded5ff0 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -82,15 +82,15 @@ SongLoader::SongLoader(SharedPtr collection_backend, success_(false) { if (sRawUriSchemes.isEmpty()) { - sRawUriSchemes << "udp" - << "mms" - << "mmsh" - << "mmst" - << "mmsu" - << "rtsp" - << "rtspu" - << "rtspt" - << "rtsph"; + sRawUriSchemes << QStringLiteral("udp") + << QStringLiteral("mms") + << QStringLiteral("mmsh") + << QStringLiteral("mmst") + << QStringLiteral("mmsu") + << QStringLiteral("rtsp") + << QStringLiteral("rtspu") + << QStringLiteral("rtspt") + << QStringLiteral("rtsph"); } timeout_timer_->setSingleShot(true); @@ -238,7 +238,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString &filename) { CollectionQuery query(db, collection_backend_->songs_table(), collection_backend_->fts_table()); query.SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); - query.AddWhere("url", url.toEncoded()); + query.AddWhere(QStringLiteral("url"), url.toEncoded()); if (query.Exec() && query.Next()) { // We may have many results when the file has many sections @@ -700,7 +700,7 @@ void SongLoader::MagicReady() { if (parser_->name() == "ASX/INI" && url_.scheme() == "http") { // This is actually a weird MS-WMSP stream. Changing the protocol to MMS from HTTP makes it playable. parser_ = nullptr; - url_.setScheme("mms"); + url_.setScheme(QStringLiteral("mms")); StopTypefindAsync(true); } diff --git a/src/core/sqlquery.cpp b/src/core/sqlquery.cpp index a342ad47..e19d77d7 100644 --- a/src/core/sqlquery.cpp +++ b/src/core/sqlquery.cpp @@ -38,13 +38,13 @@ void SqlQuery::BindValue(const QString &placeholder, const QVariant &value) { void SqlQuery::BindStringValue(const QString &placeholder, const QString &value) { - BindValue(placeholder, value.isNull() ? "" : value); + BindValue(placeholder, value.isNull() ? QLatin1String("") : value); } void SqlQuery::BindUrlValue(const QString &placeholder, const QUrl &value) { - BindValue(placeholder, value.isValid() ? value.toString(QUrl::FullyEncoded) : ""); + BindValue(placeholder, value.isValid() ? value.toString(QUrl::FullyEncoded) : QLatin1String("")); } diff --git a/src/core/stylesheetloader.cpp b/src/core/stylesheetloader.cpp index 0b2ebd1a..ac452931 100644 --- a/src/core/stylesheetloader.cpp +++ b/src/core/stylesheetloader.cpp @@ -90,29 +90,29 @@ void StyleSheetLoader::UpdateStyleSheet(QWidget *widget, SharedPtrsetSeparator(true); - show_cover_ = new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this); + show_cover_ = new QAction(IconLoader::Load(QStringLiteral("zoom-in")), tr("Show fullsize..."), this); search_cover_auto_ = new QAction(tr("Search automatically"), this); search_cover_auto_->setCheckable(true); @@ -230,14 +230,14 @@ QUrl AlbumCoverChoiceController::LoadCoverFromFile(Song *song) { void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const AlbumCoverImageResult &result) { - QString initial_file_name = "/"; + QString initial_file_name = QStringLiteral("/"); if (!song.effective_albumartist().isEmpty()) { initial_file_name = initial_file_name + song.effective_albumartist(); } initial_file_name = initial_file_name + "-" + (song.effective_album().isEmpty() ? tr("unknown") : song.effective_album()) + ".jpg"; initial_file_name = initial_file_name.toLower(); - initial_file_name.replace(QRegularExpression("\\s"), "-"); + initial_file_name.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("-")); initial_file_name.remove(QRegularExpression(QString(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption)); QString save_filename = QFileDialog::getSaveFileName(this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + ";;" + tr(kAllFilesFilter)); @@ -255,7 +255,7 @@ void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const A fileinfo.setFile(save_filename); } - if (result.is_jpeg() && fileinfo.completeSuffix().compare("jpg", Qt::CaseInsensitive) == 0) { + if (result.is_jpeg() && fileinfo.completeSuffix().compare(QLatin1String("jpg"), Qt::CaseInsensitive) == 0) { QFile file(save_filename); if (!file.open(QIODevice::WriteOnly)) { qLog(Error) << "Failed to open cover file" << save_filename << "for writing:" << file.errorString(); @@ -655,7 +655,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, "jpg"); + QString filepath = CoverUtils::CoverFilePath(cover_options_, source, artist, album, album_id, album_dir, result.cover_url, QStringLiteral("jpg")); if (filepath.isEmpty()) return QUrl(); QFile file(filepath); @@ -744,7 +744,7 @@ bool AlbumCoverChoiceController::IsKnownImageExtension(const QString &suffix) { if (!sImageExtensions) { sImageExtensions = new QSet(); - (*sImageExtensions) << "png" << "jpg" << "jpeg" << "bmp" << "gif" << "xpm" << "pbm" << "pgm" << "ppm" << "xbm"; + (*sImageExtensions) << QStringLiteral("png") << QStringLiteral("jpg") << QStringLiteral("jpeg") << QStringLiteral("bmp") << QStringLiteral("gif") << QStringLiteral("xpm") << QStringLiteral("pbm") << QStringLiteral("pgm") << QStringLiteral("ppm") << QStringLiteral("xbm"); } return sImageExtensions->contains(suffix); diff --git a/src/covermanager/albumcoverexport.cpp b/src/covermanager/albumcoverexport.cpp index de357958..96b3a256 100644 --- a/src/covermanager/albumcoverexport.cpp +++ b/src/covermanager/albumcoverexport.cpp @@ -69,7 +69,7 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { if (!result.cancelled_) { QString fileName = ui_->fileName->text(); if (fileName.isEmpty()) { - fileName = "cover"; + fileName = QStringLiteral("cover"); } 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/albumcoverfetchersearch.cpp b/src/covermanager/albumcoverfetchersearch.cpp index 7995cab9..2b04a697 100644 --- a/src/covermanager/albumcoverfetchersearch.cpp +++ b/src/covermanager/albumcoverfetchersearch.cpp @@ -83,7 +83,7 @@ void AlbumCoverFetcherSearch::TerminateSearch() { void AlbumCoverFetcherSearch::Start(SharedPtr cover_providers) { // Ignore Radio Paradise "commercial" break. - if (request_.artist.compare("commercial-free", Qt::CaseInsensitive) == 0 && request_.title.compare("listener-supported", Qt::CaseInsensitive) == 0) { + if (request_.artist.compare(QLatin1String("commercial-free"), Qt::CaseInsensitive) == 0 && request_.title.compare(QLatin1String("listener-supported"), Qt::CaseInsensitive) == 0) { TerminateSearch(); return; } @@ -167,51 +167,51 @@ void AlbumCoverFetcherSearch::ProviderSearchResults(CoverProvider *provider, con // This is done since we can't match the album titles, and we want to prevent compilation or live albums from being picked before studio albums for streams. // TODO: Make these regular expressions. if (request_album.isEmpty() && ( - result_album.contains("hits", Qt::CaseInsensitive) || - result_album.contains("greatest", Qt::CaseInsensitive) || - result_album.contains("best", Qt::CaseInsensitive) || - result_album.contains("collection", Qt::CaseInsensitive) || - result_album.contains("classics", Qt::CaseInsensitive) || - result_album.contains("singles", Qt::CaseInsensitive) || - result_album.contains("bootleg", Qt::CaseInsensitive) || - result_album.contains("live", Qt::CaseInsensitive) || - result_album.contains("concert", Qt::CaseInsensitive) || - result_album.contains("essential", Qt::CaseInsensitive) || - result_album.contains("ultimate", Qt::CaseInsensitive) || - result_album.contains("karaoke", Qt::CaseInsensitive) || - result_album.contains("mixtape", Qt::CaseInsensitive) || - result_album.contains("country rock", Qt::CaseInsensitive) || - result_album.contains("indie folk", Qt::CaseInsensitive) || - result_album.contains("soft rock", Qt::CaseInsensitive) || - result_album.contains("folk music", Qt::CaseInsensitive) || - result_album.contains("60's rock", Qt::CaseInsensitive) || - result_album.contains("60's romance", Qt::CaseInsensitive) || - result_album.contains("60s music", Qt::CaseInsensitive) || - result_album.contains("late 60s", Qt::CaseInsensitive) || - result_album.contains("the 60s", Qt::CaseInsensitive) || - result_album.contains("folk and blues", Qt::CaseInsensitive) || - result_album.contains("60 from the 60's", Qt::CaseInsensitive) || - result_album.contains("classic psychedelic", Qt::CaseInsensitive) || - result_album.contains("playlist: acoustic", Qt::CaseInsensitive) || - result_album.contains("90's rnb playlist", Qt::CaseInsensitive) || - result_album.contains("rock 80s", Qt::CaseInsensitive) || - result_album.contains("classic 80s", Qt::CaseInsensitive) || - result_album.contains("rock anthems", Qt::CaseInsensitive) || - result_album.contains("rock songs", Qt::CaseInsensitive) || - result_album.contains("rock 2019", Qt::CaseInsensitive) || - result_album.contains("guitar anthems", Qt::CaseInsensitive) || - result_album.contains("driving anthems", Qt::CaseInsensitive) || - result_album.contains("traffic jam jams", Qt::CaseInsensitive) || - result_album.contains("perfect background music", Qt::CaseInsensitive) || - result_album.contains("70's gold", Qt::CaseInsensitive) || - result_album.contains("rockfluence", Qt::CaseInsensitive) || - result_album.contains("acoustic dinner accompaniment", Qt::CaseInsensitive) || - result_album.contains("complete studio albums", Qt::CaseInsensitive) || - result_album.contains("mellow rock", Qt::CaseInsensitive) + result_album.contains(QLatin1String("hits"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("greatest"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("best"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("collection"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("classics"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("singles"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("bootleg"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("live"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("concert"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("essential"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("ultimate"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("karaoke"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("mixtape"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("country rock"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("indie folk"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("soft rock"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("folk music"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("60's rock"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("60's romance"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("60s music"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("late 60s"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("the 60s"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("folk and blues"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("60 from the 60's"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("classic psychedelic"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("playlist: acoustic"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("90's rnb playlist"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("rock 80s"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("classic 80s"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("rock anthems"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("rock songs"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("rock 2019"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("guitar anthems"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("driving anthems"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("traffic jam jams"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("perfect background music"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("70's gold"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("rockfluence"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("acoustic dinner accompaniment"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("complete studio albums"), Qt::CaseInsensitive) || + result_album.contains(QLatin1String("mellow rock"), Qt::CaseInsensitive) )) { results_copy[i].score_match -= 1; } - else if (request_album.isEmpty() && result_album.contains("soundtrack", Qt::CaseInsensitive)) { + else if (request_album.isEmpty() && result_album.contains(QLatin1String("soundtrack"), Qt::CaseInsensitive)) { results_copy[i].score_match -= 0.5; } diff --git a/src/covermanager/albumcoverloaderoptions.cpp b/src/covermanager/albumcoverloaderoptions.cpp index 163ba418..2a0826a7 100644 --- a/src/covermanager/albumcoverloaderoptions.cpp +++ b/src/covermanager/albumcoverloaderoptions.cpp @@ -35,7 +35,7 @@ AlbumCoverLoaderOptions::Types AlbumCoverLoaderOptions::LoadTypes() { QSettings s; s.beginGroup(CoversSettingsPage::kSettingsGroup); - const QStringList all_cover_types = QStringList() << "art_unset" << "art_embedded" << "art_manual" << "art_automatic"; + const QStringList all_cover_types = QStringList() << QStringLiteral("art_unset") << QStringLiteral("art_embedded") << QStringLiteral("art_manual") << QStringLiteral("art_automatic"); 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") { diff --git a/src/covermanager/albumcovermanager.cpp b/src/covermanager/albumcovermanager.cpp index 467e9c9d..9c752131 100644 --- a/src/covermanager/albumcovermanager.cpp +++ b/src/covermanager/albumcovermanager.cpp @@ -112,8 +112,8 @@ AlbumCoverManager::AlbumCoverManager(Application *app, SharedPtralbums->set_cover_manager(this); // Icons - ui_->action_fetch->setIcon(IconLoader::Load("download")); - ui_->export_covers->setIcon(IconLoader::Load("document-save")); - ui_->view->setIcon(IconLoader::Load("view-choose")); - ui_->button_fetch->setIcon(IconLoader::Load("download")); - ui_->action_add_to_playlist->setIcon(IconLoader::Load("media-playback-start")); - ui_->action_load->setIcon(IconLoader::Load("media-playback-start")); + ui_->action_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"))); album_cover_choice_controller_->Init(app_); @@ -877,12 +877,12 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex &idx) const { CollectionQuery q(db, collection_backend_->songs_table(), collection_backend_->fts_table()); q.SetColumnSpec("ROWID," + Song::kColumnSpec); - q.AddWhere("album", idx.data(Role_Album).toString()); - q.SetOrderBy("disc, track, title"); + q.AddWhere(QStringLiteral("album"), idx.data(Role_Album).toString()); + q.SetOrderBy(QStringLiteral("disc, track, title")); QString albumartist = idx.data(Role_AlbumArtist).toString(); if (!albumartist.isEmpty()) { - q.AddWhere("effective_albumartist", albumartist); + q.AddWhere(QStringLiteral("effective_albumartist"), albumartist); } q.AddCompilationRequirement(albumartist.isEmpty()); diff --git a/src/covermanager/coverexportrunnable.cpp b/src/covermanager/coverexportrunnable.cpp index 6857a976..050af0fe 100644 --- a/src/covermanager/coverexportrunnable.cpp +++ b/src/covermanager/coverexportrunnable.cpp @@ -76,7 +76,7 @@ void CoverExportRunnable::ProcessAndExportCover() { if (song_.art_embedded() && dialog_result_.export_embedded_) { image = TagReaderClient::Instance()->LoadEmbeddedArtAsImageBlocking(song_.url().toLocalFile()); if (!image.isNull()) { - extension = "jpg"; + extension = QStringLiteral("jpg"); } } break; @@ -111,7 +111,7 @@ void CoverExportRunnable::ProcessAndExportCover() { } QString cover_dir = song_.url().toLocalFile().section('/', 0, -2); - QString new_file = cover_dir + '/' + dialog_result_.filename_ + '.' + (song_.art_embedded() ? "jpg" : extension); + QString new_file = cover_dir + '/' + dialog_result_.filename_ + '.' + (song_.art_embedded() ? QStringLiteral("jpg") : extension); // If the file exists, do not override! if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode::None && QFile::exists(new_file)) { @@ -169,7 +169,7 @@ void CoverExportRunnable::ExportCover() { image = TagReaderClient::Instance()->LoadEmbeddedArtAsImageBlocking(song_.url().toLocalFile()); if (!image.isNull()) { embedded_cover = true; - extension = "jpg"; + extension = QStringLiteral("jpg"); } } break; diff --git a/src/covermanager/coverfromurldialog.cpp b/src/covermanager/coverfromurldialog.cpp index ffb45505..d97e57c9 100644 --- a/src/covermanager/coverfromurldialog.cpp +++ b/src/covermanager/coverfromurldialog.cpp @@ -56,7 +56,7 @@ CoverFromURLDialog::~CoverFromURLDialog() { AlbumCoverImageResult CoverFromURLDialog::Exec() { // reset state - ui_->url->setText(""); + ui_->url->setText(QLatin1String("")); last_album_cover_ = AlbumCoverImageResult(); QClipboard *clipboard = QApplication::clipboard(); diff --git a/src/covermanager/coversearchstatistics.cpp b/src/covermanager/coversearchstatistics.cpp index 824a7371..2ad4d4b4 100644 --- a/src/covermanager/coversearchstatistics.cpp +++ b/src/covermanager/coversearchstatistics.cpp @@ -60,7 +60,7 @@ CoverSearchStatistics &CoverSearchStatistics::operator+=(const CoverSearchStatis QString CoverSearchStatistics::AverageDimensions() const { if (chosen_images_ == 0) { - return "0x0"; + return QStringLiteral("0x0"); } return QString::number(chosen_width_ / chosen_images_) + "x" + QString::number(chosen_height_ / chosen_images_); diff --git a/src/covermanager/coversearchstatisticsdialog.cpp b/src/covermanager/coversearchstatisticsdialog.cpp index b30d94e5..0b553967 100644 --- a/src/covermanager/coversearchstatisticsdialog.cpp +++ b/src/covermanager/coversearchstatisticsdialog.cpp @@ -79,7 +79,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_) : "0 bytes"); + AddLine(tr("Total bytes transferred"), statistics.bytes_transferred_ > 0 ? Utilities::PrettySize(statistics.bytes_transferred_) : QStringLiteral("0 bytes")); details_layout_->addStretch(); diff --git a/src/covermanager/currentalbumcoverloader.cpp b/src/covermanager/currentalbumcoverloader.cpp index 7667ffa5..5f5a97ee 100644 --- a/src/covermanager/currentalbumcoverloader.cpp +++ b/src/covermanager/currentalbumcoverloader.cpp @@ -46,7 +46,7 @@ CurrentAlbumCoverLoader::CurrentAlbumCoverLoader(Application *app, QObject *pare options_.options = AlbumCoverLoaderOptions::Option::RawImageData | AlbumCoverLoaderOptions::Option::OriginalImage | AlbumCoverLoaderOptions::Option::ScaledImage; options_.desired_scaled_size = QSize(120, 120); - options_.default_cover = ":/pictures/cdcase.png"; + options_.default_cover = QStringLiteral(":/pictures/cdcase.png"); 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 ebc902cd..82a0967b 100644 --- a/src/covermanager/deezercoverprovider.cpp +++ b/src/covermanager/deezercoverprovider.cpp @@ -51,7 +51,7 @@ const char *DeezerCoverProvider::kApiUrl = "https://api.deezer.com"; const int DeezerCoverProvider::kLimit = 10; DeezerCoverProvider::DeezerCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Deezer", true, false, 2.0, true, true, app, network, parent) {} + : JsonCoverProvider(QStringLiteral("Deezer"), true, false, 2.0, true, true, app, network, parent) {} DeezerCoverProvider::~DeezerCoverProvider() { @@ -71,12 +71,12 @@ bool DeezerCoverProvider::StartSearch(const QString &artist, const QString &albu QString resource; QString query = artist; if (album.isEmpty() && !title.isEmpty()) { - resource = "search/track"; + resource = QStringLiteral("search/track"); if (!query.isEmpty()) query.append(" "); query.append(title); } else { - resource = "search/album"; + resource = QStringLiteral("search/album"); if (!album.isEmpty()) { if (!query.isEmpty()) query.append(" "); query.append(album); @@ -92,7 +92,7 @@ bool DeezerCoverProvider::StartSearch(const QString &artist, const QString &albu url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(kApiUrl + QString("/") + resource); + QUrl url(kApiUrl + QStringLiteral("/") + resource); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -116,7 +116,7 @@ QByteArray DeezerCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - QString error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + QString error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); Error(error); } else { @@ -127,22 +127,22 @@ QByteArray DeezerCoverProvider::GetReplyData(QNetworkReply *reply) { QString error; if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (json_obj.contains("error")) { - QJsonValue value_error = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue value_error = json_obj[QStringLiteral("error")]; if (value_error.isObject()) { QJsonObject obj_error = value_error.toObject(); - int code = obj_error["code"].toInt(); - QString message = obj_error["message"].toString(); - error = QString("%1 (%2)").arg(message).arg(code); + int code = obj_error[QStringLiteral("code")].toInt(); + QString message = obj_error[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(message).arg(code); } } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -159,27 +159,27 @@ QJsonValue DeezerCoverProvider::ExtractData(const QByteArray &data) { QJsonObject json_obj = ExtractJsonObj(data); if (json_obj.isEmpty()) return QJsonObject(); - if (json_obj.contains("error")) { - QJsonValue value_error = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue value_error = json_obj[QStringLiteral("error")]; if (!value_error.isObject()) { - Error("Error missing object", json_obj); + Error(QStringLiteral("Error missing object"), json_obj); return QJsonValue(); } QJsonObject obj_error = value_error.toObject(); - const int code = obj_error["code"].toInt(); - QString message = obj_error["message"].toString(); - Error(QString("%1 (%2)").arg(message).arg(code)); + const int code = obj_error[QStringLiteral("code")].toInt(); + QString message = obj_error[QStringLiteral("message")].toString(); + Error(QStringLiteral("%1 (%2)").arg(message).arg(code)); return QJsonValue(); } - if (!json_obj.contains("data") && !json_obj.contains("DATA")) { - Error("Json reply object is missing data.", json_obj); + if (!json_obj.contains(QStringLiteral("data")) && !json_obj.contains(QStringLiteral("DATA"))) { + Error(QStringLiteral("Json reply object is missing data."), json_obj); return QJsonValue(); } QJsonValue value_data; - if (json_obj.contains("data")) value_data = json_obj["data"]; - else value_data = json_obj["DATA"]; + if (json_obj.contains(QStringLiteral("data"))) value_data = json_obj[QStringLiteral("data")]; + else value_data = json_obj[QStringLiteral("DATA")]; return value_data; @@ -215,63 +215,63 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) for (const QJsonValueRef json_value : array_data) { if (!json_value.isObject()) { - Error("Invalid Json reply, data array value is not a object."); + Error(QStringLiteral("Invalid Json reply, data array value is not a object.")); continue; } QJsonObject json_obj = json_value.toObject(); QJsonObject obj_album; - if (json_obj.contains("album") && json_obj["album"].isObject()) { // Song search, so extract the album. - obj_album = json_obj["album"].toObject(); + if (json_obj.contains(QStringLiteral("album")) && json_obj[QStringLiteral("album")].isObject()) { // Song search, so extract the album. + obj_album = json_obj[QStringLiteral("album")].toObject(); } else { obj_album = json_obj; } - if (!json_obj.contains("id") || !obj_album.contains("id")) { - Error("Invalid Json reply, data array value object is missing ID.", json_obj); + if (!json_obj.contains(QStringLiteral("id")) || !obj_album.contains(QStringLiteral("id"))) { + Error(QStringLiteral("Invalid Json reply, data array value object is missing ID."), json_obj); continue; } - if (!obj_album.contains("type")) { - Error("Invalid Json reply, data array value album object is missing type.", obj_album); + if (!obj_album.contains(QStringLiteral("type"))) { + Error(QStringLiteral("Invalid Json reply, data array value album object is missing type."), obj_album); continue; } - QString type = obj_album["type"].toString(); + QString type = obj_album[QStringLiteral("type")].toString(); if (type != "album") { - Error("Invalid Json reply, data array value album object has incorrect type returned", obj_album); + Error(QStringLiteral("Invalid Json reply, data array value album object has incorrect type returned"), obj_album); continue; } - if (!json_obj.contains("artist")) { - Error("Invalid Json reply, data array value object is missing artist.", json_obj); + if (!json_obj.contains(QStringLiteral("artist"))) { + Error(QStringLiteral("Invalid Json reply, data array value object is missing artist."), json_obj); continue; } - QJsonValue value_artist = json_obj["artist"]; + QJsonValue value_artist = json_obj[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, data array value artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, data array value artist is not a object."), value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) { - Error("Invalid Json reply, data array value artist object is missing name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, data array value artist object is missing name."), obj_artist); continue; } - QString artist = obj_artist["name"].toString(); + QString artist = obj_artist[QStringLiteral("name")].toString(); - if (!obj_album.contains("title")) { - Error("Invalid Json reply, data array value album object is missing title.", obj_album); + if (!obj_album.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, data array value album object is missing title."), obj_album); continue; } - QString album = obj_album["title"].toString(); + QString album = obj_album[QStringLiteral("title")].toString(); CoverProviderSearchResult cover_result; cover_result.artist = artist; cover_result.album = Song::AlbumRemoveDiscMisc(album); bool have_cover = false; - QList> cover_sizes = QList>() << qMakePair(QString("cover_xl"), QSize(1000, 1000)) - << qMakePair(QString("cover_big"), QSize(500, 500)); + QList> cover_sizes = QList>() << qMakePair(QStringLiteral("cover_xl"), QSize(1000, 1000)) + << qMakePair(QStringLiteral("cover_big"), 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(); @@ -289,7 +289,7 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) } if (!have_cover) { - Error("Invalid Json reply, data array value album object is missing cover.", obj_album); + Error(QStringLiteral("Invalid Json reply, data array value album object is missing cover."), obj_album); } } diff --git a/src/covermanager/discogscoverprovider.cpp b/src/covermanager/discogscoverprovider.cpp index df2928ef..d519d1fc 100644 --- a/src/covermanager/discogscoverprovider.cpp +++ b/src/covermanager/discogscoverprovider.cpp @@ -58,7 +58,7 @@ const char *DiscogsCoverProvider::kSecretKeyB64 = "ZkFIcmlaSER4aHhRSlF2U3d0bm5ZV const int DiscogsCoverProvider::kRequestsDelay = 1000; DiscogsCoverProvider::DiscogsCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Discogs", false, false, 0.0, false, false, app, network, parent), + : JsonCoverProvider(QStringLiteral("Discogs"), false, false, 0.0, false, false, app, network, parent), timer_flush_requests_(new QTimer(this)) { timer_flush_requests_->setInterval(kRequestsDelay); @@ -163,11 +163,11 @@ QNetworkReply *DiscogsCoverProvider::CreateRequest(QUrl url, const ParamList &pa url.setQuery(url_query); // Sign the request - const QByteArray data_to_sign = QString("GET\n%1\n%2\n%3").arg(url.host(), url.path(), query_items.join("&")).toUtf8(); + const QByteArray data_to_sign = QStringLiteral("GET\n%1\n%2\n%3").arg(url.host(), url.path(), query_items.join(QStringLiteral("&"))).toUtf8(); const QByteArray signature(Utilities::HmacSha256(QByteArray::fromBase64(kSecretKeyB64), data_to_sign)); // Add the signature to the request - url_query.addQueryItem("Signature", QUrl::toPercentEncoding(signature.toBase64())); + url_query.addQueryItem(QStringLiteral("Signature"), QUrl::toPercentEncoding(signature.toBase64())); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -190,7 +190,7 @@ QByteArray DiscogsCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - QString error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + QString error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); Error(error); } else { @@ -201,16 +201,16 @@ QByteArray DiscogsCoverProvider::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (json_obj.contains("message")) { - error = json_obj["message"].toString(); + if (json_obj.contains(QStringLiteral("message"))) { + error = json_obj[QStringLiteral("message")].toString(); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -245,23 +245,23 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) } QJsonValue value_results; - if (json_obj.contains("results")) { - value_results = json_obj["results"]; + if (json_obj.contains(QStringLiteral("results"))) { + value_results = json_obj[QStringLiteral("results")]; } - else if (json_obj.contains("message")) { - QString message = json_obj["message"].toString(); - Error(QString("%1").arg(message)); + else if (json_obj.contains(QStringLiteral("message"))) { + QString message = json_obj[QStringLiteral("message")].toString(); + Error(QStringLiteral("%1").arg(message)); EndSearch(search); return; } else { - Error("Json object is missing results.", json_obj); + Error(QStringLiteral("Json object is missing results."), json_obj); EndSearch(search); return; } if (!value_results.isArray()) { - Error("Missing results array.", value_results); + Error(QStringLiteral("Missing results array."), value_results); EndSearch(search); return; } @@ -270,20 +270,20 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) for (QJsonValueRef value_result : array_results) { if (!value_result.isObject()) { - Error("Invalid Json reply, results value is not a object."); + Error(QStringLiteral("Invalid Json reply, results value is not a object.")); continue; } QJsonObject obj_result = value_result.toObject(); - if (!obj_result.contains("id") || !obj_result.contains("title") || !obj_result.contains("resource_url")) { - Error("Invalid Json reply, results value object is missing ID, title or resource_url.", obj_result); + if (!obj_result.contains(QStringLiteral("id")) || !obj_result.contains(QStringLiteral("title")) || !obj_result.contains(QStringLiteral("resource_url"))) { + Error(QStringLiteral("Invalid Json reply, results value object is missing ID, title or resource_url."), obj_result); continue; } - quint64 release_id = obj_result["id"].toInt(); - QUrl resource_url(obj_result["resource_url"].toString()); - QString title = obj_result["title"].toString(); + quint64 release_id = obj_result[QStringLiteral("id")].toInt(); + QUrl resource_url(obj_result[QStringLiteral("resource_url")].toString()); + QString title = obj_result[QStringLiteral("title")].toString(); - if (title.contains(" - ")) { - QStringList title_splitted = title.split(" - "); + if (title.contains(QLatin1String(" - "))) { + QStringList title_splitted = title.split(QStringLiteral(" - ")); if (title_splitted.count() == 2) { QString artist = title_splitted.first(); title = title_splitted.last(); @@ -354,20 +354,20 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se return; } - if (!json_obj.contains("artists") || !json_obj.contains("title")) { - Error("Json reply object is missing artists or title.", json_obj); + if (!json_obj.contains(QStringLiteral("artists")) || !json_obj.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Json reply object is missing artists or title."), json_obj); EndSearch(search, release.id); return; } - if (!json_obj.contains("images")) { + if (!json_obj.contains(QStringLiteral("images"))) { EndSearch(search, release.id); return; } - QJsonValue value_artists = json_obj["artists"]; + QJsonValue value_artists = json_obj[QStringLiteral("artists")]; if (!value_artists.isArray()) { - Error("Json reply object artists is not a array.", value_artists); + Error(QStringLiteral("Json reply object artists is not a array."), value_artists); EndSearch(search, release.id); return; } @@ -376,15 +376,15 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se QString artist; for (const QJsonValueRef value_artist : array_artists) { if (!value_artist.isObject()) { - Error("Invalid Json reply, atists array value is not a object."); + Error(QStringLiteral("Invalid Json reply, atists array value is not a object.")); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) { - Error("Invalid Json reply, artists array value object is missing name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, artists array value object is missing name."), obj_artist); continue; } - artist = obj_artist["name"].toString(); + artist = obj_artist[QStringLiteral("name")].toString(); ++i; if (artist == search->artist) break; } @@ -393,24 +393,24 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se EndSearch(search, release.id); return; } - if (i > 1 && artist != search->artist) artist = "Various artists"; + if (i > 1 && artist != search->artist) artist = QStringLiteral("Various artists"); - QString album = json_obj["title"].toString(); + QString album = json_obj[QStringLiteral("title")].toString(); if (artist != search->artist && album != search->album) { EndSearch(search, release.id); return; } - QJsonValue value_images = json_obj["images"]; + QJsonValue value_images = json_obj[QStringLiteral("images")]; if (!value_images.isArray()) { - Error("Json images is not an array."); + Error(QStringLiteral("Json images is not an array.")); EndSearch(search, release.id); return; } QJsonArray array_images = value_images.toArray(); if (array_images.isEmpty()) { - Error("Invalid Json reply, images array is empty."); + Error(QStringLiteral("Invalid Json reply, images array is empty.")); EndSearch(search, release.id); return; } @@ -418,27 +418,27 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se for (const QJsonValueRef value_image : array_images) { if (!value_image.isObject()) { - Error("Invalid Json reply, images array value is not an object."); + Error(QStringLiteral("Invalid Json reply, images array value is not an object.")); continue; } QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("type") || !obj_image.contains("resource_url") || !obj_image.contains("width") || !obj_image.contains("height")) { - Error("Invalid Json reply, images array value object is missing type, resource_url, width or height.", obj_image); + if (!obj_image.contains(QStringLiteral("type")) || !obj_image.contains(QStringLiteral("resource_url")) || !obj_image.contains(QStringLiteral("width")) || !obj_image.contains(QStringLiteral("height"))) { + Error(QStringLiteral("Invalid Json reply, images array value object is missing type, resource_url, width or height."), obj_image); continue; } - QString type = obj_image["type"].toString(); + QString type = obj_image[QStringLiteral("type")].toString(); if (type != "primary") { continue; } - int width = obj_image["width"].toInt(); - int height = obj_image["height"].toInt(); + int width = obj_image[QStringLiteral("width")].toInt(); + int height = obj_image[QStringLiteral("height")].toInt(); if (width < 300 || height < 300) continue; const float aspect_score = static_cast(1.0) - static_cast(std::max(width, height) - std::min(width, height)) / static_cast(std::max(height, width)); if (aspect_score < 0.85) continue; CoverProviderSearchResult result; result.artist = artist; result.album = album; - result.image_url = QUrl(obj_image["resource_url"].toString()); + result.image_url = QUrl(obj_image[QStringLiteral("resource_url")].toString()); if (result.image_url.isEmpty()) continue; search->results.append(result); } diff --git a/src/covermanager/jsoncoverprovider.cpp b/src/covermanager/jsoncoverprovider.cpp index 4ac98c62..5ec3d5db 100644 --- a/src/covermanager/jsoncoverprovider.cpp +++ b/src/covermanager/jsoncoverprovider.cpp @@ -40,23 +40,23 @@ QJsonObject JsonCoverProvider::ExtractJsonObj(const QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse json data: %1").arg(json_error.errorString())); + Error(QStringLiteral("Failed to parse json data: %1").arg(json_error.errorString())); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } diff --git a/src/covermanager/lastfmcoverprovider.cpp b/src/covermanager/lastfmcoverprovider.cpp index 2b5b44da..ce1a97d5 100644 --- a/src/covermanager/lastfmcoverprovider.cpp +++ b/src/covermanager/lastfmcoverprovider.cpp @@ -51,7 +51,7 @@ const char *LastFmCoverProvider::kApiKey = "211990b4c96782c05d1536e7219eb56e"; const char *LastFmCoverProvider::kSecret = "80fd738f49596e9709b1bf9319c444a8"; LastFmCoverProvider::LastFmCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Last.fm", true, false, 1.0, true, false, app, network, parent) {} + : JsonCoverProvider(QStringLiteral("Last.fm"), true, false, 1.0, true, false, app, network, parent) {} LastFmCoverProvider::~LastFmCoverProvider() { @@ -72,14 +72,14 @@ bool LastFmCoverProvider::StartSearch(const QString &artist, const QString &albu QString type; QString query = artist; if (album.isEmpty() && !title.isEmpty()) { - method = "track.search"; - type = "track"; + method = QStringLiteral("track.search"); + type = QStringLiteral("track"); if (!query.isEmpty()) query.append(" "); query.append(title); } else { - method = "album.search"; - type = "album"; + method = QStringLiteral("album.search"); + type = QStringLiteral("album"); if (!album.isEmpty()) { if (!query.isEmpty()) query.append(" "); query.append(album); @@ -104,8 +104,8 @@ 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, '0').toLower(); - url_query.addQueryItem(QUrl::toPercentEncoding("api_sig"), QUrl::toPercentEncoding(signature)); - url_query.addQueryItem(QUrl::toPercentEncoding("format"), QUrl::toPercentEncoding("json")); + url_query.addQueryItem(QUrl::toPercentEncoding(QStringLiteral("api_sig")), QUrl::toPercentEncoding(signature)); + url_query.addQueryItem(QUrl::toPercentEncoding(QStringLiteral("format")), QUrl::toPercentEncoding(QStringLiteral("json"))); QUrl url(kUrl); QNetworkRequest req(url); @@ -141,31 +141,31 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons } QJsonValue value_results; - if (json_obj.contains("results")) { - value_results = json_obj["results"]; + if (json_obj.contains(QStringLiteral("results"))) { + value_results = json_obj[QStringLiteral("results")]; } - else if (json_obj.contains("error") && json_obj.contains("message")) { - int error = json_obj["error"].toInt(); - QString message = json_obj["message"].toString(); - Error(QString("Error: %1: %2").arg(QString::number(error), message)); + else if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + int error = json_obj[QStringLiteral("error")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + Error(QStringLiteral("Error: %1: %2").arg(QString::number(error), message)); emit SearchFinished(id, results); return; } else { - Error(QString("Json reply is missing results."), json_obj); + Error(QStringLiteral("Json reply is missing results."), json_obj); emit SearchFinished(id, results); return; } if (!value_results.isObject()) { - Error("Json results is not a object.", value_results); + Error(QStringLiteral("Json results is not a object."), value_results); emit SearchFinished(id, results); return; } QJsonObject obj_results = value_results.toObject(); if (obj_results.isEmpty()) { - Error("Json results object is empty.", value_results); + Error(QStringLiteral("Json results object is empty."), value_results); emit SearchFinished(id, results); return; } @@ -173,49 +173,49 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons QJsonValue value_matches; if (type == "album") { - if (obj_results.contains("albummatches")) { - value_matches = obj_results["albummatches"]; + if (obj_results.contains(QStringLiteral("albummatches"))) { + value_matches = obj_results[QStringLiteral("albummatches")]; } else { - Error("Json results object is missing albummatches.", obj_results); + Error(QStringLiteral("Json results object is missing albummatches."), obj_results); emit SearchFinished(id, results); return; } } else if (type == "track") { - if (obj_results.contains("trackmatches")) { - value_matches = obj_results["trackmatches"]; + if (obj_results.contains(QStringLiteral("trackmatches"))) { + value_matches = obj_results[QStringLiteral("trackmatches")]; } else { - Error("Json results object is missing trackmatches.", obj_results); + Error(QStringLiteral("Json results object is missing trackmatches."), obj_results); emit SearchFinished(id, results); return; } } if (!value_matches.isObject()) { - Error("Json albummatches or trackmatches is not an object.", value_matches); + Error(QStringLiteral("Json albummatches or trackmatches is not an object."), value_matches); emit SearchFinished(id, results); return; } QJsonObject obj_matches = value_matches.toObject(); if (obj_matches.isEmpty()) { - Error("Json albummatches or trackmatches object is empty.", value_matches); + Error(QStringLiteral("Json albummatches or trackmatches object is empty."), value_matches); emit SearchFinished(id, results); return; } QJsonValue value_type; if (!obj_matches.contains(type)) { - Error(QString("Json object is missing %1.").arg(type), obj_matches); + Error(QStringLiteral("Json object is missing %1.").arg(type), obj_matches); emit SearchFinished(id, results); return; } value_type = obj_matches[type]; if (!value_type.isArray()) { - Error("Json album value in albummatches object is not an array.", value_type); + Error(QStringLiteral("Json album value in albummatches object is not an array."), value_type); emit SearchFinished(id, results); return; } @@ -224,23 +224,23 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons for (const QJsonValueRef value : array_type) { if (!value.isObject()) { - Error("Invalid Json reply, value in albummatches/trackmatches array is not a object."); + Error(QStringLiteral("Invalid Json reply, value in albummatches/trackmatches array is not a object.")); continue; } QJsonObject obj = value.toObject(); - if (!obj.contains("artist") || !obj.contains("image") || !obj.contains("name")) { - Error("Invalid Json reply, album is missing artist, image or name.", obj); + if (!obj.contains(QStringLiteral("artist")) || !obj.contains(QStringLiteral("image")) || !obj.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, album is missing artist, image or name."), obj); continue; } - QString artist = obj["artist"].toString(); + QString artist = obj[QStringLiteral("artist")].toString(); QString album; if (type == "album") { - album = obj["name"].toString(); + album = obj[QStringLiteral("name")].toString(); } - QJsonValue json_image = obj["image"]; + QJsonValue json_image = obj[QStringLiteral("image")]; if (!json_image.isArray()) { - Error("Invalid Json reply, album image is not a array.", json_image); + Error(QStringLiteral("Invalid Json reply, album image is not a array."), json_image); continue; } QJsonArray array_image = json_image.toArray(); @@ -248,17 +248,17 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons LastFmImageSize image_size_use(LastFmImageSize::Unknown); for (const QJsonValueRef value_image : array_image) { if (!value_image.isObject()) { - Error("Invalid Json reply, album image value is not an object."); + Error(QStringLiteral("Invalid Json reply, album image value is not an object.")); continue; } QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("#text") || !obj_image.contains("size")) { - Error("Invalid Json reply, album image value is missing #text or size.", obj_image); + if (!obj_image.contains(QStringLiteral("#text")) || !obj_image.contains(QStringLiteral("size"))) { + Error(QStringLiteral("Invalid Json reply, album image value is missing #text or size."), obj_image); continue; } - QString image_url = obj_image["#text"].toString(); + QString image_url = obj_image[QStringLiteral("#text")].toString(); if (image_url.isEmpty()) continue; - LastFmImageSize image_size = ImageSizeFromString(obj_image["size"].toString().toLower()); + LastFmImageSize image_size = ImageSizeFromString(obj_image[QStringLiteral("size")].toString().toLower()); if (image_url_use.isEmpty() || image_size > image_size_use) { image_url_use = image_url; image_size_use = image_size; @@ -268,8 +268,8 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons if (image_url_use.isEmpty()) continue; // Workaround for API limiting to 300x300 images. - if (image_url_use.contains("/300x300/")) { - image_url_use = image_url_use.replace("/300x300/", "/740x0/"); + if (image_url_use.contains(QLatin1String("/300x300/"))) { + image_url_use = image_url_use.replace(QLatin1String("/300x300/"), QLatin1String("/740x0/")); } QUrl url(image_url_use); if (!url.isValid()) continue; @@ -295,7 +295,7 @@ QByteArray LastFmCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "error" and "message" - then use that instead. @@ -305,18 +305,18 @@ QByteArray LastFmCoverProvider::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (json_obj.contains("error") && json_obj.contains("message")) { - int code = json_obj["error"].toInt(); - QString message = json_obj["message"].toString(); + if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("error")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); error = "Error: " + QString::number(code) + ": " + message; } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); diff --git a/src/covermanager/musicbrainzcoverprovider.cpp b/src/covermanager/musicbrainzcoverprovider.cpp index 41f974e3..ddac33e2 100644 --- a/src/covermanager/musicbrainzcoverprovider.cpp +++ b/src/covermanager/musicbrainzcoverprovider.cpp @@ -50,7 +50,7 @@ const int MusicbrainzCoverProvider::kLimit = 8; const int MusicbrainzCoverProvider::kRequestsDelay = 1000; MusicbrainzCoverProvider::MusicbrainzCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("MusicBrainz", true, false, 1.5, true, false, app, network, parent), + : JsonCoverProvider(QStringLiteral("MusicBrainz"), true, false, 1.5, true, false, app, network, parent), timer_flush_requests_(new QTimer(this)) { timer_flush_requests_->setInterval(kRequestsDelay); @@ -89,12 +89,12 @@ bool MusicbrainzCoverProvider::StartSearch(const QString &artist, const QString void MusicbrainzCoverProvider::SendSearchRequest(const SearchRequest &request) { - QString query = QString("release:\"%1\" AND artist:\"%2\"").arg(request.album.trimmed().replace('"', "\\\""), request.artist.trimmed().replace('"', "\\\"")); + QString query = QStringLiteral("release:\"%1\" AND artist:\"%2\"").arg(request.album.trimmed().replace('"', QLatin1String("\\\"")), request.artist.trimmed().replace('"', QLatin1String("\\\""))); QUrlQuery url_query; - url_query.addQueryItem("query", query); - url_query.addQueryItem("limit", QString::number(kLimit)); - url_query.addQueryItem("fmt", "json"); + url_query.addQueryItem(QStringLiteral("query"), query); + url_query.addQueryItem(QStringLiteral("limit"), QString::number(kLimit)); + url_query.addQueryItem(QStringLiteral("fmt"), QStringLiteral("json")); QUrl url(kReleaseSearchUrl); url.setQuery(url_query); @@ -138,21 +138,21 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int return; } - if (!json_obj.contains("releases")) { - if (json_obj.contains("error")) { - QString error = json_obj["error"].toString(); + if (!json_obj.contains(QStringLiteral("releases"))) { + if (json_obj.contains(QStringLiteral("error"))) { + QString error = json_obj[QStringLiteral("error")].toString(); Error(error); } else { - Error(QString("Json reply is missing releases."), json_obj); + Error(QStringLiteral("Json reply is missing releases."), json_obj); } emit SearchFinished(search_id, results); return; } - QJsonValue value_releases = json_obj["releases"]; + QJsonValue value_releases = json_obj[QStringLiteral("releases")]; if (!value_releases.isArray()) { - Error("Json releases is not an array.", value_releases); + Error(QStringLiteral("Json releases is not an array."), value_releases); emit SearchFinished(search_id, results); return; } @@ -166,18 +166,18 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int for (const QJsonValueRef value_release : array_releases) { if (!value_release.isObject()) { - Error("Invalid Json reply, releases array value is not an object."); + Error(QStringLiteral("Invalid Json reply, releases array value is not an object.")); continue; } QJsonObject obj_release = value_release.toObject(); - if (!obj_release.contains("id") || !obj_release.contains("artist-credit") || !obj_release.contains("title")) { - Error("Invalid Json reply, releases array object is missing id, artist-credit or title.", obj_release); + if (!obj_release.contains(QStringLiteral("id")) || !obj_release.contains(QStringLiteral("artist-credit")) || !obj_release.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, releases array object is missing id, artist-credit or title."), obj_release); continue; } - QJsonValue json_artists = obj_release["artist-credit"]; + QJsonValue json_artists = obj_release[QStringLiteral("artist-credit")]; if (!json_artists.isArray()) { - Error("Invalid Json reply, artist-credit is not a array.", json_artists); + Error(QStringLiteral("Invalid Json reply, artist-credit is not a array."), json_artists); continue; } QJsonArray array_artists = json_artists.toArray(); @@ -185,33 +185,33 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int QString artist; for (const QJsonValueRef value_artist : array_artists) { if (!value_artist.isObject()) { - Error("Invalid Json reply, artist is not a object."); + Error(QStringLiteral("Invalid Json reply, artist is not a object.")); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("artist")) { - Error("Invalid Json reply, artist is missing.", obj_artist); + if (!obj_artist.contains(QStringLiteral("artist"))) { + Error(QStringLiteral("Invalid Json reply, artist is missing."), obj_artist); continue; } - QJsonValue value_artist2 = obj_artist["artist"]; + QJsonValue value_artist2 = obj_artist[QStringLiteral("artist")]; if (!value_artist2.isObject()) { - Error("Invalid Json reply, artist is not an object.", value_artist2); + Error(QStringLiteral("Invalid Json reply, artist is not an object."), value_artist2); continue; } QJsonObject obj_artist2 = value_artist2.toObject(); - if (!obj_artist2.contains("name")) { - Error("Invalid Json reply, artist is missing name.", value_artist2); + if (!obj_artist2.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, artist is missing name."), value_artist2); continue; } - artist = obj_artist2["name"].toString(); + artist = obj_artist2[QStringLiteral("name")].toString(); ++i; } - if (i > 1) artist = "Various artists"; + if (i > 1) artist = QStringLiteral("Various artists"); - QString id = obj_release["id"].toString(); - QString album = obj_release["title"].toString(); + QString id = obj_release[QStringLiteral("id")].toString(); + QString album = obj_release[QStringLiteral("title")].toString(); CoverProviderSearchResult cover_result; QUrl url(QString(kAlbumCoverUrl).arg(id)); @@ -234,7 +234,7 @@ QByteArray MusicbrainzCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - QString failure_reason = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + QString failure_reason = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); Error(failure_reason); } else { @@ -245,16 +245,16 @@ QByteArray MusicbrainzCoverProvider::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (json_obj.contains("error")) { - error = json_obj["error"].toString(); + if (json_obj.contains(QStringLiteral("error"))) { + error = json_obj[QStringLiteral("error")].toString(); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); diff --git a/src/covermanager/musixmatchcoverprovider.cpp b/src/covermanager/musixmatchcoverprovider.cpp index d5c1257c..f8b17473 100644 --- a/src/covermanager/musixmatchcoverprovider.cpp +++ b/src/covermanager/musixmatchcoverprovider.cpp @@ -41,7 +41,7 @@ #include "musixmatchcoverprovider.h" MusixmatchCoverProvider::MusixmatchCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Musixmatch", true, false, 1.0, true, false, app, network, parent) {} + : JsonCoverProvider(QStringLiteral("Musixmatch"), true, false, 1.0, true, false, app, network, parent) {} MusixmatchCoverProvider::~MusixmatchCoverProvider() { @@ -65,7 +65,7 @@ bool MusixmatchCoverProvider::StartSearch(const QString &artist, const QString & if (artist_stripped.isEmpty() || album_stripped.isEmpty()) return false; - QUrl url(QString("https://www.musixmatch.com/album/%1/%2").arg(artist_stripped, album_stripped)); + QUrl url(QStringLiteral("https://www.musixmatch.com/album/%1/%2").arg(artist_stripped, album_stripped)); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); QNetworkReply *reply = network_->get(req); @@ -90,25 +90,25 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int CoverProviderSearchResults results; if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); emit SearchFinished(id, results); return; } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); emit SearchFinished(id, results); return; } QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error("Empty reply received from server."); + Error(QStringLiteral("Empty reply received from server.")); emit SearchFinished(id, results); return; } QString content = data; - const QString data_begin = ""; + const QString data_begin = QStringLiteral(""); if (!content.contains(data_begin) || !content.contains(data_end)) { emit SearchFinished(id, results); return; @@ -128,7 +128,7 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int return; } - if (content_json.contains(QRegularExpression("<[^>]*>"))) { // Make sure it's not HTML code. + if (content_json.contains(QRegularExpression(QStringLiteral("<[^>]*>")))) { // Make sure it's not HTML code. emit SearchFinished(id, results); return; } @@ -137,71 +137,71 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int QJsonDocument json_doc = QJsonDocument::fromJson(content_json.toUtf8(), &error); if (error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse json data: %1").arg(error.errorString())); + Error(QStringLiteral("Failed to parse json data: %1").arg(error.errorString())); emit SearchFinished(id, results); return; } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); emit SearchFinished(id, results); return; } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); emit SearchFinished(id, results); return; } QJsonObject obj_data = json_doc.object(); if (obj_data.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); emit SearchFinished(id, results); return; } - if (!obj_data.contains("props") || !obj_data["props"].isObject()) { - Error("Json reply is missing props.", obj_data); + if (!obj_data.contains(QStringLiteral("props")) || !obj_data[QStringLiteral("props")].isObject()) { + Error(QStringLiteral("Json reply is missing props."), obj_data); emit SearchFinished(id, results); return; } - obj_data = obj_data["props"].toObject(); + obj_data = obj_data[QStringLiteral("props")].toObject(); - if (!obj_data.contains("pageProps") || !obj_data["pageProps"].isObject()) { - Error("Json props is missing pageProps.", obj_data); + if (!obj_data.contains(QStringLiteral("pageProps")) || !obj_data[QStringLiteral("pageProps")].isObject()) { + Error(QStringLiteral("Json props is missing pageProps."), obj_data); emit SearchFinished(id, results); return; } - obj_data = obj_data["pageProps"].toObject(); + obj_data = obj_data[QStringLiteral("pageProps")].toObject(); - if (!obj_data.contains("data") || !obj_data["data"].isObject()) { - Error("Json pageProps is missing data.", obj_data); + if (!obj_data.contains(QStringLiteral("data")) || !obj_data[QStringLiteral("data")].isObject()) { + Error(QStringLiteral("Json pageProps is missing data."), obj_data); emit SearchFinished(id, results); return; } - obj_data = obj_data["data"].toObject(); + obj_data = obj_data[QStringLiteral("data")].toObject(); - if (!obj_data.contains("albumGet") || !obj_data["albumGet"].isObject()) { - Error("Json data is missing albumGet.", obj_data); + if (!obj_data.contains(QStringLiteral("albumGet")) || !obj_data[QStringLiteral("albumGet")].isObject()) { + Error(QStringLiteral("Json data is missing albumGet."), obj_data); emit SearchFinished(id, results); return; } - obj_data = obj_data["albumGet"].toObject(); + obj_data = obj_data[QStringLiteral("albumGet")].toObject(); - if (!obj_data.contains("data") || !obj_data["data"].isObject()) { - Error("Json albumGet reply is missing data.", obj_data); + if (!obj_data.contains(QStringLiteral("data")) || !obj_data[QStringLiteral("data")].isObject()) { + Error(QStringLiteral("Json albumGet reply is missing data."), obj_data); emit SearchFinished(id, results); return; } - obj_data = obj_data["data"].toObject(); + obj_data = obj_data[QStringLiteral("data")].toObject(); CoverProviderSearchResult result; - if (obj_data.contains("artistName") && obj_data["artistName"].isString()) { - result.artist = obj_data["artistName"].toString(); + if (obj_data.contains(QStringLiteral("artistName")) && obj_data[QStringLiteral("artistName")].isString()) { + result.artist = obj_data[QStringLiteral("artistName")].toString(); } - if (obj_data.contains("name") && obj_data["name"].isString()) { - result.album = obj_data["name"].toString(); + if (obj_data.contains(QStringLiteral("name")) && obj_data[QStringLiteral("name")].isString()) { + result.album = obj_data[QStringLiteral("name")].toString(); } if (result.artist.compare(artist, Qt::CaseInsensitive) != 0 && result.album.compare(album, Qt::CaseInsensitive) != 0) { @@ -209,9 +209,9 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int return; } - QList> cover_sizes = QList>() << qMakePair(QString("coverImage800x800"), QSize(800, 800)) - << qMakePair(QString("coverImage500x500"), QSize(500, 500)) - << qMakePair(QString("coverImage350x350"), QSize(350, 350)); + QList> cover_sizes = QList>() << qMakePair(QStringLiteral("coverImage800x800"), QSize(800, 800)) + << qMakePair(QStringLiteral("coverImage500x500"), QSize(500, 500)) + << qMakePair(QStringLiteral("coverImage350x350"), 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 618d34f7..e3294776 100644 --- a/src/covermanager/opentidalcoverprovider.cpp +++ b/src/covermanager/opentidalcoverprovider.cpp @@ -57,7 +57,7 @@ constexpr const int kRequestsDelay = 1000; using std::make_shared; OpenTidalCoverProvider::OpenTidalCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("OpenTidal", true, false, 2.5, true, false, app, network, parent), + : JsonCoverProvider(QStringLiteral("OpenTidal"), true, false, 2.5, true, false, app, network, parent), login_timer_(new QTimer(this)), timer_flush_requests_(new QTimer(this)), login_in_progress_(false), @@ -160,7 +160,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("grant_type", "client_credentials"); + url_query.addQueryItem(QStringLiteral("grant_type"), QStringLiteral("client_credentials")); QNetworkReply *reply = network_->post(req, url_query.toString(QUrl::FullyEncoded).toUtf8()); replies_ << reply; QObject::connect(reply, &QNetworkReply::sslErrors, this, &OpenTidalCoverProvider::HandleLoginSSLErrors); @@ -192,21 +192,21 @@ void OpenTidalCoverProvider::LoginFinished(QNetworkReply *reply) { return; } - if (!json_obj.contains("access_token") || - !json_obj.contains("token_type") || - !json_obj.contains("expires_in") || - !json_obj["access_token"].isString() || - !json_obj["token_type"].isString()) { + if (!json_obj.contains(QStringLiteral("access_token")) || + !json_obj.contains(QStringLiteral("token_type")) || + !json_obj.contains(QStringLiteral("expires_in")) || + !json_obj[QStringLiteral("access_token")].isString() || + !json_obj[QStringLiteral("token_type")].isString()) { qLog(Error) << "OpenTidal: Invalid login reply."; FinishAllSearches(); return; } have_login_ = true; - token_type_ = json_obj["token_type"].toString(); - access_token_ = json_obj["access_token"].toString(); + token_type_ = json_obj[QStringLiteral("token_type")].toString(); + access_token_ = json_obj[QStringLiteral("access_token")].toString(); login_time_ = QDateTime::currentDateTime().toSecsSinceEpoch(); - expires_in_ = json_obj["expires_in"].toInt(); + expires_in_ = json_obj[QStringLiteral("expires_in")].toInt(); QSettings s; s.beginGroup(kSettingsGroup); @@ -261,19 +261,19 @@ QJsonObject OpenTidalCoverProvider::GetJsonObject(QNetworkReply *reply) { return QJsonObject(); } QJsonObject json_obj = ExtractJsonObj(data); - if (json_obj.contains("errors") && json_obj["errors"].isArray()) { - QJsonArray array = json_obj["errors"].toArray(); + if (json_obj.contains(QStringLiteral("errors")) && json_obj[QStringLiteral("errors")].isArray()) { + QJsonArray array = json_obj[QStringLiteral("errors")].toArray(); for (const QJsonValue &value : array) { if (!value.isObject()) continue; QJsonObject obj = value.toObject(); - if (!obj.contains("category") || - !obj.contains("code") || - !obj.contains("detail")) { + if (!obj.contains(QStringLiteral("category")) || + !obj.contains(QStringLiteral("code")) || + !obj.contains(QStringLiteral("detail"))) { continue; } - QString category = obj["category"].toString(); - QString code = obj["code"].toString(); - QString detail = obj["detail"].toString(); + QString category = obj[QStringLiteral("category")].toString(); + QString code = obj[QStringLiteral("code")].toString(); + QString detail = obj[QStringLiteral("detail")].toString(); qLog(Error) << "OpenTidal:" << category << code << detail; } } @@ -302,10 +302,10 @@ void OpenTidalCoverProvider::SendSearchRequest(SearchRequestPtr search_request) } QUrlQuery url_query; - url_query.addQueryItem("query", QUrl::toPercentEncoding(query)); - url_query.addQueryItem("limit", QString::number(kLimit)); - url_query.addQueryItem("countryCode", "US"); - QUrl url(QString(kApiUrl) + QString("/search")); + url_query.addQueryItem(QStringLiteral("query"), QUrl::toPercentEncoding(query)); + url_query.addQueryItem(QStringLiteral("limit"), QString::number(kLimit)); + url_query.addQueryItem(QStringLiteral("countryCode"), QStringLiteral("US")); + QUrl url(QString(kApiUrl) + QStringLiteral("/search")); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -331,13 +331,13 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque return; } - if (!json_obj.contains("albums") || !json_obj["albums"].isArray()) { + if (!json_obj.contains(QStringLiteral("albums")) || !json_obj[QStringLiteral("albums")].isArray()) { qLog(Debug) << "OpenTidal: Json object is missing albums."; emit SearchFinished(search_request->id, CoverProviderSearchResults()); return; } - QJsonArray array_albums = json_obj["albums"].toArray(); + QJsonArray array_albums = json_obj[QStringLiteral("albums")].toArray(); if (array_albums.isEmpty()) { emit SearchFinished(search_request->id, CoverProviderSearchResults()); return; @@ -353,55 +353,55 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque } QJsonObject obj_album = value_album.toObject(); - if (!obj_album.contains("resource") || !obj_album["resource"].isObject()) { + if (!obj_album.contains(QStringLiteral("resource")) || !obj_album[QStringLiteral("resource")].isObject()) { qLog(Debug) << "OpenTidal: Invalid Json reply: Albums array album is missing resource object."; continue; } - QJsonObject obj_resource = obj_album["resource"].toObject(); + QJsonObject obj_resource = obj_album[QStringLiteral("resource")].toObject(); - if (!obj_resource.contains("artists") || !obj_resource["artists"].isArray()) { + if (!obj_resource.contains(QStringLiteral("artists")) || !obj_resource[QStringLiteral("artists")].isArray()) { qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing artists array."; continue; } - if (!obj_resource.contains("title") || !obj_resource["title"].isString()) { + if (!obj_resource.contains(QStringLiteral("title")) || !obj_resource[QStringLiteral("title")].isString()) { qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing title."; continue; } - if (!obj_resource.contains("imageCover") || !obj_resource["imageCover"].isArray()) { + if (!obj_resource.contains(QStringLiteral("imageCover")) || !obj_resource[QStringLiteral("imageCover")].isArray()) { qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing imageCover array."; continue; } QString artist; - const QString album = obj_resource["title"].toString(); + const QString album = obj_resource[QStringLiteral("title")].toString(); - QJsonArray array_artists = obj_resource["artists"].toArray(); + QJsonArray array_artists = obj_resource[QStringLiteral("artists")].toArray(); for (const QJsonValueRef value_artist : array_artists) { if (!value_artist.isObject()) { continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) { + if (!obj_artist.contains(QStringLiteral("name"))) { continue; } - artist = obj_artist["name"].toString(); + artist = obj_artist[QStringLiteral("name")].toString(); break; } - QJsonArray array_covers = obj_resource["imageCover"].toArray(); + QJsonArray array_covers = obj_resource[QStringLiteral("imageCover")].toArray(); for (const QJsonValueRef value_cover : array_covers) { if (!value_cover.isObject()) { continue; } QJsonObject obj_cover = value_cover.toObject(); - if (!obj_cover.contains("url") || !obj_cover.contains("width") || !obj_cover.contains("height")) { + if (!obj_cover.contains(QStringLiteral("url")) || !obj_cover.contains(QStringLiteral("width")) || !obj_cover.contains(QStringLiteral("height"))) { continue; } - const QUrl url(obj_cover["url"].toString()); - const int width = obj_cover["width"].toInt(); - const int height = obj_cover["height"].toInt(); + const QUrl url(obj_cover[QStringLiteral("url")].toString()); + const int width = obj_cover[QStringLiteral("width")].toInt(); + const int height = obj_cover[QStringLiteral("height")].toInt(); if (!url.isValid()) continue; if (width < 640 || height < 640) continue; CoverProviderSearchResult cover_result; diff --git a/src/covermanager/qobuzcoverprovider.cpp b/src/covermanager/qobuzcoverprovider.cpp index b987b9ea..749f1ea1 100644 --- a/src/covermanager/qobuzcoverprovider.cpp +++ b/src/covermanager/qobuzcoverprovider.cpp @@ -49,7 +49,7 @@ constexpr int QobuzCoverProvider::kLimit = 10; QobuzCoverProvider::QobuzCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Qobuz", true, true, 2.0, true, true, app, network, parent), + : JsonCoverProvider(QStringLiteral("Qobuz"), true, true, 2.0, true, true, app, network, parent), service_(app->internet_services()->Service()) {} QobuzCoverProvider::~QobuzCoverProvider() { @@ -70,12 +70,12 @@ bool QobuzCoverProvider::StartSearch(const QString &artist, const QString &album QString resource; QString query = artist; if (album.isEmpty() && !title.isEmpty()) { - resource = "track/search"; + resource = QStringLiteral("track/search"); if (!query.isEmpty()) query.append(" "); query.append(title); } else { - resource = "album/search"; + resource = QStringLiteral("album/search"); if (!album.isEmpty()) { if (!query.isEmpty()) query.append(" "); query.append(album); @@ -93,7 +93,7 @@ bool QobuzCoverProvider::StartSearch(const QString &artist, const QString &album url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(QobuzService::kApiUrl) + QString("/") + resource); + QUrl url(QString(QobuzService::kApiUrl) + QStringLiteral("/") + resource); url.setQuery(url_query); QNetworkRequest req(url); @@ -121,7 +121,7 @@ QByteArray QobuzCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "status", "code" and "message" - then use that instead. @@ -131,18 +131,18 @@ QByteArray QobuzCoverProvider::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &parse_error); if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - error = QString("%1 (%2)").arg(message).arg(code); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(message).arg(code); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -176,34 +176,34 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { } QJsonValue value_type; - if (json_obj.contains("albums")) { - value_type = json_obj["albums"]; + if (json_obj.contains(QStringLiteral("albums"))) { + value_type = json_obj[QStringLiteral("albums")]; } - else if (json_obj.contains("tracks")) { - value_type = json_obj["tracks"]; + else if (json_obj.contains(QStringLiteral("tracks"))) { + value_type = json_obj[QStringLiteral("tracks")]; } else { - Error("Json reply is missing albums and tracks object.", json_obj); + Error(QStringLiteral("Json reply is missing albums and tracks object."), json_obj); emit SearchFinished(id, results); return; } if (!value_type.isObject()) { - Error("Json albums or tracks is not a object.", value_type); + Error(QStringLiteral("Json albums or tracks is not a object."), value_type); emit SearchFinished(id, results); return; } QJsonObject obj_type = value_type.toObject(); - if (!obj_type.contains("items")) { - Error("Json albums or tracks object does not contain items.", obj_type); + if (!obj_type.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json albums or tracks object does not contain items."), obj_type); emit SearchFinished(id, results); return; } - QJsonValue value_items = obj_type["items"]; + QJsonValue value_items = obj_type[QStringLiteral("items")]; if (!value_items.isArray()) { - Error("Json albums or track object items is not a array.", value_items); + Error(QStringLiteral("Json albums or track object items is not a array."), value_items); emit SearchFinished(id, results); return; } @@ -212,55 +212,55 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { for (const QJsonValueRef value : array_items) { if (!value.isObject()) { - Error("Invalid Json reply, value in items is not a object."); + Error(QStringLiteral("Invalid Json reply, value in items is not a object.")); continue; } QJsonObject item_obj = value.toObject(); QJsonObject obj_album; - if (item_obj.contains("album")) { - if (!item_obj["album"].isObject()) { - Error("Invalid Json reply, items album is not a object.", item_obj); + if (item_obj.contains(QStringLiteral("album"))) { + if (!item_obj[QStringLiteral("album")].isObject()) { + Error(QStringLiteral("Invalid Json reply, items album is not a object."), item_obj); continue; } - obj_album = item_obj["album"].toObject(); + obj_album = item_obj[QStringLiteral("album")].toObject(); } else { obj_album = item_obj; } - if (!obj_album.contains("artist") || !obj_album.contains("image") || !obj_album.contains("title")) { - Error("Invalid Json reply, item is missing artist, title or image.", obj_album); + if (!obj_album.contains(QStringLiteral("artist")) || !obj_album.contains(QStringLiteral("image")) || !obj_album.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, item is missing artist, title or image."), obj_album); continue; } - QString album = obj_album["title"].toString(); + QString album = obj_album[QStringLiteral("title")].toString(); // Artist - QJsonValue value_artist = obj_album["artist"]; + QJsonValue value_artist = obj_album[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, items (album) artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, items (album) artist is not a object."), value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) { - Error("Invalid Json reply, items (album) artist is missing name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, items (album) artist is missing name."), obj_artist); continue; } - QString artist = obj_artist["name"].toString(); + QString artist = obj_artist[QStringLiteral("name")].toString(); // Image - QJsonValue value_image = obj_album["image"]; + QJsonValue value_image = obj_album[QStringLiteral("image")]; if (!value_image.isObject()) { - Error("Invalid Json reply, items (album) image is not a object.", value_image); + Error(QStringLiteral("Invalid Json reply, items (album) image is not a object."), value_image); continue; } QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("large")) { - Error("Invalid Json reply, items (album) image is missing large.", obj_image); + if (!obj_image.contains(QStringLiteral("large"))) { + Error(QStringLiteral("Invalid Json reply, items (album) image is missing large."), obj_image); continue; } - QUrl cover_url(obj_image["large"].toString()); + QUrl cover_url(obj_image[QStringLiteral("large")].toString()); CoverProviderSearchResult cover_result; cover_result.artist = artist; diff --git a/src/covermanager/spotifycoverprovider.cpp b/src/covermanager/spotifycoverprovider.cpp index 375c7bc6..897133c9 100644 --- a/src/covermanager/spotifycoverprovider.cpp +++ b/src/covermanager/spotifycoverprovider.cpp @@ -62,7 +62,7 @@ const char *SpotifyCoverProvider::kApiUrl = "https://api.spotify.com/v1"; const int SpotifyCoverProvider::kLimit = 10; SpotifyCoverProvider::SpotifyCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Spotify", true, true, 2.5, true, true, app, network, parent), + : JsonCoverProvider(QStringLiteral("Spotify"), true, true, 2.5, true, true, app, network, parent), server_(nullptr), expires_in_(0), login_time_(0) { @@ -146,7 +146,7 @@ void SpotifyCoverProvider::Authenticate() { const bool result = QDesktopServices::openUrl(url); if (!result) { - QMessageBox messagebox(QMessageBox::Information, tr("Spotify Authentication"), tr("Please open this URL in your browser") + QString(":
%1").arg(url.toString()), QMessageBox::Ok); + QMessageBox messagebox(QMessageBox::Information, tr("Spotify Authentication"), tr("Please open this URL in your browser") + QStringLiteral(":
%1").arg(url.toString()), QMessageBox::Ok); messagebox.setTextFormat(Qt::RichText); messagebox.exec(); } @@ -180,12 +180,12 @@ void SpotifyCoverProvider::RedirectArrived() { QUrl url = server_->request_url(); if (url.isValid()) { QUrlQuery url_query(url); - if (url_query.hasQueryItem("error")) { - AuthError(QUrlQuery(url).queryItemValue("error")); + if (url_query.hasQueryItem(QStringLiteral("error"))) { + AuthError(QUrlQuery(url).queryItemValue(QStringLiteral("error"))); } - else if (url_query.hasQueryItem("code") && url_query.hasQueryItem("state")) { + else if (url_query.hasQueryItem(QStringLiteral("code")) && url_query.hasQueryItem(QStringLiteral("state"))) { qLog(Debug) << "Spotify: Authorization URL Received" << url; - QString code = url_query.queryItemValue("code"); + QString code = url_query.queryItemValue(QStringLiteral("code")); QUrl redirect_url(kOAuthRedirectUrl); redirect_url.setPort(server_->url().port()); RequestAccessToken(code, redirect_url); @@ -237,7 +237,7 @@ void SpotifyCoverProvider::RequestAccessToken(const QString &code, const QUrl &r QNetworkRequest req(new_url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - QString auth_header_data = QByteArray::fromBase64(kClientIDB64) + QString(":") + QByteArray::fromBase64(kClientSecretB64); + QString auth_header_data = QByteArray::fromBase64(kClientIDB64) + QStringLiteral(":") + QByteArray::fromBase64(kClientSecretB64); req.setRawHeader("Authorization", "Basic " + auth_header_data.toUtf8().toBase64()); QByteArray query = url_query.toString(QUrl::FullyEncoded).toUtf8(); @@ -267,7 +267,7 @@ void SpotifyCoverProvider::AccessTokenRequestFinished(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - AuthError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + AuthError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); return; } else { @@ -277,18 +277,18 @@ void SpotifyCoverProvider::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error") && json_obj.contains("error_description")) { - QString error = json_obj["error"].toString(); - QString error_description = json_obj["error_description"].toString(); - login_errors_ << QString("Authentication failure: %1 (%2)").arg(error, error_description); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("error_description"))) { + QString error = json_obj[QStringLiteral("error")].toString(); + QString error_description = json_obj[QStringLiteral("error_description")].toString(); + login_errors_ << QStringLiteral("Authentication failure: %1 (%2)").arg(error, error_description); } } if (login_errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - login_errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + login_errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - login_errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + login_errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } AuthError(); @@ -302,36 +302,36 @@ void SpotifyCoverProvider::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse Json data in authentication reply: %1").arg(json_error.errorString())); + Error(QStringLiteral("Failed to parse Json data in authentication reply: %1").arg(json_error.errorString())); return; } if (json_doc.isEmpty()) { - AuthError("Authentication reply from server has empty Json document."); + AuthError(QStringLiteral("Authentication reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - AuthError("Authentication reply from server has Json document that is not an object.", json_doc); + AuthError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - AuthError("Authentication reply from server has empty Json object.", json_doc); + AuthError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("access_token") || !json_obj.contains("expires_in")) { - AuthError("Authentication reply from server is missing access token or expires in.", json_obj); + if (!json_obj.contains(QStringLiteral("access_token")) || !json_obj.contains(QStringLiteral("expires_in"))) { + AuthError(QStringLiteral("Authentication reply from server is missing access token or expires in."), json_obj); return; } - access_token_ = json_obj["access_token"].toString(); - if (json_obj.contains("refresh_token")) { - refresh_token_ = json_obj["refresh_token"].toString(); + access_token_ = json_obj[QStringLiteral("access_token")].toString(); + if (json_obj.contains(QStringLiteral("refresh_token"))) { + refresh_token_ = json_obj[QStringLiteral("refresh_token")].toString(); } - expires_in_ = json_obj["expires_in"].toInt(); + expires_in_ = json_obj[QStringLiteral("expires_in")].toInt(); login_time_ = QDateTime::currentDateTime().toSecsSinceEpoch(); QSettings s; @@ -364,14 +364,14 @@ bool SpotifyCoverProvider::StartSearch(const QString &artist, const QString &alb QString extract; QString query = artist; if (album.isEmpty() && !title.isEmpty()) { - type = "track"; - extract = "tracks"; + type = QStringLiteral("track"); + extract = QStringLiteral("tracks"); if (!query.isEmpty()) query.append(" "); query.append(title); } else { - type = "album"; - extract = "albums"; + type = QStringLiteral("album"); + extract = QStringLiteral("albums"); if (!album.isEmpty()) { if (!query.isEmpty()) query.append(" "); query.append(album); @@ -387,7 +387,7 @@ bool SpotifyCoverProvider::StartSearch(const QString &artist, const QString &alb url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(kApiUrl + QString("/search")); + QUrl url(kApiUrl + QStringLiteral("/search")); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -414,7 +414,7 @@ QByteArray SpotifyCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { data = reply->readAll(); @@ -423,12 +423,12 @@ QByteArray SpotifyCoverProvider::GetReplyData(QNetworkReply *reply) { QString error; if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error") && json_obj["error"].isObject()) { - QJsonObject obj_error = json_obj["error"].toObject(); - if (obj_error.contains("status") && obj_error.contains("message")) { - int status = obj_error["status"].toInt(); - QString message = obj_error["message"].toString(); - error = QString("%1 (%2)").arg(message).arg(status); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error")) && json_obj[QStringLiteral("error")].isObject()) { + QJsonObject obj_error = json_obj[QStringLiteral("error")].toObject(); + if (obj_error.contains(QStringLiteral("status")) && obj_error.contains(QStringLiteral("message"))) { + int status = obj_error[QStringLiteral("status")].toInt(); + QString message = obj_error[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(message).arg(status); if (status == 401) access_token_.clear(); } } @@ -436,10 +436,10 @@ QByteArray SpotifyCoverProvider::GetReplyData(QNetworkReply *reply) { if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { if (reply->error() == 204) access_token_.clear(); - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -471,19 +471,19 @@ void SpotifyCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id, } if (!json_obj.contains(extract) || !json_obj[extract].isObject()) { - Error(QString("Json object is missing %1 object.").arg(extract), json_obj); + Error(QStringLiteral("Json object is missing %1 object.").arg(extract), json_obj); emit SearchFinished(id, CoverProviderSearchResults()); return; } json_obj = json_obj[extract].toObject(); - if (!json_obj.contains("items") || !json_obj["items"].isArray()) { - Error(QString("%1 object is missing items array.").arg(extract), json_obj); + if (!json_obj.contains(QStringLiteral("items")) || !json_obj[QStringLiteral("items")].isArray()) { + Error(QStringLiteral("%1 object is missing items array.").arg(extract), json_obj); emit SearchFinished(id, CoverProviderSearchResults()); return; } - QJsonArray array_items = json_obj["items"].toArray(); + QJsonArray array_items = json_obj[QStringLiteral("items")].toArray(); if (array_items.isEmpty()) { emit SearchFinished(id, CoverProviderSearchResults()); return; @@ -498,33 +498,33 @@ void SpotifyCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id, QJsonObject obj_item = value_item.toObject(); QJsonObject obj_album = obj_item; - if (obj_item.contains("album") && obj_item["album"].isObject()) { - obj_album = obj_item["album"].toObject(); + if (obj_item.contains(QStringLiteral("album")) && obj_item[QStringLiteral("album")].isObject()) { + obj_album = obj_item[QStringLiteral("album")].toObject(); } - if (!obj_album.contains("artists") || !obj_album.contains("name") || !obj_album.contains("images") || !obj_album["artists"].isArray() || !obj_album["images"].isArray()) { + if (!obj_album.contains(QStringLiteral("artists")) || !obj_album.contains(QStringLiteral("name")) || !obj_album.contains(QStringLiteral("images")) || !obj_album[QStringLiteral("artists")].isArray() || !obj_album[QStringLiteral("images")].isArray()) { continue; } - QJsonArray array_artists = obj_album["artists"].toArray(); - QJsonArray array_images = obj_album["images"].toArray(); - QString album = obj_album["name"].toString(); + QJsonArray array_artists = obj_album[QStringLiteral("artists")].toArray(); + QJsonArray array_images = obj_album[QStringLiteral("images")].toArray(); + QString album = obj_album[QStringLiteral("name")].toString(); QStringList artists; for (const QJsonValueRef value_artist : array_artists) { if (!value_artist.isObject()) continue; QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) continue; - artists << obj_artist["name"].toString(); + if (!obj_artist.contains(QStringLiteral("name"))) continue; + artists << obj_artist[QStringLiteral("name")].toString(); } for (const QJsonValueRef value_image : array_images) { if (!value_image.isObject()) continue; QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("url") || !obj_image.contains("width") || !obj_image.contains("height")) continue; - int width = obj_image["width"].toInt(); - int height = obj_image["height"].toInt(); + if (!obj_image.contains(QStringLiteral("url")) || !obj_image.contains(QStringLiteral("width")) || !obj_image.contains(QStringLiteral("height"))) continue; + int width = obj_image[QStringLiteral("width")].toInt(); + int height = obj_image[QStringLiteral("height")].toInt(); if (width < 300 || height < 300) continue; - QUrl url(obj_image["url"].toString()); + QUrl url(obj_image[QStringLiteral("url")].toString()); CoverProviderSearchResult result; result.album = album; result.image_url = url; diff --git a/src/covermanager/tidalcoverprovider.cpp b/src/covermanager/tidalcoverprovider.cpp index bf0fb73a..c0892da8 100644 --- a/src/covermanager/tidalcoverprovider.cpp +++ b/src/covermanager/tidalcoverprovider.cpp @@ -48,7 +48,7 @@ constexpr int TidalCoverProvider::kLimit = 10; TidalCoverProvider::TidalCoverProvider(Application *app, SharedPtr network, QObject *parent) - : JsonCoverProvider("Tidal", true, true, 2.5, true, true, app, network, parent), + : JsonCoverProvider(QStringLiteral("Tidal"), true, true, 2.5, true, true, app, network, parent), service_(app->internet_services()->Service()) {} TidalCoverProvider::~TidalCoverProvider() { @@ -71,12 +71,12 @@ bool TidalCoverProvider::StartSearch(const QString &artist, const QString &album QString resource; QString query = artist; if (album.isEmpty() && !title.isEmpty()) { - resource = "search/tracks"; + resource = QStringLiteral("search/tracks"); if (!query.isEmpty()) query.append(" "); query.append(title); } else { - resource = "search/albums"; + resource = QStringLiteral("search/albums"); if (!album.isEmpty()) { if (!query.isEmpty()) query.append(" "); query.append(album); @@ -92,7 +92,7 @@ bool TidalCoverProvider::StartSearch(const QString &artist, const QString &album url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(TidalService::kApiUrl) + QString("/") + resource); + QUrl url(QString(TidalService::kApiUrl) + QStringLiteral("/") + resource); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -120,7 +120,7 @@ QByteArray TidalCoverProvider::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "status" and "userMessage" - then use that instead. @@ -132,19 +132,19 @@ QByteArray TidalCoverProvider::GetReplyData(QNetworkReply *reply) { QString error; if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("userMessage")) { - status = json_obj["status"].toInt(); - sub_status = json_obj["subStatus"].toInt(); - QString user_message = json_obj["userMessage"].toString(); - error = QString("%1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("userMessage"))) { + status = json_obj[QStringLiteral("status")].toInt(); + sub_status = json_obj[QStringLiteral("subStatus")].toInt(); + QString user_message = json_obj[QStringLiteral("userMessage")].toString(); + error = QStringLiteral("%1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } if (status == 401 && sub_status == 6001) { // User does not have a valid session @@ -178,12 +178,12 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { return; } - if (!json_obj.contains("items")) { - Error("Json object is missing items.", json_obj); + if (!json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json object is missing items."), json_obj); emit SearchFinished(id, CoverProviderSearchResults()); return; } - QJsonValue value_items = json_obj["items"]; + QJsonValue value_items = json_obj[QStringLiteral("items")]; if (!value_items.isArray()) { emit SearchFinished(id, CoverProviderSearchResults()); @@ -200,35 +200,35 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { for (const QJsonValueRef value_item : array_items) { if (!value_item.isObject()) { - Error("Invalid Json reply, items array item is not a object."); + Error(QStringLiteral("Invalid Json reply, items array item is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (!obj_item.contains("artist")) { - Error("Invalid Json reply, items array item is missing artist.", obj_item); + if (!obj_item.contains(QStringLiteral("artist"))) { + Error(QStringLiteral("Invalid Json reply, items array item is missing artist."), obj_item); continue; } - QJsonValue value_artist = obj_item["artist"]; + QJsonValue value_artist = obj_item[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, items array item artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, items array item artist is not a object."), value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("name")) { - Error("Invalid Json reply, items array item artist is missing name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, items array item artist is missing name."), obj_artist); continue; } - QString artist = obj_artist["name"].toString(); + QString artist = obj_artist[QStringLiteral("name")].toString(); QJsonObject obj_album; - if (obj_item.contains("album")) { - QJsonValue value_album = obj_item["album"]; + if (obj_item.contains(QStringLiteral("album"))) { + QJsonValue value_album = obj_item[QStringLiteral("album")]; if (value_album.isObject()) { obj_album = value_album.toObject(); } else { - Error("Invalid Json reply, items array item album is not a object.", value_album); + Error(QStringLiteral("Invalid Json reply, items array item album is not a object."), value_album); continue; } } @@ -236,23 +236,23 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) { obj_album = obj_item; } - if (!obj_album.contains("title") || !obj_album.contains("cover")) { - Error("Invalid Json reply, items array item album is missing title or cover.", obj_album); + if (!obj_album.contains(QStringLiteral("title")) || !obj_album.contains(QStringLiteral("cover"))) { + Error(QStringLiteral("Invalid Json reply, items array item album is missing title or cover."), obj_album); continue; } - QString album = obj_album["title"].toString(); - QString cover = obj_album["cover"].toString().replace("-", "/"); + QString album = obj_album[QStringLiteral("title")].toString(); + QString cover = obj_album[QStringLiteral("cover")].toString().replace(QLatin1String("-"), QLatin1String("/")); CoverProviderSearchResult cover_result; cover_result.artist = artist; cover_result.album = Song::AlbumRemoveDiscMisc(album); cover_result.number = ++i; - QList> cover_sizes = QList>() << qMakePair(QString("1280x1280"), QSize(1280, 1280)) - << qMakePair(QString("750x750"), QSize(750, 750)) - << qMakePair(QString("640x640"), QSize(640, 640)); + QList> cover_sizes = QList>() << qMakePair(QStringLiteral("1280x1280"), QSize(1280, 1280)) + << qMakePair(QStringLiteral("750x750"), QSize(750, 750)) + << qMakePair(QStringLiteral("640x640"), QSize(640, 640)); for (const QPair &cover_size : cover_sizes) { - QUrl cover_url(QString("%1/images/%2/%3.jpg").arg(TidalService::kResourcesUrl, cover, cover_size.first)); + QUrl cover_url(QStringLiteral("%1/images/%2/%3.jpg").arg(TidalService::kResourcesUrl, cover, cover_size.first)); cover_result.image_url = cover_url; cover_result.image_size = cover_size.second; results << cover_result; diff --git a/src/device/cddadevice.h b/src/device/cddadevice.h index a0c9953d..04b903ef 100644 --- a/src/device/cddadevice.h +++ b/src/device/cddadevice.h @@ -54,7 +54,7 @@ class CddaDevice : public ConnectedDevice { bool CopyToStorage(const CopyJob&, QString&) override { return false; } bool DeleteFromStorage(const MusicStorage::DeleteJob&) override { return false; } - static QStringList url_schemes() { return QStringList() << "cdda"; } + static QStringList url_schemes() { return QStringList() << QStringLiteral("cdda"); } signals: void SongsDiscovered(const SongList &songs); diff --git a/src/device/cddalister.cpp b/src/device/cddalister.cpp index 02f9a6e8..77e44f62 100644 --- a/src/device/cddalister.cpp +++ b/src/device/cddalister.cpp @@ -41,7 +41,7 @@ QStringList CddaLister::DeviceUniqueIDs() { return devices_list_; } QVariantList CddaLister::DeviceIcons(const QString &) { QVariantList icons; - icons << QString("media-optical"); + icons << QStringLiteral("media-optical"); return icons; } @@ -88,7 +88,7 @@ QString CddaLister::MakeFriendlyName(const QString &id) { return QString(cd_info.psz_model); } cdio_destroy(cdio); - return QString("CD (") + id + ")"; + return QStringLiteral("CD (") + id + ")"; } diff --git a/src/device/cddasongloader.cpp b/src/device/cddasongloader.cpp index f9fcf80c..75c2235e 100644 --- a/src/device/cddasongloader.cpp +++ b/src/device/cddasongloader.cpp @@ -61,10 +61,10 @@ CddaSongLoader::~CddaSongLoader() { QUrl CddaSongLoader::GetUrlFromTrack(int track_number) const { if (url_.isEmpty()) { - return QUrl(QString("cdda://%1a").arg(track_number)); + return QUrl(QStringLiteral("cdda://%1a").arg(track_number)); } else { - return QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number)); + return QUrl(QStringLiteral("cdda://%1/%2").arg(url_.path()).arg(track_number)); } } @@ -74,7 +74,7 @@ void CddaSongLoader::LoadSongs() { QMutexLocker locker(&mutex_load_); cdio_ = cdio_open(url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); if (cdio_ == nullptr) { - Error("Unable to open CDIO device."); + Error(QStringLiteral("Unable to open CDIO device.")); return; } @@ -82,7 +82,7 @@ void CddaSongLoader::LoadSongs() { GError *error = nullptr; cdda_ = gst_element_make_from_uri(GST_URI_SRC, "cdda://", nullptr, &error); if (error) { - Error(QString("%1: %2").arg(error->code).arg(error->message)); + Error(QStringLiteral("%1: %2").arg(error->code).arg(error->message)); } if (!cdda_) return; @@ -140,7 +140,7 @@ void CddaSongLoader::LoadSongs() { song.set_valid(true); song.set_filetype(Song::FileType::CDDA); song.set_url(GetUrlFromTrack(track_number)); - song.set_title(QString("Track %1").arg(track_number)); + song.set_title(QStringLiteral("Track %1").arg(track_number)); song.set_track(track_number); songs << song; } diff --git a/src/device/connecteddevice.cpp b/src/device/connecteddevice.cpp index fb156bff..134e5001 100644 --- a/src/device/connecteddevice.cpp +++ b/src/device/connecteddevice.cpp @@ -67,10 +67,10 @@ ConnectedDevice::ConnectedDevice(const QUrl &url, DeviceLister *lister, const QS backend_->Init(app_->database(), app_->task_manager(), Song::Source::Device, - QString("device_%1_songs").arg(database_id), - QString("device_%1_fts").arg(database_id), - QString("device_%1_directories").arg(database_id), - QString("device_%1_subdirectories").arg(database_id)); + QStringLiteral("device_%1_songs").arg(database_id), + QStringLiteral("device_%1_fts").arg(database_id), + QStringLiteral("device_%1_directories").arg(database_id), + QStringLiteral("device_%1_subdirectories").arg(database_id)); // Create the model model_ = new CollectionModel(backend_, app_, this); diff --git a/src/device/devicedatabasebackend.cpp b/src/device/devicedatabasebackend.cpp index 43b0b3f3..de93c208 100644 --- a/src/device/devicedatabasebackend.cpp +++ b/src/device/devicedatabasebackend.cpp @@ -80,7 +80,7 @@ DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("SELECT ROWID, unique_id, friendly_name, size, icon, schema_version, transcode_mode, transcode_format FROM devices"); + q.prepare(QStringLiteral("SELECT ROWID, unique_id, friendly_name, size, icon, schema_version, transcode_mode, transcode_format FROM devices")); if (!q.Exec()) { db_->ReportErrors(q); return ret; @@ -124,13 +124,13 @@ int DeviceDatabaseBackend::AddDevice(const Device &device) { // Insert the device into the devices table SqlQuery q(db); - q.prepare("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(":unique_id", device.unique_id_); - q.BindValue(":friendly_name", device.friendly_name_); - q.BindValue(":size", device.size_); - q.BindValue(":icon", device.icon_name_); - q.BindValue(":transcode_mode", static_cast(device.transcode_mode_)); - q.BindValue(":transcode_format", static_cast(device.transcode_format_)); + 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_)); if (!q.Exec()) { db_->ReportErrors(q); return -1; @@ -138,13 +138,13 @@ int DeviceDatabaseBackend::AddDevice(const Device &device) { int id = q.lastInsertId().toInt(); // Create the songs tables for the device - QString filename(":/schema/device-schema.sql"); + QString filename(QStringLiteral(":/schema/device-schema.sql")); QFile schema_file(filename); if (!schema_file.open(QIODevice::ReadOnly)) { qFatal("Couldn't open schema file %s: %s", filename.toUtf8().constData(), schema_file.errorString().toUtf8().constData()); } QString schema = QString::fromUtf8(schema_file.readAll()); - schema.replace("%deviceid", QString::number(id)); + schema.replace(QLatin1String("%deviceid"), QString::number(id)); db_->ExecSchemaCommands(db, schema, 0, true); @@ -164,8 +164,8 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { // Remove the device from the devices table { SqlQuery q(db); - q.prepare("DELETE FROM devices WHERE ROWID=:id"); - q.BindValue(":id", id); + q.prepare(QStringLiteral("DELETE FROM devices WHERE ROWID=:id")); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -175,7 +175,7 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { // Remove the songs tables for the device { SqlQuery q(db); - q.prepare(QString("DROP TABLE device_%1_songs").arg(id)); + q.prepare(QStringLiteral("DROP TABLE device_%1_songs").arg(id)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -184,7 +184,7 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { { SqlQuery q(db); - q.prepare(QString("DROP TABLE device_%1_fts").arg(id)); + q.prepare(QStringLiteral("DROP TABLE device_%1_fts").arg(id)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -193,7 +193,7 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { { SqlQuery q(db); - q.prepare(QString("DROP TABLE device_%1_directories").arg(id)); + q.prepare(QStringLiteral("DROP TABLE device_%1_directories").arg(id)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -202,7 +202,7 @@ void DeviceDatabaseBackend::RemoveDevice(const int id) { { SqlQuery q(db); - q.prepare(QString("DROP TABLE device_%1_subdirectories").arg(id)); + q.prepare(QStringLiteral("DROP TABLE device_%1_subdirectories").arg(id)); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -226,11 +226,11 @@ void DeviceDatabaseBackend::SetDeviceOptions(const int id, const QString &friend " transcode_mode=:transcode_mode," " transcode_format=:transcode_format" " WHERE ROWID=:id"); - q.BindValue(":friendly_name", friendly_name); - q.BindValue(":icon_name", icon_name); - q.BindValue(":transcode_mode", static_cast(mode)); - q.BindValue(":transcode_format", static_cast(format)); - q.BindValue(":id", 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); if (!q.Exec()) { db_->ReportErrors(q); } diff --git a/src/device/deviceinfo.cpp b/src/device/deviceinfo.cpp index 1b39a93c..6d08981c 100644 --- a/src/device/deviceinfo.cpp +++ b/src/device/deviceinfo.cpp @@ -49,7 +49,7 @@ DeviceDatabaseBackend::Device DeviceInfo::SaveToDb() const { for (const Backend &backend : backends_) { unique_ids << backend.unique_id_; } - ret.unique_id_ = unique_ids.join(","); + ret.unique_id_ = unique_ids.join(QStringLiteral(",")); return ret; @@ -90,7 +90,7 @@ const DeviceInfo::Backend *DeviceInfo::BestBackend() const { void DeviceInfo::LoadIcon(const QVariantList &icons, const QString &name_hint) { - icon_name_ = "device"; + icon_name_ = QStringLiteral("device"); if (icons.isEmpty()) { icon_ = IconLoader::Load(icon_name_); @@ -121,10 +121,10 @@ void DeviceInfo::LoadIcon(const QVariantList &icons, const QString &name_hint) { QString icon_name = icon.toString(); if (!icon_name.isEmpty()) { QString hint = icons.first().toString().toLower() + name_hint.toLower(); - if (hint.contains("phone")) icon_name_ = "device-phone"; - else if (hint.contains("ipod") || hint.contains("apple")) icon_name_ = "device-ipod"; - else if ((hint.contains("usb")) && (hint.contains("reader"))) icon_name_ = "device-usb-flash"; - else if (hint.contains("usb")) icon_name_ = "device-usb-drive"; + if (hint.contains(QLatin1String("phone"))) icon_name_ = QStringLiteral("device-phone"); + else if (hint.contains(QLatin1String("ipod")) || hint.contains(QLatin1String("apple"))) icon_name_ = QStringLiteral("device-ipod"); + else if ((hint.contains(QLatin1String("usb"))) && (hint.contains(QLatin1String("reader")))) icon_name_ = QStringLiteral("device-usb-flash"); + else if (hint.contains(QLatin1String("usb"))) icon_name_ = QStringLiteral("device-usb-drive"); icon_ = IconLoader::Load(icon_name_); if (!icon_.isNull()) { return; @@ -133,7 +133,7 @@ void DeviceInfo::LoadIcon(const QVariantList &icons, const QString &name_hint) { } } - icon_name_ = "device"; + icon_name_ = QStringLiteral("device"); icon_ = IconLoader::Load(icon_name_); } diff --git a/src/device/devicelister.cpp b/src/device/devicelister.cpp index 093a0272..9ffa31b0 100644 --- a/src/device/devicelister.cpp +++ b/src/device/devicelister.cpp @@ -110,48 +110,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 "green"; + return QStringLiteral("green"); case ITDB_IPOD_MODEL_MINI_BLUE: case ITDB_IPOD_MODEL_NANO_BLUE: case ITDB_IPOD_MODEL_SHUFFLE_BLUE: - return "blue"; + return QStringLiteral("blue"); case ITDB_IPOD_MODEL_MINI_PINK: case ITDB_IPOD_MODEL_NANO_PINK: case ITDB_IPOD_MODEL_SHUFFLE_PINK: - return "pink"; + return QStringLiteral("pink"); case ITDB_IPOD_MODEL_MINI_GOLD: - return "gold"; + return QStringLiteral("gold"); case ITDB_IPOD_MODEL_NANO_WHITE: case ITDB_IPOD_MODEL_VIDEO_WHITE: - return "white"; + return QStringLiteral("white"); case ITDB_IPOD_MODEL_NANO_SILVER: case ITDB_IPOD_MODEL_CLASSIC_SILVER: - return "silver"; + return QStringLiteral("silver"); case ITDB_IPOD_MODEL_NANO_RED: case ITDB_IPOD_MODEL_SHUFFLE_RED: - return "red"; + return QStringLiteral("red"); case ITDB_IPOD_MODEL_NANO_YELLOW: - return "yellow"; + return QStringLiteral("yellow"); case ITDB_IPOD_MODEL_NANO_PURPLE: case ITDB_IPOD_MODEL_SHUFFLE_PURPLE: - return "purple"; + return QStringLiteral("purple"); case ITDB_IPOD_MODEL_NANO_ORANGE: case ITDB_IPOD_MODEL_SHUFFLE_ORANGE: - return "orange"; + return QStringLiteral("orange"); case ITDB_IPOD_MODEL_NANO_BLACK: case ITDB_IPOD_MODEL_VIDEO_BLACK: case ITDB_IPOD_MODEL_CLASSIC_BLACK: - return "black"; + return QStringLiteral("black"); default: return QString(); @@ -167,7 +167,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 "mini"; + return QStringLiteral("mini"); case ITDB_IPOD_MODEL_NANO_WHITE: case ITDB_IPOD_MODEL_NANO_BLACK: @@ -179,7 +179,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 "nano"; + return QStringLiteral("nano"); case ITDB_IPOD_MODEL_SHUFFLE: case ITDB_IPOD_MODEL_SHUFFLE_SILVER: @@ -188,17 +188,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 "shuffle"; + return QStringLiteral("shuffle"); case ITDB_IPOD_MODEL_COLOR: case ITDB_IPOD_MODEL_REGULAR: case ITDB_IPOD_MODEL_CLASSIC_SILVER: case ITDB_IPOD_MODEL_CLASSIC_BLACK: - return "standard"; + return QStringLiteral("standard"); case ITDB_IPOD_MODEL_COLOR_U2: case ITDB_IPOD_MODEL_REGULAR_U2: - return "U2"; + return QStringLiteral("U2"); default: return QString(); @@ -213,7 +213,7 @@ QUrl DeviceLister::MakeUrlFromLocalPath(const QString &path) const { if (IsIpod(path)) { QUrl ret; - ret.setScheme("ipod"); + ret.setScheme(QStringLiteral("ipod")); ret.setPath(QDir::fromNativeSeparators(path)); return ret; } @@ -246,10 +246,10 @@ QVariantList DeviceLister::GuessIconForPath(const QString &path) { QString colour = GetIpodColour(info->ipod_model); if (!model.isEmpty()) { - QString model_icon = QString("multimedia-player-ipod-%1").arg(model); + QString model_icon = QStringLiteral("multimedia-player-ipod-%1").arg(model); if (QFile(model_icon).exists()) ret << model_icon; if (!colour.isEmpty()) { - QString colour_icon = QString("multimedia-player-ipod-%1-%2").arg(model, colour); + QString colour_icon = QStringLiteral("multimedia-player-ipod-%1-%2").arg(model, colour); if (QFile(colour_icon).exists()) ret << colour_icon; } } @@ -274,7 +274,7 @@ QVariantList DeviceLister::GuessIconForPath(const QString &path) { QVariantList DeviceLister::GuessIconForModel(const QString &vendor, const QString &model) { QVariantList ret; - if (vendor.startsWith("Google") && model.contains("Nexus")) { + if (vendor.startsWith(QLatin1String("Google")) && model.contains(QLatin1String("Nexus"))) { ret << "phone-google-nexus-one"; } return ret; diff --git a/src/device/devicemanager.cpp b/src/device/devicemanager.cpp index 1269f646..f20e7a46 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("edit-delete")) { + not_connected_overlay_(IconLoader::Load(QStringLiteral("edit-delete"))) { thread_pool_.setMaxThreadCount(1); QObject::connect(&*app_->task_manager(), &TaskManager::TasksChanged, this, &DeviceManager::TasksChanged); @@ -289,7 +289,7 @@ QVariant DeviceManager::data(const QModelIndex &idx, int role) const { } if (info->size_ > 0) { - text = text + QString(" (%1)").arg(Utilities::PrettySize(info->size_)); + text = text + QStringLiteral(" (%1)").arg(Utilities::PrettySize(info->size_)); } if (info->device_) info->device_->Refresh(); return text; @@ -629,7 +629,7 @@ SharedPtr DeviceManager::Connect(DeviceInfo *info) { url_strings << url.toString(); } - app_->AddError(tr("This type of device is not supported: %1").arg(url_strings.join(", "))); + app_->AddError(tr("This type of device is not supported: %1").arg(url_strings.join(QStringLiteral(", ")))); return ret; } diff --git a/src/device/deviceproperties.cpp b/src/device/deviceproperties.cpp index 4c337375..ae4bd390 100644 --- a/src/device/deviceproperties.cpp +++ b/src/device/deviceproperties.cpp @@ -89,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 QStringList icon_names = QStringList() - << "device" - << "device-usb-drive" - << "device-usb-flash" - << "media-optical" - << "device-ipod" - << "device-ipod-nano" - << "device-phone"; + << QStringLiteral("device") + << QStringLiteral("device-usb-drive") + << QStringLiteral("device-usb-flash") + << QStringLiteral("media-optical") + << QStringLiteral("device-ipod") + << QStringLiteral("device-ipod-nano") + << QStringLiteral("device-phone"); for (const QString &icon_name : icon_names) { diff --git a/src/device/deviceview.cpp b/src/device/deviceview.cpp index 3c751c2d..145ae664 100644 --- a/src/device/deviceview.cpp +++ b/src/device/deviceview.cpp @@ -143,7 +143,7 @@ void DeviceItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op QVariant song_count = idx.data(DeviceManager::Role_SongCount); if (song_count.isValid()) { int count = song_count.toInt(); - status_text = tr("%1 song%2").arg(count).arg(count == 1 ? "" : "s"); + status_text = tr("%1 song%2").arg(count).arg(count == 1 ? QLatin1String("") : QLatin1String("s")); } else { status_text = idx.data(DeviceManager::Role_MountPath).toString(); @@ -235,19 +235,19 @@ void DeviceView::contextMenuEvent(QContextMenuEvent *e) { collection_menu_ = new QMenu(this); // Device menu - eject_action_ = device_menu_->addAction(IconLoader::Load("media-eject"), tr("Safely remove device"), this, &DeviceView::Unmount); - forget_action_ = device_menu_->addAction(IconLoader::Load("list-remove"), tr("Forget device"), this, &DeviceView::Forget); + 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); device_menu_->addSeparator(); - properties_action_ = device_menu_->addAction(IconLoader::Load("configure"), tr("Device properties..."), this, &DeviceView::Properties); + properties_action_ = device_menu_->addAction(IconLoader::Load(QStringLiteral("configure")), tr("Device properties..."), this, &DeviceView::Properties); // Collection menu - add_to_playlist_action_ = collection_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &DeviceView::AddToPlaylist); - load_action_ = collection_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &DeviceView::Load); - open_in_new_playlist_ = collection_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &DeviceView::OpenInNewPlaylist); + 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); collection_menu_->addSeparator(); - organize_action_ = collection_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, &DeviceView::Organize); - delete_action_ = collection_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from device..."), this, &DeviceView::Delete); + 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); } menu_index_ = currentIndex(); diff --git a/src/device/filesystemdevice.h b/src/device/filesystemdevice.h index d481b4a8..63847cf6 100644 --- a/src/device/filesystemdevice.h +++ b/src/device/filesystemdevice.h @@ -52,7 +52,7 @@ class FilesystemDevice : public ConnectedDevice, public virtual FilesystemMusicS bool Init() override; void CloseAsync(); - static QStringList url_schemes() { return QStringList() << "file"; } + static QStringList url_schemes() { return QStringList() << QStringLiteral("file"); } private slots: void Close() override; diff --git a/src/device/giolister.cpp b/src/device/giolister.cpp index 910e6d2b..c20f9a9c 100644 --- a/src/device/giolister.cpp +++ b/src/device/giolister.cpp @@ -51,10 +51,10 @@ QString GioLister::DeviceInfo::unique_id() const { if (!volume_root_uri.isEmpty()) return volume_root_uri; if (mount_ptr) { - return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); + return QStringLiteral("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); } else { - return QString("Gio/unmounted/%1").arg(reinterpret_cast(volume_ptr.get())); + return QStringLiteral("Gio/unmounted/%1").arg(reinterpret_cast(volume_ptr.get())); } } @@ -225,11 +225,11 @@ QList GioLister::MakeDeviceUrls(const QString &id) { for (QString uri : uris) { // gphoto2 gives invalid hostnames with []:, characters in - uri.replace(QRegularExpression("//\\[usb:(\\d+),(\\d+)\\]"), "//usb-\\1-\\2"); + uri.replace(QRegularExpression(QStringLiteral("//\\[usb:(\\d+),(\\d+)\\]")), QStringLiteral("//usb-\\1-\\2")); QUrl url; - if (uri.contains(QRegularExpression("..+:.*"))) { + if (uri.contains(QRegularExpression(QStringLiteral("..+:.*")))) { url = QUrl::fromEncoded(uri.toUtf8()); } else { @@ -240,15 +240,15 @@ 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("ipod"); + url.setScheme(QStringLiteral("ipod")); } - QRegularExpression device_re("usb/(\\d+)/(\\d+)"); + QRegularExpression device_re(QStringLiteral("usb/(\\d+)/(\\d+)")); QRegularExpressionMatch re_match = device_re.match(unix_device); if (re_match.hasMatch()) { QUrlQuery url_query(url); - url_query.addQueryItem("busnum", re_match.captured(1)); - url_query.addQueryItem("devnum", re_match.captured(2)); + url_query.addQueryItem(QStringLiteral("busnum"), re_match.captured(1)); + url_query.addQueryItem(QStringLiteral("devnum"), re_match.captured(2)); url.setQuery(url_query); } @@ -292,12 +292,12 @@ void GioLister::VolumeAdded(GVolume *volume) { DeviceInfo info; info.ReadVolumeInfo(volume); - if (info.volume_root_uri.startsWith("afc://") || info.volume_root_uri.startsWith("gphoto2://")) { + if (info.volume_root_uri.startsWith(QLatin1String("afc://")) || info.volume_root_uri.startsWith(QLatin1String("gphoto2://"))) { // Handled by iLister. return; } #ifdef HAVE_AUDIOCD - if (info.volume_root_uri.startsWith("cdda")) { + if (info.volume_root_uri.startsWith(QLatin1String("cdda"))) { // Audio CD devices are already handled by CDDA lister return; } @@ -336,12 +336,12 @@ void GioLister::MountAdded(GMount *mount) { DeviceInfo info; info.ReadVolumeInfo(g_mount_get_volume(mount)); - if (info.volume_root_uri.startsWith("afc://") || info.volume_root_uri.startsWith("gphoto2://")) { + if (info.volume_root_uri.startsWith(QLatin1String("afc://")) || info.volume_root_uri.startsWith(QLatin1String("gphoto2://"))) { // Handled by iLister. return; } #ifdef HAVE_AUDIOCD - if (info.volume_root_uri.startsWith("cdda")) { + if (info.volume_root_uri.startsWith(QLatin1String("cdda"))) { // Audio CD devices are already handled by CDDA lister return; } @@ -577,7 +577,7 @@ void GioLister::UpdateDeviceFreeSpace(const QString &id) { { QMutexLocker l(&mutex_); - if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_[id].volume_root_uri.startsWith("mtp://")) return; + if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_[id].volume_root_uri.startsWith(QLatin1String("mtp://"))) return; DeviceInfo &device_info = devices_[id]; @@ -604,7 +604,7 @@ void GioLister::UpdateDeviceFreeSpace(const QString &id) { bool GioLister::DeviceNeedsMount(const QString &id) { QMutexLocker l(&mutex_); - return devices_.contains(id) && !devices_[id].mount_ptr && !devices_[id].volume_root_uri.startsWith("mtp://") && !devices_[id].volume_root_uri.startsWith("gphoto2://"); + return devices_.contains(id) && !devices_[id].mount_ptr && !devices_[id].volume_root_uri.startsWith(QLatin1String("mtp://")) && !devices_[id].volume_root_uri.startsWith(QLatin1String("gphoto2://")); } @@ -631,7 +631,7 @@ void GioLister::MountDevice(const QString &id, const int request_id) { void GioLister::UnmountDevice(const QString &id) { QMutexLocker l(&mutex_); - if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_[id].volume_root_uri.startsWith("mtp://")) return; + if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_[id].volume_root_uri.startsWith(QLatin1String("mtp://"))) return; const DeviceInfo &info = devices_[id]; diff --git a/src/device/gpoddevice.h b/src/device/gpoddevice.h index 31783dec..3352ef4f 100644 --- a/src/device/gpoddevice.h +++ b/src/device/gpoddevice.h @@ -59,7 +59,7 @@ class GPodDevice : public ConnectedDevice, public virtual MusicStorage { bool IsLoading() override { return loader_; } QObject *Loader() { return loader_; } - static QStringList url_schemes() { return QStringList() << "ipod"; } + static QStringList url_schemes() { return QStringList() << QStringLiteral("ipod"); } bool GetSupportedFiletypes(QList *ret) override; diff --git a/src/device/mtpconnection.cpp b/src/device/mtpconnection.cpp index 412f5484..f8ce86d2 100644 --- a/src/device/mtpconnection.cpp +++ b/src/device/mtpconnection.cpp @@ -37,7 +37,7 @@ MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent) QString hostname = url.host(); // Parse the URL - QRegularExpression host_re("^usb-(\\d+)-(\\d+)$"); + QRegularExpression host_re(QStringLiteral("^usb-(\\d+)-(\\d+)$")); unsigned int bus_location = 0; unsigned int device_num = 0; @@ -49,9 +49,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("busnum")) { - bus_location = url_query.queryItemValue("busnum").toUInt(); - device_num = url_query.queryItemValue("devnum").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 { error_text_ = tr("Invalid MTP device: %1").arg(hostname); @@ -59,13 +59,13 @@ MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent) return; } - if (url_query.hasQueryItem("vendor")) { + if (url_query.hasQueryItem(QStringLiteral("vendor"))) { LIBMTP_raw_device_t *raw_device = static_cast(malloc(sizeof(LIBMTP_raw_device_t))); - raw_device->device_entry.vendor = url_query.queryItemValue("vendor").toLatin1().data(); - raw_device->device_entry.product = url_query.queryItemValue("product").toLatin1().data(); - raw_device->device_entry.vendor_id = url_query.queryItemValue("vendor_id").toUShort(); - raw_device->device_entry.product_id = url_query.queryItemValue("product_id").toUShort(); - raw_device->device_entry.device_flags = url_query.queryItemValue("quirks").toUInt(); + 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->bus_location = bus_location; raw_device->devnum = device_num; @@ -122,16 +122,16 @@ QString MtpConnection::ErrorString(const LIBMTP_error_number_t error_number) { switch(error_number) { case LIBMTP_ERROR_NO_DEVICE_ATTACHED: - return "No Devices have been found."; + return QStringLiteral("No Devices have been found."); case LIBMTP_ERROR_CONNECTING: - return "There has been an error connecting."; + return QStringLiteral("There has been an error connecting."); case LIBMTP_ERROR_MEMORY_ALLOCATION: - return "Memory Allocation Error."; + return QStringLiteral("Memory Allocation Error."); case LIBMTP_ERROR_GENERAL: default: - return "Unknown error, please report this to the libmtp developers."; + return QStringLiteral("Unknown error, please report this to the libmtp developers."); case LIBMTP_ERROR_NONE: - return "Successfully connected."; + return QStringLiteral("Successfully connected."); } } diff --git a/src/device/mtpdevice.cpp b/src/device/mtpdevice.cpp index 15b05d6d..a3ecf06d 100644 --- a/src/device/mtpdevice.cpp +++ b/src/device/mtpdevice.cpp @@ -76,7 +76,7 @@ MtpDevice::~MtpDevice() { bool MtpDevice::Init() { - InitBackendDirectory("/", first_time_, false); + InitBackendDirectory(QStringLiteral("/"), first_time_, false); model_->Init(); loader_ = new MtpLoader(url_, app_->task_manager(), backend_); @@ -187,7 +187,7 @@ bool MtpDevice::CopyToStorage(const CopyJob &job, QString &error_text) { metadata_on_device.InitFromMTP(&track, url_.host()); metadata_on_device.set_directory_id(1); metadata_on_device.set_artist(metadata_on_device.effective_albumartist()); - metadata_on_device.set_albumartist(""); + metadata_on_device.set_albumartist(QLatin1String("")); songs_to_add_ << metadata_on_device; // Remove the original if requested diff --git a/src/device/mtpdevice.h b/src/device/mtpdevice.h index 8abad40b..0aa22ce3 100644 --- a/src/device/mtpdevice.h +++ b/src/device/mtpdevice.h @@ -51,7 +51,7 @@ class MtpDevice : public ConnectedDevice { Q_INVOKABLE MtpDevice(const QUrl &url, DeviceLister *lister, const QString &unique_id, SharedPtr manager, Application *app, const int database_id, const bool first_time, QObject *parent = nullptr); ~MtpDevice() override; - static QStringList url_schemes() { return QStringList() << "mtp"; } + static QStringList url_schemes() { return QStringList() << QStringLiteral("mtp"); } bool Init() override; void ConnectAsync() override; diff --git a/src/device/udisks2lister.cpp b/src/device/udisks2lister.cpp index bf66e465..d6f268bb 100644 --- a/src/device/udisks2lister.cpp +++ b/src/device/udisks2lister.cpp @@ -79,7 +79,7 @@ QVariantList Udisks2Lister::DeviceIcons(const QString &id) { QString Udisks2Lister::DeviceManufacturer(const QString &id) { QReadLocker locker(&device_data_lock_); - if (!device_data_.contains(id)) return ""; + if (!device_data_.contains(id)) return QLatin1String(""); return device_data_[id].vendor; } @@ -87,7 +87,7 @@ QString Udisks2Lister::DeviceManufacturer(const QString &id) { QString Udisks2Lister::DeviceModel(const QString &id) { QReadLocker locker(&device_data_lock_); - if (!device_data_.contains(id)) return ""; + if (!device_data_.contains(id)) return QLatin1String(""); return device_data_[id].model; } @@ -118,7 +118,7 @@ QVariantMap Udisks2Lister::DeviceHardwareInfo(const QString &id) { const PartitionData &data = device_data_[id]; result[QT_TR_NOOP("D-Bus path")] = data.dbus_path; result[QT_TR_NOOP("Serial number")] = data.serial; - result[QT_TR_NOOP("Mount points")] = data.mount_paths.join(", "); + result[QT_TR_NOOP("Mount points")] = data.mount_paths.join(QStringLiteral(", ")); result[QT_TR_NOOP("Partition label")] = data.label; result[QT_TR_NOOP("UUID")] = data.uuid; @@ -129,7 +129,7 @@ QVariantMap Udisks2Lister::DeviceHardwareInfo(const QString &id) { QString Udisks2Lister::MakeFriendlyName(const QString &id) { QReadLocker locker(&device_data_lock_); - if (!device_data_.contains(id)) return ""; + if (!device_data_.contains(id)) return QLatin1String(""); return device_data_[id].friendly_name; } @@ -408,7 +408,7 @@ Udisks2Lister::PartitionData Udisks2Lister::ReadPartitionData(const QDBusObjectP } QString Udisks2Lister::PartitionData::unique_id() const { - return QString("Udisks2/%1/%2/%3/%4/%5") + return QStringLiteral("Udisks2/%1/%2/%3/%4/%5") .arg(serial, vendor, model) .arg(capacity) .arg(uuid); diff --git a/src/dialogs/about.cpp b/src/dialogs/about.cpp index d9a7561e..8963f8ba 100644 --- a/src/dialogs/about.cpp +++ b/src/dialogs/about.cpp @@ -43,47 +43,47 @@ About::About(QWidget *parent) : QDialog(parent), ui_{} { setWindowTitle(tr("About Strawberry")); strawberry_authors_ \ - << Person("Jonas Kvinge"); + << Person(QStringLiteral("Jonas Kvinge")); strawberry_contributors_ \ - << Person("Gavin D. Howard") - << Person("Martin Delille"); + << Person(QStringLiteral("Gavin D. Howard")) + << Person(QStringLiteral("Martin Delille")); clementine_authors_ - << Person("David Sansome") - << Person("John Maguire") - << Person(QString::fromUtf8("Paweł Bara")) - << Person("Arnaud Bienner"); + << Person(QStringLiteral("David Sansome")) + << Person(QStringLiteral("John Maguire")) + << Person(QStringLiteral("Paweł Bara")) + << Person(QStringLiteral("Arnaud Bienner")); clementine_contributors_ \ - << Person("Jakub Stachowski") - << Person("Paul Cifarelli") - << Person("Felipe Rivera") - << Person("Alexander Peitz") - << Person("Andreas Muttscheller") - << Person("Mark Furneaux") - << Person("Florian Bigard") - << Person("Alex Bikadorov") - << Person("Mattias Andersson") - << Person("Alan Briolat") - << Person("Arun Narayanankutty") - << Person(QString::fromUtf8("Bartłomiej Burdukiewicz")) - << Person("Andre Siviero") - << Person("Santiago Gil") - << Person("Tyler Rhodes") - << Person("Vikram Ambrose") - << Person("David Guillen") - << Person("Krzysztof Sobiecki") - << Person("Valeriy Malov") - << Person("Nick Lanham"); + << 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")); strawberry_thanks_ \ - << Person("Mark Kretschmann") - << Person("Max Howell") - << Person("Artur Rona") - << Person("Robert-André Mauchin") - << Person("Thomas Pierson") - << Person("Fabio Loli"); + << 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")); QFont title_font; title_font.setBold(true); @@ -92,7 +92,7 @@ About::About(QWidget *parent) : QDialog(parent), ui_{} { ui_.label_title->setFont(title_font); ui_.label_title->setText(windowTitle()); ui_.label_text->setText(MainHtml()); - ui_.text_contributors->document()->setDefaultStyleSheet(QString("a {color: %1; }").arg(palette().text().color().name())); + ui_.text_contributors->document()->setDefaultStyleSheet(QStringLiteral("a {color: %1; }").arg(palette().text().color().name())); ui_.text_contributors->setText(ContributorsHtml()); ui_.buttonBox->button(QDialogButtonBox::Close)->setShortcut(QKeySequence::Close); @@ -103,31 +103,31 @@ QString About::MainHtml() const { QString ret; - ret += QString("

"); + ret += QStringLiteral("

"); ret += tr("Version %1").arg(QCoreApplication::applicationVersion()); - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); + ret += QStringLiteral("

"); ret += tr("Strawberry is a music player and music collection organizer."); - ret += QString("
"); + ret += QStringLiteral("
"); ret += tr("It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles."); - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); - ret += tr("Strawberry is free software released under GPL. The source code is available on %1").arg(QString("GitHub.").arg(palette().text().color().name())); - ret += QString("
"); - ret += tr("You should have received a copy of the GNU General Public License along with this program. If not, see %1").arg(QString("http://www.gnu.org/licenses/").arg(palette().text().color().name())); - ret += QString("

"); + ret += QStringLiteral("

"); + ret += tr("Strawberry is free software released under GPL. The source code is available on %1").arg(QStringLiteral("GitHub.").arg(palette().text().color().name())); + ret += QStringLiteral("
"); + ret += tr("You should have received a copy of the GNU General Public License along with this program. If not, see %1").arg(QStringLiteral("http://www.gnu.org/licenses/").arg(palette().text().color().name())); + ret += QStringLiteral("

"); - ret += QString("

"); + ret += QStringLiteral("

"); ret += tr("If you like Strawberry and can make use of it, consider sponsoring or donating."); - ret += QString("
"); + ret += QStringLiteral("
"); ret += tr("You can sponsor the author on %1. You can also make a one-time payment through %2.").arg( - QString("GitHub sponsors").arg(palette().text().color().name()), - QString("paypal.me/jonaskvinge").arg(palette().text().color().name()) + QStringLiteral("GitHub sponsors").arg(palette().text().color().name()), + QStringLiteral("paypal.me/jonaskvinge").arg(palette().text().color().name()) ); - ret += QString("

"); + ret += QStringLiteral("

"); return ret; @@ -137,54 +137,54 @@ QString About::ContributorsHtml() const { QString ret; - ret += QString("

"); - ret += ""; + ret += QStringLiteral("

"); + ret += QLatin1String(""); ret += tr("Author and maintainer"); - ret += ""; + ret += QLatin1String(""); for (const Person &person : strawberry_authors_) { ret += "
" + PersonToHtml(person); } - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); - ret += ""; + ret += QStringLiteral("

"); + ret += QLatin1String(""); ret += tr("Contributors"); - ret += ""; + ret += QLatin1String(""); for (const Person &person : strawberry_contributors_) { ret += "
" + PersonToHtml(person); } - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); - ret += ""; + ret += QStringLiteral("

"); + ret += QLatin1String(""); ret += tr("Clementine authors"); - ret += ""; + ret += QLatin1String(""); for (const Person &person : clementine_authors_) { ret += "
" + PersonToHtml(person); } - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); - ret += ""; + ret += QStringLiteral("

"); + ret += QLatin1String(""); ret += tr("Clementine contributors"); - ret += ""; + ret += QLatin1String(""); for (const Person &person : clementine_contributors_) { ret += "
" + PersonToHtml(person); } - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); - ret += ""; + ret += QStringLiteral("

"); + ret += QLatin1String(""); ret += tr("Thanks to"); - ret += ""; + ret += QLatin1String(""); for (const Person &person : strawberry_thanks_) { ret += "
" + PersonToHtml(person); } - ret += QString("

"); + ret += QStringLiteral("

"); - ret += QString("

"); + ret += QStringLiteral("

"); ret += tr("Thanks to all the other Amarok and Clementine contributors."); - ret += QString("

"); + ret += QStringLiteral("

"); return ret; } @@ -195,6 +195,6 @@ QString About::PersonToHtml(const Person &person) { return person.name; } else { - return QString("%1 <%3>").arg(person.name, person.email, person.email); + return QStringLiteral("%1 <%3>").arg(person.name, person.email, person.email); } } diff --git a/src/dialogs/console.cpp b/src/dialogs/console.cpp index 25966089..a58dc681 100644 --- a/src/dialogs/console.cpp +++ b/src/dialogs/console.cpp @@ -48,7 +48,7 @@ Console::Console(Application *app, QWidget *parent) : QDialog(parent), ui_{}, ap QObject::connect(ui_.run, &QPushButton::clicked, this, &Console::RunQuery); - QFont font("Monospace"); + QFont font(QStringLiteral("Monospace")); font.setStyleHint(QFont::TypeWriter); ui_.output->setFont(font); @@ -79,7 +79,7 @@ void Console::RunQuery() { values.append(record.value(i).toString()); } - ui_.output->append(values.join("|")); + ui_.output->append(values.join(QStringLiteral("|"))); } diff --git a/src/dialogs/edittagdialog.cpp b/src/dialogs/edittagdialog.cpp index 60c24235..bf643111 100644 --- a/src/dialogs/edittagdialog.cpp +++ b/src/dialogs/edittagdialog.cpp @@ -225,8 +225,8 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent) ui_->summary_art->installEventFilter(this); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); - next_button_ = new QPushButton(IconLoader::Load("go-next"), tr("Next"), this); + previous_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-previous")), tr("Previous"), this); + next_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-next")), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); @@ -240,11 +240,11 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent) new QShortcut(QKeySequence::MoveToNextPage, next_button_, SLOT(click())); // Show the shortcuts as tooltips - previous_button_->setToolTip(QString("%1 (%2 / %3)").arg( + previous_button_->setToolTip(QStringLiteral("%1 (%2 / %3)").arg( previous_button_->text(), QKeySequence(QKeySequence::Back).toString(QKeySequence::NativeText), QKeySequence(QKeySequence::MoveToPreviousPage).toString(QKeySequence::NativeText))); - next_button_->setToolTip(QString("%1 (%2 / %3)").arg( + next_button_->setToolTip(QStringLiteral("%1 (%2 / %3)").arg( next_button_->text(), QKeySequence(QKeySequence::Forward).toString(QKeySequence::NativeText), QKeySequence(QKeySequence::MoveToNextPage).toString(QKeySequence::NativeText))); @@ -690,9 +690,9 @@ void EditTagDialog::SelectionChanged() { summary += "

" + first_song.PrettyTitleWithArtist().toHtmlEscaped() + "

"; } else { - summary += "

"; + summary += QLatin1String("

"); summary += tr("%1 songs selected.").arg(indexes.count()); - summary += "

"; + summary += QLatin1String("

"); } ui_->tags_summary->setText(summary); @@ -787,8 +787,8 @@ void EditTagDialog::UpdateSummaryTab(const Song &song) { ui_->length->setText(Utilities::PrettyTimeNanosec(song.length_nanosec())); - SetText(ui_->samplerate, song.samplerate(), "Hz"); - SetText(ui_->bitdepth, song.bitdepth(), "Bit"); + SetText(ui_->samplerate, song.samplerate(), QStringLiteral("Hz")); + SetText(ui_->bitdepth, song.bitdepth(), QStringLiteral("Bit")); SetText(ui_->bitrate, song.bitrate(), tr("kbps")); ui_->ebur128_integrated_loudness->setText(song.Ebur128LoudnessLUFSToText()); ui_->ebur128_loudness_range->setText(song.Ebur128LoudnessRangeLUToText()); @@ -859,7 +859,7 @@ QString EditTagDialog::GetArtSummary(const Song &song, const AlbumCoverLoaderRes } if (!song.is_collection_song()) { - if (!summary.isEmpty()) summary += "
"; + if (!summary.isEmpty()) summary += QLatin1String("
"); summary = tr("Album cover editing is only available for collection songs."); } @@ -906,8 +906,8 @@ void EditTagDialog::AlbumCoverLoaded(const quint64 id, const AlbumCoverLoaderRes if (ui_->song_list->selectionModel()->selectedIndexes().count() > 0) { const QModelIndex idx = ui_->song_list->selectionModel()->selectedIndexes().first(); QString summary = ui_->summary->toPlainText(); - summary += "
"; - summary += "
"; + summary += QLatin1String("
"); + summary += QLatin1String("
"); summary += GetArtSummary(data_[idx.row()].current_, result.type); ui_->summary->setText(summary); } @@ -932,8 +932,8 @@ void EditTagDialog::AlbumCoverLoaded(const quint64 id, const AlbumCoverLoaderRes bool enable_change_art = false; if (first_song.is_valid()) { QString summary = ui_->tags_summary->toPlainText(); - summary += "
"; - summary += "
"; + summary += QLatin1String("
"); + summary += QLatin1String("
"); if (cover_action == UpdateCoverAction::None) { summary += GetArtSummary(first_song, result.type); } diff --git a/src/dialogs/errordialog.cpp b/src/dialogs/errordialog.cpp index 304803d1..5afced14 100644 --- a/src/dialogs/errordialog.cpp +++ b/src/dialogs/errordialog.cpp @@ -81,7 +81,7 @@ void ErrorDialog::UpdateContent() { QString html; for (const QString &message : current_messages_) { if (!html.isEmpty()) { - html += "
"; + html += QLatin1String("
"); } html += message.toHtmlEscaped(); } diff --git a/src/dialogs/lastfmimportdialog.cpp b/src/dialogs/lastfmimportdialog.cpp index fd41f8af..f452c1d6 100644 --- a/src/dialogs/lastfmimportdialog.cpp +++ b/src/dialogs/lastfmimportdialog.cpp @@ -41,7 +41,7 @@ LastFMImportDialog::LastFMImportDialog(SharedPtr lastfm_import, QW ui_->setupUi(this); - setWindowIcon(IconLoader::Load("scrobble")); + setWindowIcon(IconLoader::Load(QStringLiteral("scrobble"))); ui_->stackedWidget->setCurrentWidget(ui_->page_start); diff --git a/src/dialogs/snapdialog.cpp b/src/dialogs/snapdialog.cpp index e7cc492e..67b50b0f 100644 --- a/src/dialogs/snapdialog.cpp +++ b/src/dialogs/snapdialog.cpp @@ -29,7 +29,7 @@ SnapDialog::SnapDialog(QWidget *parent) : MessageDialog(parent) { setWindowTitle(tr("Strawberry is running as a Snap")); - const QIcon icon = IconLoader::Load("dialog-warning"); + const QIcon icon = IconLoader::Load(QStringLiteral("dialog-warning")); #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) const QPixmap pixmap = icon.pixmap(QSize(64, 64), devicePixelRatioF()); #else @@ -38,56 +38,56 @@ SnapDialog::SnapDialog(QWidget *parent) : MessageDialog(parent) { ui_->label_logo->setPixmap(pixmap); QString text; - text += QString("

"); + text += QStringLiteral("

"); text += tr("It is detected that Strawberry is running as a Snap"); - text += QString("

"); + text += QStringLiteral("

"); - text += QString("

"); + text += QStringLiteral("

"); text += tr("Strawberry is slower, and has restrictions when running as a Snap. Accessing the root filesystem (/) will not work. There also might be other restrictions such as accessing certain devices or network shares."); - text += QString("

"); + text += QStringLiteral("

"); - text += QString("

"); - text += QString("Strawberry is available natively in the official package repositories for Fedora, openSUSE, Mageia, Arch, Manjaro, MX Linux and most other popular Linux distributions."); - text += QString("

"); + text += QStringLiteral("

"); + text += QStringLiteral("Strawberry is available natively in the official package repositories for Fedora, openSUSE, Mageia, Arch, Manjaro, MX Linux and most other popular Linux distributions."); + text += QStringLiteral("

"); - text += QString("

"); - text += tr("For Ubuntu there is an official PPA repository available at %1.").arg(QString("https://launchpad.net/~jonaski/+archive/ubuntu/strawberry").arg(palette().text().color().name())); - text += QString("

"); + text += QStringLiteral("

"); + text += tr("For Ubuntu there is an official PPA repository available at %1.").arg(QStringLiteral("https://launchpad.net/~jonaski/+archive/ubuntu/strawberry").arg(palette().text().color().name())); + text += QStringLiteral("

"); - text += QString("

"); - text += tr("Official releases are available for Debian and Ubuntu which also work on most of their derivatives. See %1 for more information.").arg(QString("https://www.strawberrymusicplayer.org/").arg(palette().text().color().name())); - text += QString("

"); + text += QStringLiteral("

"); + text += tr("Official releases are available for Debian and Ubuntu which also work on most of their derivatives. See %1 for more information.").arg(QStringLiteral("https://www.strawberrymusicplayer.org/").arg(palette().text().color().name())); + text += QStringLiteral("

"); - text += QString("

"); + text += QStringLiteral("

"); text += tr("For a better experience please consider the other options above."); - text += QString("

"); + text += QStringLiteral("

"); - text += QString("

"); + text += QStringLiteral("

"); text += tr("Copy your strawberry.conf and strawberry.db from your ~/snap directory to avoid losing configuration before you uninstall the snap:"); - text += QString("
"); - text += QString("cp ~/snap/strawberry/current/.config/strawberry/strawberry.conf ~/.config/strawberry/strawberry.conf
"); - text += QString("cp ~/snap/strawberry/current/.local/share/strawberry/strawberry/strawberry.db ~/.local/share/strawberry/strawberry/strawberry.db
"); - text += QString("

"); - text += QString("

"); + text += QStringLiteral("
"); + text += QStringLiteral("cp ~/snap/strawberry/current/.config/strawberry/strawberry.conf ~/.config/strawberry/strawberry.conf
"); + text += QStringLiteral("cp ~/snap/strawberry/current/.local/share/strawberry/strawberry/strawberry.db ~/.local/share/strawberry/strawberry/strawberry.db
"); + text += QStringLiteral("

"); + text += QStringLiteral("

"); text += tr("Uninstall the snap with:"); - text += QString("
"); - text += QString("snap remove strawberry"); - text += QString("

"); - text += QString("

"); + text += QStringLiteral("
"); + text += QStringLiteral("snap remove strawberry"); + text += QStringLiteral("

"); + text += QStringLiteral("

"); text += tr("Install strawberry through PPA:"); - text += QString("
"); - text += QString("sudo add-apt-repository ppa:jonaski/strawberry
"); - text += QString("sudo apt-get update
"); - text += QString("sudo apt install strawberry"); - text += QString("

"); - text += QString("

"); + text += QStringLiteral("
"); + text += QStringLiteral("sudo add-apt-repository ppa:jonaski/strawberry
"); + text += QStringLiteral("sudo apt-get update
"); + text += QStringLiteral("sudo apt install strawberry"); + text += QStringLiteral("

"); + text += QStringLiteral("

"); ui_->label_text->setText(text); ui_->label_text->adjustSize(); adjustSize(); settings_group_ = MainWindow::kSettingsGroup; - do_not_show_message_again_ = "ignore_snap"; + do_not_show_message_again_ = QStringLiteral("ignore_snap"); if (parent) { Utilities::CenterWidgetOnScreen(Utilities::GetScreen(parent), this); diff --git a/src/dialogs/trackselectiondialog.cpp b/src/dialogs/trackselectiondialog.cpp index 99ec36ab..5f51daa2 100644 --- a/src/dialogs/trackselectiondialog.cpp +++ b/src/dialogs/trackselectiondialog.cpp @@ -66,8 +66,8 @@ TrackSelectionDialog::TrackSelectionDialog(QWidget *parent) SetLoading(QString()); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); - next_button_ = new QPushButton(IconLoader::Load("go-next"), tr("Next"), this); + previous_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-previous")), tr("Previous"), this); + next_button_ = new QPushButton(IconLoader::Load(QStringLiteral("go-next")), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); diff --git a/src/engine/alsadevicefinder.cpp b/src/engine/alsadevicefinder.cpp index ae1bd0c4..58da7a27 100644 --- a/src/engine/alsadevicefinder.cpp +++ b/src/engine/alsadevicefinder.cpp @@ -31,7 +31,7 @@ #include "alsadevicefinder.h" #include "enginedevice.h" -AlsaDeviceFinder::AlsaDeviceFinder() : DeviceFinder("alsa", { "alsa", "alsasink" }) {} +AlsaDeviceFinder::AlsaDeviceFinder() : DeviceFinder(QStringLiteral("alsa"), { "alsa", "alsasink" }) {} EngineDeviceList AlsaDeviceFinder::ListDevices() { @@ -91,14 +91,14 @@ EngineDeviceList AlsaDeviceFinder::ListDevices() { } EngineDevice device; - device.description = QString("%1 %2").arg(snd_ctl_card_info_get_name(cardinfo), snd_pcm_info_get_name(pcminfo)); + device.description = QStringLiteral("%1 %2").arg(snd_ctl_card_info_get_name(cardinfo), snd_pcm_info_get_name(pcminfo)); device.iconname = device.GuessIconName(); device.card = card; device.device = dev; - device.value = QString("hw:%1,%2").arg(card).arg(dev); + device.value = QStringLiteral("hw:%1,%2").arg(card).arg(dev); devices.append(device); - device.value = QString("plughw:%1,%2").arg(card).arg(dev); + device.value = QStringLiteral("plughw:%1,%2").arg(card).arg(dev); devices.append(device); } diff --git a/src/engine/alsapcmdevicefinder.cpp b/src/engine/alsapcmdevicefinder.cpp index 2f24fd07..ebe5084d 100644 --- a/src/engine/alsapcmdevicefinder.cpp +++ b/src/engine/alsapcmdevicefinder.cpp @@ -28,7 +28,7 @@ #include "alsapcmdevicefinder.h" #include "enginedevice.h" -AlsaPCMDeviceFinder::AlsaPCMDeviceFinder() : DeviceFinder("alsa", { "alsa", "alsasink" }) {} +AlsaPCMDeviceFinder::AlsaPCMDeviceFinder() : DeviceFinder(QStringLiteral("alsa"), { "alsa", "alsasink" }) {} EngineDeviceList AlsaPCMDeviceFinder::ListDevices() { diff --git a/src/engine/chromaprinter.cpp b/src/engine/chromaprinter.cpp index 8e723ae5..fd81c5f1 100644 --- a/src/engine/chromaprinter.cpp +++ b/src/engine/chromaprinter.cpp @@ -78,11 +78,11 @@ QString Chromaprinter::CreateFingerprint() { return QString(); } - GstElement *src = CreateElement("filesrc", pipeline); - GstElement *decode = CreateElement("decodebin", pipeline); - GstElement *convert = CreateElement("audioconvert", pipeline); - GstElement *resample = CreateElement("audioresample", pipeline); - GstElement *sink = CreateElement("appsink", pipeline); + 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); if (!src || !decode || !convert || !resample || !sink) { gst_object_unref(pipeline); diff --git a/src/engine/ebur128analysis.cpp b/src/engine/ebur128analysis.cpp index f41a8949..da71c08a 100644 --- a/src/engine/ebur128analysis.cpp +++ b/src/engine/ebur128analysis.cpp @@ -394,11 +394,11 @@ std::optional EBUR128AnalysisImpl::Compute(const Song &song) { return std::nullopt; } - GstElement *src = CreateElement("filesrc", pipeline); - GstElement *decode = CreateElement("decodebin", pipeline); - GstElement *convert = CreateElement("audioconvert", pipeline); - GstElement *queue = CreateElement("queue2", pipeline); - GstElement *sink = CreateElement("appsink", pipeline); + 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); if (!src || !decode || !convert || !queue || !sink) { gst_object_unref(pipeline); diff --git a/src/engine/enginebase.cpp b/src/engine/enginebase.cpp index fdd93017..4019d357 100644 --- a/src/engine/enginebase.cpp +++ b/src/engine/enginebase.cpp @@ -79,8 +79,8 @@ EngineBase::~EngineBase() = default; EngineBase::Type EngineBase::TypeFromName(const QString &name) { - if (name.compare("gstreamer", Qt::CaseInsensitive) == 0) return Type::GStreamer; - if (name.compare("vlc", Qt::CaseInsensitive) == 0) return Type::VLC; + if (name.compare(QLatin1String("gstreamer"), Qt::CaseInsensitive) == 0) return Type::GStreamer; + if (name.compare(QLatin1String("vlc"), Qt::CaseInsensitive) == 0) return Type::VLC; return Type::None; @@ -89,10 +89,10 @@ EngineBase::Type EngineBase::TypeFromName(const QString &name) { QString EngineBase::Name(const Type type) { switch (type) { - case Type::GStreamer: return QString("gstreamer"); - case Type::VLC: return QString("vlc"); + case Type::GStreamer: return QStringLiteral("gstreamer"); + case Type::VLC: return QStringLiteral("vlc"); case Type::None: - default: return QString("None"); + default: return QStringLiteral("None"); } } @@ -100,10 +100,10 @@ QString EngineBase::Name(const Type type) { QString EngineBase::Description(const Type type) { switch (type) { - case Type::GStreamer: return QString("GStreamer"); - case Type::VLC: return QString("VLC"); + case Type::GStreamer: return QStringLiteral("GStreamer"); + case Type::VLC: return QStringLiteral("VLC"); case Type::None: - default: return QString("None"); + default: return QStringLiteral("None"); } } @@ -203,8 +203,8 @@ 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_ ? "" : "1"); - qLog(Debug) << "SOUP_FORCE_HTTP1:" << (http2_enabled_ ? "OFF" : "ON"); + Utilities::SetEnv("SOUP_FORCE_HTTP1", http2_enabled_ ? QLatin1String("") : QStringLiteral("1")); + qLog(Debug) << "SOUP_FORCE_HTTP1:" << (http2_enabled_ ? QLatin1String("OFF") : QLatin1String("ON")); } strict_ssl_enabled_ = s.value("strict_ssl", false).toBool(); @@ -223,7 +223,7 @@ void EngineBase::ReloadSettings() { proxy_pass_.clear(); } else { - proxy_address_ = QString("%1:%2").arg(proxy_host).arg(proxy_port); + proxy_address_ = QStringLiteral("%1:%2").arg(proxy_host).arg(proxy_port); proxy_authentication_ = s.value("use_authentication").toBool(); proxy_user_ = s.value("username").toString(); proxy_pass_ = s.value("password").toString(); diff --git a/src/engine/enginedevice.cpp b/src/engine/enginedevice.cpp index 5e1b1ad5..f618492c 100644 --- a/src/engine/enginedevice.cpp +++ b/src/engine/enginedevice.cpp @@ -23,28 +23,28 @@ EngineDevice::EngineDevice() : card(0), device(0) {} QString EngineDevice::GuessIconName() const { - if (description.contains("mcintosh", Qt::CaseInsensitive)) { - return "mcintosh"; + if (description.contains(QLatin1String("mcintosh"), Qt::CaseInsensitive)) { + return QStringLiteral("mcintosh"); } - if (description.contains("electrocompaniet", Qt::CaseInsensitive)) { - return "electrocompaniet"; + if (description.contains(QLatin1String("electrocompaniet"), Qt::CaseInsensitive)) { + return QStringLiteral("electrocompaniet"); } - if (description.contains("intel", Qt::CaseInsensitive)) { - return "intel"; + if (description.contains(QLatin1String("intel"), Qt::CaseInsensitive)) { + return QStringLiteral("intel"); } - if (description.contains("realtek", Qt::CaseInsensitive)) { - return "realtek"; + if (description.contains(QLatin1String("realtek"), Qt::CaseInsensitive)) { + return QStringLiteral("realtek"); } - if (description.contains("nvidia", Qt::CaseInsensitive)) { - return "nvidia"; + if (description.contains(QLatin1String("nvidia"), Qt::CaseInsensitive)) { + return QStringLiteral("nvidia"); } - if (description.contains("headset", Qt::CaseInsensitive)) { - return "headset"; + if (description.contains(QLatin1String("headset"), Qt::CaseInsensitive)) { + return QStringLiteral("headset"); } - if (description.contains("pulseaudio", Qt::CaseInsensitive)) { - return "pulseaudio"; + if (description.contains(QLatin1String("pulseaudio"), Qt::CaseInsensitive)) { + return QStringLiteral("pulseaudio"); } - return "soundcard"; + return QStringLiteral("soundcard"); } diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp index 980187cd..e220cdd6 100644 --- a/src/engine/gstengine.cpp +++ b/src/engine/gstengine.cpp @@ -416,23 +416,23 @@ EngineBase::OutputDetailsList GstEngine::GetOutputsList() const { GstElementFactory *factory = GST_ELEMENT_FACTORY(future->data); const QString metadata = QString::fromUtf8(gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_KLASS)); const QString name = QString::fromUtf8(gst_plugin_feature_get_name(future->data)); - if (metadata.startsWith("Sink/Audio", Qt::CaseInsensitive) || name == "pipewiresink" || (metadata.startsWith("Source/Audio", Qt::CaseInsensitive) && name.contains("sink"))) { + if (metadata.startsWith(QLatin1String("Sink/Audio"), Qt::CaseInsensitive) || name == "pipewiresink" || (metadata.startsWith(QLatin1String("Source/Audio"), Qt::CaseInsensitive) && name.contains(QLatin1String("sink")))) { QString description = QString::fromUtf8(gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_DESCRIPTION)); if (name == "wasapi2sink" && description == "Stream audio to an audio capture device through WASAPI") { description.append("2"); } else if (name == "pipewiresink" && description == "Send video to PipeWire") { - description = "Send audio to PipeWire"; + description = QStringLiteral("Send audio to PipeWire"); } OutputDetails output; output.name = name; output.description = description; - if (output.name == kAutoSink) output.iconname = "soundcard"; - else if (output.name == kALSASink || output.name == kOSS4Sink) output.iconname = "alsa"; - else if (output.name == kJackAudioSink) output.iconname = "jack"; - else if (output.name == kPulseSink) output.iconname = "pulseaudio"; - else if (output.name == kA2DPSink || output.name == kAVDTPSink) output.iconname = "bluetooth"; - else output.iconname = "soundcard"; + if (output.name == kAutoSink) output.iconname = QStringLiteral("soundcard"); + else if (output.name == kALSASink || output.name == kOSS4Sink) output.iconname = QStringLiteral("alsa"); + else if (output.name == kJackAudioSink) output.iconname = QStringLiteral("jack"); + else if (output.name == kPulseSink) output.iconname = QStringLiteral("pulseaudio"); + else if (output.name == kA2DPSink || output.name == kAVDTPSink) output.iconname = QStringLiteral("bluetooth"); + else output.iconname = QStringLiteral("soundcard"); outputs << output; } } @@ -736,8 +736,8 @@ QByteArray GstEngine::FixupUrl(const QUrl &url) { // So we handle them ourselves: we extract the track number and re-create a URL with only cdda:// + the track number (which can be handled by Gstreamer). // We keep the device in mind, and we will set it later using SourceSetupCallback QStringList path = url.path().split('/'); - str = QString("cdda://%1").arg(path.takeLast()); - QString device = path.join("/"); + str = QStringLiteral("cdda://%1").arg(path.takeLast()); + QString device = path.join(QStringLiteral("/")); if (current_pipeline_) current_pipeline_->SetSourceDevice(device); } uri = str.toUtf8(); @@ -886,12 +886,12 @@ void GstEngine::UpdateScope(const int chunk_length) { scope_chunk_++; - if (buffer_format_.startsWith("S16LE") || - buffer_format_.startsWith("U16LE") || - buffer_format_.startsWith("S24LE") || - buffer_format_.startsWith("S24_32LE") || - buffer_format_.startsWith("S32LE") || - buffer_format_.startsWith("F32LE") + if (buffer_format_.startsWith(QLatin1String("S16LE")) || + buffer_format_.startsWith(QLatin1String("U16LE")) || + buffer_format_.startsWith(QLatin1String("S24LE")) || + buffer_format_.startsWith(QLatin1String("S24_32LE")) || + buffer_format_.startsWith(QLatin1String("S32LE")) || + buffer_format_.startsWith(QLatin1String("F32LE")) ) { memcpy(dest, source, bytes); } @@ -919,7 +919,7 @@ void GstEngine::StreamDiscovered(GstDiscoverer*, GstDiscovererInfo *info, GError GstDiscovererResult result = gst_discoverer_info_get_result(info); if (result != GST_DISCOVERER_OK) { QString error_message = GSTdiscovererErrorMessage(result); - qLog(Error) << QString("Stream discovery for %1 failed: %2").arg(discovered_url, error_message); + qLog(Error) << QStringLiteral("Stream discovery for %1 failed: %2").arg(discovered_url, error_message); return; } @@ -989,12 +989,12 @@ void GstEngine::StreamDiscoveryFinished(GstDiscoverer*, gpointer) {} QString GstEngine::GSTdiscovererErrorMessage(GstDiscovererResult result) { switch (result) { - case GST_DISCOVERER_URI_INVALID: return "The URI is invalid"; - case GST_DISCOVERER_TIMEOUT: return "The discovery timed-out"; - case GST_DISCOVERER_BUSY: return "The discoverer was already discovering a file"; - case GST_DISCOVERER_MISSING_PLUGINS: return "Some plugins are missing for full discovery"; + 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_ERROR: - default: return "An error happened and the GError is set"; + default: return QStringLiteral("An error happened and the GError is set"); } } diff --git a/src/engine/gstenginepipeline.cpp b/src/engine/gstenginepipeline.cpp index ceed691e..237befbb 100644 --- a/src/engine/gstenginepipeline.cpp +++ b/src/engine/gstenginepipeline.cpp @@ -304,29 +304,29 @@ QString GstEnginePipeline::GstStateText(const GstState state) { switch (state) { case GST_STATE_VOID_PENDING: - return "Pending"; + return QStringLiteral("Pending"); case GST_STATE_NULL: - return "Null"; + return QStringLiteral("Null"); case GST_STATE_READY: - return "Ready"; + return QStringLiteral("Ready"); case GST_STATE_PAUSED: - return "Paused"; + return QStringLiteral("Paused"); case GST_STATE_PLAYING: - return "Playing"; + return QStringLiteral("Playing"); default: - return "Unknown"; + return QStringLiteral("Unknown"); } } GstElement *GstEnginePipeline::CreateElement(const QString &factory_name, const QString &name, GstElement *bin, QString &error) const { - QString unique_name = QString("pipeline") + "-" + QString::number(id_) + "-" + (name.isEmpty() ? factory_name : name); + QString unique_name = QStringLiteral("pipeline") + "-" + QString::number(id_) + "-" + (name.isEmpty() ? factory_name : name); GstElement *element = gst_element_factory_make(factory_name.toUtf8().constData(), unique_name.toUtf8().constData()); if (!element) { qLog(Error) << "GStreamer could not create the element" << factory_name << "with name" << unique_name; - error = QString("GStreamer could not create the element %1 with name %2.").arg(factory_name, unique_name); + error = QStringLiteral("GStreamer could not create the element %1 with name %2.").arg(factory_name, unique_name); } if (bin && element) gst_bin_add(GST_BIN(bin), element); @@ -346,10 +346,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, 22)) >= 0) { - pipeline_ = CreateElement("playbin3", "pipeline", nullptr, error); + pipeline_ = CreateElement(QStringLiteral("playbin3"), QStringLiteral("pipeline"), nullptr, error); } else { - pipeline_ = CreateElement("playbin", "pipeline", nullptr, error); + pipeline_ = CreateElement(QStringLiteral("playbin"), QStringLiteral("pipeline"), nullptr, error); } if (!pipeline_) return false; @@ -566,31 +566,31 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create all the other elements - audioqueue_ = CreateElement("queue2", "audioqueue", audiobin_, error); + audioqueue_ = CreateElement(QStringLiteral("queue2"), QStringLiteral("audioqueue"), audiobin_, error); if (!audioqueue_) { return false; } - audioqueueconverter_ = CreateElement("audioconvert", "audioqueueconverter", audiobin_, error); + audioqueueconverter_ = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("audioqueueconverter"), audiobin_, error); if (!audioqueueconverter_) { return false; } - GstElement *audiosinkconverter = CreateElement("audioconvert", "audiosinkconverter", audiobin_, error); + GstElement *audiosinkconverter = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("audiosinkconverter"), audiobin_, error); if (!audiosinkconverter) { return false; } // Create the volume element if it's enabled. if (volume_enabled_ && !volume_) { - volume_sw_ = CreateElement("volume", "volume_sw", audiobin_, error); + volume_sw_ = CreateElement(QStringLiteral("volume"), QStringLiteral("volume_sw"), audiobin_, error); if (!volume_sw_) { return false; } } if (fading_enabled_) { - volume_fading_ = CreateElement("volume", "volume_fading", audiobin_, error); + volume_fading_ = CreateElement(QStringLiteral("volume"), QStringLiteral("volume_fading"), audiobin_, error); if (!volume_fading_) { return false; } @@ -598,7 +598,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the stereo balancer elements if it's enabled. if (stereo_balancer_enabled_) { - audiopanorama_ = CreateElement("audiopanorama", "audiopanorama", audiobin_, error); + audiopanorama_ = CreateElement(QStringLiteral("audiopanorama"), QStringLiteral("audiopanorama"), audiobin_, error); if (!audiopanorama_) { return false; } @@ -608,11 +608,11 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the equalizer elements if it's enabled. if (eq_enabled_) { - equalizer_preamp_ = CreateElement("volume", "equalizer_preamp", audiobin_, error); + equalizer_preamp_ = CreateElement(QStringLiteral("volume"), QStringLiteral("equalizer_preamp"), audiobin_, error); if (!equalizer_preamp_) { return false; } - equalizer_ = CreateElement("equalizer-nbands", "equalizer_nbands", audiobin_, error); + equalizer_ = CreateElement(QStringLiteral("equalizer-nbands"), QStringLiteral("equalizer_nbands"), audiobin_, error); if (!equalizer_) { return false; } @@ -662,15 +662,15 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { GstElement *rglimiter = nullptr; GstElement *rgconverter = nullptr; if (rg_enabled_) { - rgvolume = CreateElement("rgvolume", "rgvolume", audiobin_, error); + rgvolume = CreateElement(QStringLiteral("rgvolume"), QStringLiteral("rgvolume"), audiobin_, error); if (!rgvolume) { return false; } - rglimiter = CreateElement("rglimiter", "rglimiter", audiobin_, error); + rglimiter = CreateElement(QStringLiteral("rglimiter"), QStringLiteral("rglimiter"), audiobin_, error); if (!rglimiter) { return false; } - rgconverter = CreateElement("audioconvert", "rgconverter", audiobin_, error); + rgconverter = CreateElement(QStringLiteral("audioconvert"), QStringLiteral("rgconverter"), audiobin_, error); if (!rgconverter) { return false; } @@ -684,7 +684,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Create the EBU R 128 loudness normalization volume element if enabled. if (ebur128_loudness_normalization_) { - volume_ebur128_ = CreateElement("volume", "ebur128_volume", audiobin_, error); + volume_ebur128_ = CreateElement(QStringLiteral("volume"), QStringLiteral("ebur128_volume"), audiobin_, error); if (!volume_ebur128_) { return false; } @@ -696,7 +696,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { GstElement *bs2b = nullptr; if (bs2b_enabled_) { - bs2b = CreateElement("bs2b", "bs2b", audiobin_, error); + bs2b = CreateElement(QStringLiteral("bs2b"), QStringLiteral("bs2b"), audiobin_, error); if (!bs2b) { return false; } @@ -742,7 +742,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link all elements if (!gst_element_link(audioqueue_, audioqueueconverter_)) { - error = "Failed to link audio queue to audio queue converter."; + error = QStringLiteral("Failed to link audio queue to audio queue converter."); return false; } @@ -751,7 +751,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link replaygain elements if enabled. if (rg_enabled_ && rgvolume && rglimiter && rgconverter) { if (!gst_element_link_many(element_link, rgvolume, rglimiter, rgconverter, nullptr)) { - error = "Failed to link replaygain volume, limiter and converter elements."; + error = QStringLiteral("Failed to link replaygain volume, limiter and converter elements."); return false; } element_link = rgconverter; @@ -764,7 +764,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { "format = (string) { F32LE, F64LE }"); GstCaps *raw_fp_audio_caps = gst_static_caps_get(&static_raw_fp_audio_caps); if (!gst_element_link_filtered(element_link, volume_ebur128_, raw_fp_audio_caps)) { - error = "Failed to link EBU R 128 volume element."; + error = QStringLiteral("Failed to link EBU R 128 volume element."); return false; } gst_caps_unref(raw_fp_audio_caps); @@ -774,7 +774,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link equalizer elements if enabled. if (eq_enabled_ && equalizer_ && equalizer_preamp_) { if (!gst_element_link_many(element_link, equalizer_preamp_, equalizer_, nullptr)) { - error = "Failed to link equalizer and equalizer preamp elements."; + error = QStringLiteral("Failed to link equalizer and equalizer preamp elements."); return false; } element_link = equalizer_; @@ -783,7 +783,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link stereo balancer elements if enabled. if (stereo_balancer_enabled_ && audiopanorama_) { if (!gst_element_link(element_link, audiopanorama_)) { - error = "Failed to link audio panorama (stereo balancer)."; + error = QStringLiteral("Failed to link audio panorama (stereo balancer)."); return false; } element_link = audiopanorama_; @@ -792,7 +792,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link software volume element if enabled. if (volume_enabled_ && volume_sw_) { if (!gst_element_link(element_link, volume_sw_)) { - error = "Failed to link software volume."; + error = QStringLiteral("Failed to link software volume."); return false; } element_link = volume_sw_; @@ -801,7 +801,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link fading volume element if enabled. if (fading_enabled_ && volume_fading_) { if (!gst_element_link(element_link, volume_fading_)) { - error = "Failed to link fading volume."; + error = QStringLiteral("Failed to link fading volume."); return false; } element_link = volume_fading_; @@ -811,21 +811,21 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { if (bs2b_enabled_ && bs2b) { qLog(Debug) << "Enabling bs2b"; if (!gst_element_link(element_link, bs2b)) { - error = "Failed to link bs2b."; + error = QStringLiteral("Failed to link bs2b."); return false; } element_link = bs2b; } if (!gst_element_link(element_link, audiosinkconverter)) { - error = "Failed to link audio sink converter."; + error = QStringLiteral("Failed to link audio sink converter."); return false; } { GstCaps *caps = gst_caps_new_empty_simple("audio/x-raw"); if (!caps) { - error = "Failed to create caps for raw audio."; + error = QStringLiteral("Failed to create caps for raw audio."); return false; } if (channels_enabled_ && channels_ > 0) { @@ -974,7 +974,7 @@ void GstEnginePipeline::SourceSetupCallback(GstElement *playbin, GstElement *sou if (g_object_class_find_property(G_OBJECT_GET_CLASS(source), "user-agent")) { qLog(Debug) << "Setting user-agent"; - QString user_agent = QString("%1 %2").arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion()); + QString user_agent = QStringLiteral("%1 %2").arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion()); g_object_set(source, "user-agent", user_agent.toUtf8().constData(), nullptr); } @@ -1108,7 +1108,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb if (caps) { GstStructure *structure = gst_caps_get_structure(caps, 0); if (structure) { - format = QString(gst_structure_get_string(structure, "format")); + format = QString::fromUtf8(gst_structure_get_string(structure, "format")); gst_structure_get_int(structure, "channels", &channels); gst_structure_get_int(structure, "rate", &rate); } @@ -1122,10 +1122,10 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb quint64 duration = GST_BUFFER_DURATION(buf); qint64 end_time = static_cast(start_time + duration); - if (format.startsWith("S16LE")) { + if (format.startsWith(QLatin1String("S16LE"))) { instance->logged_unsupported_analyzer_format_ = false; } - else if (format.startsWith("S32LE")) { + else if (format.startsWith(QLatin1String("S32LE"))) { GstMapInfo map_info; gst_buffer_map(buf, &map_info, GST_MAP_READ); @@ -1146,7 +1146,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb instance->logged_unsupported_analyzer_format_ = false; } - else if (format.startsWith("F32LE")) { + else if (format.startsWith(QLatin1String("F32LE"))) { GstMapInfo map_info; gst_buffer_map(buf, &map_info, GST_MAP_READ); @@ -1167,7 +1167,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb instance->logged_unsupported_analyzer_format_ = false; } - else if (format.startsWith("S24LE")) { + else if (format.startsWith(QLatin1String("S24LE"))) { GstMapInfo map_info; gst_buffer_map(buf, &map_info, GST_MAP_READ); @@ -1190,7 +1190,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb instance->logged_unsupported_analyzer_format_ = false; } - else if (format.startsWith("S24_32LE")) { + else if (format.startsWith(QLatin1String("S24_32LE"))) { GstMapInfo map_info; gst_buffer_map(buf, &map_info, GST_MAP_READ); @@ -1448,7 +1448,7 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage *msg) { qLog(Error) << __FUNCTION__ << "ID:" << id() << "Domain:" << domain << "Code:" << code << "Error:" << message; qLog(Error) << __FUNCTION__ << "ID:" << id() << "Domain:" << domain << "Code:" << code << "Debug:" << debugstr; - if (!redirect_url_.isEmpty() && debugstr.contains("A redirect message was posted on the bus and should have been handled by the application.")) { + if (!redirect_url_.isEmpty() && debugstr.contains(QLatin1String("A redirect message was posted on the bus and should have been handled by the application."))) { // mmssrc posts a message on the bus *and* makes an error message when it wants to do a redirect. // We handle the message, but now we have to ignore the error too. return; @@ -1485,8 +1485,8 @@ 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(" - ")) { - title_splitted = engine_metadata.title.split(" - "); + if (engine_metadata.title.contains(QLatin1String(" - "))) { + title_splitted = engine_metadata.title.split(QStringLiteral(" - ")); } else if (engine_metadata.title.contains('~')) { title_splitted = engine_metadata.title.split('~'); diff --git a/src/engine/pulsedevicefinder.cpp b/src/engine/pulsedevicefinder.cpp index 72ba86ba..67efe2f4 100644 --- a/src/engine/pulsedevicefinder.cpp +++ b/src/engine/pulsedevicefinder.cpp @@ -33,7 +33,7 @@ #include "pulsedevicefinder.h" #include "enginedevice.h" -PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder("pulseaudio", { "pulseaudio", "pulse", "pulsesink" }), mainloop_(nullptr), context_(nullptr) {} +PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder(QStringLiteral("pulseaudio"), { "pulseaudio", "pulse", "pulsesink" }), mainloop_(nullptr), context_(nullptr) {} bool PulseDeviceFinder::Initialize() { diff --git a/src/engine/vlcengine.cpp b/src/engine/vlcengine.cpp index a1bc449e..88f8bd40 100644 --- a/src/engine/vlcengine.cpp +++ b/src/engine/vlcengine.cpp @@ -226,8 +226,8 @@ EngineBase::OutputDetailsList VLCEngine::GetOutputsList() const { OutputDetailsList outputs; OutputDetails output_auto; - output_auto.name = "auto"; - output_auto.description = "Automatically detected"; + output_auto.name = QStringLiteral("auto"); + output_auto.description = QStringLiteral("Automatically detected"); outputs << output_auto; libvlc_audio_output_t *audio_output_list = libvlc_audio_output_list_get(instance_); @@ -235,12 +235,12 @@ EngineBase::OutputDetailsList VLCEngine::GetOutputsList() const { OutputDetails output; output.name = QString::fromUtf8(audio_output->psz_name); output.description = QString::fromUtf8(audio_output->psz_description); - if (output.name == "auto") output.iconname = "soundcard"; - else if ((output.name == "alsa")||(output.name == "oss")) output.iconname = "alsa"; - else if (output.name== "jack") output.iconname = "jack"; - else if (output.name == "pulse") output.iconname = "pulseaudio"; - else if (output.name == "afile") output.iconname = "document-new"; - else output.iconname = "soundcard"; + if (output.name == "auto") output.iconname = QStringLiteral("soundcard"); + else if ((output.name == "alsa")||(output.name == "oss")) output.iconname = QStringLiteral("alsa"); + else if (output.name== "jack") output.iconname = QStringLiteral("jack"); + else if (output.name == "pulse") output.iconname = QStringLiteral("pulseaudio"); + else if (output.name == "afile") output.iconname = QStringLiteral("document-new"); + else output.iconname = QStringLiteral("soundcard"); outputs << output; } libvlc_audio_output_list_release(audio_output_list); diff --git a/src/engine/vlcengine.h b/src/engine/vlcengine.h index c7982ba7..50e991a0 100644 --- a/src/engine/vlcengine.h +++ b/src/engine/vlcengine.h @@ -67,7 +67,7 @@ class VLCEngine : public EngineBase { OutputDetailsList GetOutputsList() const override; bool ValidOutput(const QString &output) override; - QString DefaultOutput() override { return ""; } + QString DefaultOutput() override { return QLatin1String(""); } bool CustomDeviceSupport(const QString &output) override; bool ALSADeviceSupport(const QString &output) override; bool ExclusiveModeSupport(const QString &output) override; diff --git a/src/equalizer/equalizer.cpp b/src/equalizer/equalizer.cpp index 0ed1614c..1a6ca30d 100644 --- a/src/equalizer/equalizer.cpp +++ b/src/equalizer/equalizer.cpp @@ -60,8 +60,8 @@ Equalizer::Equalizer(QWidget *parent) ui_->setupUi(this); // Icons - ui_->preset_del->setIcon(IconLoader::Load("list-remove")); - ui_->preset_save->setIcon(IconLoader::Load("document-save")); + ui_->preset_del->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); + ui_->preset_save->setIcon(IconLoader::Load(QStringLiteral("document-save"))); preamp_ = AddSlider(tr("Pre-amp")); diff --git a/src/globalshortcuts/globalshortcutsbackend-gnome.cpp b/src/globalshortcuts/globalshortcutsbackend-gnome.cpp index 470ae2b3..fd3f8073 100644 --- a/src/globalshortcuts/globalshortcutsbackend-gnome.cpp +++ b/src/globalshortcuts/globalshortcutsbackend-gnome.cpp @@ -116,9 +116,9 @@ void GlobalShortcutsBackendGnome::DoUnregister() { void GlobalShortcutsBackendGnome::GnomeMediaKeyPressed(const QString&, const QString &key) { auto shortcuts = manager_->shortcuts(); - if (key == "Play") shortcuts["play_pause"].action->trigger(); - if (key == "Stop") shortcuts["stop"].action->trigger(); - if (key == "Next") shortcuts["next_track"].action->trigger(); - if (key == "Previous") shortcuts["prev_track"].action->trigger(); + if (key == "Play") shortcuts[QStringLiteral("play_pause")].action->trigger(); + if (key == "Stop") shortcuts[QStringLiteral("stop")].action->trigger(); + if (key == "Next") shortcuts[QStringLiteral("next_track")].action->trigger(); + if (key == "Previous") shortcuts[QStringLiteral("prev_track")].action->trigger(); } diff --git a/src/globalshortcuts/globalshortcutsbackend-mate.cpp b/src/globalshortcuts/globalshortcutsbackend-mate.cpp index d67df2da..76c41560 100644 --- a/src/globalshortcuts/globalshortcutsbackend-mate.cpp +++ b/src/globalshortcuts/globalshortcutsbackend-mate.cpp @@ -116,9 +116,9 @@ void GlobalShortcutsBackendMate::DoUnregister() { void GlobalShortcutsBackendMate::MateMediaKeyPressed(const QString&, const QString &key) { auto shortcuts = manager_->shortcuts(); - if (key == "Play") shortcuts["play_pause"].action->trigger(); - if (key == "Stop") shortcuts["stop"].action->trigger(); - if (key == "Next") shortcuts["next_track"].action->trigger(); - if (key == "Previous") shortcuts["prev_track"].action->trigger(); + if (key == "Play") shortcuts[QStringLiteral("play_pause")].action->trigger(); + if (key == "Stop") shortcuts[QStringLiteral("stop")].action->trigger(); + if (key == "Next") shortcuts[QStringLiteral("next_track")].action->trigger(); + if (key == "Previous") shortcuts[QStringLiteral("prev_track")].action->trigger(); } diff --git a/src/globalshortcuts/globalshortcutsbackend.cpp b/src/globalshortcuts/globalshortcutsbackend.cpp index 0facf0ec..74819b2d 100644 --- a/src/globalshortcuts/globalshortcutsbackend.cpp +++ b/src/globalshortcuts/globalshortcutsbackend.cpp @@ -35,19 +35,19 @@ QString GlobalShortcutsBackend::name() const { switch (type_) { case Type::None: - return "None"; + return QStringLiteral("None"); case Type::KDE: - return "KDE"; + return QStringLiteral("KDE"); case Type::Gnome: - return "Gnome"; + return QStringLiteral("Gnome"); case Type::Mate: - return "Mate"; + return QStringLiteral("Mate"); case Type::X11: - return "X11"; + return QStringLiteral("X11"); case Type::macOS: - return "macOS"; + return QStringLiteral("macOS"); case Type::Win: - return "Windows"; + return QStringLiteral("Windows"); } return QString(); diff --git a/src/globalshortcuts/globalshortcutsmanager.cpp b/src/globalshortcuts/globalshortcutsmanager.cpp index 8bce74b6..fc2857a2 100644 --- a/src/globalshortcuts/globalshortcutsmanager.cpp +++ b/src/globalshortcuts/globalshortcutsmanager.cpp @@ -58,25 +58,25 @@ GlobalShortcutsManager::GlobalShortcutsManager(QWidget *parent) : QWidget(parent settings_.beginGroup(GlobalShortcutsSettingsPage::kSettingsGroup); // Create actions - AddShortcut("play", tr("Play"), std::bind(&GlobalShortcutsManager::Play, this)); - AddShortcut("pause", tr("Pause"), std::bind(&GlobalShortcutsManager::Pause, this)); - AddShortcut("play_pause", tr("Play/Pause"), std::bind(&GlobalShortcutsManager::PlayPause, this), QKeySequence(Qt::Key_MediaPlay)); - AddShortcut("stop", tr("Stop"), std::bind(&GlobalShortcutsManager::Stop, this), QKeySequence(Qt::Key_MediaStop)); - AddShortcut("stop_after", tr("Stop playing after current track"), std::bind(&GlobalShortcutsManager::StopAfter, this)); - AddShortcut("next_track", tr("Next track"), std::bind(&GlobalShortcutsManager::Next, this), QKeySequence(Qt::Key_MediaNext)); - AddShortcut("prev_track", tr("Previous track"), std::bind(&GlobalShortcutsManager::Previous, this), QKeySequence(Qt::Key_MediaPrevious)); - AddShortcut("inc_volume", tr("Increase volume"), std::bind(&GlobalShortcutsManager::IncVolume, this)); - AddShortcut("dec_volume", tr("Decrease volume"), std::bind(&GlobalShortcutsManager::DecVolume, this)); - AddShortcut("mute", tr("Mute"), std::bind(&GlobalShortcutsManager::Mute, this)); - AddShortcut("seek_forward", tr("Seek forward"), std::bind(&GlobalShortcutsManager::SeekForward, this)); - AddShortcut("seek_backward", tr("Seek backward"), std::bind(&GlobalShortcutsManager::SeekBackward, this)); - AddShortcut("show_hide", tr("Show/Hide"), std::bind(&GlobalShortcutsManager::ShowHide, this)); - AddShortcut("show_osd", tr("Show OSD"), std::bind(&GlobalShortcutsManager::ShowOSD, this)); - AddShortcut("toggle_pretty_osd", tr("Toggle Pretty OSD"), std::bind(&GlobalShortcutsManager::TogglePrettyOSD, this)); // Toggling possible only for pretty OSD - AddShortcut("shuffle_mode", tr("Change shuffle mode"), std::bind(&GlobalShortcutsManager::CycleShuffleMode, this)); - AddShortcut("repeat_mode", tr("Change repeat mode"), std::bind(&GlobalShortcutsManager::CycleRepeatMode, this)); - AddShortcut("toggle_scrobbling", tr("Enable/disable scrobbling"), std::bind(&GlobalShortcutsManager::ToggleScrobbling, this)); - AddShortcut("love", tr("Love"), std::bind(&GlobalShortcutsManager::Love, this)); + 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("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)); // Create backends - these do the actual shortcut registration diff --git a/src/internet/internetcollectionview.cpp b/src/internet/internetcollectionview.cpp index 227b1c1f..afe4fb25 100644 --- a/src/internet/internetcollectionview.cpp +++ b/src/internet/internetcollectionview.cpp @@ -57,7 +57,7 @@ InternetCollectionView::InternetCollectionView(QWidget *parent) total_song_count_(0), total_artist_count_(0), total_album_count_(0), - nomusic_(":/pictures/nomusic.png"), + nomusic_(QStringLiteral(":/pictures/nomusic.png")), context_menu_(nullptr), load_(nullptr), add_to_playlist_(nullptr), @@ -76,7 +76,7 @@ InternetCollectionView::InternetCollectionView(QWidget *parent) setSelectionMode(QAbstractItemView::ExtendedSelection); SetAutoOpen(false); - setStyleSheet("QTreeView::item{padding-top:1px;}"); + setStyleSheet(QStringLiteral("QTreeView::item{padding-top:1px;}")); } @@ -313,18 +313,18 @@ void InternetCollectionView::contextMenuEvent(QContextMenuEvent *e) { if (!context_menu_) { context_menu_ = new QMenu(this); - add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &InternetCollectionView::AddToPlaylist); - load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &InternetCollectionView::Load); - open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &InternetCollectionView::OpenInNewPlaylist); + add_to_playlist_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &InternetCollectionView::AddToPlaylist); + load_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &InternetCollectionView::Load); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &InternetCollectionView::OpenInNewPlaylist); context_menu_->addSeparator(); - add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, &InternetCollectionView::AddToPlaylistEnqueue); - add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue to play next"), this, &InternetCollectionView::AddToPlaylistEnqueueNext); + add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue track"), this, &InternetCollectionView::AddToPlaylistEnqueue); + add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue to play next"), this, &InternetCollectionView::AddToPlaylistEnqueueNext); context_menu_->addSeparator(); if (favorite_) { - remove_songs_ = context_menu_->addAction(IconLoader::Load("edit-delete"), tr("Remove from favorites"), this, &InternetCollectionView::RemoveSelectedSongs); + remove_songs_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Remove from favorites"), this, &InternetCollectionView::RemoveSelectedSongs); context_menu_->addSeparator(); } diff --git a/src/internet/internetsearchmodel.cpp b/src/internet/internetsearchmodel.cpp index f7030614..eb9ab1d4 100644 --- a/src/internet/internetsearchmodel.cpp +++ b/src/internet/internetsearchmodel.cpp @@ -42,8 +42,8 @@ InternetSearchModel::InternetSearchModel(InternetServicePtr service, QObject *pa service_(service), proxy_(nullptr), use_pretty_covers_(true), - artist_icon_(IconLoader::Load("folder-sound")), - album_icon_(IconLoader::Load("cdcase")) { + artist_icon_(IconLoader::Load(QStringLiteral("folder-sound"))), + album_icon_(IconLoader::Load(QStringLiteral("cdcase"))) { group_by_[0] = CollectionModel::GroupBy::AlbumArtist; group_by_[1] = CollectionModel::GroupBy::AlbumDisc; @@ -91,7 +91,7 @@ QStandardItem *InternetSearchModel::BuildContainers(const Song &s, QStandardItem case CollectionModel::GroupBy::AlbumArtist: if (s.is_compilation()) { display_text = tr("Various artists"); - sort_text = "aaaaaa"; + sort_text = QStringLiteral("aaaaaa"); } else { display_text = CollectionModel::TextOrUnknown(s.effective_albumartist()); @@ -103,7 +103,7 @@ QStandardItem *InternetSearchModel::BuildContainers(const Song &s, QStandardItem case CollectionModel::GroupBy::Artist: if (s.is_compilation()) { display_text = tr("Various artists"); - sort_text = "aaaaaa"; + sort_text = QStringLiteral("aaaaaa"); } else { display_text = CollectionModel::TextOrUnknown(s.artist()); @@ -221,10 +221,10 @@ QStandardItem *InternetSearchModel::BuildContainers(const Song &s, QStandardItem } else { if (s.bitdepth() <= 0) { - display_text = QString("%1 (%2)").arg(s.TextForFiletype(), QString::number(s.samplerate() / 1000.0, 'G', 5)); + display_text = QStringLiteral("%1 (%2)").arg(s.TextForFiletype(), QString::number(s.samplerate() / 1000.0, 'G', 5)); } else { - display_text = QString("%1 (%2/%3)").arg(s.TextForFiletype(), QString::number(s.samplerate() / 1000.0, 'G', 5), QString::number(s.bitdepth())); + display_text = QStringLiteral("%1 (%2/%3)").arg(s.TextForFiletype(), QString::number(s.samplerate() / 1000.0, 'G', 5), QString::number(s.bitdepth())); } } sort_text = display_text; @@ -250,8 +250,8 @@ QStandardItem *InternetSearchModel::BuildContainers(const Song &s, QStandardItem return parent; } - if (display_text.isEmpty()) display_text = "Unknown"; - if (sort_text.isEmpty()) sort_text = "Unknown"; + if (display_text.isEmpty()) display_text = QStringLiteral("Unknown"); + if (sort_text.isEmpty()) sort_text = QStringLiteral("Unknown"); // Find a container for this level key->group_[level] = display_text + unique_tag; diff --git a/src/internet/internetsearchview.cpp b/src/internet/internetsearchview.cpp index 4628826e..efa59786 100644 --- a/src/internet/internetsearchview.cpp +++ b/src/internet/internetsearchview.cpp @@ -114,12 +114,12 @@ InternetSearchView::InternetSearchView(QWidget *parent) ui_->search->installEventFilter(this); ui_->results_stack->installEventFilter(this); - ui_->settings->setIcon(IconLoader::Load("configure")); + ui_->settings->setIcon(IconLoader::Load(QStringLiteral("configure"))); // Set the appearance of the results list ui_->results->setItemDelegate(new InternetSearchItemDelegate(this)); ui_->results->setAttribute(Qt::WA_MacShowFocusRect, false); - ui_->results->setStyleSheet("QTreeView::item{padding-top:1px;}"); + ui_->results->setStyleSheet(QStringLiteral("QTreeView::item{padding-top:1px;}")); // Show the help page initially ui_->results_stack->setCurrentWidget(ui_->help_page); @@ -176,7 +176,7 @@ void InternetSearchView::Init(Application *app, InternetServicePtr service) { QMenu *settings_menu = new QMenu(this); settings_menu->addActions(group_by_actions_->actions()); settings_menu->addSeparator(); - settings_menu->addAction(IconLoader::Load("configure"), tr("Configure %1...").arg(Song::DescriptionForSource(service_->source())), this, &InternetSearchView::OpenSettingsDialog); + settings_menu->addAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure %1...").arg(Song::DescriptionForSource(service_->source())), this, &InternetSearchView::OpenSettingsDialog); ui_->settings->setMenu(settings_menu); swap_models_timer_->setSingleShot(true); @@ -313,36 +313,36 @@ bool InternetSearchView::ResultsContextMenuEvent(QContextMenuEvent *e) { if (!context_menu_) { context_menu_ = new QMenu(this); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &InternetSearchView::AddSelectedToPlaylist); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &InternetSearchView::LoadSelected); - context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &InternetSearchView::OpenSelectedInNewPlaylist); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &InternetSearchView::AddSelectedToPlaylist); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &InternetSearchView::LoadSelected); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &InternetSearchView::OpenSelectedInNewPlaylist); context_menu_->addSeparator(); - context_actions_ << context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, &InternetSearchView::AddSelectedToPlaylistEnqueue); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue track"), this, &InternetSearchView::AddSelectedToPlaylistEnqueue); context_menu_->addSeparator(); if (service_->artists_collection_model() || service_->albums_collection_model() || service_->songs_collection_model()) { if (service_->artists_collection_model()) { - context_actions_ << context_menu_->addAction(IconLoader::Load("folder-new"), tr("Add to artists"), this, &InternetSearchView::AddArtists); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("folder-new")), tr("Add to artists"), this, &InternetSearchView::AddArtists); } if (service_->albums_collection_model()) { - context_actions_ << context_menu_->addAction(IconLoader::Load("folder-new"), tr("Add to albums"), this, &InternetSearchView::AddAlbums); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("folder-new")), tr("Add to albums"), this, &InternetSearchView::AddAlbums); } if (service_->songs_collection_model()) { - context_actions_ << context_menu_->addAction(IconLoader::Load("folder-new"), tr("Add to songs"), this, &InternetSearchView::AddSongs); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("folder-new")), tr("Add to songs"), this, &InternetSearchView::AddSongs); } context_menu_->addSeparator(); } if (ui_->results->selectionModel() && ui_->results->selectionModel()->selectedRows().length() == 1) { - context_actions_ << context_menu_->addAction(IconLoader::Load("search"), tr("Search for this"), this, &InternetSearchView::SearchForThis); + context_actions_ << context_menu_->addAction(IconLoader::Load(QStringLiteral("search")), tr("Search for this"), this, &InternetSearchView::SearchForThis); } context_menu_->addSeparator(); context_menu_->addMenu(tr("Group by"))->addActions(group_by_actions_->actions()); - context_menu_->addAction(IconLoader::Load("configure"), tr("Configure %1...").arg(Song::TextForSource(service_->source())), this, &InternetSearchView::OpenSettingsDialog); + context_menu_->addAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure %1...").arg(Song::TextForSource(service_->source())), this, &InternetSearchView::OpenSettingsDialog); } @@ -433,14 +433,14 @@ void InternetSearchView::SwapModels() { QStringList InternetSearchView::TokenizeQuery(const QString &query) { - QStringList tokens(query.split(QRegularExpression("\\s+"))); + QStringList tokens(query.split(QRegularExpression(QStringLiteral("\\s+")))); for (QStringList::iterator it = tokens.begin(); it != tokens.end(); ++it) { (*it).remove('('); (*it).remove(')'); (*it).remove('"'); - const qint64 colon = (*it).indexOf(":"); + const qint64 colon = (*it).indexOf(QLatin1String(":")); if (colon != -1) { (*it).remove(0, colon + 1); } diff --git a/src/internet/internetsongsview.cpp b/src/internet/internetsongsview.cpp index 8eff8896..94621094 100644 --- a/src/internet/internetsongsview.cpp +++ b/src/internet/internetsongsview.cpp @@ -56,7 +56,7 @@ InternetSongsView::InternetSongsView(Application *app, InternetServicePtr servic ui_->filter_widget->SetSettingsGroup(settings_group); ui_->filter_widget->Init(service_->songs_collection_model()); - QAction *action_configure = new QAction(IconLoader::Load("configure"), tr("Configure %1...").arg(Song::DescriptionForSource(service_->source())), this); + QAction *action_configure = new QAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure %1...").arg(Song::DescriptionForSource(service_->source())), this); QObject::connect(action_configure, &QAction::triggered, this, &InternetSongsView::OpenSettingsDialog); ui_->filter_widget->AddMenuAction(action_configure); diff --git a/src/internet/internettabsview.cpp b/src/internet/internettabsview.cpp index 43f79b0d..657604fa 100644 --- a/src/internet/internettabsview.cpp +++ b/src/internet/internettabsview.cpp @@ -59,7 +59,7 @@ InternetTabsView::InternetTabsView(Application *app, InternetServicePtr service, QObject::connect(ui_->search_view, &InternetSearchView::AddAlbumsSignal, &*service_, &InternetService::AddAlbums); QObject::connect(ui_->search_view, &InternetSearchView::AddSongsSignal, &*service_, &InternetService::AddSongs); - QAction *action_configure = new QAction(IconLoader::Load("configure"), tr("Configure %1...").arg(Song::TextForSource(service_->source())), this); + QAction *action_configure = new QAction(IconLoader::Load(QStringLiteral("configure")), tr("Configure %1...").arg(Song::TextForSource(service_->source())), this); QObject::connect(action_configure, &QAction::triggered, this, &InternetTabsView::OpenSettingsDialog); if (service_->artists_collection_model()) { @@ -68,7 +68,7 @@ InternetTabsView::InternetTabsView(Application *app, InternetServicePtr service, ui_->artists_collection->view()->setModel(service_->artists_collection_sort_model()); ui_->artists_collection->view()->SetFilter(ui_->artists_collection->filter_widget()); ui_->artists_collection->filter_widget()->SetSettingsGroup(settings_group); - ui_->artists_collection->filter_widget()->SetSettingsPrefix("artists"); + ui_->artists_collection->filter_widget()->SetSettingsPrefix(QStringLiteral("artists")); ui_->artists_collection->filter_widget()->Init(service_->artists_collection_model()); ui_->artists_collection->filter_widget()->AddMenuAction(action_configure); @@ -100,7 +100,7 @@ InternetTabsView::InternetTabsView(Application *app, InternetServicePtr service, ui_->albums_collection->view()->setModel(service_->albums_collection_sort_model()); ui_->albums_collection->view()->SetFilter(ui_->albums_collection->filter_widget()); ui_->albums_collection->filter_widget()->SetSettingsGroup(settings_group); - ui_->albums_collection->filter_widget()->SetSettingsPrefix("albums"); + ui_->albums_collection->filter_widget()->SetSettingsPrefix(QStringLiteral("albums")); ui_->albums_collection->filter_widget()->Init(service_->albums_collection_model()); ui_->albums_collection->filter_widget()->AddMenuAction(action_configure); @@ -132,7 +132,7 @@ InternetTabsView::InternetTabsView(Application *app, InternetServicePtr service, ui_->songs_collection->view()->setModel(service_->songs_collection_sort_model()); ui_->songs_collection->view()->SetFilter(ui_->songs_collection->filter_widget()); ui_->songs_collection->filter_widget()->SetSettingsGroup(settings_group); - ui_->songs_collection->filter_widget()->SetSettingsPrefix("songs"); + ui_->songs_collection->filter_widget()->SetSettingsPrefix(QStringLiteral("songs")); ui_->songs_collection->filter_widget()->Init(service_->songs_collection_model()); ui_->songs_collection->filter_widget()->AddMenuAction(action_configure); diff --git a/src/internet/localredirectserver.cpp b/src/internet/localredirectserver.cpp index c461526c..6b52315e 100644 --- a/src/internet/localredirectserver.cpp +++ b/src/internet/localredirectserver.cpp @@ -55,10 +55,10 @@ bool LocalRedirectServer::Listen() { return false; } - url_.setScheme("http"); - url_.setHost("localhost"); + url_.setScheme(QStringLiteral("http")); + url_.setHost(QStringLiteral("localhost")); url_.setPort(serverPort()); - url_.setPath("/"); + url_.setPath(QStringLiteral("/")); QObject::connect(this, &QTcpServer::newConnection, this, &LocalRedirectServer::NewConnection); return true; @@ -86,7 +86,7 @@ void LocalRedirectServer::incomingConnection(qintptr socket_descriptor) { if (!tcp_socket->setSocketDescriptor(socket_descriptor)) { delete tcp_socket; close(); - error_ = "Unable to set socket descriptor"; + error_ = QStringLiteral("Unable to set socket descriptor"); emit Finished(); return; } @@ -124,12 +124,12 @@ void LocalRedirectServer::ReadyRead() { void LocalRedirectServer::WriteTemplate() const { - QFile page_file(":/html/oauthsuccess.html"); + QFile page_file(QStringLiteral(":/html/oauthsuccess.html")); if (!page_file.open(QIODevice::ReadOnly)) return; QString page_data = QString::fromUtf8(page_file.readAll()); page_file.close(); - QRegularExpression tr_regexp("tr\\(\"([^\"]+)\"\\)"); + QRegularExpression tr_regexp(QStringLiteral("tr\\(\"([^\"]+)\"\\)")); qint64 offset = 0; forever { QRegularExpressionMatch re_match = tr_regexp.match(page_data, offset); @@ -151,7 +151,7 @@ void LocalRedirectServer::WriteTemplate() const { .pixmap(16) .toImage() .save(&image_buffer, "PNG"); - page_data.replace("@IMAGE_DATA@", image_buffer.data().toBase64()); + page_data.replace(QLatin1String("@IMAGE_DATA@"), image_buffer.data().toBase64()); image_buffer.close(); } diff --git a/src/lyrics/azlyricscomlyricsprovider.cpp b/src/lyrics/azlyricscomlyricsprovider.cpp index facd3fea..7f2d7d0c 100644 --- a/src/lyrics/azlyricscomlyricsprovider.cpp +++ b/src/lyrics/azlyricscomlyricsprovider.cpp @@ -34,7 +34,7 @@ const char AzLyricsComLyricsProvider::kEndTag[] = ""; const char AzLyricsComLyricsProvider::kLyricsStart[] = ""; AzLyricsComLyricsProvider::AzLyricsComLyricsProvider(SharedPtr network, QObject *parent) - : HtmlLyricsProvider("azlyrics.com", true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} + : HtmlLyricsProvider(QStringLiteral("azlyrics.com"), true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} QUrl AzLyricsComLyricsProvider::Url(const LyricsSearchRequest &request) { @@ -44,6 +44,6 @@ QUrl AzLyricsComLyricsProvider::Url(const LyricsSearchRequest &request) { QString AzLyricsComLyricsProvider::StringFixup(const QString &text) { - return Utilities::Transliterate(text).remove(QRegularExpression("[^\\w0-9\\-]")).toLower(); + return Utilities::Transliterate(text).remove(QRegularExpression(QStringLiteral("[^\\w0-9\\-]"))).toLower(); } diff --git a/src/lyrics/chartlyricsprovider.cpp b/src/lyrics/chartlyricsprovider.cpp index 7cccdfcf..45b7c75a 100644 --- a/src/lyrics/chartlyricsprovider.cpp +++ b/src/lyrics/chartlyricsprovider.cpp @@ -39,7 +39,7 @@ const char *ChartLyricsProvider::kUrlSearch = "http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect"; -ChartLyricsProvider::ChartLyricsProvider(SharedPtr network, QObject *parent) : LyricsProvider("ChartLyrics", false, false, network, parent) {} +ChartLyricsProvider::ChartLyricsProvider(SharedPtr network, QObject *parent) : LyricsProvider(QStringLiteral("ChartLyrics"), false, false, network, parent) {} ChartLyricsProvider::~ChartLyricsProvider() { @@ -55,8 +55,8 @@ ChartLyricsProvider::~ChartLyricsProvider() { bool ChartLyricsProvider::StartSearch(const int id, const LyricsSearchRequest &request) { QUrlQuery url_query; - url_query.addQueryItem("artist", QUrl::toPercentEncoding(request.artist)); - url_query.addQueryItem("song", QUrl::toPercentEncoding(request.title)); + url_query.addQueryItem(QStringLiteral("artist"), QUrl::toPercentEncoding(request.artist)); + url_query.addQueryItem(QStringLiteral("song"), QUrl::toPercentEncoding(request.title)); QUrl url(kUrlSearch); url.setQuery(url_query); @@ -80,13 +80,13 @@ void ChartLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id, reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); emit SearchFinished(id); return; } if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); emit SearchFinished(id); return; } diff --git a/src/lyrics/elyricsnetlyricsprovider.cpp b/src/lyrics/elyricsnetlyricsprovider.cpp index a128b07a..824cfcd9 100644 --- a/src/lyrics/elyricsnetlyricsprovider.cpp +++ b/src/lyrics/elyricsnetlyricsprovider.cpp @@ -34,7 +34,7 @@ const char ElyricsNetLyricsProvider::kEndTag[] = "<\\/div>"; const char ElyricsNetLyricsProvider::kLyricsStart[] = "
"; ElyricsNetLyricsProvider::ElyricsNetLyricsProvider(SharedPtr network, QObject *parent) - : HtmlLyricsProvider("elyrics.net", true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} + : HtmlLyricsProvider(QStringLiteral("elyrics.net"), true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} QUrl ElyricsNetLyricsProvider::Url(const LyricsSearchRequest &request) { @@ -45,8 +45,8 @@ QUrl ElyricsNetLyricsProvider::Url(const LyricsSearchRequest &request) { QString ElyricsNetLyricsProvider::StringFixup(const QString &text) { return Utilities::Transliterate(text) - .replace(QRegularExpression("[^\\w0-9_,&\\-\\(\\) ]"), "_") - .replace(QRegularExpression(" {2,}"), " ") + .replace(QRegularExpression(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]")), QStringLiteral("_")) + .replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" ")) .simplified() .replace(' ', '-') .toLower(); diff --git a/src/lyrics/geniuslyricsprovider.cpp b/src/lyrics/geniuslyricsprovider.cpp index 62745caf..a35a4fd1 100644 --- a/src/lyrics/geniuslyricsprovider.cpp +++ b/src/lyrics/geniuslyricsprovider.cpp @@ -61,7 +61,7 @@ const char *GeniusLyricsProvider::kUrlSearch = "https://api.genius.com/search/"; const char *GeniusLyricsProvider::kClientIDB64 = "RUNTNXU4U1VyMU1KUU5hdTZySEZteUxXY2hkanFiY3lfc2JjdXBpNG5WMU9SNUg4dTBZelEtZTZCdFg2dl91SQ=="; const char *GeniusLyricsProvider::kClientSecretB64 = "VE9pMU9vUjNtTXZ3eFR3YVN0QVRyUjVoUlhVWDI1Ylp5X240eEt1M0ZkYlNwRG5JUnd0LXFFbHdGZkZkRWY2VzJ1S011UnQzM3c2Y3hqY0tVZ3NGN2c="; -GeniusLyricsProvider::GeniusLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider("Genius", true, true, network, parent), server_(nullptr) { +GeniusLyricsProvider::GeniusLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider(QStringLiteral("Genius"), true, true, network, parent), server_(nullptr) { QSettings s; s.beginGroup(kSettingsGroup); @@ -106,18 +106,18 @@ void GeniusLyricsProvider::Authenticate() { } QUrlQuery url_query; - url_query.addQueryItem("client_id", QUrl::toPercentEncoding(QByteArray::fromBase64(kClientIDB64))); - url_query.addQueryItem("redirect_uri", QUrl::toPercentEncoding(redirect_url.toString())); - url_query.addQueryItem("scope", "me"); - url_query.addQueryItem("state", QUrl::toPercentEncoding(code_challenge_)); - url_query.addQueryItem("response_type", "code"); + url_query.addQueryItem(QStringLiteral("client_id"), QUrl::toPercentEncoding(QByteArray::fromBase64(kClientIDB64))); + url_query.addQueryItem(QStringLiteral("redirect_uri"), QUrl::toPercentEncoding(redirect_url.toString())); + url_query.addQueryItem(QStringLiteral("scope"), QStringLiteral("me")); + url_query.addQueryItem(QStringLiteral("state"), QUrl::toPercentEncoding(code_challenge_)); + url_query.addQueryItem(QStringLiteral("response_type"), QStringLiteral("code")); QUrl url(kOAuthAuthorizeUrl); url.setQuery(url_query); const bool result = QDesktopServices::openUrl(url); if (!result) { - QMessageBox messagebox(QMessageBox::Information, tr("Genius Authentication"), tr("Please open this URL in your browser") + QString(":
%1").arg(url.toString()), QMessageBox::Ok); + QMessageBox messagebox(QMessageBox::Information, tr("Genius Authentication"), tr("Please open this URL in your browser") + QStringLiteral(":
%1").arg(url.toString()), QMessageBox::Ok); messagebox.setTextFormat(Qt::RichText); messagebox.exec(); } @@ -132,10 +132,10 @@ void GeniusLyricsProvider::RedirectArrived() { QUrl url = server_->request_url(); if (url.isValid()) { QUrlQuery url_query(url); - if (url_query.hasQueryItem("error")) { - AuthError(QUrlQuery(url).queryItemValue("error")); + if (url_query.hasQueryItem(QStringLiteral("error"))) { + AuthError(QUrlQuery(url).queryItemValue(QStringLiteral("error"))); } - else if (url_query.hasQueryItem("code")) { + else if (url_query.hasQueryItem(QStringLiteral("code"))) { QUrl redirect_url(kOAuthRedirectUrl); redirect_url.setPort(server_->url().port()); RequestAccessToken(url, redirect_url); @@ -164,17 +164,17 @@ void GeniusLyricsProvider::RequestAccessToken(const QUrl &url, const QUrl &redir QUrlQuery url_query(url); - if (url.hasQuery() && url_query.hasQueryItem("code") && url_query.hasQueryItem("state")) { + if (url.hasQuery() && url_query.hasQueryItem(QStringLiteral("code")) && url_query.hasQueryItem(QStringLiteral("state"))) { - const QString code = url_query.queryItemValue("code"); + const QString code = url_query.queryItemValue(QStringLiteral("code")); QUrlQuery new_url_query; - new_url_query.addQueryItem("code", QUrl::toPercentEncoding(code)); - new_url_query.addQueryItem("client_id", QUrl::toPercentEncoding(QByteArray::fromBase64(kClientIDB64))); - new_url_query.addQueryItem("client_secret", QUrl::toPercentEncoding(QByteArray::fromBase64(kClientSecretB64))); - new_url_query.addQueryItem("redirect_uri", QUrl::toPercentEncoding(redirect_url.toString())); - new_url_query.addQueryItem("grant_type", "authorization_code"); - new_url_query.addQueryItem("response_type", "code"); + new_url_query.addQueryItem(QStringLiteral("code"), QUrl::toPercentEncoding(code)); + new_url_query.addQueryItem(QStringLiteral("client_id"), QUrl::toPercentEncoding(QByteArray::fromBase64(kClientIDB64))); + new_url_query.addQueryItem(QStringLiteral("client_secret"), QUrl::toPercentEncoding(QByteArray::fromBase64(kClientSecretB64))); + new_url_query.addQueryItem(QStringLiteral("redirect_uri"), QUrl::toPercentEncoding(redirect_url.toString())); + new_url_query.addQueryItem(QStringLiteral("grant_type"), QStringLiteral("authorization_code")); + new_url_query.addQueryItem(QStringLiteral("response_type"), QStringLiteral("code")); QUrl new_url(kOAuthAccessTokenUrl); QNetworkRequest req(new_url); @@ -213,7 +213,7 @@ void GeniusLyricsProvider::AccessTokenRequestFinished(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - AuthError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + AuthError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); return; } else { @@ -223,18 +223,18 @@ void GeniusLyricsProvider::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error") && json_obj.contains("error_description")) { - QString error = json_obj["error"].toString(); - QString error_description = json_obj["error_description"].toString(); - login_errors_ << QString("Authentication failure: %1 (%2)").arg(error, error_description); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("error_description"))) { + QString error = json_obj[QStringLiteral("error")].toString(); + QString error_description = json_obj[QStringLiteral("error_description")].toString(); + login_errors_ << QStringLiteral("Authentication failure: %1 (%2)").arg(error, error_description); } } if (login_errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - login_errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + login_errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - login_errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + login_errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } AuthError(); @@ -248,32 +248,32 @@ void GeniusLyricsProvider::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse Json data in authentication reply: %1").arg(json_error.errorString())); + Error(QStringLiteral("Failed to parse Json data in authentication reply: %1").arg(json_error.errorString())); return; } if (json_doc.isEmpty()) { - AuthError("Authentication reply from server has empty Json document."); + AuthError(QStringLiteral("Authentication reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - AuthError("Authentication reply from server has Json document that is not an object.", json_doc); + AuthError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - AuthError("Authentication reply from server has empty Json object.", json_doc); + AuthError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("access_token")) { - AuthError("Authentication reply from server is missing access token.", json_obj); + if (!json_obj.contains(QStringLiteral("access_token"))) { + AuthError(QStringLiteral("Authentication reply from server is missing access token."), json_obj); return; } - access_token_ = json_obj["access_token"].toString(); + access_token_ = json_obj[QStringLiteral("access_token")].toString(); QSettings s; s.beginGroup(kSettingsGroup); @@ -297,7 +297,7 @@ bool GeniusLyricsProvider::StartSearch(const int id, const LyricsSearchRequest & requests_search_.insert(id, search); QUrlQuery url_query; - url_query.addQueryItem("q", QUrl::toPercentEncoding(QString("%1 %2").arg(request.artist, request.title))); + url_query.addQueryItem(QStringLiteral("q"), QUrl::toPercentEncoding(QStringLiteral("%1 %2").arg(request.artist, request.title))); QUrl url(kUrlSearch); url.setQuery(url_query); @@ -330,78 +330,78 @@ void GeniusLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id) return; } - if (!json_obj.contains("meta")) { - Error("Json reply is missing meta object.", json_obj); + if (!json_obj.contains(QStringLiteral("meta"))) { + Error(QStringLiteral("Json reply is missing meta object."), json_obj); EndSearch(search); return; } - if (!json_obj["meta"].isObject()) { - Error("Json reply meta is not an object.", json_obj); + if (!json_obj[QStringLiteral("meta")].isObject()) { + Error(QStringLiteral("Json reply meta is not an object."), json_obj); EndSearch(search); return; } - QJsonObject obj_meta = json_obj["meta"].toObject(); - if (!obj_meta.contains("status")) { - Error("Json reply meta object is missing status.", obj_meta); + QJsonObject obj_meta = json_obj[QStringLiteral("meta")].toObject(); + if (!obj_meta.contains(QStringLiteral("status"))) { + Error(QStringLiteral("Json reply meta object is missing status."), obj_meta); EndSearch(search); return; } - int status = obj_meta["status"].toInt(); + int status = obj_meta[QStringLiteral("status")].toInt(); if (status != 200) { - if (obj_meta.contains("message")) { - Error(QString("Received error %1: %2.").arg(status).arg(obj_meta["message"].toString())); + if (obj_meta.contains(QStringLiteral("message"))) { + Error(QStringLiteral("Received error %1: %2.").arg(status).arg(obj_meta[QStringLiteral("message")].toString())); } else { - Error(QString("Received error %1.").arg(status)); + Error(QStringLiteral("Received error %1.").arg(status)); } EndSearch(search); return; } - if (!json_obj.contains("response")) { - Error("Json reply is missing response.", json_obj); + if (!json_obj.contains(QStringLiteral("response"))) { + Error(QStringLiteral("Json reply is missing response."), json_obj); EndSearch(search); return; } - if (!json_obj["response"].isObject()) { - Error("Json response is not an object.", json_obj); + if (!json_obj[QStringLiteral("response")].isObject()) { + Error(QStringLiteral("Json response is not an object."), json_obj); EndSearch(search); return; } - QJsonObject obj_response = json_obj["response"].toObject(); - if (!obj_response.contains("hits")) { - Error("Json response is missing hits.", obj_response); + QJsonObject obj_response = json_obj[QStringLiteral("response")].toObject(); + if (!obj_response.contains(QStringLiteral("hits"))) { + Error(QStringLiteral("Json response is missing hits."), obj_response); EndSearch(search); return; } - if (!obj_response["hits"].isArray()) { - Error("Json hits is not an array.", obj_response); + if (!obj_response[QStringLiteral("hits")].isArray()) { + Error(QStringLiteral("Json hits is not an array."), obj_response); EndSearch(search); return; } - QJsonArray array_hits = obj_response["hits"].toArray(); + QJsonArray array_hits = obj_response[QStringLiteral("hits")].toArray(); for (const QJsonValueRef value_hit : array_hits) { if (!value_hit.isObject()) { continue; } QJsonObject obj_hit = value_hit.toObject(); - if (!obj_hit.contains("result")) { + if (!obj_hit.contains(QStringLiteral("result"))) { continue; } - if (!obj_hit["result"].isObject()) { + if (!obj_hit[QStringLiteral("result")].isObject()) { continue; } - QJsonObject obj_result = obj_hit["result"].toObject(); - if (!obj_result.contains("title") || !obj_result.contains("primary_artist") || !obj_result.contains("url") || !obj_result["primary_artist"].isObject()) { - Error("Missing one or more values in result object", obj_result); + QJsonObject obj_result = obj_hit[QStringLiteral("result")].toObject(); + if (!obj_result.contains(QStringLiteral("title")) || !obj_result.contains(QStringLiteral("primary_artist")) || !obj_result.contains(QStringLiteral("url")) || !obj_result[QStringLiteral("primary_artist")].isObject()) { + Error(QStringLiteral("Missing one or more values in result object"), obj_result); continue; } - QJsonObject primary_artist = obj_result["primary_artist"].toObject(); - if (!primary_artist.contains("name")) continue; + QJsonObject primary_artist = obj_result[QStringLiteral("primary_artist")].toObject(); + if (!primary_artist.contains(QStringLiteral("name"))) continue; - QString artist = primary_artist["name"].toString(); - QString title = obj_result["title"].toString(); + QString artist = primary_artist[QStringLiteral("name")].toString(); + QString title = obj_result[QStringLiteral("title")].toString(); // Ignore results where both the artist and title don't match. if (!artist.startsWith(search->request.albumartist, Qt::CaseInsensitive) && @@ -410,7 +410,7 @@ void GeniusLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id) continue; } - QUrl url(obj_result["url"].toString()); + QUrl url(obj_result[QStringLiteral("url")].toString()); if (!url.isValid()) continue; if (search->requests_lyric_.contains(url)) continue; @@ -450,27 +450,27 @@ void GeniusLyricsProvider::HandleLyricReply(QNetworkReply *reply, const int sear const GeniusLyricsLyricContext lyric = search->requests_lyric_.value(url); if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); EndSearch(search, lyric); return; } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); EndSearch(search, lyric); return; } QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error("Empty reply received from server."); + Error(QStringLiteral("Empty reply received from server.")); EndSearch(search, lyric); return; } QString content = QString::fromUtf8(data); - QString lyrics = HtmlLyricsProvider::ParseLyricsFromHTML(content, QRegularExpression("]*>"), QRegularExpression("<\\/div>"), QRegularExpression("
]+>"), true); + QString lyrics = HtmlLyricsProvider::ParseLyricsFromHTML(content, QRegularExpression(QStringLiteral("]*>")), QRegularExpression(QStringLiteral("<\\/div>")), QRegularExpression(QStringLiteral("
]+>")), true); if (lyrics.isEmpty()) { - lyrics = HtmlLyricsProvider::ParseLyricsFromHTML(content, QRegularExpression("]*>"), QRegularExpression("<\\/div>"), QRegularExpression("
"), true); + lyrics = HtmlLyricsProvider::ParseLyricsFromHTML(content, QRegularExpression(QStringLiteral("]*>")), QRegularExpression(QStringLiteral("<\\/div>")), QRegularExpression(QStringLiteral("
")), true); } if (!lyrics.isEmpty()) { diff --git a/src/lyrics/htmllyricsprovider.cpp b/src/lyrics/htmllyricsprovider.cpp index bf4c041d..f989c87a 100644 --- a/src/lyrics/htmllyricsprovider.cpp +++ b/src/lyrics/htmllyricsprovider.cpp @@ -101,7 +101,7 @@ void HtmlLyricsProvider::HandleLyricsReply(QNetworkReply *reply, const int id, c } const QString lyrics = ParseLyricsFromHTML(QString::fromUtf8(data), QRegularExpression(start_tag_), QRegularExpression(end_tag_), QRegularExpression(lyrics_start_), multiple_); - if (lyrics.isEmpty() || lyrics.contains("we do not have the lyrics for", Qt::CaseInsensitive)) { + if (lyrics.isEmpty() || lyrics.contains(QLatin1String("we do not have the lyrics for"), Qt::CaseInsensitive)) { qLog(Debug) << name_ << "No lyrics for" << request.artist << request.album << request.title; emit SearchFinished(id); return; @@ -159,12 +159,12 @@ QString HtmlLyricsProvider::ParseLyricsFromHTML(const QString &content, const QR lyrics.append(content.mid(start_lyrics_idx, end_lyrics_idx - start_lyrics_idx) .remove('\r') .remove('\n') - .remove(QRegularExpression("]*>[^<]*")) - .remove(QRegularExpression("")) - .remove(QRegularExpression("
]*>×
")) - .replace(QRegularExpression("]*>"), "\n") - .replace(QRegularExpression("

"), "\n\n") - .remove(QRegularExpression("<[^>]*>")) + .remove(QRegularExpression(QStringLiteral("]*>[^<]*"))) + .remove(QRegularExpression(QStringLiteral(""))) + .remove(QRegularExpression(QStringLiteral("
]*>×
"))) + .replace(QRegularExpression(QStringLiteral("]*>")), QStringLiteral("\n")) + .replace(QRegularExpression(QStringLiteral("

")), QStringLiteral("\n\n")) + .remove(QRegularExpression(QStringLiteral("<[^>]*>"))) .trimmed()); } else { @@ -174,7 +174,7 @@ QString HtmlLyricsProvider::ParseLyricsFromHTML(const QString &content, const QR } while (start_idx > 0 && multiple); - if (lyrics.length() > 6000 || lyrics.contains("there are no lyrics to", Qt::CaseInsensitive)) { + if (lyrics.length() > 6000 || lyrics.contains(QLatin1String("there are no lyrics to"), Qt::CaseInsensitive)) { return QString(); } diff --git a/src/lyrics/jsonlyricsprovider.cpp b/src/lyrics/jsonlyricsprovider.cpp index 7a340b9c..53480484 100644 --- a/src/lyrics/jsonlyricsprovider.cpp +++ b/src/lyrics/jsonlyricsprovider.cpp @@ -36,13 +36,13 @@ JsonLyricsProvider::JsonLyricsProvider(const QString &name, const bool enabled, QByteArray JsonLyricsProvider::ExtractData(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); if (reply->error() < 200) { return QByteArray(); } } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); } return reply->readAll(); @@ -59,23 +59,23 @@ QJsonObject JsonLyricsProvider::ExtractJsonObj(const QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse json data: %1").arg(json_error.errorString())); + Error(QStringLiteral("Failed to parse json data: %1").arg(json_error.errorString())); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } diff --git a/src/lyrics/letraslyricsprovider.cpp b/src/lyrics/letraslyricsprovider.cpp index c4d8ec5b..db046884 100644 --- a/src/lyrics/letraslyricsprovider.cpp +++ b/src/lyrics/letraslyricsprovider.cpp @@ -35,7 +35,7 @@ const char LetrasLyricsProvider::kEndTag[] = "<\\/div>"; const char LetrasLyricsProvider::kLyricsStart[] = "
"; LetrasLyricsProvider::LetrasLyricsProvider(SharedPtr network, QObject *parent) - : HtmlLyricsProvider("letras.mus.br", true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} + : HtmlLyricsProvider(QStringLiteral("letras.mus.br"), true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} QUrl LetrasLyricsProvider::Url(const LyricsSearchRequest &request) { @@ -46,8 +46,8 @@ QUrl LetrasLyricsProvider::Url(const LyricsSearchRequest &request) { QString LetrasLyricsProvider::StringFixup(const QString &text) { return QUrl::toPercentEncoding(Utilities::Transliterate(text) - .replace(QRegularExpression("[^\\w0-9_,&\\-\\(\\) ]"), "_") - .replace(QRegularExpression(" {2,}"), " ") + .replace(QRegularExpression(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]")), QStringLiteral("_")) + .replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" ")) .simplified() .replace(' ', '-') .toLower() diff --git a/src/lyrics/lololyricsprovider.cpp b/src/lyrics/lololyricsprovider.cpp index c9fc3931..bb9df97c 100644 --- a/src/lyrics/lololyricsprovider.cpp +++ b/src/lyrics/lololyricsprovider.cpp @@ -39,7 +39,7 @@ const char *LoloLyricsProvider::kUrlSearch = "http://api.lololyrics.com/0.5/getLyric"; -LoloLyricsProvider::LoloLyricsProvider(SharedPtr network, QObject *parent) : LyricsProvider("LoloLyrics", true, false, network, parent) {} +LoloLyricsProvider::LoloLyricsProvider(SharedPtr network, QObject *parent) : LyricsProvider(QStringLiteral("LoloLyrics"), true, false, network, parent) {} LoloLyricsProvider::~LoloLyricsProvider() { @@ -55,8 +55,8 @@ LoloLyricsProvider::~LoloLyricsProvider() { bool LoloLyricsProvider::StartSearch(const int id, const LyricsSearchRequest &request) { QUrlQuery url_query; - url_query.addQueryItem("artist", QUrl::toPercentEncoding(request.artist)); - url_query.addQueryItem("track", QUrl::toPercentEncoding(request.title)); + url_query.addQueryItem(QStringLiteral("artist"), QUrl::toPercentEncoding(request.artist)); + url_query.addQueryItem(QStringLiteral("track"), QUrl::toPercentEncoding(request.title)); QUrl url(kUrlSearch); url.setQuery(url_query); @@ -81,7 +81,7 @@ void LoloLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id, c QString failure_reason; if (reply->error() != QNetworkReply::NoError) { - failure_reason = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + failure_reason = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); if (reply->error() < 200) { Error(failure_reason); emit SearchFinished(id); @@ -89,7 +89,7 @@ void LoloLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id, c } } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - failure_reason = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + failure_reason = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } QByteArray data = reply->readAll(); diff --git a/src/lyrics/lyricsfetchersearch.cpp b/src/lyrics/lyricsfetchersearch.cpp index 0aa4e7a4..7c7f8e3f 100644 --- a/src/lyrics/lyricsfetchersearch.cpp +++ b/src/lyrics/lyricsfetchersearch.cpp @@ -60,7 +60,7 @@ void LyricsFetcherSearch::TerminateSearch() { void LyricsFetcherSearch::Start(SharedPtr lyrics_providers) { // Ignore Radio Paradise "commercial" break. - if (request_.artist.compare("commercial-free", Qt::CaseInsensitive) == 0 && request_.title.compare("listener-supported", Qt::CaseInsensitive) == 0) { + if (request_.artist.compare(QLatin1String("commercial-free"), Qt::CaseInsensitive) == 0 && request_.title.compare(QLatin1String("listener-supported"), Qt::CaseInsensitive) == 0) { TerminateSearch(); return; } diff --git a/src/lyrics/musixmatchlyricsprovider.cpp b/src/lyrics/musixmatchlyricsprovider.cpp index 774116cf..0d9a18ae 100644 --- a/src/lyrics/musixmatchlyricsprovider.cpp +++ b/src/lyrics/musixmatchlyricsprovider.cpp @@ -45,7 +45,7 @@ using std::make_shared; -MusixmatchLyricsProvider::MusixmatchLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider("Musixmatch", true, false, network, parent), use_api_(true) {} +MusixmatchLyricsProvider::MusixmatchLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider(QStringLiteral("Musixmatch"), true, false, network, parent), use_api_(true) {} MusixmatchLyricsProvider::~MusixmatchLyricsProvider() { @@ -79,12 +79,12 @@ void MusixmatchLyricsProvider::CancelSearch(const int id) { Q_UNUSED(id); } bool MusixmatchLyricsProvider::SendSearchRequest(LyricsSearchContextPtr search) { QUrlQuery url_query; - url_query.addQueryItem("apikey", QByteArray::fromBase64(kApiKey)); - url_query.addQueryItem("q_artist", QUrl::toPercentEncoding(search->request.artist)); - url_query.addQueryItem("q_track", QUrl::toPercentEncoding(search->request.title)); - url_query.addQueryItem("f_has_lyrics", "1"); + url_query.addQueryItem(QStringLiteral("apikey"), QByteArray::fromBase64(kApiKey)); + url_query.addQueryItem(QStringLiteral("q_artist"), QUrl::toPercentEncoding(search->request.artist)); + url_query.addQueryItem(QStringLiteral("q_track"), QUrl::toPercentEncoding(search->request.title)); + url_query.addQueryItem(QStringLiteral("f_has_lyrics"), QStringLiteral("1")); - QUrl url(QString(kApiUrl) + QString("/track.search")); + QUrl url(QString(kApiUrl) + QStringLiteral("/track.search")); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -107,24 +107,24 @@ void MusixmatchLyricsProvider::HandleSearchReply(QNetworkReply *reply, LyricsSea if (reply->error() != QNetworkReply::NoError) { if (reply->error() == 401 || reply->error() == 402) { - Error(QString("Error %1 (%2) using API, switching to URL based lookup.").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("Error %1 (%2) using API, switching to URL based lookup.").arg(reply->errorString()).arg(reply->error())); use_api_ = false; CreateLyricsRequest(search); return; } - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); EndSearch(search); return; } if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 401 || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 402) { - Error(QString("Received HTTP code %1 using API, switching to URL based lookup.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1 using API, switching to URL based lookup.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); use_api_ = false; CreateLyricsRequest(search); return; } - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); EndSearch(search); return; } @@ -136,61 +136,61 @@ void MusixmatchLyricsProvider::HandleSearchReply(QNetworkReply *reply, LyricsSea return; } - if (!json_obj.contains("message")) { - Error("Json reply is missing message object.", json_obj); + if (!json_obj.contains(QStringLiteral("message"))) { + Error(QStringLiteral("Json reply is missing message object."), json_obj); EndSearch(search); return; } - if (!json_obj["message"].isObject()) { - Error("Json reply message is not an object.", json_obj); + if (!json_obj[QStringLiteral("message")].isObject()) { + Error(QStringLiteral("Json reply message is not an object."), json_obj); EndSearch(search); return; } - QJsonObject obj_message = json_obj["message"].toObject(); + QJsonObject obj_message = json_obj[QStringLiteral("message")].toObject(); - if (!obj_message.contains("header")) { - Error("Json reply message object is missing header.", obj_message); + if (!obj_message.contains(QStringLiteral("header"))) { + Error(QStringLiteral("Json reply message object is missing header."), obj_message); EndSearch(search); return; } - if (!obj_message["header"].isObject()) { - Error("Json reply message header is not an object.", obj_message); + if (!obj_message[QStringLiteral("header")].isObject()) { + Error(QStringLiteral("Json reply message header is not an object."), obj_message); EndSearch(search); return; } - QJsonObject obj_header = obj_message["header"].toObject(); + QJsonObject obj_header = obj_message[QStringLiteral("header")].toObject(); - int status_code = obj_header["status_code"].toInt(); + int status_code = obj_header[QStringLiteral("status_code")].toInt(); if (status_code != 200) { - Error(QString("Received status code %1, switching to URL based lookup.").arg(status_code)); + Error(QStringLiteral("Received status code %1, switching to URL based lookup.").arg(status_code)); use_api_ = false; CreateLyricsRequest(search); return; } - if (!obj_message.contains("body")) { - Error("Json reply is missing body.", json_obj); + if (!obj_message.contains(QStringLiteral("body"))) { + Error(QStringLiteral("Json reply is missing body."), json_obj); EndSearch(search); return; } - if (!obj_message["body"].isObject()) { - Error("Json body is not an object.", json_obj); + if (!obj_message[QStringLiteral("body")].isObject()) { + Error(QStringLiteral("Json body is not an object."), json_obj); EndSearch(search); return; } - QJsonObject obj_body = obj_message["body"].toObject(); + QJsonObject obj_body = obj_message[QStringLiteral("body")].toObject(); - if (!obj_body.contains("track_list")) { - Error("Json response is missing body.", obj_body); + if (!obj_body.contains(QStringLiteral("track_list"))) { + Error(QStringLiteral("Json response is missing body."), obj_body); EndSearch(search); return; } - if (!obj_body["track_list"].isArray()) { - Error("Json hits is not an array.", obj_body); + if (!obj_body[QStringLiteral("track_list")].isArray()) { + Error(QStringLiteral("Json hits is not an array."), obj_body); EndSearch(search); return; } - QJsonArray array_tracklist = obj_body["track_list"].toArray(); + QJsonArray array_tracklist = obj_body[QStringLiteral("track_list")].toArray(); for (const QJsonValueRef value_track : array_tracklist) { if (!value_track.isObject()) { @@ -198,23 +198,23 @@ void MusixmatchLyricsProvider::HandleSearchReply(QNetworkReply *reply, LyricsSea } QJsonObject obj_track = value_track.toObject(); - if (!obj_track.contains("track") || !obj_track["track"].isObject()) { + if (!obj_track.contains(QStringLiteral("track")) || !obj_track[QStringLiteral("track")].isObject()) { continue; } - obj_track = obj_track["track"].toObject(); - if (!obj_track.contains("artist_name") || - !obj_track.contains("album_name") || - !obj_track.contains("track_name") || - !obj_track.contains("track_share_url")) { - Error("Missing one or more values in result object", obj_track); + obj_track = obj_track[QStringLiteral("track")].toObject(); + if (!obj_track.contains(QStringLiteral("artist_name")) || + !obj_track.contains(QStringLiteral("album_name")) || + !obj_track.contains(QStringLiteral("track_name")) || + !obj_track.contains(QStringLiteral("track_share_url"))) { + Error(QStringLiteral("Missing one or more values in result object"), obj_track); continue; } - QString artist_name = obj_track["artist_name"].toString(); - QString album_name = obj_track["album_name"].toString(); - QString track_name = obj_track["track_name"].toString(); - QUrl track_share_url(obj_track["track_share_url"].toString()); + QString artist_name = obj_track[QStringLiteral("artist_name")].toString(); + QString album_name = obj_track[QStringLiteral("album_name")].toString(); + QString track_name = obj_track[QStringLiteral("track_name")].toString(); + QUrl track_share_url(obj_track[QStringLiteral("track_share_url")].toString()); // Ignore results where both the artist, album and title don't match. if (use_api_ && @@ -252,7 +252,7 @@ bool MusixmatchLyricsProvider::CreateLyricsRequest(LyricsSearchContextPtr search return false; } - QUrl url(QString("https://www.musixmatch.com/lyrics/%1/%2").arg(artist_stripped, title_stripped)); + QUrl url(QStringLiteral("https://www.musixmatch.com/lyrics/%1/%2").arg(artist_stripped, title_stripped)); search->requests_lyrics_.append(url); return SendLyricsRequest(search, url); @@ -280,26 +280,26 @@ void MusixmatchLyricsProvider::HandleLyricsReply(QNetworkReply *reply, LyricsSea reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); EndSearch(search, url); return; } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); EndSearch(search, url); return; } QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error("Empty reply received from server."); + Error(QStringLiteral("Empty reply received from server.")); EndSearch(search, url); return; } QString content = data; - QString data_begin = ""; + QString data_begin = QStringLiteral(""); qint64 begin_idx = content.indexOf(data_begin); QString content_json; if (begin_idx > 0) { @@ -315,7 +315,7 @@ void MusixmatchLyricsProvider::HandleLyricsReply(QNetworkReply *reply, LyricsSea return; } - if (content_json.contains(QRegularExpression("<[^>]*>"))) { // Make sure it's not HTML code. + if (content_json.contains(QRegularExpression(QStringLiteral("<[^>]*>")))) { // Make sure it's not HTML code. EndSearch(search, url); return; } @@ -326,86 +326,86 @@ void MusixmatchLyricsProvider::HandleLyricsReply(QNetworkReply *reply, LyricsSea return; } - if (!obj_data.contains("props") || !obj_data["props"].isObject()) { - Error("Json reply is missing props.", obj_data); + if (!obj_data.contains(QStringLiteral("props")) || !obj_data[QStringLiteral("props")].isObject()) { + Error(QStringLiteral("Json reply is missing props."), obj_data); EndSearch(search, url); return; } - obj_data = obj_data["props"].toObject(); + obj_data = obj_data[QStringLiteral("props")].toObject(); - if (!obj_data.contains("pageProps") || !obj_data["pageProps"].isObject()) { - Error("Json props is missing pageProps.", obj_data); + if (!obj_data.contains(QStringLiteral("pageProps")) || !obj_data[QStringLiteral("pageProps")].isObject()) { + Error(QStringLiteral("Json props is missing pageProps."), obj_data); EndSearch(search, url); return; } - obj_data = obj_data["pageProps"].toObject(); + obj_data = obj_data[QStringLiteral("pageProps")].toObject(); - if (!obj_data.contains("data") || !obj_data["data"].isObject()) { - Error("Json pageProps is missing data.", obj_data); + if (!obj_data.contains(QStringLiteral("data")) || !obj_data[QStringLiteral("data")].isObject()) { + Error(QStringLiteral("Json pageProps is missing data."), obj_data); EndSearch(search, url); return; } - obj_data = obj_data["data"].toObject(); + obj_data = obj_data[QStringLiteral("data")].toObject(); - if (!obj_data.contains("trackInfo") || !obj_data["trackInfo"].isObject()) { - Error("Json data is missing trackInfo.", obj_data); + if (!obj_data.contains(QStringLiteral("trackInfo")) || !obj_data[QStringLiteral("trackInfo")].isObject()) { + Error(QStringLiteral("Json data is missing trackInfo."), obj_data); EndSearch(search, url); return; } - obj_data = obj_data["trackInfo"].toObject(); + obj_data = obj_data[QStringLiteral("trackInfo")].toObject(); - if (!obj_data.contains("data") || !obj_data["data"].isObject()) { - Error("Json trackInfo reply is missing data.", obj_data); + if (!obj_data.contains(QStringLiteral("data")) || !obj_data[QStringLiteral("data")].isObject()) { + Error(QStringLiteral("Json trackInfo reply is missing data."), obj_data); EndSearch(search, url); return; } - obj_data = obj_data["data"].toObject(); + obj_data = obj_data[QStringLiteral("data")].toObject(); - if (!obj_data.contains("track") || !obj_data["track"].isObject()) { - Error("Json data is missing track.", obj_data); + if (!obj_data.contains(QStringLiteral("track")) || !obj_data[QStringLiteral("track")].isObject()) { + Error(QStringLiteral("Json data is missing track."), obj_data); EndSearch(search, url); return; } - const QJsonObject obj_track = obj_data["track"].toObject(); + const QJsonObject obj_track = obj_data[QStringLiteral("track")].toObject(); - if (!obj_track.contains("hasLyrics") || !obj_track["hasLyrics"].isBool()) { - Error("Json track is missing hasLyrics.", obj_track); + if (!obj_track.contains(QStringLiteral("hasLyrics")) || !obj_track[QStringLiteral("hasLyrics")].isBool()) { + Error(QStringLiteral("Json track is missing hasLyrics."), obj_track); EndSearch(search, url); return; } - const bool has_lyrics = obj_track["hasLyrics"].toBool(); + const bool has_lyrics = obj_track[QStringLiteral("hasLyrics")].toBool(); if (!has_lyrics) { EndSearch(search, url); return; } LyricsSearchResult result; - if (obj_track.contains("artistName") && obj_track["artistName"].isString()) { - result.artist = obj_track["artistName"].toString(); + if (obj_track.contains(QStringLiteral("artistName")) && obj_track[QStringLiteral("artistName")].isString()) { + result.artist = obj_track[QStringLiteral("artistName")].toString(); } - if (obj_track.contains("albumName") && obj_track["albumName"].isString()) { - result.album = obj_track["albumName"].toString(); + if (obj_track.contains(QStringLiteral("albumName")) && obj_track[QStringLiteral("albumName")].isString()) { + result.album = obj_track[QStringLiteral("albumName")].toString(); } - if (obj_track.contains("name") && obj_track["name"].isString()) { - result.title = obj_track["name"].toString(); + if (obj_track.contains(QStringLiteral("name")) && obj_track[QStringLiteral("name")].isString()) { + result.title = obj_track[QStringLiteral("name")].toString(); } - if (!obj_data.contains("lyrics") || !obj_data["lyrics"].isObject()) { - Error("Json data is missing lyrics.", obj_data); + if (!obj_data.contains(QStringLiteral("lyrics")) || !obj_data[QStringLiteral("lyrics")].isObject()) { + Error(QStringLiteral("Json data is missing lyrics."), obj_data); EndSearch(search, url); return; } - QJsonObject obj_lyrics = obj_data["lyrics"].toObject(); + QJsonObject obj_lyrics = obj_data[QStringLiteral("lyrics")].toObject(); - if (!obj_lyrics.contains("body") || !obj_lyrics["body"].isString()) { - Error("Json lyrics reply is missing body.", obj_lyrics); + if (!obj_lyrics.contains(QStringLiteral("body")) || !obj_lyrics[QStringLiteral("body")].isString()) { + Error(QStringLiteral("Json lyrics reply is missing body."), obj_lyrics); EndSearch(search, url); return; } - result.lyrics = obj_lyrics["body"].toString(); + result.lyrics = obj_lyrics[QStringLiteral("body")].toString(); if (!result.lyrics.isEmpty()) { result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); diff --git a/src/lyrics/ovhlyricsprovider.cpp b/src/lyrics/ovhlyricsprovider.cpp index bc5925c7..6cde42d9 100644 --- a/src/lyrics/ovhlyricsprovider.cpp +++ b/src/lyrics/ovhlyricsprovider.cpp @@ -38,7 +38,7 @@ const char *OVHLyricsProvider::kUrlSearch = "https://api.lyrics.ovh/v1/"; -OVHLyricsProvider::OVHLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider("Lyrics.ovh", true, false, network, parent) {} +OVHLyricsProvider::OVHLyricsProvider(SharedPtr network, QObject *parent) : JsonLyricsProvider(QStringLiteral("Lyrics.ovh"), true, false, network, parent) {} OVHLyricsProvider::~OVHLyricsProvider() { @@ -79,20 +79,20 @@ void OVHLyricsProvider::HandleSearchReply(QNetworkReply *reply, const int id, co return; } - if (json_obj.contains("error")) { - Error(json_obj["error"].toString()); + if (json_obj.contains(QStringLiteral("error"))) { + Error(json_obj[QStringLiteral("error")].toString()); qLog(Debug) << "OVHLyrics: No lyrics for" << request.artist << request.title; emit SearchFinished(id); return; } - if (!json_obj.contains("lyrics")) { + if (!json_obj.contains(QStringLiteral("lyrics"))) { emit SearchFinished(id); return; } LyricsSearchResult result; - result.lyrics = json_obj["lyrics"].toString(); + result.lyrics = json_obj[QStringLiteral("lyrics")].toString(); if (result.lyrics.isEmpty()) { qLog(Debug) << "OVHLyrics: No lyrics for" << request.artist << request.title; diff --git a/src/lyrics/songlyricscomlyricsprovider.cpp b/src/lyrics/songlyricscomlyricsprovider.cpp index 2e53453e..b2f1e79a 100644 --- a/src/lyrics/songlyricscomlyricsprovider.cpp +++ b/src/lyrics/songlyricscomlyricsprovider.cpp @@ -33,7 +33,7 @@ const char SongLyricsComLyricsProvider::kEndTag[] = "<\\/p>"; const char SongLyricsComLyricsProvider::kLyricsStart[] = "

]+>"; SongLyricsComLyricsProvider::SongLyricsComLyricsProvider(SharedPtr network, QObject *parent) - : HtmlLyricsProvider("songlyrics.com", true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} + : HtmlLyricsProvider(QStringLiteral("songlyrics.com"), true, kStartTag, kEndTag, kLyricsStart, false, network, parent) {} QUrl SongLyricsComLyricsProvider::Url(const LyricsSearchRequest &request) { @@ -45,11 +45,11 @@ QString SongLyricsComLyricsProvider::StringFixup(QString text) { return text.replace('/', '-') .replace('\'', '-') - .remove(QRegularExpression("[^\\w0-9\\- ]")) - .replace(QRegularExpression(" {2,}"), " ") + .remove(QRegularExpression(QStringLiteral("[^\\w0-9\\- ]"))) + .replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" ")) .simplified() .replace(' ', '-') - .replace(QRegularExpression("(-)\\1+"), "-") + .replace(QRegularExpression(QStringLiteral("(-)\\1+")), QStringLiteral("-")) .toLower(); } diff --git a/src/main.cpp b/src/main.cpp index aebc9c65..82f9f406 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -129,11 +129,11 @@ int main(int argc, char *argv[]) { QCoreApplication::setApplicationName("Strawberry"); QCoreApplication::setOrganizationName("Strawberry"); #else - QCoreApplication::setApplicationName("strawberry"); - QCoreApplication::setOrganizationName("strawberry"); + QCoreApplication::setApplicationName(QStringLiteral("strawberry")); + QCoreApplication::setOrganizationName(QStringLiteral("strawberry")); #endif - QCoreApplication::setApplicationVersion(STRAWBERRY_VERSION_DISPLAY); - QCoreApplication::setOrganizationDomain("strawberrymusicplayer.org"); + QCoreApplication::setApplicationVersion(QStringLiteral(STRAWBERRY_VERSION_DISPLAY)); + QCoreApplication::setOrganizationDomain(QStringLiteral("strawberrymusicplayer.org")); QCoreApplication::setQuitLockEnabled(false); @@ -180,7 +180,7 @@ int main(int argc, char *argv[]) { // Output the version, so when people attach log output to bug reports they don't have to tell us which version they're using. qLog(Info) << "Strawberry" << STRAWBERRY_VERSION_DISPLAY << "Qt" << QLibraryInfo::version().toString(); - qLog(Info) << QString("%1 %2 - (%3 %4) [%5]").arg(QSysInfo::prettyProductName(), QSysInfo::productVersion(), QSysInfo::kernelType(), QSysInfo::kernelVersion(), QSysInfo::currentCpuArchitecture()); + qLog(Info) << QStringLiteral("%1 %2 - (%3 %4) [%5]").arg(QSysInfo::prettyProductName(), QSysInfo::productVersion(), QSysInfo::kernelType(), QSysInfo::kernelVersion(), QSysInfo::currentCpuArchitecture()); // Seed the random number generators. time_t t = time(nullptr); @@ -190,8 +190,8 @@ int main(int argc, char *argv[]) { Utilities::IncreaseFDLimit(); #endif - QGuiApplication::setApplicationDisplayName("Strawberry Music Player"); - QGuiApplication::setDesktopFileName("org.strawberrymusicplayer.strawberry"); + QGuiApplication::setApplicationDisplayName(QStringLiteral("Strawberry Music Player")); + QGuiApplication::setDesktopFileName(QStringLiteral("org.strawberrymusicplayer.strawberry")); QGuiApplication::setQuitOnLastWindowClosed(false); QApplication a(argc, argv); @@ -206,7 +206,7 @@ int main(int argc, char *argv[]) { return 0; } - QGuiApplication::setWindowIcon(IconLoader::Load("strawberry")); + QGuiApplication::setWindowIcon(IconLoader::Load(QStringLiteral("strawberry"))); #if defined(USE_BUNDLE) qLog(Debug) << "Looking for resources in" << QCoreApplication::libraryPaths(); @@ -220,7 +220,7 @@ int main(int argc, char *argv[]) { s.beginGroup(AppearanceSettingsPage::kSettingsGroup); QString style = s.value(AppearanceSettingsPage::kStyle).toString(); if (style.isEmpty()) { - style="default"; + style=QStringLiteral("default"); s.setValue(AppearanceSettingsPage::kStyle, style); } s.endGroup(); diff --git a/src/moodbar/moodbarpipeline.cpp b/src/moodbar/moodbarpipeline.cpp index dc8de97d..d73330a4 100644 --- a/src/moodbar/moodbarpipeline.cpp +++ b/src/moodbar/moodbarpipeline.cpp @@ -90,10 +90,10 @@ void MoodbarPipeline::Start() { pipeline_ = gst_pipeline_new("moodbar-pipeline"); - GstElement *decodebin = CreateElement("uridecodebin"); - convert_element_ = CreateElement("audioconvert"); - GstElement *spectrum = CreateElement("fastspectrum"); - GstElement *fakesink = CreateElement("fakesink"); + GstElement *decodebin = CreateElement(QStringLiteral("uridecodebin")); + convert_element_ = CreateElement(QStringLiteral("audioconvert")); + GstElement *spectrum = CreateElement(QStringLiteral("fastspectrum")); + GstElement *fakesink = CreateElement(QStringLiteral("fakesink")); if (!decodebin || !convert_element_ || !spectrum || !fakesink) { gst_object_unref(GST_OBJECT(pipeline_)); diff --git a/src/musicbrainz/acoustidclient.cpp b/src/musicbrainz/acoustidclient.cpp index 70f9526e..c83ecf0f 100644 --- a/src/musicbrainz/acoustidclient.cpp +++ b/src/musicbrainz/acoustidclient.cpp @@ -129,10 +129,10 @@ void AcoustidClient::RequestFinished(QNetworkReply *reply, const int request_id) if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError) { - qLog(Error) << QString("Acoustid: %1 (%2)").arg(reply->errorString()).arg(reply->error()); + qLog(Error) << QStringLiteral("Acoustid: %1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - qLog(Error) << QString("Acoustid: Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + qLog(Error) << QStringLiteral("Acoustid: Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } emit Finished(request_id, QStringList()); return; @@ -148,7 +148,7 @@ void AcoustidClient::RequestFinished(QNetworkReply *reply, const int request_id) QJsonObject json_object = json_document.object(); - QString status = json_object["status"].toString(); + QString status = json_object[QStringLiteral("status")].toString(); if (status != "ok") { emit Finished(request_id, QStringList(), status); return; @@ -159,19 +159,19 @@ void AcoustidClient::RequestFinished(QNetworkReply *reply, const int request_id) // -then sort results by number of sources (the results are originally // unsorted but results with more sources are likely to be more accurate) // -keep only the ids, as sources where useful only to sort the results - QJsonArray json_results = json_object["results"].toArray(); + QJsonArray json_results = json_object[QStringLiteral("results")].toArray(); // List of pairs QList id_source_list; for (const QJsonValueRef v : json_results) { QJsonObject r = v.toObject(); - if (!r["recordings"].isUndefined()) { - QJsonArray json_recordings = r["recordings"].toArray(); + if (!r[QStringLiteral("recordings")].isUndefined()) { + QJsonArray json_recordings = r[QStringLiteral("recordings")].toArray(); for (const QJsonValueRef recording : json_recordings) { QJsonObject o = recording.toObject(); - if (!o["id"].isUndefined()) { - id_source_list << IdSource(o["id"].toString(), o["sources"].toInt()); + if (!o[QStringLiteral("id")].isUndefined()) { + id_source_list << IdSource(o[QStringLiteral("id")].toString(), o[QStringLiteral("sources")].toInt()); } } } diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 2bf7f0da..e6250296 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -84,7 +84,7 @@ QByteArray MusicBrainzClient::GetReplyData(QNetworkReply *reply, QString &error) else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "error" - then use that instead. @@ -93,16 +93,16 @@ QByteArray MusicBrainzClient::GetReplyData(QNetworkReply *reply, QString &error) QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error")) { - error = json_obj["error"].toString(); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error"))) { + error = json_obj[QStringLiteral("error")].toString(); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } Error(error, data); } diff --git a/src/musicbrainz/musicbrainzclient.h b/src/musicbrainz/musicbrainzclient.h index d576d578..b37f6589 100644 --- a/src/musicbrainz/musicbrainzclient.h +++ b/src/musicbrainz/musicbrainzclient.h @@ -152,16 +152,16 @@ class MusicBrainzClient : public QObject { } void SetStatusFromString(const QString &s) { - if (s.compare("Official", Qt::CaseInsensitive) == 0) { + if (s.compare(QLatin1String("Official"), Qt::CaseInsensitive) == 0) { status_ = Status::Official; } - else if (s.compare("Promotion", Qt::CaseInsensitive) == 0) { + else if (s.compare(QLatin1String("Promotion"), Qt::CaseInsensitive) == 0) { status_ = Status::Promotional; } - else if (s.compare("Bootleg", Qt::CaseInsensitive) == 0) { + else if (s.compare(QLatin1String("Bootleg"), Qt::CaseInsensitive) == 0) { status_ = Status::Bootleg; } - else if (s.compare("Pseudo-release", Qt::CaseInsensitive) == 0) { + else if (s.compare(QLatin1String("Pseudo-release"), Qt::CaseInsensitive) == 0) { status_ = Status::PseudoRelease; } else { diff --git a/src/organize/organize.cpp b/src/organize/organize.cpp index 73752b1f..5c88ccb8 100644 --- a/src/organize/organize.cpp +++ b/src/organize/organize.cpp @@ -393,6 +393,6 @@ void Organize::timerEvent(QTimerEvent *e) { void Organize::LogLine(const QString &message) { QString date(QDateTime::currentDateTime().toString(Qt::TextDate)); - log_.append(QString("%1: %2").arg(date, message)); + log_.append(QStringLiteral("%1: %2").arg(date, message)); } diff --git a/src/organize/organizedialog.cpp b/src/organize/organizedialog.cpp index 07bb61f4..a02caeb8 100644 --- a/src/organize/organizedialog.cpp +++ b/src/organize/organizedialog.cpp @@ -91,35 +91,35 @@ OrganizeDialog::OrganizeDialog(SharedPtr task_manager, SharedPtrbutton_box->addButton("Save settings", QDialogButtonBox::ApplyRole); + QPushButton *button_save = ui_->button_box->addButton(QStringLiteral("Save settings"), QDialogButtonBox::ApplyRole); QObject::connect(button_save, &QPushButton::clicked, this, &OrganizeDialog::SaveSettings); - button_save->setIcon(IconLoader::Load("document-save")); - ui_->button_box->button(QDialogButtonBox::RestoreDefaults)->setIcon(IconLoader::Load("edit-undo")); + button_save->setIcon(IconLoader::Load(QStringLiteral("document-save"))); + ui_->button_box->button(QDialogButtonBox::RestoreDefaults)->setIcon(IconLoader::Load(QStringLiteral("edit-undo"))); QObject::connect(ui_->button_box->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, &OrganizeDialog::RestoreDefaults); - ui_->aftercopying->setItemIcon(1, IconLoader::Load("edit-delete")); + ui_->aftercopying->setItemIcon(1, IconLoader::Load(QStringLiteral("edit-delete"))); // Valid tags QMap tags; - tags[tr("Title")] = "title"; - tags[tr("Album")] = "album"; - tags[tr("Artist")] = "artist"; - tags[tr("Artist's initial")] = "artistinitial"; - tags[tr("Album artist")] = "albumartist"; - tags[tr("Composer")] = "composer"; - tags[tr("Performer")] = "performer"; - tags[tr("Grouping")] = "grouping"; - tags[tr("Track")] = "track"; - tags[tr("Disc")] = "disc"; - tags[tr("Year")] = "year"; - tags[tr("Original year")] = "originalyear"; - tags[tr("Genre")] = "genre"; - tags[tr("Comment")] = "comment"; - tags[tr("Length")] = "length"; - tags[tr("Bitrate", "Refers to bitrate in file organize dialog.")] = "bitrate"; - tags[tr("Sample rate")] = "samplerate"; - tags[tr("Bit depth")] = "bitdepth"; - tags[tr("File extension")] = "extension"; + tags[tr("Title")] = QStringLiteral("title"); + tags[tr("Album")] = QStringLiteral("album"); + tags[tr("Artist")] = QStringLiteral("artist"); + tags[tr("Artist's initial")] = QStringLiteral("artistinitial"); + tags[tr("Album artist")] = QStringLiteral("albumartist"); + tags[tr("Composer")] = QStringLiteral("composer"); + tags[tr("Performer")] = QStringLiteral("performer"); + tags[tr("Grouping")] = QStringLiteral("grouping"); + tags[tr("Track")] = QStringLiteral("track"); + tags[tr("Disc")] = QStringLiteral("disc"); + tags[tr("Year")] = QStringLiteral("year"); + tags[tr("Original year")] = QStringLiteral("originalyear"); + tags[tr("Genre")] = QStringLiteral("genre"); + tags[tr("Comment")] = QStringLiteral("comment"); + tags[tr("Length")] = QStringLiteral("length"); + tags[tr("Bitrate", "Refers to bitrate in file organize dialog.")] = QStringLiteral("bitrate"); + tags[tr("Sample rate")] = QStringLiteral("samplerate"); + tags[tr("Bit depth")] = QStringLiteral("bitdepth"); + tags[tr("File extension")] = QStringLiteral("extension"); // Naming scheme input field new OrganizeFormat::SyntaxHighlighter(ui_->naming); @@ -530,7 +530,7 @@ void OrganizeDialog::UpdatePreviews() { if (has_local_destination) { for (const Organize::NewSongInfo &song_info : new_songs_info_) { QString filename = storage->LocalPath() + "/" + song_info.new_filename_; - QListWidgetItem *item = new QListWidgetItem(song_info.unique_filename_ ? IconLoader::Load("dialog-ok-apply") : IconLoader::Load("dialog-warning"), QDir::toNativeSeparators(filename), ui_->preview); + QListWidgetItem *item = new QListWidgetItem(song_info.unique_filename_ ? IconLoader::Load(QStringLiteral("dialog-ok-apply")) : IconLoader::Load(QStringLiteral("dialog-warning")), QDir::toNativeSeparators(filename), ui_->preview); ui_->preview->addItem(item); if (!song_info.unique_filename_) { ok = false; diff --git a/src/organize/organizeformat.cpp b/src/organize/organizeformat.cpp index 2c3a3b6c..76837ae6 100644 --- a/src/organize/organizeformat.cpp +++ b/src/organize/organizeformat.cpp @@ -46,29 +46,29 @@ constexpr char OrganizeFormat::kBlockPattern[] = "\\{([^{}]+)\\}"; constexpr char OrganizeFormat::kTagPattern[] = "\\%([a-zA-Z]*)"; -const QStringList OrganizeFormat::kKnownTags = QStringList() << "title" - << "album" - << "artist" - << "artistinitial" - << "albumartist" - << "composer" - << "track" - << "disc" - << "year" - << "originalyear" - << "genre" - << "comment" - << "length" - << "bitrate" - << "samplerate" - << "bitdepth" - << "extension" - << "performer" - << "grouping" - << "lyrics"; +const QStringList OrganizeFormat::kKnownTags = QStringList() << QStringLiteral("title") + << QStringLiteral("album") + << QStringLiteral("artist") + << QStringLiteral("artistinitial") + << QStringLiteral("albumartist") + << QStringLiteral("composer") + << QStringLiteral("track") + << QStringLiteral("disc") + << QStringLiteral("year") + << QStringLiteral("originalyear") + << QStringLiteral("genre") + << QStringLiteral("comment") + << QStringLiteral("length") + << QStringLiteral("bitrate") + << QStringLiteral("samplerate") + << QStringLiteral("bitdepth") + << QStringLiteral("extension") + << QStringLiteral("performer") + << QStringLiteral("grouping") + << QStringLiteral("lyrics"); -const QStringList OrganizeFormat::kUniqueTags = QStringList() << "title" - << "track"; +const QStringList OrganizeFormat::kUniqueTags = QStringList() << QStringLiteral("title") + << QStringLiteral("track"); const QRgb OrganizeFormat::SyntaxHighlighter::kValidTagColorLight = qRgb(64, 64, 255); const QRgb OrganizeFormat::SyntaxHighlighter::kInvalidTagColorLight = qRgb(255, 64, 64); @@ -175,7 +175,7 @@ OrganizeFormat::GetFilenameForSongResult OrganizeFormat::GetFilenameForSong(cons filepath.append(info.completeBaseName()); // Fix any parts of the path that start with dots. - QStringList parts_old = filepath.split("/"); + QStringList parts_old = filepath.split(QStringLiteral("/")); QStringList parts_new; for (int i = 0; i < parts_old.count(); ++i) { QString part = parts_old[i]; @@ -188,12 +188,12 @@ OrganizeFormat::GetFilenameForSongResult OrganizeFormat::GetFilenameForSong(cons part = part.trimmed(); parts_new.append(part); } - filepath = parts_new.join("/"); + filepath = parts_new.join(QStringLiteral("/")); - if (replace_spaces_) filepath.replace(QRegularExpression("\\s"), "_"); + if (replace_spaces_) filepath.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("_")); if (!extension.isEmpty()) { - filepath.append(QString(".%1").arg(extension)); + filepath.append(QStringLiteral(".%1").arg(extension)); } return GetFilenameForSongResult(filepath, unique_filename); @@ -211,7 +211,7 @@ QString OrganizeFormat::ParseBlock(QString block, const Song &song, bool *have_t // Recursively parse the block bool empty = false; QString value = ParseBlock(re_match.captured(1), song, have_tagdata, &empty); - if (empty) value = ""; + if (empty) value = QLatin1String(""); // Replace the block's value block.replace(pos, re_match.capturedLength(), value); @@ -306,15 +306,15 @@ QString OrganizeFormat::TagValue(const QString &tag, const Song &song) const { else if (tag == "artistinitial") { value = song.effective_albumartist().trimmed(); if (!value.isEmpty()) { - value.replace(QRegularExpression("^the\\s+", QRegularExpression::CaseInsensitiveOption), ""); + value.replace(QRegularExpression(QStringLiteral("^the\\s+"), QRegularExpression::CaseInsensitiveOption), QLatin1String("")); value = value[0].toUpper(); } } else if (tag == "albumartist") { - value = song.is_compilation() ? "Various Artists" : song.effective_albumartist(); + value = song.is_compilation() ? QStringLiteral("Various Artists") : song.effective_albumartist(); } - if (value == "0" || value == "-1") value = ""; + if (value == "0" || value == "-1") value = QLatin1String(""); // Prepend a 0 to single-digit track numbers if (tag == "track" && value.length() == 1) value.prepend('0'); diff --git a/src/osd/osdbase.cpp b/src/osd/osdbase.cpp index fbfbd542..7f571938 100644 --- a/src/osd/osdbase.cpp +++ b/src/osd/osdbase.cpp @@ -146,7 +146,7 @@ void OSDBase::ShowPlaying(const Song &song, const QUrl &cover_url, const QImage else { summary = song.PrettyTitle(); if (!song.artist().isEmpty()) { - summary = QString("%1 - %2").arg(song.artist(), summary); + summary = QStringLiteral("%1 - %2").arg(song.artist(), summary); } if (!song.album().isEmpty()) { message_parts << song.album(); @@ -168,14 +168,14 @@ void OSDBase::ShowPlaying(const Song &song, const QUrl &cover_url, const QImage #endif } - QString message = message_parts.join(", "); + QString message = message_parts.join(QStringLiteral(", ")); if (html_escaped) message = message.toHtmlEscaped(); if (show_art_) { - ShowMessage(summary, message, "notification-audio-play", image); + ShowMessage(summary, message, QStringLiteral("notification-audio-play"), image); } else { - ShowMessage(summary, message, "notification-audio-play", QImage()); + ShowMessage(summary, message, QStringLiteral("notification-audio-play"), QImage()); } // Reload the saved settings if they were changed for preview @@ -378,7 +378,7 @@ QString OSDBase::ReplaceMessage(const MessageType type, const QString &message, #endif bool html_escaped = false; - QString newline = ""; + QString newline = QLatin1String(""); // We need different strings depending on notification type switch (behaviour_) { @@ -391,12 +391,12 @@ QString OSDBase::ReplaceMessage(const MessageType type, const QString &message, switch (type) { case MessageType::Summary:{ html_escaped = false; - newline = ""; + newline = QLatin1String(""); break; } case MessageType::Message: { html_escaped = true; - newline = "
"; + newline = QStringLiteral("
"); break; } } @@ -411,12 +411,12 @@ QString OSDBase::ReplaceMessage(const MessageType type, const QString &message, case Behaviour::TrayPopup: qLog(Debug) << "New line not supported by this notification type."; html_escaped = false; - newline = ""; + newline = QLatin1String(""); break; case Behaviour::Disabled: // When notifications are disabled, we force the PrettyOSD case Behaviour::Pretty: html_escaped = true; - newline = "
"; + newline = QStringLiteral("
"); break; } diff --git a/src/osd/osdbase.h b/src/osd/osdbase.h index 7f4f5c9c..31d67c8a 100644 --- a/src/osd/osdbase.h +++ b/src/osd/osdbase.h @@ -87,7 +87,7 @@ class OSDBase : public QObject { Message }; void ShowPlaying(const Song &song, const QUrl &cover_url, const QImage &image, const bool preview = false); - void ShowMessage(const QString &summary, const QString &message = QString(), const QString &icon = "strawberry", const QImage &image = QImage()); + void ShowMessage(const QString &summary, const QString &message = QString(), const QString &icon = QStringLiteral("strawberry"), const QImage &image = QImage()); QString ReplaceMessage(const MessageType type, const QString &message, const Song &song); virtual void ShowMessageNative(const QString &summary, const QString &message, const QString &icon = QString(), const QImage &image = QImage()); diff --git a/src/osd/osddbus.cpp b/src/osd/osddbus.cpp index 8dda254c..de125875 100644 --- a/src/osd/osddbus.cpp +++ b/src/osd/osddbus.cpp @@ -145,21 +145,21 @@ void OSDDBus::ShowMessageNative(const QString &summary, const QString &message, QVariantMap hints; QString summary_stripped = summary; - summary_stripped = summary_stripped.remove(QRegularExpression("[&\"<>]")).simplified(); + summary_stripped = summary_stripped.remove(QRegularExpression(QStringLiteral("[&\"<>]"))).simplified(); if (!image.isNull()) { if (version_ >= QVersionNumber(1, 2)) { - hints["image-data"] = QVariant(image); + hints[QStringLiteral("image-data")] = QVariant(image); } else if (version_ >= QVersionNumber(1, 1)) { - hints["image_data"] = QVariant(image); + hints[QStringLiteral("image_data")] = QVariant(image); } else { - hints["icon_data"] = QVariant(image); + hints[QStringLiteral("icon_data")] = QVariant(image); } } - hints["transient"] = QVariant(true); + hints[QStringLiteral("transient")] = QVariant(true); quint64 id = 0; if (last_notification_time_.secsTo(QDateTime::currentDateTime()) * 1000 < timeout_msec()) { diff --git a/src/osd/osdpretty.cpp b/src/osd/osdpretty.cpp index ffc1cf81..8e8b894c 100644 --- a/src/osd/osdpretty.cpp +++ b/src/osd/osdpretty.cpp @@ -133,14 +133,14 @@ OSDPretty::OSDPretty(Mode mode, QWidget *parent) QObject::connect(fader_, &QTimeLine::finished, this, &OSDPretty::FaderFinished); // Load the show edges and corners - QImage shadow_edge(":/pictures/osd_shadow_edge.png"); - QImage shadow_corner(":/pictures/osd_shadow_corner.png"); + QImage shadow_edge(QStringLiteral(":/pictures/osd_shadow_edge.png")); + QImage shadow_corner(QStringLiteral(":/pictures/osd_shadow_corner.png")); for (int i = 0; i < 4; ++i) { QTransform rotation = QTransform().rotate(90 * i); shadow_edge_[i] = QPixmap::fromImage(shadow_edge.transformed(rotation)); shadow_corner_[i] = QPixmap::fromImage(shadow_corner.transformed(rotation)); } - background_ = QPixmap(":/pictures/osd_background.png"); + background_ = QPixmap(QStringLiteral(":/pictures/osd_background.png")); // Set the margins to allow for the drop shadow QBoxLayout *l = qobject_cast(layout()); diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index f315eb22..45aba524 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -772,7 +772,7 @@ Qt::ItemFlags Playlist::flags(const QModelIndex &idx) const { QStringList Playlist::mimeTypes() const { - return QStringList() << "text/uri-list" << kRowsMimetype; + return QStringList() << QStringLiteral("text/uri-list") << kRowsMimetype; } @@ -1411,7 +1411,7 @@ QString Playlist::column_name(Column column) { default: qLog(Error) << "No such column" << column;; } - return ""; + return QLatin1String(""); } @@ -1424,11 +1424,11 @@ QString Playlist::abbreviated_column_name(const Column column) { case Column_PlayCount: case Column_SkipCount: case Column_Track: - return QString("%1#").arg(column_name[0]); + return QStringLiteral("%1#").arg(column_name[0]); default: return column_name; } - return ""; + return QLatin1String(""); } diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index 3ced8070..5ecd12ea 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -109,14 +109,14 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(const GetPlaylistsFl QStringList condition_list; if (flags & GetPlaylistsFlags::GetPlaylists_OpenInUi) { - condition_list << "ui_order != -1"; + condition_list << QStringLiteral("ui_order != -1"); } if (flags & GetPlaylistsFlags::GetPlaylists_Favorite) { - condition_list << "is_favorite != 0"; + condition_list << QStringLiteral("is_favorite != 0"); } QString condition; if (!condition_list.isEmpty()) { - condition = " WHERE " + condition_list.join(" OR "); + condition = " WHERE " + condition_list.join(QStringLiteral(" OR ")); } SqlQuery q(db); @@ -150,9 +150,9 @@ PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(const int id) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists WHERE ROWID=:id"); + q.prepare(QStringLiteral("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists WHERE ROWID=:id")); - q.BindValue(":id", id); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return Playlist(); @@ -184,12 +184,12 @@ PlaylistItemPtrList PlaylistBackend::GetPlaylistItems(const int playlist) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + ", p.ROWID, " + Song::JoinSpec("p") + ", p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist"; + QString query = "SELECT songs.ROWID, " + Song::JoinSpec(QStringLiteral("songs")) + ", p.ROWID, " + Song::JoinSpec(QStringLiteral("p")) + ", p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist"; SqlQuery q(db); // Forward iterations only may be faster q.setForwardOnly(true); q.prepare(query); - q.BindValue(":playlist", playlist); + q.BindValue(QStringLiteral(":playlist"), playlist); if (!q.Exec()) { db_->ReportErrors(q); return PlaylistItemPtrList(); @@ -219,12 +219,12 @@ SongList PlaylistBackend::GetPlaylistSongs(const int playlist) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + ", p.ROWID, " + Song::JoinSpec("p") + ", p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist"; + QString query = "SELECT songs.ROWID, " + Song::JoinSpec(QStringLiteral("songs")) + ", p.ROWID, " + Song::JoinSpec(QStringLiteral("p")) + ", p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist"; SqlQuery q(db); // Forward iterations only may be faster q.setForwardOnly(true); q.prepare(query); - q.BindValue(":playlist", playlist); + q.BindValue(QStringLiteral(":playlist"), playlist); if (!q.Exec()) { db_->ReportErrors(q); return SongList(); @@ -337,8 +337,8 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item // Clear the existing items in the playlist { SqlQuery q(db); - q.prepare("DELETE FROM playlist_items WHERE playlist = :playlist"); - q.BindValue(":playlist", playlist); + q.prepare(QStringLiteral("DELETE FROM playlist_items WHERE playlist = :playlist")); + q.BindValue(QStringLiteral(":playlist"), playlist); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -349,7 +349,7 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item for (PlaylistItemPtr item : items) { // clazy:exclude=range-loop-reference SqlQuery q(db); q.prepare("INSERT INTO playlist_items (playlist, type, collection_id, " + Song::kColumnSpec + ") VALUES (:playlist, :type, :collection_id, " + Song::kBindSpec + ")"); - q.BindValue(":playlist", playlist); + q.BindValue(QStringLiteral(":playlist"), playlist); item->BindToQuery(&q); if (!q.Exec()) { @@ -361,19 +361,19 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item // Update the last played track number { SqlQuery q(db); - q.prepare("UPDATE playlists SET last_played=:last_played, dynamic_playlist_type=:dynamic_type, dynamic_playlist_data=:dynamic_data, dynamic_playlist_backend=:dynamic_backend WHERE ROWID=:playlist"); - q.BindValue(":last_played", last_played); + q.prepare(QStringLiteral("UPDATE playlists SET last_played=:last_played, dynamic_playlist_type=:dynamic_type, dynamic_playlist_data=:dynamic_data, dynamic_playlist_backend=:dynamic_backend WHERE ROWID=:playlist")); + q.BindValue(QStringLiteral(":last_played"), last_played); if (dynamic) { - q.BindValue(":dynamic_type", static_cast(dynamic->type())); - q.BindValue(":dynamic_data", dynamic->Save()); - q.BindValue(":dynamic_backend", dynamic->collection()->songs_table()); + q.BindValue(QStringLiteral(":dynamic_type"), static_cast(dynamic->type())); + q.BindValue(QStringLiteral(":dynamic_data"), dynamic->Save()); + q.BindValue(QStringLiteral(":dynamic_backend"), dynamic->collection()->songs_table()); } else { - q.BindValue(":dynamic_type", 0); - q.BindValue(":dynamic_data", QByteArray()); - q.BindValue(":dynamic_backend", QString()); + q.BindValue(QStringLiteral(":dynamic_type"), 0); + q.BindValue(QStringLiteral(":dynamic_data"), QByteArray()); + q.BindValue(QStringLiteral(":dynamic_backend"), QString()); } - q.BindValue(":playlist", playlist); + q.BindValue(QStringLiteral(":playlist"), playlist); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -390,9 +390,9 @@ int PlaylistBackend::CreatePlaylist(const QString &name, const QString &special_ QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("INSERT INTO playlists (name, special_type) VALUES (:name, :special_type)"); - q.BindValue(":name", name); - q.BindValue(":special_type", special_type); + q.prepare(QStringLiteral("INSERT INTO playlists (name, special_type) VALUES (:name, :special_type)")); + q.BindValue(QStringLiteral(":name"), name); + q.BindValue(QStringLiteral(":special_type"), special_type); if (!q.Exec()) { db_->ReportErrors(q); return -1; @@ -411,8 +411,8 @@ void PlaylistBackend::RemovePlaylist(int id) { { SqlQuery q(db); - q.prepare("DELETE FROM playlists WHERE ROWID=:id"); - q.BindValue(":id", id); + q.prepare(QStringLiteral("DELETE FROM playlists WHERE ROWID=:id")); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -421,8 +421,8 @@ void PlaylistBackend::RemovePlaylist(int id) { { SqlQuery q(db); - q.prepare("DELETE FROM playlist_items WHERE playlist=:id"); - q.BindValue(":id", id); + q.prepare(QStringLiteral("DELETE FROM playlist_items WHERE playlist=:id")); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -438,9 +438,9 @@ void PlaylistBackend::RenamePlaylist(const int id, const QString &new_name) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("UPDATE playlists SET name=:name WHERE ROWID=:id"); - q.BindValue(":name", new_name); - q.BindValue(":id", id); + q.prepare(QStringLiteral("UPDATE playlists SET name=:name WHERE ROWID=:id")); + q.BindValue(QStringLiteral(":name"), new_name); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); @@ -453,9 +453,9 @@ void PlaylistBackend::FavoritePlaylist(const int id, const bool is_favorite) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id"); - q.BindValue(":is_favorite", is_favorite ? 1 : 0); - q.BindValue(":id", id); + q.prepare(QStringLiteral("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id")); + q.BindValue(QStringLiteral(":is_favorite"), is_favorite ? 1 : 0); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); @@ -470,16 +470,16 @@ void PlaylistBackend::SetPlaylistOrder(const QList &ids) { ScopedTransaction transaction(&db); SqlQuery q(db); - q.prepare("UPDATE playlists SET ui_order=-1"); + q.prepare(QStringLiteral("UPDATE playlists SET ui_order=-1")); if (!q.Exec()) { db_->ReportErrors(q); return; } - q.prepare("UPDATE playlists SET ui_order=:index WHERE ROWID=:id"); + q.prepare(QStringLiteral("UPDATE playlists SET ui_order=:index WHERE ROWID=:id")); for (int i = 0; i < ids.count(); ++i) { - q.BindValue(":index", i); - q.BindValue(":id", ids[i]); + q.BindValue(QStringLiteral(":index"), i); + q.BindValue(QStringLiteral(":id"), ids[i]); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -495,12 +495,12 @@ void PlaylistBackend::SetPlaylistUiPath(const int id, const QString &path) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("UPDATE playlists SET ui_path=:path WHERE ROWID=:id"); + q.prepare(QStringLiteral("UPDATE playlists SET ui_path=:path WHERE ROWID=:id")); ScopedTransaction transaction(&db); - q.BindValue(":path", path); - q.BindValue(":id", id); + q.BindValue(QStringLiteral(":path"), path); + q.BindValue(QStringLiteral(":id"), id); if (!q.Exec()) { db_->ReportErrors(q); return; diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index e7b4cf88..8eb217ac 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -93,7 +93,7 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) no_matches_label_->setPalette(no_matches_palette); // Remove QFrame border - ui_->toolbar->setStyleSheet("QFrame { border: 0px; }"); + ui_->toolbar->setStyleSheet(QStringLiteral("QFrame { border: 0px; }")); // Make it bold QFont no_matches_font = no_matches_label_->font(); @@ -123,35 +123,35 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) QObject::connect(ui_->playlist, &PlaylistView::FocusOnFilterSignal, this, &PlaylistContainer::FocusOnFilter); ui_->search_field->installEventFilter(this); - QString available_fields = PlaylistFilter().column_names().keys().join(", "); + QString available_fields = PlaylistFilter().column_names().keys().join(QStringLiteral(", ")); ui_->search_field->setToolTip( - QString("

") + + QStringLiteral("

") + tr("Prefix a search term with a field name to limit the search to that field, e.g.:") + - QString(" ") + - QString("") + + QStringLiteral(" ") + + QStringLiteral("") + tr("artist") + - QString(":Strawbs ") + - tr("searches the playlist for all artists that contain the word %1. ").arg("Strawbs") + - QString("

") + + QStringLiteral(":Strawbs ") + + tr("searches the playlist for all artists that contain the word %1. ").arg(QStringLiteral("Strawbs")) + + QStringLiteral("

") + tr("Search terms for numerical fields can be prefixed with %1 or %2 to refine the search, e.g.: ") .arg(" =, !=, <, >, <=", ">=") + - QString("") + + QStringLiteral("") + tr("rating") + - QString("") + - QString(":>=") + - QString("4") + - QString("

") + + QStringLiteral("") + + QStringLiteral(":>=") + + QStringLiteral("4") + + QStringLiteral("

") + tr("Multiple search terms can also be combined with \"%1\" (default) and \"%2\", as well as grouped with parentheses. ") .arg("AND", "OR") + - QString("

") + + QStringLiteral("

") + tr("Available fields") + - QString(": ") + QString("") + + QStringLiteral(": ") + QStringLiteral("") + available_fields + - QString(".") + - QString("

") + QStringLiteral(".") + + QStringLiteral("

") ); @@ -254,9 +254,9 @@ void PlaylistContainer::SetViewModel(Playlist *playlist, const int scroll_positi delete redo_; undo_ = playlist->undo_stack()->createUndoAction(this, tr("Undo")); redo_ = playlist->undo_stack()->createRedoAction(this, tr("Redo")); - undo_->setIcon(IconLoader::Load("edit-undo")); + undo_->setIcon(IconLoader::Load(QStringLiteral("edit-undo"))); undo_->setShortcut(QKeySequence::Undo); - redo_->setIcon(IconLoader::Load("edit-redo")); + redo_->setIcon(IconLoader::Load(QStringLiteral("edit-redo"))); redo_->setShortcut(QKeySequence::Redo); ui_->undo->setDefaultAction(undo_); diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index 6de6548f..633b0b52 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -260,10 +260,10 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, // Special case: we want newlines in the comment tooltip if (idx.column() == Playlist::Column_Comment) { text = idx.data(Qt::ToolTipRole).toString().toHtmlEscaped(); - text.replace("\\r\\n", "
"); - text.replace("\\n", "
"); - text.replace("\r\n", "
"); - text.replace("\n", "
"); + text.replace(QLatin1String("\\r\\n"), QLatin1String("
")); + text.replace(QLatin1String("\\n"), QLatin1String("
")); + text.replace(QLatin1String("\r\n"), QLatin1String("
")); + text.replace(QLatin1String("\n"), QLatin1String("
")); } if (text.isEmpty() || !event) return false; @@ -381,13 +381,13 @@ TagCompletionModel::TagCompletionModel(SharedPtr backend, con QString TagCompletionModel::database_column(Playlist::Column column) { switch (column) { - case Playlist::Column_Artist: return "artist"; - case Playlist::Column_Album: return "album"; - case Playlist::Column_AlbumArtist: return "albumartist"; - case Playlist::Column_Composer: return "composer"; - case Playlist::Column_Performer: return "performer"; - case Playlist::Column_Grouping: return "grouping"; - case Playlist::Column_Genre: return "genre"; + case Playlist::Column_Artist: return QStringLiteral("artist"); + case Playlist::Column_Album: return QStringLiteral("album"); + case Playlist::Column_AlbumArtist: return QStringLiteral("albumartist"); + case Playlist::Column_Composer: return QStringLiteral("composer"); + case Playlist::Column_Performer: return QStringLiteral("performer"); + case Playlist::Column_Grouping: return QStringLiteral("grouping"); + case Playlist::Column_Genre: return QStringLiteral("genre"); default: qLog(Warning) << "Unknown column" << column; return QString(); @@ -446,7 +446,7 @@ QString NativeSeparatorsDelegate::displayText(const QVariant &value, const QLoca #endif url = value.toUrl(); } - else if (string_value.contains("://")) { + else if (string_value.contains(QLatin1String("://"))) { url = QUrl::fromEncoded(string_value.toLatin1()); } else { @@ -470,7 +470,7 @@ QString SongSourceDelegate::displayText(const QVariant &value, const QLocale&) c QPixmap SongSourceDelegate::LookupPixmap(const Song::Source source, const QSize size, const qreal device_pixel_ratio) const { QPixmap pixmap; - const QString pixmap_cache_key = QString("%1-%2x%3-%4").arg(Song::TextForSource(source)).arg(size.width()).arg(size.height()).arg(device_pixel_ratio); + const QString pixmap_cache_key = QStringLiteral("%1-%2x%3-%4").arg(Song::TextForSource(source)).arg(size.width()).arg(size.height()).arg(device_pixel_ratio); if (QPixmapCache::find(pixmap_cache_key, &pixmap)) { return pixmap; } diff --git a/src/playlist/playlistfilter.cpp b/src/playlist/playlistfilter.cpp index 987f48f1..8f3873f1 100644 --- a/src/playlist/playlistfilter.cpp +++ b/src/playlist/playlistfilter.cpp @@ -37,28 +37,28 @@ PlaylistFilter::PlaylistFilter(QObject *parent) setDynamicSortFilter(true); - column_names_["title"] = Playlist::Column_Title; - column_names_["name"] = Playlist::Column_Title; - column_names_["artist"] = Playlist::Column_Artist; - column_names_["album"] = Playlist::Column_Album; - column_names_["albumartist"] = Playlist::Column_AlbumArtist; - column_names_["performer"] = Playlist::Column_Performer; - column_names_["composer"] = Playlist::Column_Composer; - column_names_["year"] = Playlist::Column_Year; - column_names_["originalyear"] = Playlist::Column_OriginalYear; - column_names_["track"] = Playlist::Column_Track; - column_names_["disc"] = Playlist::Column_Disc; - column_names_["length"] = Playlist::Column_Length; - column_names_["genre"] = Playlist::Column_Genre; - column_names_["samplerate"] = Playlist::Column_Samplerate; - column_names_["bitdepth"] = Playlist::Column_Bitdepth; - column_names_["bitrate"] = Playlist::Column_Bitrate; - column_names_["filename"] = Playlist::Column_Filename; - column_names_["grouping"] = Playlist::Column_Grouping; - column_names_["comment"] = Playlist::Column_Comment; - column_names_["rating"] = Playlist::Column_Rating; - column_names_["playcount"] = Playlist::Column_PlayCount; - column_names_["skipcount"] = Playlist::Column_SkipCount; + column_names_[QStringLiteral("title")] = Playlist::Column_Title; + column_names_[QStringLiteral("name")] = Playlist::Column_Title; + column_names_[QStringLiteral("artist")] = Playlist::Column_Artist; + column_names_[QStringLiteral("album")] = Playlist::Column_Album; + column_names_[QStringLiteral("albumartist")] = Playlist::Column_AlbumArtist; + column_names_[QStringLiteral("performer")] = Playlist::Column_Performer; + column_names_[QStringLiteral("composer")] = Playlist::Column_Composer; + column_names_[QStringLiteral("year")] = Playlist::Column_Year; + column_names_[QStringLiteral("originalyear")] = Playlist::Column_OriginalYear; + column_names_[QStringLiteral("track")] = Playlist::Column_Track; + column_names_[QStringLiteral("disc")] = Playlist::Column_Disc; + column_names_[QStringLiteral("length")] = Playlist::Column_Length; + column_names_[QStringLiteral("genre")] = Playlist::Column_Genre; + column_names_[QStringLiteral("samplerate")] = Playlist::Column_Samplerate; + column_names_[QStringLiteral("bitdepth")] = Playlist::Column_Bitdepth; + column_names_[QStringLiteral("bitrate")] = Playlist::Column_Bitrate; + column_names_[QStringLiteral("filename")] = Playlist::Column_Filename; + column_names_[QStringLiteral("grouping")] = Playlist::Column_Grouping; + column_names_[QStringLiteral("comment")] = Playlist::Column_Comment; + column_names_[QStringLiteral("rating")] = Playlist::Column_Rating; + column_names_[QStringLiteral("playcount")] = Playlist::Column_PlayCount; + column_names_[QStringLiteral("skipcount")] = Playlist::Column_SkipCount; numerical_columns_ << Playlist::Column_Year << Playlist::Column_OriginalYear diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index 1a8e4dd9..2b608c99 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -91,8 +91,8 @@ PlaylistItem::~PlaylistItem() = default; void PlaylistItem::BindToQuery(SqlQuery *query) const { - query->BindValue(":type", static_cast(source_)); - query->BindValue(":collection_id", DatabaseValue(Column_CollectionId)); + query->BindValue(QStringLiteral(":type"), static_cast(source_)); + query->BindValue(QStringLiteral(":collection_id"), DatabaseValue(Column_CollectionId)); DatabaseSongMetadata().BindToQuery(query); diff --git a/src/playlist/playlistlistcontainer.cpp b/src/playlist/playlistlistcontainer.cpp index 65bfb527..cbcf8251 100644 --- a/src/playlist/playlistlistcontainer.cpp +++ b/src/playlist/playlistlistcontainer.cpp @@ -167,14 +167,14 @@ void PlaylistListContainer::showEvent(QShowEvent *e) { if (!loaded_icons_) { loaded_icons_ = true; - action_new_folder_->setIcon(IconLoader::Load("folder-new")); - action_remove_->setIcon(IconLoader::Load("edit-delete")); - action_save_playlist_->setIcon(IconLoader::Load("document-save")); + action_new_folder_->setIcon(IconLoader::Load(QStringLiteral("folder-new"))); + action_remove_->setIcon(IconLoader::Load(QStringLiteral("edit-delete"))); + action_save_playlist_->setIcon(IconLoader::Load(QStringLiteral("document-save"))); #ifndef Q_OS_WIN - action_copy_to_device_->setIcon(IconLoader::Load("device")); + action_copy_to_device_->setIcon(IconLoader::Load(QStringLiteral("device"))); #endif - model_->SetIcons(IconLoader::Load("view-media-playlist"), IconLoader::Load("folder")); + model_->SetIcons(IconLoader::Load(QStringLiteral("view-media-playlist")), IconLoader::Load(QStringLiteral("folder"))); // Apply these icons to items that have already been created. RecursivelySetIcons(model_->invisibleRootItem()); @@ -213,7 +213,7 @@ void PlaylistListContainer::NewFolderClicked() { return; } - name.replace("/", " "); + name.replace(QLatin1String("/"), QLatin1String(" ")); model_->invisibleRootItem()->appendRow(model_->NewFolder(name)); @@ -489,7 +489,7 @@ void PlaylistListContainer::contextMenuEvent(QContextMenuEvent *e) { void PlaylistListContainer::ActivePlaying() { if (padded_play_icon_.isNull()) { - QPixmap pixmap(":/pictures/tiny-play.png"); + QPixmap pixmap(QStringLiteral(":/pictures/tiny-play.png")); QPixmap new_pixmap(QSize(pixmap.height(), pixmap.height())); new_pixmap.fill(Qt::transparent); diff --git a/src/playlist/playlistlistmodel.cpp b/src/playlist/playlistlistmodel.cpp index 100e6847..b571cb35 100644 --- a/src/playlist/playlistlistmodel.cpp +++ b/src/playlist/playlistlistmodel.cpp @@ -68,7 +68,7 @@ QString PlaylistListModel::ItemPath(const QStandardItem *item) { current = current->parent(); } - return components.join("/"); + return components.join(QStringLiteral("/")); } diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 8b3d704c..9fa8232d 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -189,7 +189,7 @@ void PlaylistManager::New(const QString &name, const SongList &songs, const QStr // If the name is just "Playlist", append the id if (name == tr("Playlist")) { - Rename(id, QString("%1 %2").arg(name).arg(id)); + Rename(id, QStringLiteral("%1 %2").arg(name).arg(id)); } } diff --git a/src/playlist/playlistsequence.cpp b/src/playlist/playlistsequence.cpp index 496b6f4f..1cbf48d9 100644 --- a/src/playlist/playlistsequence.cpp +++ b/src/playlist/playlistsequence.cpp @@ -52,12 +52,12 @@ PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings) ui_->setupUi(this); // Icons - ui_->repeat->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat"))); - ui_->shuffle->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle"))); + ui_->repeat->setIcon(AddDesaturatedIcon(IconLoader::Load(QStringLiteral("media-playlist-repeat")))); + ui_->shuffle->setIcon(AddDesaturatedIcon(IconLoader::Load(QStringLiteral("media-playlist-shuffle")))); // Remove arrow indicators - ui_->repeat->setStyleSheet("QToolButton::menu-indicator { image: none; }"); - ui_->shuffle->setStyleSheet("QToolButton::menu-indicator { image: none; }"); + ui_->repeat->setStyleSheet(QStringLiteral("QToolButton::menu-indicator { image: none; }")); + ui_->shuffle->setStyleSheet(QStringLiteral("QToolButton::menu-indicator { image: none; }")); settings_->set_group(kSettingsGroup); @@ -93,8 +93,8 @@ PlaylistSequence::~PlaylistSequence() { void PlaylistSequence::Load() { loading_ = true; // Stops these setter functions calling Save() - SetShuffleMode(static_cast(settings_->value("shuffle_mode", static_cast(ShuffleMode::Off)).toInt())); - SetRepeatMode(static_cast(settings_->value("repeat_mode", static_cast(RepeatMode::Off)).toInt())); + SetShuffleMode(static_cast(settings_->value(QStringLiteral("shuffle_mode"), static_cast(ShuffleMode::Off)).toInt())); + SetRepeatMode(static_cast(settings_->value(QStringLiteral("repeat_mode"), static_cast(RepeatMode::Off)).toInt())); loading_ = false; } @@ -103,8 +103,8 @@ void PlaylistSequence::Save() { if (loading_) return; - settings_->setValue("shuffle_mode", static_cast(shuffle_mode_)); - settings_->setValue("repeat_mode", static_cast(repeat_mode_)); + settings_->setValue(QStringLiteral("shuffle_mode"), static_cast(shuffle_mode_)); + settings_->setValue(QStringLiteral("repeat_mode"), static_cast(repeat_mode_)); } diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 77480471..92c836ce 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -75,10 +75,10 @@ PlaylistTabBar::PlaylistTabBar(QWidget *parent) setUsesScrollButtons(true); setTabsClosable(true); - action_star_ = menu_->addAction(IconLoader::Load("star"), tr("Star playlist"), this, &PlaylistTabBar::StarSlot); - action_close_ = menu_->addAction(IconLoader::Load("list-remove"), tr("Close playlist"), this, &PlaylistTabBar::CloseSlot); - action_rename_ = menu_->addAction(IconLoader::Load("edit-rename"), tr("Rename playlist..."), this, &PlaylistTabBar::RenameSlot); - action_save_ = menu_->addAction(IconLoader::Load("document-save"), tr("Save playlist..."), this, &PlaylistTabBar::SaveSlot); + action_star_ = menu_->addAction(IconLoader::Load(QStringLiteral("star")), tr("Star playlist"), this, &PlaylistTabBar::StarSlot); + action_close_ = menu_->addAction(IconLoader::Load(QStringLiteral("list-remove")), tr("Close playlist"), this, &PlaylistTabBar::CloseSlot); + action_rename_ = menu_->addAction(IconLoader::Load(QStringLiteral("edit-rename")), tr("Rename playlist..."), this, &PlaylistTabBar::RenameSlot); + action_save_ = menu_->addAction(IconLoader::Load(QStringLiteral("document-save")), tr("Save playlist..."), this, &PlaylistTabBar::SaveSlot); menu_->addSeparator(); rename_editor_->setVisible(false); @@ -159,7 +159,7 @@ void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { else { menu_index_ = index; QString new_text = tabText(index); - new_text = new_text.replace("&&", "&"); + new_text = new_text.replace(QLatin1String("&&"), QLatin1String("&")); rename_editor_->setGeometry(tabRect(index)); rename_editor_->setText(new_text); rename_editor_->setVisible(true); @@ -176,7 +176,7 @@ void PlaylistTabBar::RenameSlot() { if (menu_index_ == -1) return; QString name = tabText(menu_index_); - name = name.replace("&&", "&"); + name = name.replace(QLatin1String("&&"), QLatin1String("&")); QString new_name = QInputDialog::getText(this, tr("Rename playlist"), tr("Enter a new name for this playlist"), QLineEdit::Normal, name); if (new_name.isEmpty()) return; @@ -332,7 +332,7 @@ void PlaylistTabBar::RemoveTab(const int id) { void PlaylistTabBar::set_text_by_id(const int id, const QString &text) { QString new_text = text; - new_text = new_text.replace("&", "&&"); + new_text = new_text.replace(QLatin1String("&"), QLatin1String("&&")); setTabText(index_of(id), new_text); setTabToolTip(index_of(id), text); @@ -346,7 +346,7 @@ void PlaylistTabBar::InsertTab(const int id, const int index, const QString &tex QString new_text = text; if (new_text.contains('&')) { - new_text = new_text.replace('&', "&&"); + new_text = new_text.replace('&', QLatin1String("&&")); } suppress_current_changed_ = true; diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index 47c7662c..cf432c5f 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -127,8 +127,8 @@ PlaylistView::PlaylistView(QWidget *parent) inhibit_autoscroll_(false), currently_autoscrolling_(false), row_height_(-1), - currenttrack_play_(":/pictures/currenttrack_play.png"), - currenttrack_pause_(":/pictures/currenttrack_pause.png"), + currenttrack_play_(QStringLiteral(":/pictures/currenttrack_play.png")), + currenttrack_pause_(QStringLiteral(":/pictures/currenttrack_pause.png")), cached_current_row_row_(-1), drop_indicator_row_(-1), drag_over_(false), @@ -219,8 +219,8 @@ void PlaylistView::SetItemDelegates() { setItemDelegateForColumn(Playlist::Column_DateCreated, new DateItemDelegate(this)); setItemDelegateForColumn(Playlist::Column_DateModified, new DateItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Samplerate, new PlaylistDelegateBase(this, ("Hz"))); - setItemDelegateForColumn(Playlist::Column_Bitdepth, new PlaylistDelegateBase(this, ("Bit"))); + setItemDelegateForColumn(Playlist::Column_Samplerate, new PlaylistDelegateBase(this, tr("Hz"))); + setItemDelegateForColumn(Playlist::Column_Bitdepth, new PlaylistDelegateBase(this, tr("Bit"))); setItemDelegateForColumn(Playlist::Column_Bitrate, new PlaylistDelegateBase(this, tr("kbps"))); setItemDelegateForColumn(Playlist::Column_Filename, new NativeSeparatorsDelegate(this)); @@ -404,9 +404,9 @@ void PlaylistView::RestoreHeaderState() { void PlaylistView::ReloadBarPixmaps() { - currenttrack_bar_left_ = LoadBarPixmap(":/pictures/currenttrack_bar_left.png", true); - currenttrack_bar_mid_ = LoadBarPixmap(":/pictures/currenttrack_bar_mid.png", false); - currenttrack_bar_right_ = LoadBarPixmap(":/pictures/currenttrack_bar_right.png", true); + currenttrack_bar_left_ = LoadBarPixmap(QStringLiteral(":/pictures/currenttrack_bar_left.png"), true); + currenttrack_bar_mid_ = LoadBarPixmap(QStringLiteral(":/pictures/currenttrack_bar_mid.png"), false); + currenttrack_bar_right_ = LoadBarPixmap(QStringLiteral(":/pictures/currenttrack_bar_right.png"), true); } @@ -452,8 +452,8 @@ QList PlaylistView::LoadBarPixmap(const QString &filename, const bool k void PlaylistView::LoadTinyPlayPausePixmaps(const int desired_size) { - QImage image_play = QImage(":/pictures/tiny-play.png").scaled(desired_size, desired_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); - QImage image_pause = QImage(":/pictures/tiny-pause.png").scaled(desired_size, desired_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); + QImage image_play = QImage(QStringLiteral(":/pictures/tiny-play.png")).scaled(desired_size, desired_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); + QImage image_pause = QImage(QStringLiteral(":/pictures/tiny-pause.png")).scaled(desired_size, desired_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); pixmap_tinyplay_ = QPixmap::fromImage(image_play); pixmap_tinypause_ = QPixmap::fromImage(image_pause); @@ -1397,7 +1397,7 @@ void PlaylistView::CopyCurrentSongToClipboard() const { QMimeData *mime_data = new QMimeData; mime_data->setUrls(QList() << url); - mime_data->setText(columns.join(" - ")); + mime_data->setText(columns.join(QStringLiteral(" - "))); QApplication::clipboard()->setMimeData(mime_data); diff --git a/src/playlistparsers/asxiniparser.cpp b/src/playlistparsers/asxiniparser.cpp index 44cc9f3a..d82d8f24 100644 --- a/src/playlistparsers/asxiniparser.cpp +++ b/src/playlistparsers/asxiniparser.cpp @@ -58,7 +58,7 @@ SongList AsxIniParser::Load(QIODevice *device, const QString &playlist_path, con QString key = line.left(equals).toLower(); QString value = line.mid(equals + 1); - if (key.startsWith("ref")) { + if (key.startsWith(QLatin1String("ref"))) { Song song = LoadSong(value, 0, 0, dir, collection_search); if (song.is_valid()) { ret << song; diff --git a/src/playlistparsers/asxiniparser.h b/src/playlistparsers/asxiniparser.h index a6dfd490..def750d5 100644 --- a/src/playlistparsers/asxiniparser.h +++ b/src/playlistparsers/asxiniparser.h @@ -43,14 +43,14 @@ class AsxIniParser : public ParserBase { public: explicit AsxIniParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "ASX/INI"; } - QStringList file_extensions() const override { return QStringList() << "asxini"; } + QString name() const override { return QStringLiteral("ASX/INI"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("asxini"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; }; diff --git a/src/playlistparsers/asxparser.cpp b/src/playlistparsers/asxparser.cpp index 67345d0a..acde4214 100644 --- a/src/playlistparsers/asxparser.cpp +++ b/src/playlistparsers/asxparser.cpp @@ -48,14 +48,14 @@ SongList ASXParser::Load(QIODevice *device, const QString &playlist_path, const QByteArray data = device->readAll(); // Some playlists have unescaped & characters in URLs :( - QRegularExpression ex("(href\\s*=\\s*\")([^\"]+)\"", QRegularExpression::CaseInsensitiveOption); + QRegularExpression ex(QStringLiteral("(href\\s*=\\s*\")([^\"]+)\""), QRegularExpression::CaseInsensitiveOption); qint64 index = 0; for (QRegularExpressionMatch re_match = ex.match(data, index); re_match.hasMatch(); re_match = ex.match(data, index)) { index = re_match.capturedStart(); QString url = re_match.captured(2); - url.replace(QRegularExpression("&(?!amp;|quot;|apos;|lt;|gt;)"), "&"); + url.replace(QRegularExpression(QStringLiteral("&(?!amp;|quot;|apos;|lt;|gt;)")), QStringLiteral("&")); - QByteArray replacement = QString("%1%2\"").arg(re_match.captured(1), url).toLocal8Bit(); + QByteArray replacement = QStringLiteral("%1%2\"").arg(re_match.captured(1), url).toLocal8Bit(); data.replace(re_match.captured(0).toLocal8Bit(), replacement); index += replacement.length(); } @@ -64,13 +64,13 @@ SongList ASXParser::Load(QIODevice *device, const QString &playlist_path, const if (!buffer.open(QIODevice::ReadOnly)) return SongList(); QXmlStreamReader reader(&buffer); - if (!Utilities::ParseUntilElementCI(&reader, "asx")) { + if (!Utilities::ParseUntilElementCI(&reader, QStringLiteral("asx"))) { buffer.close(); return SongList(); } SongList ret; - while (!reader.atEnd() && Utilities::ParseUntilElementCI(&reader, "entry")) { + while (!reader.atEnd() && Utilities::ParseUntilElementCI(&reader, QStringLiteral("entry"))) { Song song = ParseTrack(&reader, dir, collection_search); if (song.is_valid()) { ret << song; @@ -137,13 +137,13 @@ void ASXParser::Save(const SongList &songs, QIODevice *device, const QDir&, cons writer.setAutoFormattingIndent(2); writer.writeStartDocument(); { - StreamElement asx("asx", &writer); + StreamElement asx(QStringLiteral("asx"), &writer); writer.writeAttribute("version", "3.0"); for (const Song &song : songs) { - StreamElement entry("entry", &writer); + StreamElement entry(QStringLiteral("entry"), &writer); writer.writeTextElement("title", song.title()); { - StreamElement ref("ref", &writer); + StreamElement ref(QStringLiteral("ref"), &writer); writer.writeAttribute("href", song.url().toString()); } if (!song.artist().isEmpty()) { diff --git a/src/playlistparsers/asxparser.h b/src/playlistparsers/asxparser.h index 3462a34e..da4f6689 100644 --- a/src/playlistparsers/asxparser.h +++ b/src/playlistparsers/asxparser.h @@ -45,14 +45,14 @@ class ASXParser : public XMLParser { public: explicit ASXParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "ASX"; } - QStringList file_extensions() const override { return QStringList() << "asx"; } + QString name() const override { return QStringLiteral("ASX"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("asx"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; private: diff --git a/src/playlistparsers/cueparser.cpp b/src/playlistparsers/cueparser.cpp index 26dd4c5c..2c71ce35 100644 --- a/src/playlistparsers/cueparser.cpp +++ b/src/playlistparsers/cueparser.cpp @@ -152,7 +152,7 @@ SongList CueParser::Load(QIODevice *device, const QString &playlist_path, const } // if this is a data file, all of its tracks will be ignored - bool valid_file = file_type.compare("BINARY", Qt::CaseInsensitive) != 0 && file_type.compare("MOTOROLA", Qt::CaseInsensitive) != 0; + bool valid_file = file_type.compare(QLatin1String("BINARY"), Qt::CaseInsensitive) != 0 && file_type.compare(QLatin1String("MOTOROLA"), Qt::CaseInsensitive) != 0; QString track_type; QString index; @@ -173,7 +173,7 @@ SongList CueParser::Load(QIODevice *device, const QString &playlist_path, const const QString &line_name = splitted[0]; const QString &line_value = splitted[1]; - QString line_additional = splitted.size() > 2 ? splitted[2].toLower() : ""; + QString line_additional = splitted.size() > 2 ? splitted[2].toLower() : QLatin1String(""); if (line_name.compare(kTrack, Qt::CaseInsensitive) == 0) { @@ -184,7 +184,7 @@ SongList CueParser::Load(QIODevice *device, const QString &playlist_path, const } // clear the state - track_type = index = artist = composer = title = date = genre = ""; + track_type = index = artist = composer = title = date = genre = QLatin1String(""); if (!line_additional.isEmpty()) { track_type = line_additional; @@ -292,7 +292,7 @@ QStringList CueParser::SplitCueLine(const QString &line) { } // Let's remove the empty entries while we're at it - return re_match.capturedTexts().filter(QRegularExpression(".+")).mid(1, -1).replaceInStrings(QRegularExpression("^\"\"$"), ""); + return re_match.capturedTexts().filter(QRegularExpression(QStringLiteral(".+"))).mid(1, -1).replaceInStrings(QRegularExpression(QStringLiteral("^\"\"$")), QLatin1String("")); } diff --git a/src/playlistparsers/cueparser.h b/src/playlistparsers/cueparser.h index 3e26e90a..eb04d74a 100644 --- a/src/playlistparsers/cueparser.h +++ b/src/playlistparsers/cueparser.h @@ -63,15 +63,15 @@ class CueParser : public ParserBase { explicit CueParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "CUE"; } - QStringList file_extensions() const override { return QStringList() << "cue"; } - QString mime_type() const override { return "application/x-cue"; } + QString name() const override { return QStringLiteral("CUE"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("cue"); } + QString mime_type() const override { return QStringLiteral("application/x-cue"); } bool load_supported() const override { return true; } bool save_supported() const override { return false; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; static QString FindCueFilename(const QString &filename); diff --git a/src/playlistparsers/m3uparser.cpp b/src/playlistparsers/m3uparser.cpp index 7c71436d..88c1a005 100644 --- a/src/playlistparsers/m3uparser.cpp +++ b/src/playlistparsers/m3uparser.cpp @@ -48,13 +48,13 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const QString data = QString::fromUtf8(device->readAll()); data.replace('\r', '\n'); - data.replace("\n\n", "\n"); + data.replace(QLatin1String("\n\n"), QLatin1String("\n")); QByteArray bytes = data.toUtf8(); QBuffer buffer(&bytes); if (!buffer.open(QIODevice::ReadOnly)) return SongList(); QString line = QString::fromUtf8(buffer.readLine()).trimmed(); - if (line.startsWith("#EXTM3U")) { + if (line.startsWith(QLatin1String("#EXTM3U"))) { // This is in extended M3U format. type = M3UType::EXTENDED; line = QString::fromUtf8(buffer.readLine()).trimmed(); @@ -64,7 +64,7 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const forever { if (line.startsWith('#')) { // Extended info or comment. - if (type == M3UType::EXTENDED && line.startsWith("#EXT")) { + if (type == M3UType::EXTENDED && line.startsWith(QLatin1String("#EXT"))) { if (!ParseMetadata(line, ¤t_metadata)) { qLog(Warning) << "Failed to parse metadata: " << line; } @@ -111,7 +111,7 @@ bool M3UParser::ParseMetadata(const QString &line, M3UParser::Metadata *metadata metadata->length = length * kNsecPerSec; QString track_info = info.section(',', 1); - QStringList list = track_info.split(" - "); + QStringList list = track_info.split(QStringLiteral(" - ")); if (list.size() <= 1) { metadata->title = track_info; return true; @@ -136,7 +136,7 @@ void M3UParser::Save(const SongList &songs, QIODevice *device, const QDir &dir, continue; } if (write_metadata || (song.is_stream() && !song.is_radio())) { - QString meta = QString("#EXTINF:%1,%2 - %3\n").arg(song.length_nanosec() / kNsecPerSec).arg(song.artist(), song.title()); + QString meta = QStringLiteral("#EXTINF:%1,%2 - %3\n").arg(song.length_nanosec() / kNsecPerSec).arg(song.artist(), song.title()); device->write(meta.toUtf8()); } device->write(URLOrFilename(song.url(), dir, path_type).toUtf8()); diff --git a/src/playlistparsers/m3uparser.h b/src/playlistparsers/m3uparser.h index fd814aa3..51f461ae 100644 --- a/src/playlistparsers/m3uparser.h +++ b/src/playlistparsers/m3uparser.h @@ -44,15 +44,15 @@ class M3UParser : public ParserBase { public: explicit M3UParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "M3U"; } - QStringList file_extensions() const override { return QStringList() << "m3u" << "m3u8"; } - QString mime_type() const override { return "text/uri-list"; } + QString name() const override { return QStringLiteral("M3U"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("m3u") << QStringLiteral("m3u8"); } + QString mime_type() const override { return QStringLiteral("text/uri-list"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; private: diff --git a/src/playlistparsers/parserbase.cpp b/src/playlistparsers/parserbase.cpp index 74d34a4e..ec7cb570 100644 --- a/src/playlistparsers/parserbase.cpp +++ b/src/playlistparsers/parserbase.cpp @@ -45,7 +45,7 @@ void ParserBase::LoadSong(const QString &filename_or_url, const qint64 beginning QString filename = filename_or_url; - if (filename_or_url.contains(QRegularExpression("^[a-z]{2,}:", QRegularExpression::CaseInsensitiveOption))) { + if (filename_or_url.contains(QRegularExpression(QStringLiteral("^[a-z]{2,}:"), QRegularExpression::CaseInsensitiveOption))) { QUrl url(filename_or_url); song->set_source(Song::SourceFromURL(url)); if (song->source() == Song::Source::LocalFile) { @@ -119,7 +119,7 @@ QString ParserBase::URLOrFilename(const QUrl &url, const QDir &dir, const Playli if (path_type != PlaylistSettingsPage::PathType::Absolute && QDir::isAbsolutePath(filename)) { const QString relative = dir.relativeFilePath(filename); - if (!relative.startsWith("../") || path_type == PlaylistSettingsPage::PathType::Relative) { + if (!relative.startsWith(QLatin1String("../")) || path_type == PlaylistSettingsPage::PathType::Relative) { return relative; } } diff --git a/src/playlistparsers/parserbase.h b/src/playlistparsers/parserbase.h index d49903d3..d7b82518 100644 --- a/src/playlistparsers/parserbase.h +++ b/src/playlistparsers/parserbase.h @@ -58,7 +58,7 @@ class ParserBase : public QObject { // This method might not return all the songs found in the playlist. // Any playlist parser may decide to leave out some entries if it finds them incomplete or invalid. // This means that the final resulting SongList should be considered valid (at least from the parser's point of view). - virtual SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_lookup = true) const = 0; + virtual SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_lookup = true) const = 0; virtual void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const = 0; protected: diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index 2a41af33..ef5136ac 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -100,10 +100,10 @@ QString PlaylistParser::filters(const Type type) const { } if (type == Type::Load) { - filters.prepend(tr("All playlists (%1)").arg(all_extensions.join(" "))); + filters.prepend(tr("All playlists (%1)").arg(all_extensions.join(QStringLiteral(" ")))); } - return filters.join(";;"); + return filters.join(QStringLiteral(";;")); } @@ -118,7 +118,7 @@ QString PlaylistParser::FilterForParser(const ParserBase *parser, QStringList *a if (all_extensions) *all_extensions << extensions; - return tr("%1 playlists (%2)").arg(parser->name(), extensions.join(" ")); + return tr("%1 playlists (%2)").arg(parser->name(), extensions.join(QStringLiteral(" "))); } diff --git a/src/playlistparsers/plsparser.cpp b/src/playlistparsers/plsparser.cpp index 405fa699..0e8e421b 100644 --- a/src/playlistparsers/plsparser.cpp +++ b/src/playlistparsers/plsparser.cpp @@ -50,7 +50,7 @@ SongList PLSParser::Load(QIODevice *device, const QString &playlist_path, const Q_UNUSED(playlist_path); QMap songs; - QRegularExpression n_re("\\d+$"); + QRegularExpression n_re(QStringLiteral("\\d+$")); while (!device->atEnd()) { QString line = QString::fromUtf8(device->readLine()).trimmed(); @@ -61,7 +61,7 @@ SongList PLSParser::Load(QIODevice *device, const QString &playlist_path, const QRegularExpressionMatch re_match = n_re.match(key); int n = re_match.captured(0).toInt(); - if (key.startsWith("file")) { + if (key.startsWith(QLatin1String("file"))) { Song song = LoadSong(value, 0, 0, dir, collection_search); // Use the title and length we've already loaded if any @@ -72,10 +72,10 @@ SongList PLSParser::Load(QIODevice *device, const QString &playlist_path, const songs[n] = song; } - else if (key.startsWith("title")) { + else if (key.startsWith(QLatin1String("title"))) { songs[n].set_title(value); } - else if (key.startsWith("length")) { + else if (key.startsWith(QLatin1String("length"))) { qint64 seconds = value.toLongLong(); if (seconds > 0) { songs[n].set_length_nanosec(seconds * kNsecPerSec); diff --git a/src/playlistparsers/plsparser.h b/src/playlistparsers/plsparser.h index 9cb5eb3b..73274683 100644 --- a/src/playlistparsers/plsparser.h +++ b/src/playlistparsers/plsparser.h @@ -43,15 +43,15 @@ class PLSParser : public ParserBase { public: explicit PLSParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "PLS"; } - QStringList file_extensions() const override { return QStringList() << "pls"; } - QString mime_type() const override { return "audio/x-scpls"; } + QString name() const override { return QStringLiteral("PLS"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("pls"); } + QString mime_type() const override { return QStringLiteral("audio/x-scpls"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; }; diff --git a/src/playlistparsers/wplparser.cpp b/src/playlistparsers/wplparser.cpp index f48e9634..459faf44 100644 --- a/src/playlistparsers/wplparser.cpp +++ b/src/playlistparsers/wplparser.cpp @@ -51,11 +51,11 @@ SongList WplParser::Load(QIODevice *device, const QString &playlist_path, const SongList ret; QXmlStreamReader reader(device); - if (!Utilities::ParseUntilElement(&reader, "smil") || !Utilities::ParseUntilElement(&reader, "body")) { + if (!Utilities::ParseUntilElement(&reader, QStringLiteral("smil")) || !Utilities::ParseUntilElement(&reader, QStringLiteral("body"))) { return ret; } - while (!reader.atEnd() && Utilities::ParseUntilElement(&reader, "seq")) { + while (!reader.atEnd() && Utilities::ParseUntilElement(&reader, QStringLiteral("seq"))) { ParseSeq(dir, &reader, &ret, collection_search); } return ret; @@ -103,18 +103,18 @@ void WplParser::Save(const SongList &songs, QIODevice *device, const QDir &dir, writer.setAutoFormattingIndent(2); writer.writeProcessingInstruction("wpl", "version=\"1.0\""); - StreamElement smil("smil", &writer); + StreamElement smil(QStringLiteral("smil"), &writer); { - StreamElement head("head", &writer); - WriteMeta("Generator", "Strawberry -- " STRAWBERRY_VERSION_DISPLAY, &writer); - WriteMeta("ItemCount", QString::number(songs.count()), &writer); + StreamElement head(QStringLiteral("head"), &writer); + WriteMeta(QStringLiteral("Generator"), "Strawberry -- " STRAWBERRY_VERSION_DISPLAY, &writer); + WriteMeta(QStringLiteral("ItemCount"), QString::number(songs.count()), &writer); } { - StreamElement body("body", &writer); + StreamElement body(QStringLiteral("body"), &writer); { - StreamElement seq("seq", &writer); + StreamElement seq(QStringLiteral("seq"), &writer); for (const Song &song : songs) { writer.writeStartElement("media"); writer.writeAttribute("src", URLOrFilename(song.url(), dir, path_type)); diff --git a/src/playlistparsers/wplparser.h b/src/playlistparsers/wplparser.h index dff4f807..0f5df20f 100644 --- a/src/playlistparsers/wplparser.h +++ b/src/playlistparsers/wplparser.h @@ -46,9 +46,9 @@ class WplParser : public XMLParser { public: explicit WplParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "WPL"; } - QStringList file_extensions() const override { return QStringList() << "wpl"; } - QString mime_type() const override { return "application/vnd.ms-wpl"; } + QString name() const override { return QStringLiteral("WPL"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("wpl"); } + QString mime_type() const override { return QStringLiteral("application/vnd.ms-wpl"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } diff --git a/src/playlistparsers/xspfparser.cpp b/src/playlistparsers/xspfparser.cpp index 240cb361..783bef45 100644 --- a/src/playlistparsers/xspfparser.cpp +++ b/src/playlistparsers/xspfparser.cpp @@ -48,11 +48,11 @@ SongList XSPFParser::Load(QIODevice *device, const QString &playlist_path, const SongList ret; QXmlStreamReader reader(device); - if (!Utilities::ParseUntilElement(&reader, "playlist") || !Utilities::ParseUntilElement(&reader, "trackList")) { + if (!Utilities::ParseUntilElement(&reader, QStringLiteral("playlist")) || !Utilities::ParseUntilElement(&reader, QStringLiteral("trackList"))) { return ret; } - while (!reader.atEnd() && Utilities::ParseUntilElement(&reader, "track")) { + while (!reader.atEnd() && Utilities::ParseUntilElement(&reader, QStringLiteral("track"))) { Song song = ParseTrack(&reader, dir, collection_search); if (song.is_valid()) { ret << song; @@ -142,7 +142,7 @@ void XSPFParser::Save(const SongList &songs, QIODevice *device, const QDir &dir, writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); writer.writeStartDocument(); - StreamElement playlist("playlist", &writer); + StreamElement playlist(QStringLiteral("playlist"), &writer); writer.writeAttribute("version", "1"); writer.writeDefaultNamespace("http://xspf.org/ns/0/"); @@ -151,11 +151,11 @@ void XSPFParser::Save(const SongList &songs, QIODevice *device, const QDir &dir, bool write_metadata = s.value("write_metadata", true).toBool(); s.endGroup(); - StreamElement tracklist("trackList", &writer); + StreamElement tracklist(QStringLiteral("trackList"), &writer); for (const Song &song : songs) { QString filename_or_url = QUrl::toPercentEncoding(URLOrFilename(song.url(), dir, path_type), "/ "); - StreamElement track("track", &writer); + StreamElement track(QStringLiteral("track"), &writer); writer.writeTextElement("location", filename_or_url); if (write_metadata || (song.is_stream() && !song.is_radio())) { diff --git a/src/playlistparsers/xspfparser.h b/src/playlistparsers/xspfparser.h index 766ab94d..665ad0a8 100644 --- a/src/playlistparsers/xspfparser.h +++ b/src/playlistparsers/xspfparser.h @@ -44,14 +44,14 @@ class XSPFParser : public XMLParser { public: explicit XSPFParser(SharedPtr collection_backend, QObject *parent = nullptr); - QString name() const override { return "XSPF"; } - QStringList file_extensions() const override { return QStringList() << "xspf"; } + QString name() const override { return QStringLiteral("XSPF"); } + QStringList file_extensions() const override { return QStringList() << QStringLiteral("xspf"); } bool load_supported() const override { return true; } bool save_supported() const override { return true; } bool TryMagic(const QByteArray &data) const override; - SongList Load(QIODevice *device, const QString &playlist_path = "", const QDir &dir = QDir(), const bool collection_search = true) const override; + SongList Load(QIODevice *device, const QString &playlist_path = QLatin1String(""), const QDir &dir = QDir(), const bool collection_search = true) const override; void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir(), const PlaylistSettingsPage::PathType path_type = PlaylistSettingsPage::PathType::Automatic) const override; private: diff --git a/src/providers/musixmatchprovider.cpp b/src/providers/musixmatchprovider.cpp index 78a5fb9d..69a9aac8 100644 --- a/src/providers/musixmatchprovider.cpp +++ b/src/providers/musixmatchprovider.cpp @@ -29,11 +29,11 @@ QString MusixmatchProvider::StringFixup(QString text) { return text.replace('/', '-') .replace('\'', '-') - .remove(QRegularExpression("[^\\w0-9\\- ]", QRegularExpression::UseUnicodePropertiesOption)) - .replace(QRegularExpression(" {2,}"), " ") + .remove(QRegularExpression(QStringLiteral("[^\\w0-9\\- ]"), QRegularExpression::UseUnicodePropertiesOption)) + .replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" ")) .simplified() .replace(' ', '-') - .replace(QRegularExpression("(-)\\1+"), "-") + .replace(QRegularExpression(QStringLiteral("(-)\\1+")), QStringLiteral("-")) .toLower(); } diff --git a/src/qobuz/qobuzbaserequest.cpp b/src/qobuz/qobuzbaserequest.cpp index b82d19e5..b5468339 100644 --- a/src/qobuz/qobuzbaserequest.cpp +++ b/src/qobuz/qobuzbaserequest.cpp @@ -61,7 +61,7 @@ QNetworkReply *QobuzBaseRequest::CreateRequest(const QString &ressource_name, co url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(QobuzService::kApiUrl) + QString("/") + ressource_name); + QUrl url(QString(QobuzService::kApiUrl) + QStringLiteral("/") + ressource_name); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -96,7 +96,7 @@ QByteArray QobuzBaseRequest::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "status", "code" and "message" - then use that instead. @@ -106,18 +106,18 @@ QByteArray QobuzBaseRequest::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &parse_error); if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - error = QString("%1 (%2)").arg(message).arg(code); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(message).arg(code); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -135,23 +135,23 @@ QJsonObject QobuzBaseRequest::ExtractJsonObj(QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error("Reply from server missing Json data.", data); + Error(QStringLiteral("Reply from server missing Json data."), data); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } @@ -169,11 +169,11 @@ QJsonValue QobuzBaseRequest::ExtractItems(QByteArray &data) { QJsonValue QobuzBaseRequest::ExtractItems(QJsonObject &json_obj) { - if (!json_obj.contains("items")) { - Error("Json reply is missing items.", json_obj); + if (!json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json reply is missing items."), json_obj); return QJsonArray(); } - QJsonValue json_items = json_obj["items"]; + QJsonValue json_items = json_obj[QStringLiteral("items")]; return json_items; } diff --git a/src/qobuz/qobuzfavoriterequest.cpp b/src/qobuz/qobuzfavoriterequest.cpp index 53a04237..545c8c4e 100644 --- a/src/qobuz/qobuzfavoriterequest.cpp +++ b/src/qobuz/qobuzfavoriterequest.cpp @@ -56,12 +56,12 @@ QString QobuzFavoriteRequest::FavoriteText(const FavoriteType type) { switch (type) { case FavoriteType::Artists: - return "artists"; + return QStringLiteral("artists"); case FavoriteType::Albums: - return "albums"; + return QStringLiteral("albums"); case FavoriteType::Songs: default: - return "tracks"; + return QStringLiteral("tracks"); } } @@ -70,13 +70,13 @@ QString QobuzFavoriteRequest::FavoriteMethod(const FavoriteType type) { switch (type) { case FavoriteType::Artists: - return "artist_ids"; + return QStringLiteral("artist_ids"); break; case FavoriteType::Albums: - return "album_ids"; + return QStringLiteral("album_ids"); break; case FavoriteType::Songs: - return "track_ids"; + return QStringLiteral("track_ids"); break; } @@ -141,7 +141,7 @@ void QobuzFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QS url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QNetworkReply *reply = CreateRequest("favorite/create", params); + QNetworkReply *reply = CreateRequest(QStringLiteral("favorite/create"), params); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, type, songs]() { AddFavoritesReply(reply, type, songs); }); replies_ << reply; @@ -236,7 +236,7 @@ void QobuzFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QNetworkReply *reply = CreateRequest("favorite/delete", params); + QNetworkReply *reply = CreateRequest(QStringLiteral("favorite/delete"), params); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, type, songs]() { RemoveFavoritesReply(reply, type, songs); }); replies_ << reply; diff --git a/src/qobuz/qobuzrequest.cpp b/src/qobuz/qobuzrequest.cpp index 9b3eb02a..d911b42b 100644 --- a/src/qobuz/qobuzrequest.cpp +++ b/src/qobuz/qobuzrequest.cpp @@ -141,7 +141,7 @@ void QobuzRequest::Process() { SongsSearch(); break; default: - Error("Invalid query type."); + Error(QStringLiteral("Invalid query type.")); break; } @@ -233,10 +233,10 @@ void QobuzRequest::FlushArtistsRequests() { if (request.offset > 0) params << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Artists) { - reply = CreateRequest(QString("favorite/getUserFavorites"), params); + reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params); } else if (query_type_ == QueryType::SearchArtists) { - reply = CreateRequest("artist/search", params); + reply = CreateRequest(QStringLiteral("artist/search"), params); } if (!reply) continue; replies_ << reply; @@ -285,10 +285,10 @@ void QobuzRequest::FlushAlbumsRequests() { if (request.offset > 0) params << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Albums) { - reply = CreateRequest(QString("favorite/getUserFavorites"), params); + reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params); } else if (query_type_ == QueryType::SearchAlbums) { - reply = CreateRequest("album/search", params); + reply = CreateRequest(QStringLiteral("album/search"), params); } if (!reply) continue; replies_ << reply; @@ -337,10 +337,10 @@ void QobuzRequest::FlushSongsRequests() { if (request.offset > 0) params << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Songs) { - reply = CreateRequest(QString("favorite/getUserFavorites"), params); + reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params); } else if (query_type_ == QueryType::SearchSongs) { - reply = CreateRequest("track/search", params); + reply = CreateRequest(QStringLiteral("track/search"), params); } if (!reply) continue; replies_ << reply; @@ -419,42 +419,42 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re return; } - if (!json_obj.contains("artists")) { + if (!json_obj.contains(QStringLiteral("artists"))) { ArtistsFinishCheck(); - Error("Json object is missing artists.", json_obj); + Error(QStringLiteral("Json object is missing artists."), json_obj); return; } - QJsonValue value_artists = json_obj["artists"]; + QJsonValue value_artists = json_obj[QStringLiteral("artists")]; if (!value_artists.isObject()) { - Error("Json artists is not an object.", json_obj); + Error(QStringLiteral("Json artists is not an object."), json_obj); ArtistsFinishCheck(); return; } QJsonObject obj_artists = value_artists.toObject(); - if (!obj_artists.contains("limit") || - !obj_artists.contains("offset") || - !obj_artists.contains("total") || - !obj_artists.contains("items")) { + if (!obj_artists.contains(QStringLiteral("limit")) || + !obj_artists.contains(QStringLiteral("offset")) || + !obj_artists.contains(QStringLiteral("total")) || + !obj_artists.contains(QStringLiteral("items"))) { ArtistsFinishCheck(); - Error("Json artists object is missing values.", json_obj); + Error(QStringLiteral("Json artists object is missing values."), json_obj); return; } //int limit = obj_artists["limit"].toInt(); - int offset = obj_artists["offset"].toInt(); - int artists_total = obj_artists["total"].toInt(); + int offset = obj_artists[QStringLiteral("offset")].toInt(); + int artists_total = obj_artists[QStringLiteral("total")].toInt(); if (offset_requested == 0) { artists_total_ = artists_total; } else if (artists_total != artists_total_) { - Error(QString("total returned does not match previous total! %1 != %2").arg(artists_total).arg(artists_total_)); + Error(QStringLiteral("total returned does not match previous total! %1 != %2").arg(artists_total).arg(artists_total_)); ArtistsFinishCheck(); return; } if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); ArtistsFinishCheck(); return; } @@ -482,33 +482,33 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re ++artists_received; if (!value_item.isObject()) { - Error("Invalid Json reply, item not a object."); + Error(QStringLiteral("Invalid Json reply, item not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (obj_item.contains("item")) { - QJsonValue json_item = obj_item["item"]; + if (obj_item.contains(QStringLiteral("item"))) { + QJsonValue json_item = obj_item[QStringLiteral("item")]; if (!json_item.isObject()) { - Error("Invalid Json reply, item not a object.", json_item); + Error(QStringLiteral("Invalid Json reply, item not a object."), json_item); continue; } obj_item = json_item.toObject(); } - if (!obj_item.contains("id") || !obj_item.contains("name")) { - Error("Invalid Json reply, item missing id or album.", obj_item); + if (!obj_item.contains(QStringLiteral("id")) || !obj_item.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, item missing id or album."), obj_item); continue; } Artist artist; - if (obj_item["id"].isString()) { - artist.artist_id = obj_item["id"].toString(); + if (obj_item[QStringLiteral("id")].isString()) { + artist.artist_id = obj_item[QStringLiteral("id")].toString(); } else { - artist.artist_id = QString::number(obj_item["id"].toInt()); + artist.artist_id = QString::number(obj_item[QStringLiteral("id")].toInt()); } - artist.artist = obj_item["name"].toString(); + artist.artist = obj_item[QStringLiteral("name")].toString(); if (artist_albums_requests_pending_.contains(artist.artist_id)) continue; @@ -589,7 +589,7 @@ void QobuzRequest::FlushArtistAlbumsRequests() { << Param("extra", "albums"); if (request.offset > 0) params << Param("offset", QString::number(request.offset)); - QNetworkReply *reply = CreateRequest(QString("artist/get"), params); + QNetworkReply *reply = CreateRequest(QStringLiteral("artist/get"), params); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { ArtistAlbumsReplyReceived(reply, request.artist, request.offset); }); replies_ << reply; @@ -632,50 +632,50 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req Artist artist = artist_requested; - if (json_obj.contains("id") && json_obj.contains("name")) { - if (json_obj["id"].isString()) { - artist.artist_id = json_obj["id"].toString(); + if (json_obj.contains(QStringLiteral("id")) && json_obj.contains(QStringLiteral("name"))) { + if (json_obj[QStringLiteral("id")].isString()) { + artist.artist_id = json_obj[QStringLiteral("id")].toString(); } else { - artist.artist_id = QString::number(json_obj["id"].toInt()); + artist.artist_id = QString::number(json_obj[QStringLiteral("id")].toInt()); } - artist.artist = json_obj["name"].toString(); + artist.artist = json_obj[QStringLiteral("name")].toString(); } if (artist.artist_id != artist_requested.artist_id) { AlbumsFinishCheck(artist_requested); - Error("Artist ID returned does not match artist ID requested.", json_obj); + Error(QStringLiteral("Artist ID returned does not match artist ID requested."), json_obj); return; } - if (!json_obj.contains("albums")) { + if (!json_obj.contains(QStringLiteral("albums"))) { AlbumsFinishCheck(artist_requested); - Error("Json object is missing albums.", json_obj); + Error(QStringLiteral("Json object is missing albums."), json_obj); return; } - QJsonValue value_albums = json_obj["albums"]; + QJsonValue value_albums = json_obj[QStringLiteral("albums")]; if (!value_albums.isObject()) { - Error("Json albums is not an object.", json_obj); + Error(QStringLiteral("Json albums is not an object."), json_obj); AlbumsFinishCheck(artist_requested); return; } QJsonObject obj_albums = value_albums.toObject(); - if (!obj_albums.contains("limit") || - !obj_albums.contains("offset") || - !obj_albums.contains("total") || - !obj_albums.contains("items")) { + if (!obj_albums.contains(QStringLiteral("limit")) || + !obj_albums.contains(QStringLiteral("offset")) || + !obj_albums.contains(QStringLiteral("total")) || + !obj_albums.contains(QStringLiteral("items"))) { AlbumsFinishCheck(artist_requested); - Error("Json albums object is missing values.", json_obj); + Error(QStringLiteral("Json albums object is missing values."), json_obj); return; } //int limit = obj_albums["limit"].toInt(); - int offset = obj_albums["offset"].toInt(); - int albums_total = obj_albums["total"].toInt(); + int offset = obj_albums[QStringLiteral("offset")].toInt(); + int albums_total = obj_albums[QStringLiteral("total")].toInt(); if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); AlbumsFinishCheck(artist_requested); return; } @@ -700,46 +700,46 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req ++albums_received; if (!value_item.isObject()) { - Error("Invalid Json reply, item in array is not a object."); + Error(QStringLiteral("Invalid Json reply, item in array is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (!obj_item.contains("artist") || !obj_item.contains("title") || !obj_item.contains("id")) { - Error("Invalid Json reply, item missing artist, title or id.", obj_item); + if (!obj_item.contains(QStringLiteral("artist")) || !obj_item.contains(QStringLiteral("title")) || !obj_item.contains(QStringLiteral("id"))) { + Error(QStringLiteral("Invalid Json reply, item missing artist, title or id."), obj_item); continue; } Album album; - if (obj_item["id"].isString()) { - album.album_id = obj_item["id"].toString(); + if (obj_item[QStringLiteral("id")].isString()) { + album.album_id = obj_item[QStringLiteral("id")].toString(); } else { - album.album_id = QString::number(obj_item["id"].toInt()); + album.album_id = QString::number(obj_item[QStringLiteral("id")].toInt()); } - album.album = obj_item["title"].toString(); + album.album = obj_item[QStringLiteral("title")].toString(); if (album_songs_requests_pending_.contains(album.album_id)) continue; - QJsonValue value_artist = obj_item["artist"]; + QJsonValue value_artist = obj_item[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, item artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, item artist is not a object."), value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("id") || !obj_artist.contains("name")) { - Error("Invalid Json reply, item artist missing id or name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("id")) || !obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, item artist missing id or name."), obj_artist); continue; } Artist album_artist; - if (obj_artist["id"].isString()) { - album_artist.artist_id = obj_artist["id"].toString(); + if (obj_artist[QStringLiteral("id")].isString()) { + album_artist.artist_id = obj_artist[QStringLiteral("id")].toString(); } else { - album_artist.artist_id = QString::number(obj_artist["id"].toInt()); + album_artist.artist_id = QString::number(obj_artist[QStringLiteral("id")].toInt()); } - album_artist.artist = obj_artist["name"].toString(); + album_artist.artist = obj_artist[QStringLiteral("name")].toString(); if (!artist_requested.artist_id.isEmpty() && album_artist.artist_id != artist_requested.artist_id) { qLog(Debug) << "Skipping artist" << album_artist.artist << album_artist.artist_id << "does not match album artist" << artist_requested.artist_id << artist_requested.artist; @@ -844,7 +844,7 @@ void QobuzRequest::FlushAlbumSongsRequests() { AlbumSongsRequest request = album_songs_requests_queue_.dequeue(); ParamList params = ParamList() << Param("album_id", request.album.album_id); if (request.offset > 0) params << Param("offset", QString::number(request.offset)); - QNetworkReply *reply = CreateRequest(QString("album/get"), params); + QNetworkReply *reply = CreateRequest(QStringLiteral("album/get"), params); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist, request.album, request.offset); }); @@ -887,8 +887,8 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ return; } - if (!json_obj.contains("tracks")) { - Error("Json object is missing tracks.", json_obj); + if (!json_obj.contains(QStringLiteral("tracks"))) { + Error(QStringLiteral("Json object is missing tracks."), json_obj); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } @@ -896,80 +896,80 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ Artist album_artist = artist_requested; Album album = album_requested; - if (json_obj.contains("id") && json_obj.contains("title")) { - if (json_obj["id"].isString()) { - album.album_id = json_obj["id"].toString(); + if (json_obj.contains(QStringLiteral("id")) && json_obj.contains(QStringLiteral("title"))) { + if (json_obj[QStringLiteral("id")].isString()) { + album.album_id = json_obj[QStringLiteral("id")].toString(); } else { - album.album_id = QString::number(json_obj["id"].toInt()); + album.album_id = QString::number(json_obj[QStringLiteral("id")].toInt()); } - album.album = json_obj["title"].toString(); + album.album = json_obj[QStringLiteral("title")].toString(); } - if (json_obj.contains("artist")) { - QJsonValue value_artist = json_obj["artist"]; + if (json_obj.contains(QStringLiteral("artist"))) { + QJsonValue value_artist = json_obj[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, album artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, album artist is not a object."), value_artist); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("id") || !obj_artist.contains("name")) { - Error("Invalid Json reply, album artist is missing id or name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("id")) || !obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, album artist is missing id or name."), obj_artist); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } - if (obj_artist["id"].isString()) { - album_artist.artist_id = obj_artist["id"].toString(); + if (obj_artist[QStringLiteral("id")].isString()) { + album_artist.artist_id = obj_artist[QStringLiteral("id")].toString(); } else { - album_artist.artist_id = QString::number(obj_artist["id"].toInt()); + album_artist.artist_id = QString::number(obj_artist[QStringLiteral("id")].toInt()); } - album_artist.artist = obj_artist["name"].toString(); + album_artist.artist = obj_artist[QStringLiteral("name")].toString(); } - if (json_obj.contains("image")) { - QJsonValue value_image = json_obj["image"]; + if (json_obj.contains(QStringLiteral("image"))) { + QJsonValue value_image = json_obj[QStringLiteral("image")]; if (!value_image.isObject()) { - Error("Invalid Json reply, album image is not a object.", value_image); + Error(QStringLiteral("Invalid Json reply, album image is not a object."), value_image); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("large")) { - Error("Invalid Json reply, album image is missing large.", obj_image); + if (!obj_image.contains(QStringLiteral("large"))) { + Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } - QString album_image = obj_image["large"].toString(); + QString album_image = obj_image[QStringLiteral("large")].toString(); if (!album_image.isEmpty()) { album.cover_url = QUrl(album_image); } } - QJsonValue value_tracks = json_obj["tracks"]; + QJsonValue value_tracks = json_obj[QStringLiteral("tracks")]; if (!value_tracks.isObject()) { - Error("Json tracks is not an object.", json_obj); + Error(QStringLiteral("Json tracks is not an object."), json_obj); SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); return; } QJsonObject obj_tracks = value_tracks.toObject(); - if (!obj_tracks.contains("limit") || - !obj_tracks.contains("offset") || - !obj_tracks.contains("total") || - !obj_tracks.contains("items")) { + if (!obj_tracks.contains(QStringLiteral("limit")) || + !obj_tracks.contains(QStringLiteral("offset")) || + !obj_tracks.contains(QStringLiteral("total")) || + !obj_tracks.contains(QStringLiteral("items"))) { SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested); - Error("Json songs object is missing values.", json_obj); + Error(QStringLiteral("Json songs object is missing values."), json_obj); return; } //int limit = obj_tracks["limit"].toInt(); - int offset = obj_tracks["offset"].toInt(); - int songs_total = obj_tracks["total"].toInt(); + int offset = obj_tracks[QStringLiteral("offset")].toInt(); + int songs_total = obj_tracks[QStringLiteral("total")].toInt(); if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); SongsFinishCheck(album_artist, album, limit_requested, offset_requested, songs_total); return; } @@ -996,7 +996,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ for (const QJsonValueRef value_item : array_items) { if (!value_item.isObject()) { - Error("Invalid Json reply, track is not a object."); + Error(QStringLiteral("Invalid Json reply, track is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); @@ -1059,126 +1059,126 @@ void QobuzRequest::SongsFinishCheck(const Artist &artist, const Album &album, co void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Artist &album_artist, const Album &album) { if ( - !json_obj.contains("id") || - !json_obj.contains("title") || - !json_obj.contains("track_number") || - !json_obj.contains("duration") || - !json_obj.contains("copyright") || - !json_obj.contains("streamable") + !json_obj.contains(QStringLiteral("id")) || + !json_obj.contains(QStringLiteral("title")) || + !json_obj.contains(QStringLiteral("track_number")) || + !json_obj.contains(QStringLiteral("duration")) || + !json_obj.contains(QStringLiteral("copyright")) || + !json_obj.contains(QStringLiteral("streamable")) ) { - Error("Invalid Json reply, track is missing one or more values.", json_obj); + Error(QStringLiteral("Invalid Json reply, track is missing one or more values."), json_obj); return; } QString song_id; - if (json_obj["id"].isString()) { - song_id = json_obj["id"].toString(); + if (json_obj[QStringLiteral("id")].isString()) { + song_id = json_obj[QStringLiteral("id")].toString(); } else { - song_id = QString::number(json_obj["id"].toInt()); + song_id = QString::number(json_obj[QStringLiteral("id")].toInt()); } - QString title = json_obj["title"].toString(); - int track = json_obj["track_number"].toInt(); + QString title = json_obj[QStringLiteral("title")].toString(); + int track = json_obj[QStringLiteral("track_number")].toInt(); int disc = 0; - QString copyright = json_obj["copyright"].toString(); - qint64 duration = json_obj["duration"].toInt() * kNsecPerSec; + QString copyright = json_obj[QStringLiteral("copyright")].toString(); + qint64 duration = json_obj[QStringLiteral("duration")].toInt() * kNsecPerSec; //bool streamable = json_obj["streamable"].toBool(); QString composer; QString performer; - if (json_obj.contains("media_number")) { - disc = json_obj["media_number"].toInt(); + if (json_obj.contains(QStringLiteral("media_number"))) { + disc = json_obj[QStringLiteral("media_number")].toInt(); } Artist song_artist = album_artist; Album song_album = album; - if (json_obj.contains("album")) { + if (json_obj.contains(QStringLiteral("album"))) { - QJsonValue value_album = json_obj["album"]; + QJsonValue value_album = json_obj[QStringLiteral("album")]; if (!value_album.isObject()) { - Error("Invalid Json reply, album is not an object.", value_album); + Error(QStringLiteral("Invalid Json reply, album is not an object."), value_album); return; } QJsonObject obj_album = value_album.toObject(); - if (obj_album.contains("id")) { - if (obj_album["id"].isString()) { - song_album.album_id = obj_album["id"].toString(); + if (obj_album.contains(QStringLiteral("id"))) { + if (obj_album[QStringLiteral("id")].isString()) { + song_album.album_id = obj_album[QStringLiteral("id")].toString(); } else { - song_album.album_id = QString::number(obj_album["id"].toInt()); + song_album.album_id = QString::number(obj_album[QStringLiteral("id")].toInt()); } } - if (obj_album.contains("title")) { - song_album.album = obj_album["title"].toString(); + if (obj_album.contains(QStringLiteral("title"))) { + song_album.album = obj_album[QStringLiteral("title")].toString(); } - if (obj_album.contains("artist")) { - QJsonValue value_artist = obj_album["artist"]; + if (obj_album.contains(QStringLiteral("artist"))) { + QJsonValue value_artist = obj_album[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, album artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, album artist is not a object."), value_artist); return; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("id") || !obj_artist.contains("name")) { - Error("Invalid Json reply, album artist is missing id or name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("id")) || !obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, album artist is missing id or name."), obj_artist); return; } - if (obj_artist["id"].isString()) { - song_artist.artist_id = obj_artist["id"].toString(); + if (obj_artist[QStringLiteral("id")].isString()) { + song_artist.artist_id = obj_artist[QStringLiteral("id")].toString(); } else { - song_artist.artist_id = QString::number(obj_artist["id"].toInt()); + song_artist.artist_id = QString::number(obj_artist[QStringLiteral("id")].toInt()); } - song_artist.artist = obj_artist["name"].toString(); + song_artist.artist = obj_artist[QStringLiteral("name")].toString(); } - if (obj_album.contains("image")) { - QJsonValue value_image = obj_album["image"]; + if (obj_album.contains(QStringLiteral("image"))) { + QJsonValue value_image = obj_album[QStringLiteral("image")]; if (!value_image.isObject()) { - Error("Invalid Json reply, album image is not a object.", value_image); + Error(QStringLiteral("Invalid Json reply, album image is not a object."), value_image); return; } QJsonObject obj_image = value_image.toObject(); - if (!obj_image.contains("large")) { - Error("Invalid Json reply, album image is missing large.", obj_image); + if (!obj_image.contains(QStringLiteral("large"))) { + Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image); return; } - QString album_image = obj_image["large"].toString(); + QString album_image = obj_image[QStringLiteral("large")].toString(); if (!album_image.isEmpty()) { song_album.cover_url.setUrl(album_image); } } } - if (json_obj.contains("composer")) { - QJsonValue value_composer = json_obj["composer"]; + if (json_obj.contains(QStringLiteral("composer"))) { + QJsonValue value_composer = json_obj[QStringLiteral("composer")]; if (!value_composer.isObject()) { - Error("Invalid Json reply, track composer is not a object.", value_composer); + Error(QStringLiteral("Invalid Json reply, track composer is not a object."), value_composer); return; } QJsonObject obj_composer = value_composer.toObject(); - if (!obj_composer.contains("id") || !obj_composer.contains("name")) { - Error("Invalid Json reply, track composer is missing id or name.", obj_composer); + if (!obj_composer.contains(QStringLiteral("id")) || !obj_composer.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, track composer is missing id or name."), obj_composer); return; } - composer = obj_composer["name"].toString(); + composer = obj_composer[QStringLiteral("name")].toString(); } - if (json_obj.contains("performer")) { - QJsonValue value_performer = json_obj["performer"]; + if (json_obj.contains(QStringLiteral("performer"))) { + QJsonValue value_performer = json_obj[QStringLiteral("performer")]; if (!value_performer.isObject()) { - Error("Invalid Json reply, track performer is not a object.", value_performer); + Error(QStringLiteral("Invalid Json reply, track performer is not a object."), value_performer); return; } QJsonObject obj_performer = value_performer.toObject(); - if (!obj_performer.contains("id") || !obj_performer.contains("name")) { - Error("Invalid Json reply, track performer is missing id or name.", obj_performer); + if (!obj_performer.contains(QStringLiteral("id")) || !obj_performer.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, track performer is missing id or name."), obj_performer); return; } - performer = obj_performer["name"].toString(); + performer = obj_performer[QStringLiteral("name")].toString(); } //if (!streamable) { @@ -1327,14 +1327,14 @@ void QobuzRequest::AlbumCoverReceived(QNetworkReply *reply, const QUrl &cover_ur } if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); AlbumCoverFinishCheck(); return; } if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(cover_url.toString())); + Error(QStringLiteral("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(cover_url.toString())); if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); AlbumCoverFinishCheck(); return; @@ -1345,7 +1345,7 @@ void QobuzRequest::AlbumCoverReceived(QNetworkReply *reply, const QUrl &cover_ur mimetype = mimetype.left(mimetype.indexOf(';')); } if (!ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) && !ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) { - Error(QString("Unsupported mimetype for image reader %1 for %2").arg(mimetype, cover_url.toString())); + Error(QStringLiteral("Unsupported mimetype for image reader %1 for %2").arg(mimetype, cover_url.toString())); if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); AlbumCoverFinishCheck(); return; @@ -1353,7 +1353,7 @@ void QobuzRequest::AlbumCoverReceived(QNetworkReply *reply, const QUrl &cover_ur QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error(QString("Received empty image data for %1").arg(cover_url.toString())); + Error(QStringLiteral("Received empty image data for %1").arg(cover_url.toString())); if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); AlbumCoverFinishCheck(); return; @@ -1376,13 +1376,13 @@ void QobuzRequest::AlbumCoverReceived(QNetworkReply *reply, const QUrl &cover_ur } } else { - Error(QString("Error saving image data to %1").arg(filename)); + Error(QStringLiteral("Error saving image data to %1").arg(filename)); if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); } } else { if (album_covers_requests_sent_.contains(cover_url)) album_covers_requests_sent_.remove(cover_url); - Error(QString("Error decoding image data from %1").arg(cover_url.toString())); + Error(QStringLiteral("Error decoding image data from %1").arg(cover_url.toString())); } AlbumCoverFinishCheck(); diff --git a/src/qobuz/qobuzservice.cpp b/src/qobuz/qobuzservice.cpp index d33256fb..0ab02c58 100644 --- a/src/qobuz/qobuzservice.cpp +++ b/src/qobuz/qobuzservice.cpp @@ -77,7 +77,7 @@ constexpr char QobuzService::kAlbumsSongsFtsTable[] = "qobuz_albums_songs_fts"; constexpr char QobuzService::kSongsFtsTable[] = "qobuz_songs_fts"; QobuzService::QobuzService(Application *app, QObject *parent) - : InternetService(Song::Source::Qobuz, "Qobuz", "qobuz", QobuzSettingsPage::kSettingsGroup, SettingsDialog::Page::Qobuz, app, parent), + : InternetService(Song::Source::Qobuz, QStringLiteral("Qobuz"), QStringLiteral("qobuz"), QobuzSettingsPage::kSettingsGroup, SettingsDialog::Page::Qobuz, app, parent), app_(app), network_(app->network()), url_handler_(new QobuzUrlHandler(app, this)), @@ -338,7 +338,7 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - LoginError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + LoginError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); return; } else { @@ -348,18 +348,18 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - login_errors_ << QString("%1 (%2)").arg(message).arg(code); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + login_errors_ << QStringLiteral("%1 (%2)").arg(message).arg(code); } } if (login_errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - login_errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + login_errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - login_errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + login_errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } LoginError(); @@ -374,82 +374,82 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - LoginError("Authentication reply from server missing Json data."); + LoginError(QStringLiteral("Authentication reply from server missing Json data.")); return; } if (json_doc.isEmpty()) { - LoginError("Authentication reply from server has empty Json document."); + LoginError(QStringLiteral("Authentication reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - LoginError("Authentication reply from server has Json document that is not an object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - LoginError("Authentication reply from server has empty Json object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("user_auth_token")) { - LoginError("Authentication reply from server is missing user_auth_token", json_obj); + if (!json_obj.contains(QStringLiteral("user_auth_token"))) { + LoginError(QStringLiteral("Authentication reply from server is missing user_auth_token"), json_obj); return; } - user_auth_token_ = json_obj["user_auth_token"].toString(); + user_auth_token_ = json_obj[QStringLiteral("user_auth_token")].toString(); - if (!json_obj.contains("user")) { - LoginError("Authentication reply from server is missing user", json_obj); + if (!json_obj.contains(QStringLiteral("user"))) { + LoginError(QStringLiteral("Authentication reply from server is missing user"), json_obj); return; } - QJsonValue value_user = json_obj["user"]; + QJsonValue value_user = json_obj[QStringLiteral("user")]; if (!value_user.isObject()) { - LoginError("Authentication reply user is not a object", json_obj); + LoginError(QStringLiteral("Authentication reply user is not a object"), json_obj); return; } QJsonObject obj_user = value_user.toObject(); - if (!obj_user.contains("id")) { - LoginError("Authentication reply from server is missing user id", obj_user); + if (!obj_user.contains(QStringLiteral("id"))) { + LoginError(QStringLiteral("Authentication reply from server is missing user id"), obj_user); return; } - user_id_ = obj_user["id"].toInt(); + user_id_ = obj_user[QStringLiteral("id")].toInt(); - if (!obj_user.contains("device")) { - LoginError("Authentication reply from server is missing user device", obj_user); + if (!obj_user.contains(QStringLiteral("device"))) { + LoginError(QStringLiteral("Authentication reply from server is missing user device"), obj_user); return; } - QJsonValue value_device = obj_user["device"]; + QJsonValue value_device = obj_user[QStringLiteral("device")]; if (!value_device.isObject()) { - LoginError("Authentication reply from server user device is not a object", value_device); + LoginError(QStringLiteral("Authentication reply from server user device is not a object"), value_device); return; } QJsonObject obj_device = value_device.toObject(); - if (!obj_device.contains("device_manufacturer_id")) { - LoginError("Authentication reply from server device is missing device_manufacturer_id", obj_device); + if (!obj_device.contains(QStringLiteral("device_manufacturer_id"))) { + LoginError(QStringLiteral("Authentication reply from server device is missing device_manufacturer_id"), obj_device); return; } - device_id_ = obj_device["device_manufacturer_id"].toString(); + device_id_ = obj_device[QStringLiteral("device_manufacturer_id")].toString(); - if (!obj_user.contains("credential")) { - LoginError("Authentication reply from server is missing user credential", obj_user); + if (!obj_user.contains(QStringLiteral("credential"))) { + LoginError(QStringLiteral("Authentication reply from server is missing user credential"), obj_user); return; } - QJsonValue value_credential = obj_user["credential"]; + QJsonValue value_credential = obj_user[QStringLiteral("credential")]; if (!value_credential.isObject()) { - LoginError("Authentication reply from serve userr credential is not a object", value_device); + LoginError(QStringLiteral("Authentication reply from serve userr credential is not a object"), value_device); return; } QJsonObject obj_credential = value_credential.toObject(); - if (!obj_credential.contains("id")) { - LoginError("Authentication reply user credential from server is missing user credential id", obj_credential); + if (!obj_credential.contains(QStringLiteral("id"))) { + LoginError(QStringLiteral("Authentication reply user credential from server is missing user credential id"), obj_credential); return; } - credential_id_ = obj_credential["id"].toInt(); + credential_id_ = obj_credential[QStringLiteral("id")].toInt(); QSettings s; s.beginGroup(QobuzSettingsPage::kSettingsGroup); diff --git a/src/qobuz/qobuzstreamurlrequest.cpp b/src/qobuz/qobuzstreamurlrequest.cpp index 4c733853..dd410dc6 100644 --- a/src/qobuz/qobuzstreamurlrequest.cpp +++ b/src/qobuz/qobuzstreamurlrequest.cpp @@ -121,7 +121,7 @@ void QobuzStreamURLRequest::GetStreamURL() { std::sort(params_to_sign.begin(), params_to_sign.end()); QString data_to_sign; - data_to_sign += "trackgetFileUrl"; + data_to_sign += QLatin1String("trackgetFileUrl"); for (const Param ¶m : params_to_sign) { data_to_sign += param.first + param.second; } @@ -138,7 +138,7 @@ void QobuzStreamURLRequest::GetStreamURL() { std::sort(params.begin(), params.end()); - reply_ = CreateRequest(QString("track/getFileUrl"), params); + reply_ = CreateRequest(QStringLiteral("track/getFileUrl"), params); QObject::connect(reply_, &QNetworkReply::finished, this, &QobuzStreamURLRequest::StreamURLReceived); } @@ -168,27 +168,27 @@ void QobuzStreamURLRequest::StreamURLReceived() { return; } - if (!json_obj.contains("track_id")) { - Error("Invalid Json reply, stream url is missing track_id.", json_obj); + if (!json_obj.contains(QStringLiteral("track_id"))) { + Error(QStringLiteral("Invalid Json reply, stream url is missing track_id."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } - int track_id = json_obj["track_id"].toInt(); + int track_id = json_obj[QStringLiteral("track_id")].toInt(); if (track_id != song_id_) { - Error("Incorrect track ID returned.", json_obj); + Error(QStringLiteral("Incorrect track ID returned."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } - if (!json_obj.contains("mime_type") || !json_obj.contains("url")) { - Error("Invalid Json reply, stream url is missing url or mime_type.", json_obj); + if (!json_obj.contains(QStringLiteral("mime_type")) || !json_obj.contains(QStringLiteral("url"))) { + Error(QStringLiteral("Invalid Json reply, stream url is missing url or mime_type."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } - QUrl url(json_obj["url"].toString()); - QString mimetype = json_obj["mime_type"].toString(); + QUrl url(json_obj[QStringLiteral("url")].toString()); + QString mimetype = json_obj[QStringLiteral("mime_type")].toString(); Song::FileType filetype(Song::FileType::Unknown); QMimeDatabase mimedb; @@ -203,22 +203,22 @@ void QobuzStreamURLRequest::StreamURLReceived() { } if (!url.isValid()) { - Error("Returned stream url is invalid.", json_obj); + Error(QStringLiteral("Returned stream url is invalid."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } qint64 duration = -1; - if (json_obj.contains("duration")) { - duration = json_obj["duration"].toInt() * kNsecPerSec; + if (json_obj.contains(QStringLiteral("duration"))) { + duration = json_obj[QStringLiteral("duration")].toInt() * kNsecPerSec; } int samplerate = -1; - if (json_obj.contains("sampling_rate")) { - samplerate = static_cast(json_obj["sampling_rate"].toDouble()) * 1000; + if (json_obj.contains(QStringLiteral("sampling_rate"))) { + samplerate = static_cast(json_obj[QStringLiteral("sampling_rate")].toDouble()) * 1000; } int bit_depth = -1; - if (json_obj.contains("bit_depth")) { - bit_depth = static_cast(json_obj["bit_depth"].toDouble()); + if (json_obj.contains(QStringLiteral("bit_depth"))) { + bit_depth = static_cast(json_obj[QStringLiteral("bit_depth")].toDouble()); } emit StreamURLSuccess(id_, media_url_, url, filetype, samplerate, bit_depth, duration); diff --git a/src/qobuz/qobuzurlhandler.cpp b/src/qobuz/qobuzurlhandler.cpp index deb21d9b..9637a8ed 100644 --- a/src/qobuz/qobuzurlhandler.cpp +++ b/src/qobuz/qobuzurlhandler.cpp @@ -42,7 +42,7 @@ QobuzUrlHandler::QobuzUrlHandler(Application *app, QobuzService *service) UrlHandler::LoadResult QobuzUrlHandler::StartLoading(const QUrl &url) { Request req; - req.task_id = app_->task_manager()->StartTask(QString("Loading %1 stream...").arg(url.scheme())); + req.task_id = app_->task_manager()->StartTask(QStringLiteral("Loading %1 stream...").arg(url.scheme())); QString error; req.id = service_->GetStreamURL(url, error); if (req.id == 0) { diff --git a/src/queue/queue.cpp b/src/queue/queue.cpp index 4cc7cdd4..5f93f281 100644 --- a/src/queue/queue.cpp +++ b/src/queue/queue.cpp @@ -158,7 +158,7 @@ QVariant Queue::data(const QModelIndex &proxy_index, int role) const { const QString title = source_index.sibling(source_index.row(), Playlist::Column_Title).data().toString(); if (artist.isEmpty()) return title; - return QString("%1 - %2").arg(artist, title); + return QStringLiteral("%1 - %2").arg(artist, title); } default: diff --git a/src/queue/queueview.cpp b/src/queue/queueview.cpp index 527b7c0e..d5ec1c07 100644 --- a/src/queue/queueview.cpp +++ b/src/queue/queueview.cpp @@ -53,10 +53,10 @@ QueueView::QueueView(QWidget *parent) ui_->list->setItemDelegate(new QueuedItemDelegate(this, 0)); // Set icons on buttons - ui_->move_down->setIcon(IconLoader::Load("go-down")); - ui_->move_up->setIcon(IconLoader::Load("go-up")); - ui_->remove->setIcon(IconLoader::Load("edit-delete")); - ui_->clear->setIcon(IconLoader::Load("edit-clear-list")); + ui_->move_down->setIcon(IconLoader::Load(QStringLiteral("go-down"))); + ui_->move_up->setIcon(IconLoader::Load(QStringLiteral("go-up"))); + ui_->remove->setIcon(IconLoader::Load(QStringLiteral("edit-delete"))); + ui_->clear->setIcon(IconLoader::Load(QStringLiteral("edit-clear-list"))); // Set a standard shortcut ui_->remove->setShortcut(QKeySequence::Delete); diff --git a/src/radios/radiobackend.cpp b/src/radios/radiobackend.cpp index be7a53af..64804921 100644 --- a/src/radios/radiobackend.cpp +++ b/src/radios/radiobackend.cpp @@ -67,13 +67,13 @@ void RadioBackend::AddChannels(const RadioChannelList &channels) { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare(QString("INSERT INTO radio_channels (source, name, url, thumbnail_url) VALUES (:source, :name, :url, :thumbnail_url)")); + q.prepare(QStringLiteral("INSERT INTO radio_channels (source, name, url, thumbnail_url) VALUES (:source, :name, :url, :thumbnail_url)")); for (const RadioChannel &channel : channels) { - q.BindValue(":source", static_cast(channel.source)); - q.BindValue(":name", channel.name); - q.BindValue(":url", channel.url); - q.BindValue(":thumbnail_url", channel.thumbnail_url); + q.BindValue(QStringLiteral(":source"), static_cast(channel.source)); + q.BindValue(QStringLiteral(":name"), channel.name); + q.BindValue(QStringLiteral(":url"), channel.url); + q.BindValue(QStringLiteral(":thumbnail_url"), channel.thumbnail_url); if (!q.Exec()) { db_->ReportErrors(q); return; @@ -96,7 +96,7 @@ void RadioBackend::GetChannels() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("SELECT source, name, url, thumbnail_url FROM radio_channels"); + q.prepare(QStringLiteral("SELECT source, name, url, thumbnail_url FROM radio_channels")); if (!q.Exec()) { db_->ReportErrors(q); @@ -127,7 +127,7 @@ void RadioBackend::DeleteChannels() { QSqlDatabase db(db_->Connect()); SqlQuery q(db); - q.prepare("DELETE FROM radio_channels"); + q.prepare(QStringLiteral("DELETE FROM radio_channels")); if (!q.Exec()) { db_->ReportErrors(q); diff --git a/src/radios/radiomodel.cpp b/src/radios/radiomodel.cpp index 7cbc7157..16b41956 100644 --- a/src/radios/radiomodel.cpp +++ b/src/radios/radiomodel.cpp @@ -125,7 +125,7 @@ QVariant RadioModel::data(const RadioItem *item, int role) const { } QStringList RadioModel::mimeTypes() const { - return QStringList() << "text/uri-list"; + return QStringList() << QStringLiteral("text/uri-list"); } QMimeData *RadioModel::mimeData(const QModelIndexList &indexes) const { @@ -330,12 +330,12 @@ void RadioModel::AlbumCoverLoaded(const quint64 id, const AlbumCoverLoaderResult QString RadioModel::SortText(QString text) { if (text.isEmpty()) { - text = " unknown"; + text = QStringLiteral(" unknown"); } else { text = text.toLower(); } - text = text.remove(QRegularExpression("[^\\w ]", QRegularExpression::UseUnicodePropertiesOption)); + text = text.remove(QRegularExpression(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption)); return text; diff --git a/src/radios/radioparadiseservice.cpp b/src/radios/radioparadiseservice.cpp index 3ff54792..2afa7174 100644 --- a/src/radios/radioparadiseservice.cpp +++ b/src/radios/radioparadiseservice.cpp @@ -35,10 +35,10 @@ const char *RadioParadiseService::kApiChannelsUrl = "https://api.radioparadise.com/api/list_streams"; RadioParadiseService::RadioParadiseService(Application *app, SharedPtr network, QObject *parent) - : RadioService(Song::Source::RadioParadise, "Radio Paradise", IconLoader::Load("radioparadise"), app, network, parent) {} + : RadioService(Song::Source::RadioParadise, QStringLiteral("Radio Paradise"), IconLoader::Load(QStringLiteral("radioparadise")), app, network, parent) {} -QUrl RadioParadiseService::Homepage() { return QUrl("https://radioparadise.com/"); } -QUrl RadioParadiseService::Donate() { return QUrl("https://payments.radioparadise.com/rp2s-content.php?name=Support&file=support"); } +QUrl RadioParadiseService::Homepage() { return QUrl(QStringLiteral("https://radioparadise.com/")); } +QUrl RadioParadiseService::Donate() { return QUrl(QStringLiteral("https://payments.radioparadise.com/rp2s-content.php?name=Support&file=support")); } void RadioParadiseService::Abort() { @@ -78,36 +78,36 @@ void RadioParadiseService::GetChannelsReply(QNetworkReply *reply, const int task return; } - if (!object.contains("channels") || !object["channels"].isArray()) { - Error("Missing JSON channels array.", object); + if (!object.contains(QStringLiteral("channels")) || !object[QStringLiteral("channels")].isArray()) { + Error(QStringLiteral("Missing JSON channels array."), object); app_->task_manager()->SetTaskFinished(task_id); emit NewChannels(); return; } - QJsonArray array_channels = object["channels"].toArray(); + QJsonArray array_channels = object[QStringLiteral("channels")].toArray(); RadioChannelList channels; for (const QJsonValueRef value_channel : array_channels) { if (!value_channel.isObject()) continue; QJsonObject obj_channel = value_channel.toObject(); - if (!obj_channel.contains("chan_name") || !obj_channel.contains("streams")) { + if (!obj_channel.contains(QStringLiteral("chan_name")) || !obj_channel.contains(QStringLiteral("streams"))) { continue; } - QString name = obj_channel["chan_name"].toString(); - QJsonValue value_streams = obj_channel["streams"]; + QString name = obj_channel[QStringLiteral("chan_name")].toString(); + QJsonValue value_streams = obj_channel[QStringLiteral("streams")]; if (!value_streams.isArray()) { continue; } - QJsonArray array_streams = obj_channel["streams"].toArray(); + QJsonArray array_streams = obj_channel[QStringLiteral("streams")].toArray(); for (const QJsonValueRef value_stream : array_streams) { if (!value_stream.isObject()) continue; QJsonObject obj_stream = value_stream.toObject(); - if (!obj_stream.contains("label") || !obj_stream.contains("url")) { + if (!obj_stream.contains(QStringLiteral("label")) || !obj_stream.contains(QStringLiteral("url"))) { continue; } - QString label = obj_stream["label"].toString(); - QString url = obj_stream["url"].toString(); - if (!url.contains(QRegularExpression("^[0-9a-zA-Z]*:\\/\\/", QRegularExpression::CaseInsensitiveOption))) { + QString label = obj_stream[QStringLiteral("label")].toString(); + QString url = obj_stream[QStringLiteral("url")].toString(); + if (!url.contains(QRegularExpression(QStringLiteral("^[0-9a-zA-Z]*:\\/\\/"), QRegularExpression::CaseInsensitiveOption))) { url.prepend("https://"); } RadioChannel channel; diff --git a/src/radios/radioservice.cpp b/src/radios/radioservice.cpp index f3ecc143..39535118 100644 --- a/src/radios/radioservice.cpp +++ b/src/radios/radioservice.cpp @@ -42,13 +42,13 @@ RadioService::RadioService(const Song::Source source, const QString &name, const QByteArray RadioService::ExtractData(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { - Error(QString("Failed to retrieve data from %1: %2 (%3)").arg(name_, reply->errorString()).arg(reply->error())); + Error(QStringLiteral("Failed to retrieve data from %1: %2 (%3)").arg(name_, reply->errorString()).arg(reply->error())); if (reply->error() < 200) { return QByteArray(); } } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); + Error(QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); } return reply->readAll(); @@ -65,23 +65,23 @@ QJsonObject RadioService::ExtractJsonObj(const QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error(QString("Failed to parse Json data from %1: %2").arg(name_, json_error.errorString())); + Error(QStringLiteral("Failed to parse Json data from %1: %2").arg(name_, json_error.errorString())); return QJsonObject(); } if (json_doc.isEmpty()) { - Error(QString("%1: Received empty Json document.").arg(name_), data); + Error(QStringLiteral("%1: Received empty Json document.").arg(name_), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error(QString("%1: Json document is not an object.").arg(name_), json_doc); + Error(QStringLiteral("%1: Json document is not an object.").arg(name_), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error(QString("%1: Received empty Json object.").arg(name_), json_doc); + Error(QStringLiteral("%1: Received empty Json object.").arg(name_), json_doc); return QJsonObject(); } diff --git a/src/radios/radioview.cpp b/src/radios/radioview.cpp index b3d5d0b4..1d8d86ae 100644 --- a/src/radios/radioview.cpp +++ b/src/radios/radioview.cpp @@ -66,27 +66,27 @@ void RadioView::contextMenuEvent(QContextMenuEvent *e) { if (!menu_) { menu_ = new QMenu; - action_playlist_append_ = new QAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this); + action_playlist_append_ = new QAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this); QObject::connect(action_playlist_append_, &QAction::triggered, this, &RadioView::AddToPlaylist); menu_->addAction(action_playlist_append_); - action_playlist_replace_ = new QAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this); + action_playlist_replace_ = new QAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this); QObject::connect(action_playlist_replace_, &QAction::triggered, this, &RadioView::ReplacePlaylist); menu_->addAction(action_playlist_replace_); - action_playlist_new_ = new QAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this); + action_playlist_new_ = new QAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this); QObject::connect(action_playlist_new_, &QAction::triggered, this, &RadioView::OpenInNewPlaylist); menu_->addAction(action_playlist_new_); - action_homepage_ = new QAction(IconLoader::Load("download"), tr("Open homepage"), this); + action_homepage_ = new QAction(IconLoader::Load(QStringLiteral("download")), tr("Open homepage"), this); QObject::connect(action_homepage_, &QAction::triggered, this, &RadioView::Homepage); menu_->addAction(action_homepage_); - action_donate_ = new QAction(IconLoader::Load("download"), tr("Donate"), this); + action_donate_ = new QAction(IconLoader::Load(QStringLiteral("download")), tr("Donate"), this); QObject::connect(action_donate_, &QAction::triggered, this, &RadioView::Donate); menu_->addAction(action_donate_); - menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh channels"), this, &RadioView::GetChannels); + menu_->addAction(IconLoader::Load(QStringLiteral("view-refresh")), tr("Refresh channels"), this, &RadioView::GetChannels); } const bool channels_selected = !selectedIndexes().isEmpty(); diff --git a/src/radios/radioviewcontainer.cpp b/src/radios/radioviewcontainer.cpp index 80803b4d..f7215309 100644 --- a/src/radios/radioviewcontainer.cpp +++ b/src/radios/radioviewcontainer.cpp @@ -34,7 +34,7 @@ RadioViewContainer::RadioViewContainer(QWidget *parent) QObject::connect(ui_->refresh, &QToolButton::clicked, this, &RadioViewContainer::Refresh); - ui_->refresh->setIcon(IconLoader::Load("view-refresh")); + ui_->refresh->setIcon(IconLoader::Load(QStringLiteral("view-refresh"))); ReloadSettings(); diff --git a/src/radios/somafmservice.cpp b/src/radios/somafmservice.cpp index 30aa354f..e29f495a 100644 --- a/src/radios/somafmservice.cpp +++ b/src/radios/somafmservice.cpp @@ -37,14 +37,14 @@ const char *SomaFMService::kApiChannelsUrl = "https://somafm.com/channels.json"; SomaFMService::SomaFMService(Application *app, SharedPtr network, QObject *parent) - : RadioService(Song::Source::SomaFM, "SomaFM", IconLoader::Load("somafm"), app, network, parent) {} + : RadioService(Song::Source::SomaFM, QStringLiteral("SomaFM"), IconLoader::Load(QStringLiteral("somafm")), app, network, parent) {} SomaFMService::~SomaFMService() { Abort(); } -QUrl SomaFMService::Homepage() { return QUrl("https://somafm.com/"); } -QUrl SomaFMService::Donate() { return QUrl("https://somafm.com/support/"); } +QUrl SomaFMService::Homepage() { return QUrl(QStringLiteral("https://somafm.com/")); } +QUrl SomaFMService::Donate() { return QUrl(QStringLiteral("https://somafm.com/support/")); } void SomaFMService::Abort() { @@ -84,39 +84,39 @@ void SomaFMService::GetChannelsReply(QNetworkReply *reply, const int task_id) { return; } - if (!object.contains("channels") || !object["channels"].isArray()) { - Error("Missing JSON channels array.", object); + if (!object.contains(QStringLiteral("channels")) || !object[QStringLiteral("channels")].isArray()) { + Error(QStringLiteral("Missing JSON channels array."), object); app_->task_manager()->SetTaskFinished(task_id); emit NewChannels(); return; } - QJsonArray array_channels = object["channels"].toArray(); + QJsonArray array_channels = object[QStringLiteral("channels")].toArray(); RadioChannelList channels; for (const QJsonValueRef value_channel : array_channels) { if (!value_channel.isObject()) continue; QJsonObject obj_channel = value_channel.toObject(); - if (!obj_channel.contains("title") || !obj_channel.contains("image")) { + if (!obj_channel.contains(QStringLiteral("title")) || !obj_channel.contains(QStringLiteral("image"))) { continue; } - QString name = obj_channel["title"].toString(); - QString image = obj_channel["image"].toString(); - QJsonArray playlists = obj_channel["playlists"].toArray(); + QString name = obj_channel[QStringLiteral("title")].toString(); + QString image = obj_channel[QStringLiteral("image")].toString(); + QJsonArray playlists = obj_channel[QStringLiteral("playlists")].toArray(); for (const QJsonValueRef playlist : playlists) { if (!playlist.isObject()) continue; QJsonObject obj_playlist = playlist.toObject(); - if (!obj_playlist.contains("url") || !obj_playlist.contains("quality")) { + if (!obj_playlist.contains(QStringLiteral("url")) || !obj_playlist.contains(QStringLiteral("quality"))) { continue; } RadioChannel channel; - QString quality = obj_playlist["quality"].toString(); + QString quality = obj_playlist[QStringLiteral("quality")].toString(); if (quality != "highest") continue; channel.source = source_; channel.name = name; - channel.url.setUrl(obj_playlist["url"].toString()); + channel.url.setUrl(obj_playlist[QStringLiteral("url")].toString()); channel.thumbnail_url.setUrl(image); - if (obj_playlist.contains("format")) { - channel.name.append(" " + obj_playlist["format"].toString().toUpper()); + if (obj_playlist.contains(QStringLiteral("format"))) { + channel.name.append(" " + obj_playlist[QStringLiteral("format")].toString().toUpper()); } channels << channel; } diff --git a/src/scrobbler/lastfmimport.cpp b/src/scrobbler/lastfmimport.cpp index 1a4c8b20..264efa5f 100644 --- a/src/scrobbler/lastfmimport.cpp +++ b/src/scrobbler/lastfmimport.cpp @@ -142,7 +142,7 @@ QByteArray LastFMImport::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { QString error; @@ -152,18 +152,18 @@ QByteArray LastFMImport::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (json_obj.contains("error") && json_obj.contains("message")) { - int error_code = json_obj["error"].toInt(); - QString error_message = json_obj["message"].toString(); - error = QString("%1 (%2)").arg(error_message).arg(error_code); + if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + int error_code = json_obj[QStringLiteral("error")].toInt(); + QString error_message = json_obj[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(error_message).arg(error_code); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -181,20 +181,20 @@ QJsonObject LastFMImport::ExtractJsonObj(const QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &error); if (error.error != QJsonParseError::NoError) { - Error("Reply from server missing Json data.", data); + Error(QStringLiteral("Reply from server missing Json data."), data); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", json_doc); + Error(QStringLiteral("Received empty Json document."), json_doc); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } @@ -284,62 +284,62 @@ void LastFMImport::GetRecentTracksRequestFinished(QNetworkReply *reply, const in return; } - if (json_obj.contains("error") && json_obj.contains("message")) { - int error_code = json_obj["error"].toInt(); - QString error_message = json_obj["message"].toString(); - QString error_reason = QString("%1 (%2)").arg(error_message).arg(error_code); + if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + int error_code = json_obj[QStringLiteral("error")].toInt(); + QString error_message = json_obj[QStringLiteral("message")].toString(); + QString error_reason = QStringLiteral("%1 (%2)").arg(error_message).arg(error_code); Error(error_reason); return; } - if (!json_obj.contains("recenttracks")) { - Error("JSON reply from server is missing recenttracks.", json_obj); + if (!json_obj.contains(QStringLiteral("recenttracks"))) { + Error(QStringLiteral("JSON reply from server is missing recenttracks."), json_obj); return; } - if (!json_obj["recenttracks"].isObject()) { - Error("Failed to parse JSON: recenttracks is not an object!", json_obj); + if (!json_obj[QStringLiteral("recenttracks")].isObject()) { + Error(QStringLiteral("Failed to parse JSON: recenttracks is not an object!"), json_obj); return; } - json_obj = json_obj["recenttracks"].toObject(); + json_obj = json_obj[QStringLiteral("recenttracks")].toObject(); - if (!json_obj.contains("@attr")) { - Error("JSON reply from server is missing @attr.", json_obj); + if (!json_obj.contains(QStringLiteral("@attr"))) { + Error(QStringLiteral("JSON reply from server is missing @attr."), json_obj); return; } - if (!json_obj.contains("track")) { - Error("JSON reply from server is missing track.", json_obj); + if (!json_obj.contains(QStringLiteral("track"))) { + Error(QStringLiteral("JSON reply from server is missing track."), json_obj); return; } - if (!json_obj["@attr"].isObject()) { - Error("Failed to parse JSON: @attr is not an object.", json_obj); + if (!json_obj[QStringLiteral("@attr")].isObject()) { + Error(QStringLiteral("Failed to parse JSON: @attr is not an object."), json_obj); return; } - if (!json_obj["track"].isArray()) { - Error("Failed to parse JSON: track is not an object.", json_obj); + if (!json_obj[QStringLiteral("track")].isArray()) { + Error(QStringLiteral("Failed to parse JSON: track is not an object."), json_obj); return; } - QJsonObject obj_attr = json_obj["@attr"].toObject(); + QJsonObject obj_attr = json_obj[QStringLiteral("@attr")].toObject(); - if (!obj_attr.contains("page")) { - Error("Failed to parse JSON: attr object is missing page.", json_obj); + if (!obj_attr.contains(QStringLiteral("page"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing page."), json_obj); return; } - if (!obj_attr.contains("totalPages")) { - Error("Failed to parse JSON: attr object is missing totalPages.", json_obj); + if (!obj_attr.contains(QStringLiteral("totalPages"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing totalPages."), json_obj); return; } - if (!obj_attr.contains("total")) { - Error("Failed to parse JSON: attr object is missing total.", json_obj); + if (!obj_attr.contains(QStringLiteral("total"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing total."), json_obj); return; } - int total = obj_attr["total"].toString().toInt(); - int pages = obj_attr["totalPages"].toString().toInt(); + int total = obj_attr[QStringLiteral("total")].toString().toInt(); + int pages = obj_attr[QStringLiteral("totalPages")].toString().toInt(); if (page == 0) { lastplayed_total_ = total; @@ -348,7 +348,7 @@ void LastFMImport::GetRecentTracksRequestFinished(QNetworkReply *reply, const in } else { - QJsonArray array_track = json_obj["track"].toArray(); + QJsonArray array_track = json_obj[QStringLiteral("track")].toArray(); for (const QJsonValueRef value_track : array_track) { @@ -358,30 +358,30 @@ void LastFMImport::GetRecentTracksRequestFinished(QNetworkReply *reply, const in continue; } QJsonObject obj_track = value_track.toObject(); - if (!obj_track.contains("artist") || - !obj_track.contains("album") || - !obj_track.contains("name") || - !obj_track.contains("date") || - !obj_track["artist"].isObject() || - !obj_track["album"].isObject() || - !obj_track["date"].isObject() + if (!obj_track.contains(QStringLiteral("artist")) || + !obj_track.contains(QStringLiteral("album")) || + !obj_track.contains(QStringLiteral("name")) || + !obj_track.contains(QStringLiteral("date")) || + !obj_track[QStringLiteral("artist")].isObject() || + !obj_track[QStringLiteral("album")].isObject() || + !obj_track[QStringLiteral("date")].isObject() ) { continue; } - QJsonObject obj_artist = obj_track["artist"].toObject(); - QJsonObject obj_album = obj_track["album"].toObject(); - QJsonObject obj_date = obj_track["date"].toObject(); + QJsonObject obj_artist = obj_track[QStringLiteral("artist")].toObject(); + QJsonObject obj_album = obj_track[QStringLiteral("album")].toObject(); + QJsonObject obj_date = obj_track[QStringLiteral("date")].toObject(); - if (!obj_artist.contains("#text") || !obj_album.contains("#text") || !obj_date.contains("#text")) { + if (!obj_artist.contains(QStringLiteral("#text")) || !obj_album.contains(QStringLiteral("#text")) || !obj_date.contains(QStringLiteral("#text"))) { continue; } - QString artist = obj_artist["#text"].toString(); - QString album = obj_album["#text"].toString(); - QString date = obj_date["#text"].toString(); - QString title = obj_track["name"].toString(); - QDateTime datetime = QDateTime::fromString(date, "dd MMM yyyy, hh:mm"); + QString artist = obj_artist[QStringLiteral("#text")].toString(); + QString album = obj_album[QStringLiteral("#text")].toString(); + QString date = obj_date[QStringLiteral("#text")].toString(); + QString title = obj_track[QStringLiteral("name")].toString(); + QDateTime datetime = QDateTime::fromString(date, QStringLiteral("dd MMM yyyy, hh:mm")); if (datetime.isValid()) { emit UpdateLastPlayed(artist, album, title, datetime.toSecsSinceEpoch()); } @@ -447,62 +447,62 @@ void LastFMImport::GetTopTracksRequestFinished(QNetworkReply *reply, const int p return; } - if (json_obj.contains("error") && json_obj.contains("message")) { - int error_code = json_obj["error"].toInt(); - QString error_message = json_obj["message"].toString(); - QString error_reason = QString("%1 (%2)").arg(error_message).arg(error_code); + if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + int error_code = json_obj[QStringLiteral("error")].toInt(); + QString error_message = json_obj[QStringLiteral("message")].toString(); + QString error_reason = QStringLiteral("%1 (%2)").arg(error_message).arg(error_code); Error(error_reason); return; } - if (!json_obj.contains("toptracks")) { - Error("JSON reply from server is missing toptracks.", json_obj); + if (!json_obj.contains(QStringLiteral("toptracks"))) { + Error(QStringLiteral("JSON reply from server is missing toptracks."), json_obj); return; } - if (!json_obj["toptracks"].isObject()) { - Error("Failed to parse JSON: toptracks is not an object!", json_obj); + if (!json_obj[QStringLiteral("toptracks")].isObject()) { + Error(QStringLiteral("Failed to parse JSON: toptracks is not an object!"), json_obj); return; } - json_obj = json_obj["toptracks"].toObject(); + json_obj = json_obj[QStringLiteral("toptracks")].toObject(); - if (!json_obj.contains("@attr")) { - Error("JSON reply from server is missing @attr.", json_obj); + if (!json_obj.contains(QStringLiteral("@attr"))) { + Error(QStringLiteral("JSON reply from server is missing @attr."), json_obj); return; } - if (!json_obj.contains("track")) { - Error("JSON reply from server is missing track.", json_obj); + if (!json_obj.contains(QStringLiteral("track"))) { + Error(QStringLiteral("JSON reply from server is missing track."), json_obj); return; } - if (!json_obj["@attr"].isObject()) { - Error("Failed to parse JSON: @attr is not an object.", json_obj); + if (!json_obj[QStringLiteral("@attr")].isObject()) { + Error(QStringLiteral("Failed to parse JSON: @attr is not an object."), json_obj); return; } - if (!json_obj["track"].isArray()) { - Error("Failed to parse JSON: track is not an object.", json_obj); + if (!json_obj[QStringLiteral("track")].isArray()) { + Error(QStringLiteral("Failed to parse JSON: track is not an object."), json_obj); return; } - QJsonObject obj_attr = json_obj["@attr"].toObject(); + QJsonObject obj_attr = json_obj[QStringLiteral("@attr")].toObject(); - if (!obj_attr.contains("page")) { - Error("Failed to parse JSON: attr object is missing page.", json_obj); + if (!obj_attr.contains(QStringLiteral("page"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing page."), json_obj); return; } - if (!obj_attr.contains("totalPages")) { - Error("Failed to parse JSON: attr object is missing page.", json_obj); + if (!obj_attr.contains(QStringLiteral("totalPages"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing page."), json_obj); return; } - if (!obj_attr.contains("total")) { - Error("Failed to parse JSON: attr object is missing total.", json_obj); + if (!obj_attr.contains(QStringLiteral("total"))) { + Error(QStringLiteral("Failed to parse JSON: attr object is missing total."), json_obj); return; } - int pages = obj_attr["totalPages"].toString().toInt(); - int total = obj_attr["total"].toString().toInt(); + int pages = obj_attr[QStringLiteral("totalPages")].toString().toInt(); + int total = obj_attr[QStringLiteral("total")].toString().toInt(); if (page == 0) { playcount_total_ = total; @@ -511,7 +511,7 @@ void LastFMImport::GetTopTracksRequestFinished(QNetworkReply *reply, const int p } else { - QJsonArray array_track = json_obj["track"].toArray(); + QJsonArray array_track = json_obj[QStringLiteral("track")].toArray(); for (QJsonArray::iterator it = array_track.begin(); it != array_track.end(); ++it) { const QJsonValue &value_track = *it; @@ -523,22 +523,22 @@ void LastFMImport::GetTopTracksRequestFinished(QNetworkReply *reply, const int p } QJsonObject obj_track = value_track.toObject(); - if (!obj_track.contains("artist") || - !obj_track.contains("name") || - !obj_track.contains("playcount") || - !obj_track["artist"].isObject() + if (!obj_track.contains(QStringLiteral("artist")) || + !obj_track.contains(QStringLiteral("name")) || + !obj_track.contains(QStringLiteral("playcount")) || + !obj_track[QStringLiteral("artist")].isObject() ) { continue; } - QJsonObject obj_artist = obj_track["artist"].toObject(); - if (!obj_artist.contains("name")) { + QJsonObject obj_artist = obj_track[QStringLiteral("artist")].toObject(); + if (!obj_artist.contains(QStringLiteral("name"))) { continue; } - QString artist = obj_artist["name"].toString(); - QString title = obj_track["name"].toString(); - int playcount = obj_track["playcount"].toString().toInt(); + QString artist = obj_artist[QStringLiteral("name")].toString(); + QString title = obj_track[QStringLiteral("name")].toString(); + int playcount = obj_track[QStringLiteral("playcount")].toString().toInt(); if (playcount <= 0) continue; diff --git a/src/scrobbler/listenbrainzscrobbler.cpp b/src/scrobbler/listenbrainzscrobbler.cpp index c988c631..19110cfc 100644 --- a/src/scrobbler/listenbrainzscrobbler.cpp +++ b/src/scrobbler/listenbrainzscrobbler.cpp @@ -177,16 +177,16 @@ void ListenBrainzScrobbler::Authenticate() { redirect_url.setPort(server_->url().port()); QUrlQuery url_query; - url_query.addQueryItem("response_type", "code"); - url_query.addQueryItem("client_id", QByteArray::fromBase64(kClientIDB64)); - url_query.addQueryItem("redirect_uri", redirect_url.toString()); - url_query.addQueryItem("scope", "profile;email;tag;rating;collection;submit_isrc;submit_barcode"); + url_query.addQueryItem(QStringLiteral("response_type"), QStringLiteral("code")); + url_query.addQueryItem(QStringLiteral("client_id"), QByteArray::fromBase64(kClientIDB64)); + url_query.addQueryItem(QStringLiteral("redirect_uri"), redirect_url.toString()); + url_query.addQueryItem(QStringLiteral("scope"), QStringLiteral("profile;email;tag;rating;collection;submit_isrc;submit_barcode")); QUrl url(kOAuthAuthorizeUrl); url.setQuery(url_query); bool result = QDesktopServices::openUrl(url); if (!result) { - QMessageBox messagebox(QMessageBox::Information, tr("ListenBrainz Authentication"), tr("Please open this URL in your browser") + QString(":
%1").arg(url.toString()), QMessageBox::Ok); + QMessageBox messagebox(QMessageBox::Information, tr("ListenBrainz Authentication"), tr("Please open this URL in your browser") + QStringLiteral(":
%1").arg(url.toString()), QMessageBox::Ok); messagebox.setTextFormat(Qt::RichText); messagebox.exec(); } @@ -201,11 +201,11 @@ void ListenBrainzScrobbler::RedirectArrived() { QUrl url = server_->request_url(); if (url.isValid()) { QUrlQuery url_query(url); - if (url_query.hasQueryItem("error")) { - AuthError(QUrlQuery(url).queryItemValue("error")); + if (url_query.hasQueryItem(QStringLiteral("error"))) { + AuthError(QUrlQuery(url).queryItemValue(QStringLiteral("error"))); } - else if (url_query.hasQueryItem("code")) { - RequestAccessToken(url, url_query.queryItemValue("code")); + else if (url_query.hasQueryItem(QStringLiteral("code"))) { + RequestAccessToken(url, url_query.queryItemValue(QStringLiteral("code"))); } else { AuthError(tr("Redirect missing token code!")); @@ -234,23 +234,23 @@ ListenBrainzScrobbler::ReplyResult ListenBrainzScrobbler::GetJsonObject(QNetwork reply_error_type = ReplyResult::Success; } else { - error_description = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error_description = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } else { - error_description = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error_description = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } // See if there is Json data containing "error" and "error_description" or "code" and "error" - then use that instead. if (reply->error() == QNetworkReply::NoError || reply->error() >= 200) { const QByteArray data = reply->readAll(); if (!data.isEmpty() && ExtractJsonObj(data, json_obj, error_description)) { - if (json_obj.contains("error") && json_obj.contains("error_description")) { - error_description = json_obj["error_description"].toString(); + if (json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("error_description"))) { + error_description = json_obj[QStringLiteral("error_description")].toString(); reply_error_type = ReplyResult::APIError; } - else if (json_obj.contains("code") && json_obj.contains("error")) { - error_description = QString("%1 (%2)").arg(json_obj["error"].toString()).arg(json_obj["code"].toInt()); + else if (json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("error"))) { + error_description = QStringLiteral("%1 (%2)").arg(json_obj[QStringLiteral("error")].toString()).arg(json_obj[QStringLiteral("code")].toInt()); reply_error_type = ReplyResult::APIError; } } @@ -315,16 +315,16 @@ void ListenBrainzScrobbler::AuthenticateReplyFinished(QNetworkReply *reply) { return; } - if (!json_obj.contains("access_token") || !json_obj.contains("expires_in") || !json_obj.contains("token_type")) { - AuthError("Json access_token, expires_in or token_type is missing."); + if (!json_obj.contains(QStringLiteral("access_token")) || !json_obj.contains(QStringLiteral("expires_in")) || !json_obj.contains(QStringLiteral("token_type"))) { + AuthError(QStringLiteral("Json access_token, expires_in or token_type is missing.")); return; } - access_token_ = json_obj["access_token"].toString(); - expires_in_ = json_obj["expires_in"].toInt(); - token_type_ = json_obj["token_type"].toString(); - if (json_obj.contains("refresh_token")) { - refresh_token_ = json_obj["refresh_token"].toString(); + access_token_ = json_obj[QStringLiteral("access_token")].toString(); + expires_in_ = json_obj[QStringLiteral("expires_in")].toInt(); + token_type_ = json_obj[QStringLiteral("token_type")].toString(); + if (json_obj.contains(QStringLiteral("refresh_token"))) { + refresh_token_ = json_obj[QStringLiteral("refresh_token")].toString(); } login_time_ = QDateTime::currentDateTime().toSecsSinceEpoch(); @@ -355,7 +355,7 @@ QNetworkReply *ListenBrainzScrobbler::CreateRequest(const QUrl &url, const QJson QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - req.setRawHeader("Authorization", QString("Token %1").arg(user_token_).toUtf8()); + req.setRawHeader("Authorization", QStringLiteral("Token %1").arg(user_token_).toUtf8()); QNetworkReply *reply = network_->post(req, json_doc.toJson()); replies_ << reply; @@ -369,32 +369,32 @@ QJsonObject ListenBrainzScrobbler::JsonTrackMetadata(const ScrobbleMetadata &met QJsonObject object_track_metadata; if (prefer_albumartist_) { - object_track_metadata.insert("artist_name", QJsonValue::fromVariant(metadata.effective_albumartist())); + object_track_metadata.insert(QStringLiteral("artist_name"), QJsonValue::fromVariant(metadata.effective_albumartist())); } else { - object_track_metadata.insert("artist_name", QJsonValue::fromVariant(metadata.artist)); + object_track_metadata.insert(QStringLiteral("artist_name"), QJsonValue::fromVariant(metadata.artist)); } if (!metadata.album.isEmpty()) { - object_track_metadata.insert("release_name", QJsonValue::fromVariant(StripAlbum(metadata.album))); + object_track_metadata.insert(QStringLiteral("release_name"), QJsonValue::fromVariant(StripAlbum(metadata.album))); } - object_track_metadata.insert("track_name", QJsonValue::fromVariant(StripTitle(metadata.title))); + object_track_metadata.insert(QStringLiteral("track_name"), QJsonValue::fromVariant(StripTitle(metadata.title))); QJsonObject object_additional_info; if (metadata.length_nanosec > 0) { - object_additional_info.insert("duration_ms", metadata.length_nanosec / kNsecPerMsec); + object_additional_info.insert(QStringLiteral("duration_ms"), metadata.length_nanosec / kNsecPerMsec); } if (metadata.track > 0) { - object_additional_info.insert("tracknumber", metadata.track); + object_additional_info.insert(QStringLiteral("tracknumber"), metadata.track); } - object_additional_info.insert("media_player", QCoreApplication::applicationName()); - object_additional_info.insert("media_player_version", QCoreApplication::applicationVersion()); - object_additional_info.insert("submission_client", QCoreApplication::applicationName()); - object_additional_info.insert("submission_client_version", QCoreApplication::applicationVersion()); + object_additional_info.insert(QStringLiteral("media_player"), QCoreApplication::applicationName()); + object_additional_info.insert(QStringLiteral("media_player_version"), QCoreApplication::applicationVersion()); + object_additional_info.insert(QStringLiteral("submission_client"), QCoreApplication::applicationName()); + object_additional_info.insert(QStringLiteral("submission_client_version"), QCoreApplication::applicationVersion()); QStringList artist_mbids_list; if (!metadata.musicbrainz_album_artist_id.isEmpty()) { @@ -414,28 +414,28 @@ QJsonObject ListenBrainzScrobbler::JsonTrackMetadata(const ScrobbleMetadata &met } } if (!artist_mbids_array.isEmpty()) { - object_additional_info.insert("artist_mbids", artist_mbids_array); + object_additional_info.insert(QStringLiteral("artist_mbids"), artist_mbids_array); } } if (!metadata.musicbrainz_album_id.isEmpty()) { - object_additional_info.insert("release_mbid", metadata.musicbrainz_album_id); + object_additional_info.insert(QStringLiteral("release_mbid"), metadata.musicbrainz_album_id); } else if (!metadata.musicbrainz_original_album_id.isEmpty()) { - object_additional_info.insert("release_mbid", metadata.musicbrainz_original_album_id); + object_additional_info.insert(QStringLiteral("release_mbid"), metadata.musicbrainz_original_album_id); } if (!metadata.musicbrainz_recording_id.isEmpty()) { - object_additional_info.insert("recording_mbid", metadata.musicbrainz_recording_id); + object_additional_info.insert(QStringLiteral("recording_mbid"), metadata.musicbrainz_recording_id); } if (!metadata.musicbrainz_track_id.isEmpty()) { - object_additional_info.insert("track_mbid", metadata.musicbrainz_track_id); + object_additional_info.insert(QStringLiteral("track_mbid"), metadata.musicbrainz_track_id); } if (!metadata.musicbrainz_work_id.isEmpty()) { - object_additional_info.insert("work_mbids", QJsonArray() << metadata.musicbrainz_work_id); + object_additional_info.insert(QStringLiteral("work_mbids"), QJsonArray() << metadata.musicbrainz_work_id); } - object_track_metadata.insert("additional_info", object_additional_info); + object_track_metadata.insert(QStringLiteral("additional_info"), object_additional_info); return object_track_metadata; @@ -452,15 +452,15 @@ void ListenBrainzScrobbler::UpdateNowPlaying(const Song &song) { if (!song.is_metadata_good() || !authenticated() || settings_->offline()) return; QJsonObject object_listen; - object_listen.insert("track_metadata", JsonTrackMetadata(ScrobbleMetadata(song))); + object_listen.insert(QStringLiteral("track_metadata"), JsonTrackMetadata(ScrobbleMetadata(song))); QJsonArray array_payload; array_payload.append(object_listen); QJsonObject object; - object.insert("listen_type", "playing_now"); - object.insert("payload", array_payload); + object.insert(QStringLiteral("listen_type"), "playing_now"); + object.insert(QStringLiteral("payload"), array_payload); QJsonDocument doc(object); - QUrl url(QString("%1/1/submit-listens").arg(kApiUrl)); + QUrl url(QStringLiteral("%1/1/submit-listens").arg(kApiUrl)); QNetworkReply *reply = CreateRequest(url, doc); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply]() { UpdateNowPlayingRequestFinished(reply); }); @@ -480,14 +480,14 @@ void ListenBrainzScrobbler::UpdateNowPlayingRequestFinished(QNetworkReply *reply return; } - if (!json_obj.contains("status")) { - Error("Now playing request is missing status from server."); + if (!json_obj.contains(QStringLiteral("status"))) { + Error(QStringLiteral("Now playing request is missing status from server.")); return; } - QString status = json_obj["status"].toString(); - if (status.compare("ok", Qt::CaseInsensitive) != 0) { - Error(QString("Received %1 status for now playing.").arg(status)); + QString status = json_obj[QStringLiteral("status")].toString(); + if (status.compare(QLatin1String("ok"), Qt::CaseInsensitive) != 0) { + Error(QStringLiteral("Received %1 status for now playing.").arg(status)); } } @@ -548,8 +548,8 @@ void ListenBrainzScrobbler::Submit() { cache_item->sent = true; cache_items_sent << cache_item; QJsonObject object_listen; - object_listen.insert("listened_at", QJsonValue::fromVariant(cache_item->timestamp)); - object_listen.insert("track_metadata", JsonTrackMetadata(cache_item->metadata)); + object_listen.insert(QStringLiteral("listened_at"), QJsonValue::fromVariant(cache_item->timestamp)); + object_listen.insert(QStringLiteral("track_metadata"), JsonTrackMetadata(cache_item->metadata)); array.append(QJsonValue::fromVariant(object_listen)); if (cache_items_sent.count() >= kScrobblesPerRequest || cache_item->error) break; } @@ -559,11 +559,11 @@ void ListenBrainzScrobbler::Submit() { submitted_ = true; QJsonObject object; - object.insert("listen_type", "import"); - object.insert("payload", array); + object.insert(QStringLiteral("listen_type"), "import"); + object.insert(QStringLiteral("payload"), array); QJsonDocument doc(object); - QUrl url(QString("%1/1/submit-listens").arg(kApiUrl)); + QUrl url(QStringLiteral("%1/1/submit-listens").arg(kApiUrl)); QNetworkReply *reply = CreateRequest(url, doc); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, cache_items_sent]() { ScrobbleRequestFinished(reply, cache_items_sent); }); @@ -582,8 +582,8 @@ void ListenBrainzScrobbler::ScrobbleRequestFinished(QNetworkReply *reply, Scrobb QString error_message; const ReplyResult reply_result = GetJsonObject(reply, json_obj, error_message); if (reply_result == ReplyResult::Success) { - if (json_obj.contains("status")) { - QString status = json_obj["status"].toString(); + if (json_obj.contains(QStringLiteral("status"))) { + QString status = json_obj[QStringLiteral("status")].toString(); qLog(Debug) << "ListenBrainz: Received scrobble status:" << status; } else { @@ -630,10 +630,10 @@ void ListenBrainzScrobbler::Love() { qLog(Debug) << "ListenBrainz: Sending love for song" << song_playing_.artist() << song_playing_.album() << song_playing_.title(); QJsonObject object; - object.insert("recording_mbid", song_playing_.musicbrainz_recording_id()); - object.insert("score", 1); + object.insert(QStringLiteral("recording_mbid"), song_playing_.musicbrainz_recording_id()); + object.insert(QStringLiteral("score"), 1); - QUrl url(QString("%1/1/feedback/recording-feedback").arg(kApiUrl)); + QUrl url(QStringLiteral("%1/1/feedback/recording-feedback").arg(kApiUrl)); QNetworkReply *reply = CreateRequest(url, QJsonDocument(object)); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply]() { LoveRequestFinished(reply); }); @@ -653,8 +653,8 @@ void ListenBrainzScrobbler::LoveRequestFinished(QNetworkReply *reply) { return; } - if (json_obj.contains("status")) { - qLog(Debug) << "ListenBrainz: Received recording-feedback status:" << json_obj["status"].toString(); + if (json_obj.contains(QStringLiteral("status"))) { + qLog(Debug) << "ListenBrainz: Received recording-feedback status:" << json_obj[QStringLiteral("status")].toString(); } } diff --git a/src/scrobbler/scrobblercache.cpp b/src/scrobbler/scrobblercache.cpp index 6b50ba8d..f66d64e9 100644 --- a/src/scrobbler/scrobblercache.cpp +++ b/src/scrobbler/scrobblercache.cpp @@ -99,11 +99,11 @@ void ScrobblerCache::ReadCache() { qLog(Error) << "Scrobbler cache has empty JSON object."; return; } - if (!json_obj.contains("tracks")) { + if (!json_obj.contains(QStringLiteral("tracks"))) { qLog(Error) << "Scrobbler cache is missing JSON tracks."; return; } - QJsonValue json_tracks = json_obj["tracks"]; + QJsonValue json_tracks = json_obj[QStringLiteral("tracks")]; if (!json_tracks.isArray()) { qLog(Error) << "Scrobbler cache JSON tracks is not an array."; return; @@ -121,13 +121,13 @@ void ScrobblerCache::ReadCache() { } QJsonObject json_obj_track = value.toObject(); if ( - !json_obj_track.contains("timestamp") || - !json_obj_track.contains("artist") || - !json_obj_track.contains("album") || - !json_obj_track.contains("title") || - !json_obj_track.contains("track") || - !json_obj_track.contains("albumartist") || - !json_obj_track.contains("length_nanosec") + !json_obj_track.contains(QStringLiteral("timestamp")) || + !json_obj_track.contains(QStringLiteral("artist")) || + !json_obj_track.contains(QStringLiteral("album")) || + !json_obj_track.contains(QStringLiteral("title")) || + !json_obj_track.contains(QStringLiteral("track")) || + !json_obj_track.contains(QStringLiteral("albumartist")) || + !json_obj_track.contains(QStringLiteral("length_nanosec")) ) { qLog(Error) << "Scrobbler cache JSON tracks array value is missing data."; qLog(Debug) << value; @@ -135,52 +135,52 @@ void ScrobblerCache::ReadCache() { } ScrobbleMetadata metadata; - quint64 timestamp = json_obj_track["timestamp"].toVariant().toULongLong(); - metadata.artist = json_obj_track["artist"].toString(); - metadata.album = json_obj_track["album"].toString(); - metadata.title = json_obj_track["title"].toString(); - metadata.track = json_obj_track["track"].toInt(); - metadata.albumartist = json_obj_track["albumartist"].toString(); - metadata.length_nanosec = json_obj_track["length_nanosec"].toVariant().toLongLong(); + quint64 timestamp = json_obj_track[QStringLiteral("timestamp")].toVariant().toULongLong(); + metadata.artist = json_obj_track[QStringLiteral("artist")].toString(); + metadata.album = json_obj_track[QStringLiteral("album")].toString(); + metadata.title = json_obj_track[QStringLiteral("title")].toString(); + metadata.track = json_obj_track[QStringLiteral("track")].toInt(); + metadata.albumartist = json_obj_track[QStringLiteral("albumartist")].toString(); + metadata.length_nanosec = json_obj_track[QStringLiteral("length_nanosec")].toVariant().toLongLong(); if (timestamp == 0 || metadata.artist.isEmpty() || metadata.title.isEmpty() || metadata.length_nanosec <= 0) { qLog(Error) << "Invalid cache data" << "for song" << metadata.title; continue; } - if (json_obj_track.contains("grouping")) { - metadata.grouping = json_obj_track["grouping"].toString(); + if (json_obj_track.contains(QStringLiteral("grouping"))) { + metadata.grouping = json_obj_track[QStringLiteral("grouping")].toString(); } - if (json_obj_track.contains("musicbrainz_album_artist_id")) { - metadata.musicbrainz_album_artist_id = json_obj_track["musicbrainz_album_artist_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_album_artist_id"))) { + metadata.musicbrainz_album_artist_id = json_obj_track[QStringLiteral("musicbrainz_album_artist_id")].toString(); } - if (json_obj_track.contains("musicbrainz_artist_id")) { - metadata.musicbrainz_artist_id = json_obj_track["musicbrainz_artist_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_artist_id"))) { + metadata.musicbrainz_artist_id = json_obj_track[QStringLiteral("musicbrainz_artist_id")].toString(); } - if (json_obj_track.contains("musicbrainz_original_artist_id")) { - metadata.musicbrainz_original_artist_id = json_obj_track["musicbrainz_original_artist_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_original_artist_id"))) { + metadata.musicbrainz_original_artist_id = json_obj_track[QStringLiteral("musicbrainz_original_artist_id")].toString(); } - if (json_obj_track.contains("musicbrainz_album_id")) { - metadata.musicbrainz_album_id = json_obj_track["musicbrainz_album_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_album_id"))) { + metadata.musicbrainz_album_id = json_obj_track[QStringLiteral("musicbrainz_album_id")].toString(); } - if (json_obj_track.contains("musicbrainz_original_album_id")) { - metadata.musicbrainz_original_album_id = json_obj_track["musicbrainz_original_album_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_original_album_id"))) { + metadata.musicbrainz_original_album_id = json_obj_track[QStringLiteral("musicbrainz_original_album_id")].toString(); } - if (json_obj_track.contains("musicbrainz_recording_id")) { - metadata.musicbrainz_recording_id = json_obj_track["musicbrainz_recording_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_recording_id"))) { + metadata.musicbrainz_recording_id = json_obj_track[QStringLiteral("musicbrainz_recording_id")].toString(); } - if (json_obj_track.contains("musicbrainz_track_id")) { - metadata.musicbrainz_track_id = json_obj_track["musicbrainz_track_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_track_id"))) { + metadata.musicbrainz_track_id = json_obj_track[QStringLiteral("musicbrainz_track_id")].toString(); } - if (json_obj_track.contains("musicbrainz_disc_id")) { - metadata.musicbrainz_disc_id = json_obj_track["musicbrainz_disc_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_disc_id"))) { + metadata.musicbrainz_disc_id = json_obj_track[QStringLiteral("musicbrainz_disc_id")].toString(); } - if (json_obj_track.contains("musicbrainz_release_group_id")) { - metadata.musicbrainz_release_group_id = json_obj_track["musicbrainz_release_group_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_release_group_id"))) { + metadata.musicbrainz_release_group_id = json_obj_track[QStringLiteral("musicbrainz_release_group_id")].toString(); } - if (json_obj_track.contains("musicbrainz_work_id")) { - metadata.musicbrainz_work_id = json_obj_track["musicbrainz_work_id"].toString(); + if (json_obj_track.contains(QStringLiteral("musicbrainz_work_id"))) { + metadata.musicbrainz_work_id = json_obj_track[QStringLiteral("musicbrainz_work_id")].toString(); } ScrobblerCacheItemPtr cache_item = make_shared(metadata, timestamp); @@ -205,29 +205,29 @@ void ScrobblerCache::WriteCache() { QJsonArray array; for (ScrobblerCacheItemPtr cache_item : scrobbler_cache_) { QJsonObject object; - object.insert("timestamp", QJsonValue::fromVariant(cache_item->timestamp)); - object.insert("artist", QJsonValue::fromVariant(cache_item->metadata.artist)); - object.insert("album", QJsonValue::fromVariant(cache_item->metadata.album)); - object.insert("title", QJsonValue::fromVariant(cache_item->metadata.title)); - object.insert("track", QJsonValue::fromVariant(cache_item->metadata.track)); - object.insert("albumartist", QJsonValue::fromVariant(cache_item->metadata.albumartist)); - object.insert("grouping", QJsonValue::fromVariant(cache_item->metadata.grouping)); - object.insert("musicbrainz_album_artist_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_album_artist_id)); - object.insert("musicbrainz_artist_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_artist_id)); - object.insert("musicbrainz_original_artist_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_original_artist_id)); - object.insert("musicbrainz_album_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_album_id)); - object.insert("musicbrainz_original_album_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_original_album_id)); - object.insert("musicbrainz_recording_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_recording_id)); - object.insert("musicbrainz_track_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_track_id)); - object.insert("musicbrainz_disc_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_disc_id)); - object.insert("musicbrainz_release_group_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_release_group_id)); - object.insert("musicbrainz_work_id", QJsonValue::fromVariant(cache_item->metadata.musicbrainz_work_id)); - object.insert("length_nanosec", QJsonValue::fromVariant(cache_item->metadata.length_nanosec)); + object.insert(QStringLiteral("timestamp"), QJsonValue::fromVariant(cache_item->timestamp)); + object.insert(QStringLiteral("artist"), QJsonValue::fromVariant(cache_item->metadata.artist)); + object.insert(QStringLiteral("album"), QJsonValue::fromVariant(cache_item->metadata.album)); + object.insert(QStringLiteral("title"), QJsonValue::fromVariant(cache_item->metadata.title)); + object.insert(QStringLiteral("track"), QJsonValue::fromVariant(cache_item->metadata.track)); + object.insert(QStringLiteral("albumartist"), QJsonValue::fromVariant(cache_item->metadata.albumartist)); + object.insert(QStringLiteral("grouping"), QJsonValue::fromVariant(cache_item->metadata.grouping)); + object.insert(QStringLiteral("musicbrainz_album_artist_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_album_artist_id)); + object.insert(QStringLiteral("musicbrainz_artist_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_artist_id)); + object.insert(QStringLiteral("musicbrainz_original_artist_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_original_artist_id)); + object.insert(QStringLiteral("musicbrainz_album_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_album_id)); + object.insert(QStringLiteral("musicbrainz_original_album_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_original_album_id)); + object.insert(QStringLiteral("musicbrainz_recording_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_recording_id)); + object.insert(QStringLiteral("musicbrainz_track_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_track_id)); + object.insert(QStringLiteral("musicbrainz_disc_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_disc_id)); + object.insert(QStringLiteral("musicbrainz_release_group_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_release_group_id)); + object.insert(QStringLiteral("musicbrainz_work_id"), QJsonValue::fromVariant(cache_item->metadata.musicbrainz_work_id)); + object.insert(QStringLiteral("length_nanosec"), QJsonValue::fromVariant(cache_item->metadata.length_nanosec)); array.append(QJsonValue::fromVariant(object)); } QJsonObject object; - object.insert("tracks", array); + object.insert(QStringLiteral("tracks"), array); QJsonDocument doc(object); QFile file(filename_); diff --git a/src/scrobbler/scrobblingapi20.cpp b/src/scrobbler/scrobblingapi20.cpp index 0688a1d2..ba959221 100644 --- a/src/scrobbler/scrobblingapi20.cpp +++ b/src/scrobbler/scrobblingapi20.cpp @@ -155,21 +155,21 @@ ScrobblingAPI20::ReplyResult ScrobblingAPI20::GetJsonObject(QNetworkReply *reply reply_error_type = ReplyResult::Success; } else { - error_description = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error_description = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } else { - error_description = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error_description = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } // See if there is Json data containing "error" and "message" - then use that instead. if (reply->error() == QNetworkReply::NoError || reply->error() >= 200) { const QByteArray data = reply->readAll(); int error_code = 0; - if (!data.isEmpty() && ExtractJsonObj(data, json_obj, error_description) && json_obj.contains("error") && json_obj.contains("message")) { - error_code = json_obj["error"].toInt(); - QString error_message = json_obj["message"].toString(); - error_description = QString("%1 (%2)").arg(error_message).arg(error_code); + if (!data.isEmpty() && ExtractJsonObj(data, json_obj, error_description) && json_obj.contains(QStringLiteral("error")) && json_obj.contains(QStringLiteral("message"))) { + error_code = json_obj[QStringLiteral("error")].toInt(); + QString error_message = json_obj[QStringLiteral("message")].toString(); + error_description = QStringLiteral("%1 (%2)").arg(error_message).arg(error_code); reply_error_type = ReplyResult::APIError; } const ScrobbleErrorCode lastfm_error_code = static_cast(error_code); @@ -202,12 +202,12 @@ void ScrobblingAPI20::Authenticate() { } QUrlQuery url_query; - url_query.addQueryItem("api_key", kApiKey); - url_query.addQueryItem("cb", server_->url().toString()); + url_query.addQueryItem(QStringLiteral("api_key"), kApiKey); + url_query.addQueryItem(QStringLiteral("cb"), server_->url().toString()); QUrl url(auth_url_); url.setQuery(url_query); - QMessageBox messagebox(QMessageBox::Information, tr("%1 Scrobbler Authentication").arg(name_), tr("Open URL in web browser?") + QString("
%1
").arg(url.toString()) + tr("Press \"Save\" to copy the URL to clipboard and manually open it in a web browser."), QMessageBox::Open|QMessageBox::Save|QMessageBox::Cancel); + QMessageBox messagebox(QMessageBox::Information, tr("%1 Scrobbler Authentication").arg(name_), tr("Open URL in web browser?") + QStringLiteral("
%1
").arg(url.toString()) + tr("Press \"Save\" to copy the URL to clipboard and manually open it in a web browser."), QMessageBox::Open|QMessageBox::Save|QMessageBox::Cancel); messagebox.setTextFormat(Qt::RichText); int result = messagebox.exec(); switch (result) { @@ -216,7 +216,7 @@ void ScrobblingAPI20::Authenticate() { if (openurl_result) { break; } - QMessageBox messagebox_error(QMessageBox::Warning, tr("%1 Scrobbler Authentication").arg(name_), tr("Could not open URL. Please open this URL in your browser") + QString(":
%1").arg(url.toString()), QMessageBox::Ok); + QMessageBox messagebox_error(QMessageBox::Warning, tr("%1 Scrobbler Authentication").arg(name_), tr("Could not open URL. Please open this URL in your browser") + QStringLiteral(":
%1").arg(url.toString()), QMessageBox::Ok); messagebox_error.setTextFormat(Qt::RichText); messagebox_error.exec(); } @@ -245,8 +245,8 @@ void ScrobblingAPI20::RedirectArrived() { QUrl url = server_->request_url(); if (url.isValid()) { QUrlQuery url_query(url); - if (url_query.hasQueryItem("token")) { - QString token = url_query.queryItemValue("token").toUtf8(); + if (url_query.hasQueryItem(QStringLiteral("token"))) { + QString token = url_query.queryItemValue(QStringLiteral("token")).toUtf8(); RequestSession(token); } else { @@ -271,9 +271,9 @@ void ScrobblingAPI20::RequestSession(const QString &token) { QUrl session_url(api_url_); QUrlQuery session_url_query; - session_url_query.addQueryItem("api_key", kApiKey); - session_url_query.addQueryItem("method", "auth.getSession"); - session_url_query.addQueryItem("token", token); + session_url_query.addQueryItem(QStringLiteral("api_key"), kApiKey); + session_url_query.addQueryItem(QStringLiteral("method"), QStringLiteral("auth.getSession")); + session_url_query.addQueryItem(QStringLiteral("token"), token); QString data_to_sign; for (const Param ¶m : session_url_query.queryItems()) { data_to_sign += param.first + param.second; @@ -281,8 +281,8 @@ void ScrobblingAPI20::RequestSession(const QString &token) { data_to_sign += kSecret; QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5); QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, '0').toLower(); - session_url_query.addQueryItem("api_sig", signature); - session_url_query.addQueryItem(QUrl::toPercentEncoding("format"), QUrl::toPercentEncoding("json")); + session_url_query.addQueryItem(QStringLiteral("api_sig"), signature); + session_url_query.addQueryItem(QUrl::toPercentEncoding(QStringLiteral("format")), QUrl::toPercentEncoding(QStringLiteral("json"))); session_url.setQuery(session_url_query); QNetworkRequest req(session_url); @@ -307,29 +307,29 @@ void ScrobblingAPI20::AuthenticateReplyFinished(QNetworkReply *reply) { return; } - if (!json_obj.contains("session")) { - AuthError("Json reply from server is missing session."); + if (!json_obj.contains(QStringLiteral("session"))) { + AuthError(QStringLiteral("Json reply from server is missing session.")); return; } - QJsonValue json_session = json_obj["session"]; + QJsonValue json_session = json_obj[QStringLiteral("session")]; if (!json_session.isObject()) { - AuthError("Json session is not an object."); + AuthError(QStringLiteral("Json session is not an object.")); return; } json_obj = json_session.toObject(); if (json_obj.isEmpty()) { - AuthError("Json session object is empty."); + AuthError(QStringLiteral("Json session object is empty.")); return; } - if (!json_obj.contains("subscriber") || !json_obj.contains("name") || !json_obj.contains("key")) { - AuthError("Json session object is missing values."); + if (!json_obj.contains(QStringLiteral("subscriber")) || !json_obj.contains(QStringLiteral("name")) || !json_obj.contains(QStringLiteral("key"))) { + AuthError(QStringLiteral("Json session object is missing values.")); return; } - subscriber_ = json_obj["subscriber"].toBool(); - username_ = json_obj["name"].toString(); - session_key_ = json_obj["key"].toString(); + subscriber_ = json_obj[QStringLiteral("subscriber")].toBool(); + username_ = json_obj[QStringLiteral("name")].toString(); + session_key_ = json_obj[QStringLiteral("key")].toString(); QSettings s; s.beginGroup(settings_group_); @@ -366,8 +366,8 @@ QNetworkReply *ScrobblingAPI20::CreateRequest(const ParamList &request_params) { QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5); QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, '0').toLower(); - url_query.addQueryItem("api_sig", QUrl::toPercentEncoding(signature)); - url_query.addQueryItem("format", QUrl::toPercentEncoding("json")); + url_query.addQueryItem(QStringLiteral("api_sig"), QUrl::toPercentEncoding(signature)); + url_query.addQueryItem(QStringLiteral("format"), QUrl::toPercentEncoding(QStringLiteral("json"))); QUrl url(api_url_); QNetworkRequest req(url); @@ -425,8 +425,8 @@ void ScrobblingAPI20::UpdateNowPlayingRequestFinished(QNetworkReply *reply) { return; } - if (!json_obj.contains("nowplaying")) { - Error("Json reply from server is missing nowplaying.", json_obj); + if (!json_obj.contains(QStringLiteral("nowplaying"))) { + Error(QStringLiteral("Json reply from server is missing nowplaying."), json_obj); return; } @@ -499,18 +499,18 @@ void ScrobblingAPI20::Submit() { continue; } cache_items_sent << cache_item; - params << Param(QString("%1[%2]").arg("artist").arg(i), prefer_albumartist_ ? cache_item->metadata.effective_albumartist() : cache_item->metadata.artist); - params << Param(QString("%1[%2]").arg("track").arg(i), StripTitle(cache_item->metadata.title)); - params << Param(QString("%1[%2]").arg("timestamp").arg(i), QString::number(cache_item->timestamp)); - params << Param(QString("%1[%2]").arg("duration").arg(i), QString::number(cache_item->metadata.length_nanosec / kNsecPerSec)); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("artist")).arg(i), prefer_albumartist_ ? cache_item->metadata.effective_albumartist() : cache_item->metadata.artist); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("track")).arg(i), StripTitle(cache_item->metadata.title)); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("timestamp")).arg(i), QString::number(cache_item->timestamp)); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("duration")).arg(i), QString::number(cache_item->metadata.length_nanosec / kNsecPerSec)); if (!cache_item->metadata.album.isEmpty()) { - params << Param(QString("%1[%2]").arg("album").arg(i), StripAlbum(cache_item->metadata.album)); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("album")).arg(i), StripAlbum(cache_item->metadata.album)); } if (!prefer_albumartist_ && !cache_item->metadata.albumartist.isEmpty()) { - params << Param(QString("%1[%2]").arg("albumArtist").arg(i), cache_item->metadata.albumartist); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("albumArtist")).arg(i), cache_item->metadata.albumartist); } if (cache_item->metadata.track > 0) { - params << Param(QString("%1[%2]").arg("trackNumber").arg(i), QString::number(cache_item->metadata.track)); + params << Param(QStringLiteral("%1[%2]").arg(QStringLiteral("trackNumber")).arg(i), QString::number(cache_item->metadata.track)); } ++i; if (cache_items_sent.count() >= kScrobblesPerRequest) break; @@ -547,59 +547,59 @@ void ScrobblingAPI20::ScrobbleRequestFinished(QNetworkReply *reply, ScrobblerCac cache_->Flush(cache_items); submit_error_ = false; - if (!json_obj.contains("scrobbles")) { - Error("Json reply from server is missing scrobbles.", json_obj); + if (!json_obj.contains(QStringLiteral("scrobbles"))) { + Error(QStringLiteral("Json reply from server is missing scrobbles."), json_obj); StartSubmit(); return; } - QJsonValue value_scrobbles = json_obj["scrobbles"]; + QJsonValue value_scrobbles = json_obj[QStringLiteral("scrobbles")]; if (!value_scrobbles.isObject()) { - Error("Json scrobbles is not an object.", json_obj); + Error(QStringLiteral("Json scrobbles is not an object."), json_obj); StartSubmit(); return; } json_obj = value_scrobbles.toObject(); if (json_obj.isEmpty()) { - Error("Json scrobbles object is empty.", value_scrobbles); + Error(QStringLiteral("Json scrobbles object is empty."), value_scrobbles); StartSubmit(); return; } - if (!json_obj.contains("@attr") || !json_obj.contains("scrobble")) { - Error("Json scrobbles object is missing values.", json_obj); + if (!json_obj.contains(QStringLiteral("@attr")) || !json_obj.contains(QStringLiteral("scrobble"))) { + Error(QStringLiteral("Json scrobbles object is missing values."), json_obj); StartSubmit(); return; } - QJsonValue value_attr = json_obj["@attr"]; + QJsonValue value_attr = json_obj[QStringLiteral("@attr")]; if (!value_attr.isObject()) { - Error("Json scrobbles attr is not an object.", value_attr); + Error(QStringLiteral("Json scrobbles attr is not an object."), value_attr); StartSubmit(); return; } QJsonObject obj_attr = value_attr.toObject(); if (obj_attr.isEmpty()) { - Error("Json scrobbles attr is empty.", value_attr); + Error(QStringLiteral("Json scrobbles attr is empty."), value_attr); StartSubmit(); return; } - if (!obj_attr.contains("accepted") || !obj_attr.contains("ignored")) { - Error("Json scrobbles attr is missing values.", obj_attr); + if (!obj_attr.contains(QStringLiteral("accepted")) || !obj_attr.contains(QStringLiteral("ignored"))) { + Error(QStringLiteral("Json scrobbles attr is missing values."), obj_attr); StartSubmit(); return; } - int accepted = obj_attr["accepted"].toInt(); - int ignored = obj_attr["ignored"].toInt(); + int accepted = obj_attr[QStringLiteral("accepted")].toInt(); + int ignored = obj_attr[QStringLiteral("ignored")].toInt(); qLog(Debug) << name_ << "Scrobbles accepted:" << accepted << "ignored:" << ignored; QJsonArray array_scrobble; - QJsonValue value_scrobble = json_obj["scrobble"]; + QJsonValue value_scrobble = json_obj[QStringLiteral("scrobble")]; if (value_scrobble.isObject()) { QJsonObject obj_scrobble = value_scrobble.toObject(); if (obj_scrobble.isEmpty()) { - Error("Json scrobbles scrobble object is empty.", obj_scrobble); + Error(QStringLiteral("Json scrobbles scrobble object is empty."), obj_scrobble); StartSubmit(); return; } @@ -608,13 +608,13 @@ void ScrobblingAPI20::ScrobbleRequestFinished(QNetworkReply *reply, ScrobblerCac else if (value_scrobble.isArray()) { array_scrobble = value_scrobble.toArray(); if (array_scrobble.isEmpty()) { - Error("Json scrobbles scrobble array is empty.", value_scrobble); + Error(QStringLiteral("Json scrobbles scrobble array is empty."), value_scrobble); StartSubmit(); return; } } else { - Error("Json scrobbles scrobble is not an object or array.", value_scrobble); + Error(QStringLiteral("Json scrobbles scrobble is not an object or array."), value_scrobble); StartSubmit(); return; } @@ -622,7 +622,7 @@ void ScrobblingAPI20::ScrobbleRequestFinished(QNetworkReply *reply, ScrobblerCac for (const QJsonValueRef value : array_scrobble) { if (!value.isObject()) { - Error("Json scrobbles scrobble array value is not an object."); + Error(QStringLiteral("Json scrobbles scrobble array value is not an object.")); continue; } QJsonObject json_track = value.toObject(); @@ -630,25 +630,25 @@ void ScrobblingAPI20::ScrobbleRequestFinished(QNetworkReply *reply, ScrobblerCac continue; } - if (!json_track.contains("artist") || - !json_track.contains("album") || - !json_track.contains("albumArtist") || - !json_track.contains("track") || - !json_track.contains("timestamp") || - !json_track.contains("ignoredMessage") + if (!json_track.contains(QStringLiteral("artist")) || + !json_track.contains(QStringLiteral("album")) || + !json_track.contains(QStringLiteral("albumArtist")) || + !json_track.contains(QStringLiteral("track")) || + !json_track.contains(QStringLiteral("timestamp")) || + !json_track.contains(QStringLiteral("ignoredMessage")) ) { - Error("Json scrobbles scrobble is missing values.", json_track); + Error(QStringLiteral("Json scrobbles scrobble is missing values."), json_track); continue; } - QJsonValue value_artist = json_track["artist"]; - QJsonValue value_album = json_track["album"]; - QJsonValue value_song = json_track["track"]; - QJsonValue value_ignoredmessage = json_track["ignoredMessage"]; + QJsonValue value_artist = json_track[QStringLiteral("artist")]; + QJsonValue value_album = json_track[QStringLiteral("album")]; + QJsonValue value_song = json_track[QStringLiteral("track")]; + QJsonValue value_ignoredmessage = json_track[QStringLiteral("ignoredMessage")]; //quint64 timestamp = json_track["timestamp"].toVariant().toULongLong(); if (!value_artist.isObject() || !value_album.isObject() || !value_song.isObject() || !value_ignoredmessage.isObject()) { - Error("Json scrobbles scrobble values are not objects.", json_track); + Error(QStringLiteral("Json scrobbles scrobble values are not objects."), json_track); continue; } @@ -658,22 +658,22 @@ void ScrobblingAPI20::ScrobbleRequestFinished(QNetworkReply *reply, ScrobblerCac QJsonObject obj_ignoredmessage = value_ignoredmessage.toObject(); if (obj_artist.isEmpty() || obj_album.isEmpty() || obj_song.isEmpty() || obj_ignoredmessage.isEmpty()) { - Error("Json scrobbles scrobble values objects are empty.", json_track); + Error(QStringLiteral("Json scrobbles scrobble values objects are empty."), json_track); continue; } - if (!obj_artist.contains("#text") || !obj_album.contains("#text") || !obj_song.contains("#text")) { + if (!obj_artist.contains(QStringLiteral("#text")) || !obj_album.contains(QStringLiteral("#text")) || !obj_song.contains(QStringLiteral("#text"))) { continue; } //QString artist = obj_artist["#text"].toString(); //QString album = obj_album["#text"].toString(); - QString song = obj_song["#text"].toString(); - bool ignoredmessage = obj_ignoredmessage["code"].toVariant().toBool(); - QString ignoredmessage_text = obj_ignoredmessage["#text"].toString(); + QString song = obj_song[QStringLiteral("#text")].toString(); + bool ignoredmessage = obj_ignoredmessage[QStringLiteral("code")].toVariant().toBool(); + QString ignoredmessage_text = obj_ignoredmessage[QStringLiteral("#text")].toString(); if (ignoredmessage) { - Error(QString("Scrobble for \"%1\" ignored: %2").arg(song, ignoredmessage_text)); + Error(QStringLiteral("Scrobble for \"%1\" ignored: %2").arg(song, ignoredmessage_text)); } else { qLog(Debug) << name_ << "Scrobble for" << song << "accepted"; @@ -724,67 +724,67 @@ void ScrobblingAPI20::SingleScrobbleRequestFinished(QNetworkReply *reply, Scrobb return; } - if (!json_obj.contains("scrobbles")) { - Error("Json reply from server is missing scrobbles.", json_obj); + if (!json_obj.contains(QStringLiteral("scrobbles"))) { + Error(QStringLiteral("Json reply from server is missing scrobbles."), json_obj); cache_item->sent = false; return; } cache_->Remove(cache_item); - QJsonValue value_scrobbles = json_obj["scrobbles"]; + QJsonValue value_scrobbles = json_obj[QStringLiteral("scrobbles")]; if (!value_scrobbles.isObject()) { - Error("Json scrobbles is not an object.", json_obj); + Error(QStringLiteral("Json scrobbles is not an object."), json_obj); return; } json_obj = value_scrobbles.toObject(); if (json_obj.isEmpty()) { - Error("Json scrobbles object is empty.", value_scrobbles); + Error(QStringLiteral("Json scrobbles object is empty."), value_scrobbles); return; } - if (!json_obj.contains("@attr") || !json_obj.contains("scrobble")) { - Error("Json scrobbles object is missing values.", json_obj); + if (!json_obj.contains(QStringLiteral("@attr")) || !json_obj.contains(QStringLiteral("scrobble"))) { + Error(QStringLiteral("Json scrobbles object is missing values."), json_obj); return; } - QJsonValue value_attr = json_obj["@attr"]; + QJsonValue value_attr = json_obj[QStringLiteral("@attr")]; if (!value_attr.isObject()) { - Error("Json scrobbles attr is not an object.", value_attr); + Error(QStringLiteral("Json scrobbles attr is not an object."), value_attr); return; } QJsonObject obj_attr = value_attr.toObject(); if (obj_attr.isEmpty()) { - Error("Json scrobbles attr is empty.", value_attr); + Error(QStringLiteral("Json scrobbles attr is empty."), value_attr); return; } - QJsonValue value_scrobble = json_obj["scrobble"]; + QJsonValue value_scrobble = json_obj[QStringLiteral("scrobble")]; if (!value_scrobble.isObject()) { - Error("Json scrobbles scrobble is not an object.", value_scrobble); + Error(QStringLiteral("Json scrobbles scrobble is not an object."), value_scrobble); return; } QJsonObject json_obj_scrobble = value_scrobble.toObject(); if (json_obj_scrobble.isEmpty()) { - Error("Json scrobbles scrobble is empty.", value_scrobble); + Error(QStringLiteral("Json scrobbles scrobble is empty."), value_scrobble); return; } - if (!obj_attr.contains("accepted") || !obj_attr.contains("ignored")) { - Error("Json scrobbles attr is missing values.", obj_attr); + if (!obj_attr.contains(QStringLiteral("accepted")) || !obj_attr.contains(QStringLiteral("ignored"))) { + Error(QStringLiteral("Json scrobbles attr is missing values."), obj_attr); return; } - if (!json_obj_scrobble.contains("artist") || !json_obj_scrobble.contains("album") || !json_obj_scrobble.contains("albumArtist") || !json_obj_scrobble.contains("track") || !json_obj_scrobble.contains("timestamp")) { - Error("Json scrobbles scrobble is missing values.", json_obj_scrobble); + if (!json_obj_scrobble.contains(QStringLiteral("artist")) || !json_obj_scrobble.contains(QStringLiteral("album")) || !json_obj_scrobble.contains(QStringLiteral("albumArtist")) || !json_obj_scrobble.contains(QStringLiteral("track")) || !json_obj_scrobble.contains(QStringLiteral("timestamp"))) { + Error(QStringLiteral("Json scrobbles scrobble is missing values."), json_obj_scrobble); return; } - QJsonValue json_value_artist = json_obj_scrobble["artist"]; - QJsonValue json_value_album = json_obj_scrobble["album"]; - QJsonValue json_value_song = json_obj_scrobble["track"]; + QJsonValue json_value_artist = json_obj_scrobble[QStringLiteral("artist")]; + QJsonValue json_value_album = json_obj_scrobble[QStringLiteral("album")]; + QJsonValue json_value_song = json_obj_scrobble[QStringLiteral("track")]; if (!json_value_artist.isObject() || !json_value_album.isObject() || !json_value_song.isObject()) { - Error("Json scrobbles scrobble values are not objects.", json_obj_scrobble); + Error(QStringLiteral("Json scrobbles scrobble values are not objects."), json_obj_scrobble); return; } @@ -793,25 +793,25 @@ void ScrobblingAPI20::SingleScrobbleRequestFinished(QNetworkReply *reply, Scrobb QJsonObject json_obj_song = json_value_song.toObject(); if (json_obj_artist.isEmpty() || json_obj_album.isEmpty() || json_obj_song.isEmpty()) { - Error("Json scrobbles scrobble values objects are empty.", json_obj_scrobble); + Error(QStringLiteral("Json scrobbles scrobble values objects are empty."), json_obj_scrobble); return; } - if (!json_obj_artist.contains("#text") || !json_obj_album.contains("#text") || !json_obj_song.contains("#text")) { - Error("Json scrobbles scrobble values objects are missing #text.", json_obj_artist); + if (!json_obj_artist.contains(QStringLiteral("#text")) || !json_obj_album.contains(QStringLiteral("#text")) || !json_obj_song.contains(QStringLiteral("#text"))) { + Error(QStringLiteral("Json scrobbles scrobble values objects are missing #text."), json_obj_artist); return; } //QString artist = json_obj_artist["#text"].toString(); //QString album = json_obj_album["#text"].toString(); - QString song = json_obj_song["#text"].toString(); + QString song = json_obj_song[QStringLiteral("#text")].toString(); - int accepted = obj_attr["accepted"].toVariant().toInt(); + int accepted = obj_attr[QStringLiteral("accepted")].toVariant().toInt(); if (accepted == 1) { qLog(Debug) << name_ << "Scrobble for" << song << "accepted"; } else { - Error(QString("Scrobble for \"%1\" not accepted").arg(song)); + Error(QStringLiteral("Scrobble for \"%1\" not accepted").arg(song)); } } @@ -856,32 +856,32 @@ void ScrobblingAPI20::LoveRequestFinished(QNetworkReply *reply) { return; } - if (json_obj.contains("error")) { - QJsonValue json_value = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_value = json_obj[QStringLiteral("error")]; if (!json_value.isObject()) { - Error("Error is not on object."); + Error(QStringLiteral("Error is not on object.")); return; } QJsonObject json_obj_error = json_value.toObject(); if (json_obj_error.isEmpty()) { - Error("Received empty json error object.", json_obj); + Error(QStringLiteral("Received empty json error object."), json_obj); return; } - if (json_obj_error.contains("code") && json_obj_error.contains("#text")) { - int code = json_obj_error["code"].toInt(); - QString text = json_obj_error["#text"].toString(); - QString error_reason = QString("%1 (%2)").arg(text).arg(code); + if (json_obj_error.contains(QStringLiteral("code")) && json_obj_error.contains(QStringLiteral("#text"))) { + int code = json_obj_error[QStringLiteral("code")].toInt(); + QString text = json_obj_error[QStringLiteral("#text")].toString(); + QString error_reason = QStringLiteral("%1 (%2)").arg(text).arg(code); Error(error_reason); return; } } - if (json_obj.contains("lfm")) { - QJsonValue json_value = json_obj["lfm"]; + if (json_obj.contains(QStringLiteral("lfm"))) { + QJsonValue json_value = json_obj[QStringLiteral("lfm")]; if (json_value.isObject()) { QJsonObject json_obj_lfm = json_value.toObject(); - if (json_obj_lfm.contains("status")) { - QString status = json_obj_lfm["status"].toString(); + if (json_obj_lfm.contains(QStringLiteral("status"))) { + QString status = json_obj_lfm[QStringLiteral("status")].toString(); qLog(Debug) << name_ << "Received love status:" << status; return; } @@ -911,64 +911,64 @@ QString ScrobblingAPI20::ErrorString(const ScrobbleErrorCode error) { switch (error) { case ScrobbleErrorCode::NoError: - return QString("This error does not exist."); + return QStringLiteral("This error does not exist."); case ScrobbleErrorCode::InvalidService: - return QString("Invalid service - This service does not exist."); + return QStringLiteral("Invalid service - This service does not exist."); case ScrobbleErrorCode::InvalidMethod: - return QString("Invalid Method - No method with that name in this package."); + return QStringLiteral("Invalid Method - No method with that name in this package."); case ScrobbleErrorCode::AuthenticationFailed: - return QString("Authentication Failed - You do not have permissions to access the service."); + return QStringLiteral("Authentication Failed - You do not have permissions to access the service."); case ScrobbleErrorCode::InvalidFormat: - return QString("Invalid format - This service doesn't exist in that format."); + return QStringLiteral("Invalid format - This service doesn't exist in that format."); case ScrobbleErrorCode::InvalidParameters: - return QString("Invalid parameters - Your request is missing a required parameter."); + return QStringLiteral("Invalid parameters - Your request is missing a required parameter."); case ScrobbleErrorCode::InvalidResourceSpecified: - return QString("Invalid resource specified"); + return QStringLiteral("Invalid resource specified"); case ScrobbleErrorCode::OperationFailed: - return QString("Operation failed - Most likely the backend service failed. Please try again."); + return QStringLiteral("Operation failed - Most likely the backend service failed. Please try again."); case ScrobbleErrorCode::InvalidSessionKey: - return QString("Invalid session key - Please re-authenticate."); + return QStringLiteral("Invalid session key - Please re-authenticate."); case ScrobbleErrorCode::InvalidApiKey: - return QString("Invalid API key - You must be granted a valid key by last.fm."); + return QStringLiteral("Invalid API key - You must be granted a valid key by last.fm."); case ScrobbleErrorCode::ServiceOffline: - return QString("Service Offline - This service is temporarily offline. Try again later."); + return QStringLiteral("Service Offline - This service is temporarily offline. Try again later."); case ScrobbleErrorCode::SubscribersOnly: - return QString("Subscribers Only - This station is only available to paid last.fm subscribers."); + return QStringLiteral("Subscribers Only - This station is only available to paid last.fm subscribers."); case ScrobbleErrorCode::InvalidMethodSignature: - return QString("Invalid method signature supplied."); + return QStringLiteral("Invalid method signature supplied."); case ScrobbleErrorCode::UnauthorizedToken: - return QString("Unauthorized Token - This token has not been authorized."); + return QStringLiteral("Unauthorized Token - This token has not been authorized."); case ScrobbleErrorCode::ItemUnavailable: - return QString("This item is not available for streaming."); + return QStringLiteral("This item is not available for streaming."); case ScrobbleErrorCode::TemporarilyUnavailable: - return QString("The service is temporarily unavailable, please try again."); + return QStringLiteral("The service is temporarily unavailable, please try again."); case ScrobbleErrorCode::LoginRequired: - return QString("Login: User requires to be logged in."); + return QStringLiteral("Login: User requires to be logged in."); case ScrobbleErrorCode::TrialExpired: - return QString("Trial Expired - This user has no free radio plays left. Subscription required."); + return QStringLiteral("Trial Expired - This user has no free radio plays left. Subscription required."); case ScrobbleErrorCode::ErrorDoesNotExist: - return QString("This error does not exist."); + return QStringLiteral("This error does not exist."); case ScrobbleErrorCode::NotEnoughContent: - return QString("Not Enough Content - There is not enough content to play this station."); + return QStringLiteral("Not Enough Content - There is not enough content to play this station."); case ScrobbleErrorCode::NotEnoughMembers: - return QString("Not Enough Members - This group does not have enough members for radio."); + return QStringLiteral("Not Enough Members - This group does not have enough members for radio."); case ScrobbleErrorCode::NotEnoughFans: - return QString("Not Enough Fans - This artist does not have enough fans for for radio."); + return QStringLiteral("Not Enough Fans - This artist does not have enough fans for for radio."); case ScrobbleErrorCode::NotEnoughNeighbours: - return QString("Not Enough Neighbours - There are not enough neighbours for radio."); + return QStringLiteral("Not Enough Neighbours - There are not enough neighbours for radio."); case ScrobbleErrorCode::NoPeakRadio: - return QString("No Peak Radio - This user is not allowed to listen to radio during peak usage."); + return QStringLiteral("No Peak Radio - This user is not allowed to listen to radio during peak usage."); case ScrobbleErrorCode::RadioNotFound: - return QString("Radio Not Found - Radio station not found."); + return QStringLiteral("Radio Not Found - Radio station not found."); case ScrobbleErrorCode::APIKeySuspended: - return QString("Suspended API key - Access for your account has been suspended, please contact Last.fm"); + return QStringLiteral("Suspended API key - Access for your account has been suspended, please contact Last.fm"); case ScrobbleErrorCode::Deprecated: - return QString("Deprecated - This type of request is no longer supported."); + return QStringLiteral("Deprecated - This type of request is no longer supported."); case ScrobbleErrorCode::RateLimitExceeded: - return QString("Rate limit exceeded - Your IP has made too many requests in a short period."); + return QStringLiteral("Rate limit exceeded - Your IP has made too many requests in a short period."); } - return QString("Unknown error."); + return QStringLiteral("Unknown error."); } diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp index 8bf39f3c..960c3af0 100644 --- a/src/settings/appearancesettingspage.cpp +++ b/src/settings/appearancesettingspage.cpp @@ -87,9 +87,9 @@ AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog, QWidget * background_image_type_(BackgroundImageType::Default) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("view-media-visualization", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("view-media-visualization"), true, 0, 32)); - ui_->combobox_style->addItem("default", "default"); + ui_->combobox_style->addItem(QStringLiteral("default"), "default"); for (const QString &style : QStyleFactory::keys()) { ui_->combobox_style->addItem(style, style); } @@ -142,7 +142,7 @@ void AppearanceSettingsPage::Load() { QSettings s; s.beginGroup(kSettingsGroup); - ComboBoxLoadFromSettings(s, ui_->combobox_style, kStyle, "default"); + ComboBoxLoadFromSettings(s, ui_->combobox_style, kStyle, QStringLiteral("default")); #if !defined(Q_OS_MACOS) && !defined(Q_OS_WIN) ui_->checkbox_system_icons->setChecked(s.value(kSystemThemeIcons, false).toBool()); @@ -290,7 +290,7 @@ void AppearanceSettingsPage::Save() { void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget *color_selector, const QColor &color) { - QString css = QString("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255); border: 1px dotted black;").arg(color.red()).arg(color.green()).arg(color.blue()); + QString css = QStringLiteral("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255); border: 1px dotted black;").arg(color.red()).arg(color.green()).arg(color.blue()); color_selector->setStyleSheet(css); } @@ -305,11 +305,11 @@ void AppearanceSettingsPage::SelectBackgroundImage() { } void AppearanceSettingsPage::BlurLevelChanged(int value) { - ui_->background_blur_radius_label->setText(QString("%1px").arg(value)); + ui_->background_blur_radius_label->setText(QStringLiteral("%1px").arg(value)); } void AppearanceSettingsPage::OpacityLevelChanged(int percent) { - ui_->background_opacity_label->setText(QString("%1%").arg(percent)); + ui_->background_opacity_label->setText(QStringLiteral("%1%").arg(percent)); } void AppearanceSettingsPage::TabBarSystemColor(bool checked) { diff --git a/src/settings/backendsettingspage.cpp b/src/settings/backendsettingspage.cpp index ecafea01..3197fff7 100644 --- a/src/settings/backendsettingspage.cpp +++ b/src/settings/backendsettingspage.cpp @@ -69,12 +69,12 @@ BackendSettingsPage::BackendSettingsPage(SettingsDialog *dialog, QWidget *parent enginetype_current_(EngineBase::Type::None) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("soundcard", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("soundcard"), true, 0, 32)); - ui_->label_replaygainpreamp->setMinimumWidth(QFontMetrics(ui_->label_replaygainpreamp->font()).horizontalAdvance("-WW.W dB")); - ui_->label_replaygainfallbackgain->setMinimumWidth(QFontMetrics(ui_->label_replaygainfallbackgain->font()).horizontalAdvance("-WW.W dB")); + ui_->label_replaygainpreamp->setMinimumWidth(QFontMetrics(ui_->label_replaygainpreamp->font()).horizontalAdvance(QStringLiteral("-WW.W dB"))); + ui_->label_replaygainfallbackgain->setMinimumWidth(QFontMetrics(ui_->label_replaygainfallbackgain->font()).horizontalAdvance(QStringLiteral("-WW.W dB"))); - ui_->label_ebur128_target_level->setMinimumWidth(QFontMetrics(ui_->label_ebur128_target_level->font()).horizontalAdvance("-WW.W LUFS")); + ui_->label_ebur128_target_level->setMinimumWidth(QFontMetrics(ui_->label_ebur128_target_level->font()).horizontalAdvance(QStringLiteral("-WW.W LUFS"))); QObject::connect(ui_->combobox_engine, QOverload::of(&QComboBox::currentIndexChanged), this, &BackendSettingsPage::EngineChanged); QObject::connect(ui_->combobox_output, QOverload::of(&QComboBox::currentIndexChanged), this, &BackendSettingsPage::OutputChanged); @@ -123,10 +123,10 @@ void BackendSettingsPage::Load() { ui_->combobox_engine->clear(); #ifdef HAVE_GSTREAMER - ui_->combobox_engine->addItem(IconLoader::Load("gstreamer"), EngineBase::Description(EngineBase::Type::GStreamer), static_cast(EngineBase::Type::GStreamer)); + ui_->combobox_engine->addItem(IconLoader::Load(QStringLiteral("gstreamer")), EngineBase::Description(EngineBase::Type::GStreamer), static_cast(EngineBase::Type::GStreamer)); #endif #ifdef HAVE_VLC - ui_->combobox_engine->addItem(IconLoader::Load("vlc"), EngineBase::Description(EngineBase::Type::VLC), static_cast(EngineBase::Type::VLC)); + ui_->combobox_engine->addItem(IconLoader::Load(QStringLiteral("vlc")), EngineBase::Description(EngineBase::Type::VLC), static_cast(EngineBase::Type::VLC)); #endif enginetype_current_ = enginetype; @@ -255,7 +255,7 @@ void BackendSettingsPage::Load() { bool BackendSettingsPage::EngineInitialized() { if (!engine() || engine()->type() == EngineBase::Type::None) { - errordialog_.ShowMessage("Engine is not initialized! Please restart."); + errordialog_.ShowMessage(QStringLiteral("Engine is not initialized! Please restart.")); return false; } return true; @@ -364,7 +364,7 @@ void BackendSettingsPage::Load_Device(const QString &output, const QVariant &dev #ifdef Q_OS_WIN if (engine()->type() != EngineBase::Type::GStreamer) #endif - ui_->combobox_device->addItem(IconLoader::Load("soundcard"), kOutputAutomaticallySelect, QVariant()); + ui_->combobox_device->addItem(IconLoader::Load(QStringLiteral("soundcard")), kOutputAutomaticallySelect, QVariant()); for (DeviceFinder *f : dialog()->app()->device_finders()->ListFinders()) { if (!f->outputs().contains(output)) continue; @@ -376,7 +376,7 @@ void BackendSettingsPage::Load_Device(const QString &output, const QVariant &dev } if (engine()->CustomDeviceSupport(output)) { - ui_->combobox_device->addItem(IconLoader::Load("soundcard"), kOutputCustom, QVariant()); + ui_->combobox_device->addItem(IconLoader::Load(QStringLiteral("soundcard")), kOutputCustom, QVariant()); ui_->lineedit_device->setEnabled(true); } else { @@ -389,15 +389,15 @@ void BackendSettingsPage::Load_Device(const QString &output, const QVariant &dev ui_->radiobutton_alsa_hw->setEnabled(true); ui_->radiobutton_alsa_plughw->setEnabled(true); ui_->radiobutton_alsa_pcm->setEnabled(true); - if (device.toString().contains(QRegularExpression("^hw:.*"))) { + if (device.toString().contains(QRegularExpression(QStringLiteral("^hw:.*")))) { ui_->radiobutton_alsa_hw->setChecked(true); SwitchALSADevices(ALSAPluginType::HW); } - else if (device.toString().contains(QRegularExpression("^plughw:.*"))) { + else if (device.toString().contains(QRegularExpression(QStringLiteral("^plughw:.*")))) { ui_->radiobutton_alsa_plughw->setChecked(true); SwitchALSADevices(ALSAPluginType::PlugHW); } - else if (device.toString().contains(QRegularExpression("^.*:.*CARD=.*")) || device.toString().contains(QRegularExpression("^.*:.*DEV=.*"))) { + else if (device.toString().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || device.toString().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) { ui_->radiobutton_alsa_pcm->setChecked(true); SwitchALSADevices(ALSAPluginType::PCM); } @@ -553,7 +553,7 @@ void BackendSettingsPage::EngineChanged(const int index) { if (engine()->type() == enginetype) return; if (engine()->state() != EngineBase::State::Empty) { - errordialog_.ShowMessage("Can't switch engine while playing!"); + errordialog_.ShowMessage(QStringLiteral("Can't switch engine while playing!")); ui_->combobox_engine->setCurrentIndex(ui_->combobox_engine->findData(static_cast(engine()->type()))); return; } @@ -614,15 +614,15 @@ void BackendSettingsPage::DeviceStringChanged() { #ifdef HAVE_ALSA if (engine()->ALSADeviceSupport(output.name)) { - if (ui_->lineedit_device->text().contains(QRegularExpression("^hw:.*")) && !ui_->radiobutton_alsa_hw->isChecked()) { + if (ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && !ui_->radiobutton_alsa_hw->isChecked()) { ui_->radiobutton_alsa_hw->setChecked(true); SwitchALSADevices(ALSAPluginType::HW); } - else if (ui_->lineedit_device->text().contains(QRegularExpression("^plughw:.*")) && !ui_->radiobutton_alsa_plughw->isChecked()) { + else if (ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^plughw:.*"))) && !ui_->radiobutton_alsa_plughw->isChecked()) { ui_->radiobutton_alsa_plughw->setChecked(true); SwitchALSADevices(ALSAPluginType::PlugHW); } - else if ((ui_->lineedit_device->text().contains(QRegularExpression("^.*:.*CARD=.*")) || ui_->lineedit_device->text().contains(QRegularExpression("^.*:.*DEV=.*"))) && !ui_->radiobutton_alsa_pcm->isChecked()) { + else if ((ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) && !ui_->radiobutton_alsa_pcm->isChecked()) { ui_->radiobutton_alsa_pcm->setChecked(true); SwitchALSADevices(ALSAPluginType::PCM); } @@ -703,11 +703,11 @@ void BackendSettingsPage::SwitchALSADevices(const ALSAPluginType alsa_plugin_typ for (int i = 0; i < ui_->combobox_device->count(); ++i) { QListView *view = qobject_cast(ui_->combobox_device->view()); if (!view) continue; - if ((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression("^hw:.*")) && alsa_plugin_type != ALSAPluginType::HW) + if ((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && alsa_plugin_type != ALSAPluginType::HW) || - (ui_->combobox_device->itemData(i).toString().contains(QRegularExpression("^plughw:.*")) && alsa_plugin_type != ALSAPluginType::PlugHW) + (ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^plughw:.*"))) && alsa_plugin_type != ALSAPluginType::PlugHW) || - ((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression("^.*:.*CARD=.*")) || ui_->combobox_device->itemData(i).toString().contains(QRegularExpression("^.*:.*DEV=.*"))) && alsa_plugin_type != ALSAPluginType::PCM) + ((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) && alsa_plugin_type != ALSAPluginType::PCM) ) { view->setRowHidden(i, true); } @@ -734,11 +734,11 @@ void BackendSettingsPage::radiobutton_alsa_hw_clicked(const bool checked) { QString device_new = ui_->lineedit_device->text(); - if (device_new.contains(QRegularExpression("^plughw:.*"))) { - device_new = device_new.replace(QRegularExpression("^plughw:"), "hw:"); + if (device_new.contains(QRegularExpression(QStringLiteral("^plughw:.*")))) { + device_new = device_new.replace(QRegularExpression(QStringLiteral("^plughw:")), QStringLiteral("hw:")); } - if (!device_new.contains(QRegularExpression("^hw:.*"))) { + if (!device_new.contains(QRegularExpression(QStringLiteral("^hw:.*")))) { device_new.clear(); } @@ -763,11 +763,11 @@ void BackendSettingsPage::radiobutton_alsa_plughw_clicked(const bool checked) { QString device_new = ui_->lineedit_device->text(); - if (device_new.contains(QRegularExpression("^hw:.*"))) { - device_new = device_new.replace(QRegularExpression("^hw:"), "plughw:"); + if (device_new.contains(QRegularExpression(QStringLiteral("^hw:.*")))) { + device_new = device_new.replace(QRegularExpression(QStringLiteral("^hw:")), QStringLiteral("plughw:")); } - if (!device_new.contains(QRegularExpression("^plughw:.*"))) { + if (!device_new.contains(QRegularExpression(QStringLiteral("^plughw:.*")))) { device_new.clear(); } @@ -792,7 +792,7 @@ void BackendSettingsPage::radiobutton_alsa_pcm_clicked(const bool checked) { QString device_new = ui_->lineedit_device->text(); - if (!device_new.contains(QRegularExpression("^.*:.*CARD=.*")) && !device_new.contains(QRegularExpression("^.*:.*DEV=.*"))) { + if (!device_new.contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) && !device_new.contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) { device_new.clear(); } @@ -849,7 +849,7 @@ void BackendSettingsPage::FadingOptionsChanged() { EngineBase::OutputDetails output = ui_->combobox_output->itemData(ui_->combobox_output->currentIndex()).value(); if (engine()->type() == EngineBase::Type::GStreamer && - (!engine()->ALSADeviceSupport(output.name) || ui_->lineedit_device->text().isEmpty() || (!ui_->lineedit_device->text().contains(QRegularExpression("^hw:.*")) && !ui_->lineedit_device->text().contains(QRegularExpression("^plughw:.*"))))) { + (!engine()->ALSADeviceSupport(output.name) || ui_->lineedit_device->text().isEmpty() || (!ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && !ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^plughw:.*")))))) { ui_->groupbox_fading->setEnabled(true); } else { diff --git a/src/settings/behavioursettingspage.cpp b/src/settings/behavioursettingspage.cpp index 3d1407a9..8256adcb 100644 --- a/src/settings/behavioursettingspage.cpp +++ b/src/settings/behavioursettingspage.cpp @@ -61,7 +61,7 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog, QWidget *pa ui_(new Ui_BehaviourSettingsPage) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("strawberry", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("strawberry"), true, 0, 32)); QObject::connect(ui_->checkbox_showtrayicon, &QCheckBox::toggled, this, &BehaviourSettingsPage::ShowTrayIconToggled); diff --git a/src/settings/collectionsettingspage.cpp b/src/settings/collectionsettingspage.cpp index 2bcc21f6..24bfca50 100644 --- a/src/settings/collectionsettingspage.cpp +++ b/src/settings/collectionsettingspage.cpp @@ -72,15 +72,15 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog, QWidget * ui_->list->setItemDelegate(new NativeSeparatorsDelegate(this)); // Icons - setWindowIcon(IconLoader::Load("library-music", true, 0, 32)); - ui_->add->setIcon(IconLoader::Load("document-open-folder")); + setWindowIcon(IconLoader::Load(QStringLiteral("library-music"), true, 0, 32)); + ui_->add->setIcon(IconLoader::Load(QStringLiteral("document-open-folder"))); - ui_->combobox_cache_size->addItem("KB", static_cast(CacheSizeUnit::KB)); - ui_->combobox_cache_size->addItem("MB", static_cast(CacheSizeUnit::MB)); + ui_->combobox_cache_size->addItem(QStringLiteral("KB"), static_cast(CacheSizeUnit::KB)); + ui_->combobox_cache_size->addItem(QStringLiteral("MB"), static_cast(CacheSizeUnit::MB)); - ui_->combobox_disk_cache_size->addItem("KB", static_cast(CacheSizeUnit::KB)); - ui_->combobox_disk_cache_size->addItem("MB", static_cast(CacheSizeUnit::MB)); - ui_->combobox_disk_cache_size->addItem("GB", static_cast(CacheSizeUnit::GB)); + ui_->combobox_disk_cache_size->addItem(QStringLiteral("KB"), static_cast(CacheSizeUnit::KB)); + ui_->combobox_disk_cache_size->addItem(QStringLiteral("MB"), static_cast(CacheSizeUnit::MB)); + ui_->combobox_disk_cache_size->addItem(QStringLiteral("GB"), static_cast(CacheSizeUnit::GB)); QObject::connect(ui_->add, &QPushButton::clicked, this, &CollectionSettingsPage::Add); QObject::connect(ui_->remove, &QPushButton::clicked, this, &CollectionSettingsPage::Remove); @@ -187,8 +187,8 @@ void CollectionSettingsPage::Load() { ui_->mark_songs_unavailable->setChecked(ui_->song_tracking->isChecked() ? true : s.value("mark_songs_unavailable", true).toBool()); ui_->expire_unavailable_songs_days->setValue(s.value("expire_unavailable_songs", 60).toInt()); - QStringList filters = s.value("cover_art_patterns", QStringList() << "front" << "cover").toStringList(); - ui_->cover_art_patterns->setText(filters.join(",")); + QStringList filters = s.value("cover_art_patterns", QStringList() << QStringLiteral("front") << QStringLiteral("cover")).toStringList(); + ui_->cover_art_patterns->setText(filters.join(QStringLiteral(","))); ui_->spinbox_cache_size->setValue(s.value(kSettingsCacheSize, kSettingsCacheSizeDefault).toInt()); ui_->combobox_cache_size->setCurrentIndex(ui_->combobox_cache_size->findData(s.value(kSettingsCacheSizeUnit, static_cast(CacheSizeUnit::MB)).toInt())); @@ -212,7 +212,7 @@ void CollectionSettingsPage::Load() { DiskCacheEnable(ui_->checkbox_disk_cache->checkState()); - ui_->disk_cache_in_use->setText((dialog()->app()->collection_model()->icon_cache_disk_size() == 0 ? "empty" : Utilities::PrettySize(dialog()->app()->collection_model()->icon_cache_disk_size()))); + ui_->disk_cache_in_use->setText((dialog()->app()->collection_model()->icon_cache_disk_size() == 0 ? QStringLiteral("empty") : Utilities::PrettySize(dialog()->app()->collection_model()->icon_cache_disk_size()))); Init(ui_->layout_collectionsettingspage->parentWidget()); if (!QSettings().childGroups().contains(kSettingsGroup)) set_changed(); @@ -264,7 +264,7 @@ void CollectionSettingsPage::Save() { void CollectionSettingsPage::ClearPixmapDiskCache() { - ui_->disk_cache_in_use->setText("empty"); + ui_->disk_cache_in_use->setText(QStringLiteral("empty")); } diff --git a/src/settings/contextsettingspage.cpp b/src/settings/contextsettingspage.cpp index e02d6c5e..35156eca 100644 --- a/src/settings/contextsettingspage.cpp +++ b/src/settings/contextsettingspage.cpp @@ -63,7 +63,7 @@ ContextSettingsPage::ContextSettingsPage(SettingsDialog *dialog, QWidget *parent ui_(new Ui_ContextSettingsPage) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("view-choose", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("view-choose"), true, 0, 32)); checkboxes_[static_cast(ContextSettingsOrder::ALBUM)] = ui_->checkbox_album; checkboxes_[static_cast(ContextSettingsOrder::TECHNICAL_DATA)] = ui_->checkbox_technical_data; @@ -103,15 +103,15 @@ ContextSettingsPage::ContextSettingsPage(SettingsDialog *dialog, QWidget *parent QObject::connect(ui_->context_exp_chooser2, &QToolButton::triggered, this, &ContextSettingsPage::InsertVariableSecondLine); // Icons - ui_->context_exp_chooser1->setIcon(IconLoader::Load("list-add")); - ui_->context_exp_chooser2->setIcon(IconLoader::Load("list-add")); + ui_->context_exp_chooser1->setIcon(IconLoader::Load(QStringLiteral("list-add"))); + ui_->context_exp_chooser2->setIcon(IconLoader::Load(QStringLiteral("list-add"))); QObject::connect(ui_->font_headline, &QFontComboBox::currentFontChanged, this, &ContextSettingsPage::HeadlineFontChanged); QObject::connect(ui_->font_size_headline, QOverload::of(&QDoubleSpinBox::valueChanged), this, &ContextSettingsPage::HeadlineFontChanged); QObject::connect(ui_->font_normal, &QFontComboBox::currentFontChanged, this, &ContextSettingsPage::NormalFontChanged); QObject::connect(ui_->font_size_normal, QOverload::of(&QDoubleSpinBox::valueChanged), this, &ContextSettingsPage::NormalFontChanged); - QFile file(":/text/ghosts.txt"); + QFile file(QStringLiteral(":/text/ghosts.txt")); if (file.open(QIODevice::ReadOnly)) { QString text = file.readAll(); ui_->preview_headline->setText(text); diff --git a/src/settings/coverssettingspage.cpp b/src/settings/coverssettingspage.cpp index 4afc9111..ab4442c9 100644 --- a/src/settings/coverssettingspage.cpp +++ b/src/settings/coverssettingspage.cpp @@ -61,7 +61,7 @@ CoversSettingsPage::CoversSettingsPage(SettingsDialog *dialog, QWidget *parent) types_selected_(false) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("cdcase", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("cdcase"), true, 0, 32)); QObject::connect(ui_->providers_up, &QPushButton::clicked, this, &CoversSettingsPage::ProvidersMoveUp); QObject::connect(ui_->providers_down, &QPushButton::clicked, this, &CoversSettingsPage::ProvidersMoveDown); @@ -110,10 +110,10 @@ void CoversSettingsPage::Load() { QSettings s; s.beginGroup(kSettingsGroup); - const QStringList all_types = QStringList() << "art_unset" - << "art_manual" - << "art_automatic" - << "art_embedded"; + const QStringList all_types = QStringList() << QStringLiteral("art_unset") + << QStringLiteral("art_manual") + << QStringLiteral("art_automatic") + << QStringLiteral("art_embedded"); const QStringList types = s.value(kTypes, all_types).toStringList(); @@ -369,7 +369,7 @@ void CoversSettingsPage::AuthenticationFailure(const QStringList &errors) { if (!isVisible() || !ui_->providers->currentItem() || ui_->providers->currentItem()->text() != provider->name()) return; - QMessageBox::warning(this, tr("Authentication failed"), errors.join("\n")); + QMessageBox::warning(this, tr("Authentication failed"), errors.join(QStringLiteral("\n"))); ui_->login_state->SetLoggedIn(LoginStateWidget::State::LoggedOut); ui_->button_authenticate->setEnabled(true); diff --git a/src/settings/globalshortcutssettingspage.cpp b/src/settings/globalshortcutssettingspage.cpp index dbc38a36..e660b575 100644 --- a/src/settings/globalshortcutssettingspage.cpp +++ b/src/settings/globalshortcutssettingspage.cpp @@ -59,7 +59,7 @@ GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog *dialog, ui_->setupUi(this); ui_->shortcut_options->setEnabled(false); ui_->list->header()->setSectionResizeMode(QHeaderView::ResizeToContents); - setWindowIcon(IconLoader::Load("keyboard", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("keyboard"), true, 0, 32)); QObject::connect(ui_->list, &QTreeWidget::currentItemChanged, this, &GlobalShortcutsSettingsPage::ItemClicked); QObject::connect(ui_->radio_none, &QRadioButton::clicked, this, &GlobalShortcutsSettingsPage::NoneClicked); @@ -257,9 +257,9 @@ void GlobalShortcutsSettingsPage::ShortcutOptionsChanged() { void GlobalShortcutsSettingsPage::OpenGnomeKeybindingProperties() { - if (!QProcess::startDetached("gnome-keybinding-properties", QStringList())) { - if (!QProcess::startDetached("gnome-control-center", QStringList() << "keyboard")) { - QMessageBox::warning(this, "Error", tr("The \"%1\" command could not be started.").arg("gnome-keybinding-properties")); + if (!QProcess::startDetached(QStringLiteral("gnome-keybinding-properties"), QStringList())) { + if (!QProcess::startDetached(QStringLiteral("gnome-control-center"), QStringList() << QStringLiteral("keyboard"))) { + QMessageBox::warning(this, QStringLiteral("Error"), tr("The \"%1\" command could not be started.").arg(QStringLiteral("gnome-keybinding-properties"))); } } @@ -267,9 +267,9 @@ void GlobalShortcutsSettingsPage::OpenGnomeKeybindingProperties() { void GlobalShortcutsSettingsPage::OpenMateKeybindingProperties() { - if (!QProcess::startDetached("mate-keybinding-properties", QStringList())) { - if (!QProcess::startDetached("mate-control-center", QStringList() << "keyboard")) { - QMessageBox::warning(this, "Error", tr("The \"%1\" command could not be started.").arg("mate-keybinding-properties")); + if (!QProcess::startDetached(QStringLiteral("mate-keybinding-properties"), QStringList())) { + if (!QProcess::startDetached(QStringLiteral("mate-control-center"), QStringList() << QStringLiteral("keyboard"))) { + QMessageBox::warning(this, QStringLiteral("Error"), tr("The \"%1\" command could not be started.").arg(QStringLiteral("mate-keybinding-properties"))); } } diff --git a/src/settings/lyricssettingspage.cpp b/src/settings/lyricssettingspage.cpp index 9c264984..78dfc2a2 100644 --- a/src/settings/lyricssettingspage.cpp +++ b/src/settings/lyricssettingspage.cpp @@ -51,7 +51,7 @@ LyricsSettingsPage::LyricsSettingsPage(SettingsDialog *dialog, QWidget *parent) provider_selected_(false) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("view-media-lyrics", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("view-media-lyrics"), true, 0, 32)); QObject::connect(ui_->providers_up, &QPushButton::clicked, this, &LyricsSettingsPage::ProvidersMoveUp); QObject::connect(ui_->providers_down, &QPushButton::clicked, this, &LyricsSettingsPage::ProvidersMoveDown); @@ -126,11 +126,11 @@ void LyricsSettingsPage::CurrentItemChanged(QListWidgetItem *item_current, QList ui_->button_authenticate->setEnabled(true); ui_->button_authenticate->show(); ui_->login_state->show(); - ui_->label_auth_info->setText(QString("%1 needs authentication.").arg(provider->name())); + ui_->label_auth_info->setText(QStringLiteral("%1 needs authentication.").arg(provider->name())); } else { DisableAuthentication(); - ui_->label_auth_info->setText(QString("%1 does not need authentication.").arg(provider->name())); + ui_->label_auth_info->setText(QStringLiteral("%1 does not need authentication.").arg(provider->name())); } provider_selected_ = true; } @@ -251,7 +251,7 @@ void LyricsSettingsPage::AuthenticationFailure(const QStringList &errors) { if (!isVisible() || !ui_->providers->currentItem() || ui_->providers->currentItem()->text() != provider->name()) return; - QMessageBox::warning(this, tr("Authentication failed"), errors.join("\n")); + QMessageBox::warning(this, tr("Authentication failed"), errors.join(QStringLiteral("\n"))); ui_->login_state->SetLoggedIn(LoginStateWidget::State::LoggedOut); ui_->button_authenticate->setEnabled(true); diff --git a/src/settings/moodbarsettingspage.cpp b/src/settings/moodbarsettingspage.cpp index ace1edcf..ad7f275e 100644 --- a/src/settings/moodbarsettingspage.cpp +++ b/src/settings/moodbarsettingspage.cpp @@ -54,7 +54,7 @@ MoodbarSettingsPage::MoodbarSettingsPage(SettingsDialog *dialog, QWidget *parent initialized_(false) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("moodbar", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("moodbar"), true, 0, 32)); MoodbarSettingsPage::Load(); @@ -102,7 +102,7 @@ void MoodbarSettingsPage::InitMoodbarPreviews() { ui_->moodbar_style->setIconSize(preview_size); // Read the sample data - QFile file(":/mood/sample.mood"); + QFile file(QStringLiteral(":/mood/sample.mood")); if (!file.open(QIODevice::ReadOnly)) { qLog(Warning) << "Failed to open moodbar sample file" << file.fileName() << "for reading:" << file.errorString(); return; diff --git a/src/settings/networkproxysettingspage.cpp b/src/settings/networkproxysettingspage.cpp index 25db28c9..b0e32b79 100644 --- a/src/settings/networkproxysettingspage.cpp +++ b/src/settings/networkproxysettingspage.cpp @@ -45,7 +45,7 @@ NetworkProxySettingsPage::NetworkProxySettingsPage(SettingsDialog *dialog, QWidg ui_(new Ui_NetworkProxySettingsPage) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("applications-internet", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("applications-internet"), true, 0, 32)); } diff --git a/src/settings/notificationssettingspage.cpp b/src/settings/notificationssettingspage.cpp index af8c048e..6762f617 100644 --- a/src/settings/notificationssettingspage.cpp +++ b/src/settings/notificationssettingspage.cpp @@ -62,9 +62,9 @@ NotificationsSettingsPage::NotificationsSettingsPage(SettingsDialog *dialog, QWi pretty_popup_(new OSDPretty(OSDPretty::Mode::Draggable)) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("help-hint", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("help-hint"), true, 0, 32)); - pretty_popup_->SetMessage(tr("OSD Preview"), tr("Drag to reposition"), QImage(":/pictures/cdcase.png")); + pretty_popup_->SetMessage(tr("OSD Preview"), tr("Drag to reposition"), QImage(QStringLiteral(":/pictures/cdcase.png"))); ui_->notifications_bg_preset->setItemData(0, QColor(OSDPretty::kPresetBlue), Qt::DecorationRole); ui_->notifications_bg_preset->setItemData(1, QColor(OSDPretty::kPresetRed), Qt::DecorationRole); @@ -129,8 +129,8 @@ NotificationsSettingsPage::NotificationsSettingsPage(SettingsDialog *dialog, QWi QObject::connect(ui_->notifications_preview, &QPushButton::clicked, this, &NotificationsSettingsPage::PrepareNotificationPreview); // Icons - ui_->notifications_exp_chooser1->setIcon(IconLoader::Load("list-add")); - ui_->notifications_exp_chooser2->setIcon(IconLoader::Load("list-add")); + ui_->notifications_exp_chooser1->setIcon(IconLoader::Load(QStringLiteral("list-add"))); + ui_->notifications_exp_chooser2->setIcon(IconLoader::Load(QStringLiteral("list-add"))); QObject::connect(pretty_popup_, &OSDPretty::PositionChanged, this, &NotificationsSettingsPage::PrettyOSDChanged); diff --git a/src/settings/playlistsettingspage.cpp b/src/settings/playlistsettingspage.cpp index 81711dda..df8389d4 100644 --- a/src/settings/playlistsettingspage.cpp +++ b/src/settings/playlistsettingspage.cpp @@ -41,7 +41,7 @@ PlaylistSettingsPage::PlaylistSettingsPage(SettingsDialog *dialog, QWidget *pare ui_(new Ui_PlaylistSettingsPage) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("document-new", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("document-new"), true, 0, 32)); } diff --git a/src/settings/qobuzsettingspage.cpp b/src/settings/qobuzsettingspage.cpp index 6cf4add7..060c7235 100644 --- a/src/settings/qobuzsettingspage.cpp +++ b/src/settings/qobuzsettingspage.cpp @@ -48,7 +48,7 @@ QobuzSettingsPage::QobuzSettingsPage(SettingsDialog *dialog, QWidget *parent) service_(dialog->app()->internet_services()->Service()) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("qobuz", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("qobuz"), true, 0, 32)); QObject::connect(ui_->button_login, &QPushButton::clicked, this, &QobuzSettingsPage::LoginClicked); QObject::connect(ui_->login_state, &LoginStateWidget::LogoutClicked, this, &QobuzSettingsPage::LogoutClicked); @@ -60,10 +60,10 @@ QobuzSettingsPage::QobuzSettingsPage(SettingsDialog *dialog, QWidget *parent) dialog->installEventFilter(this); - ui_->format->addItem("MP3 320", 5); - ui_->format->addItem("FLAC Lossless", 6); - ui_->format->addItem("FLAC Hi-Res <= 96kHz", 7); - ui_->format->addItem("FLAC Hi-Res > 96kHz", 27); + ui_->format->addItem(QStringLiteral("MP3 320"), 5); + ui_->format->addItem(QStringLiteral("FLAC Lossless"), 6); + ui_->format->addItem(QStringLiteral("FLAC Hi-Res <= 96kHz"), 7); + ui_->format->addItem(QStringLiteral("FLAC Hi-Res > 96kHz"), 27); } @@ -84,7 +84,7 @@ void QobuzSettingsPage::Load() { if (password.isEmpty()) ui_->password->clear(); else ui_->password->setText(QString::fromUtf8(QByteArray::fromBase64(password))); - ComboBoxLoadFromSettings(s, ui_->format, "format", 27); + ComboBoxLoadFromSettings(s, ui_->format, QStringLiteral("format"), 27); ui_->searchdelay->setValue(s.value("searchdelay", 1500).toInt()); ui_->artistssearchlimit->setValue(s.value("artistssearchlimit", 4).toInt()); ui_->albumssearchlimit->setValue(s.value("albumssearchlimit", 10).toInt()); diff --git a/src/settings/scrobblersettingspage.cpp b/src/settings/scrobblersettingspage.cpp index 3a4074eb..af15d8ac 100644 --- a/src/settings/scrobblersettingspage.cpp +++ b/src/settings/scrobblersettingspage.cpp @@ -55,7 +55,7 @@ ScrobblerSettingsPage::ScrobblerSettingsPage(SettingsDialog *dialog, QWidget *pa listenbrainz_waiting_for_auth_(false) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("scrobble", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("scrobble"), true, 0, 32)); // Last.fm QObject::connect(&*lastfmscrobbler_, &LastFMScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::LastFM_AuthenticationComplete); @@ -200,7 +200,7 @@ void ScrobblerSettingsPage::LastFM_AuthenticationComplete(const bool success, co Save(); } else { - if (!error.isEmpty()) QMessageBox::warning(this, "Authentication failed", error); + if (!error.isEmpty()) QMessageBox::warning(this, QStringLiteral("Authentication failed"), error); } LastFM_RefreshControls(success); @@ -235,7 +235,7 @@ void ScrobblerSettingsPage::LibreFM_AuthenticationComplete(const bool success, c Save(); } else { - QMessageBox::warning(this, "Authentication failed", error); + QMessageBox::warning(this, QStringLiteral("Authentication failed"), error); } LibreFM_RefreshControls(success); @@ -270,7 +270,7 @@ void ScrobblerSettingsPage::ListenBrainz_AuthenticationComplete(const bool succe Save(); } else { - QMessageBox::warning(this, "Authentication failed", error); + QMessageBox::warning(this, QStringLiteral("Authentication failed"), error); } ListenBrainz_RefreshControls(success); diff --git a/src/settings/subsonicsettingspage.cpp b/src/settings/subsonicsettingspage.cpp index 993988e9..bac7a7ff 100644 --- a/src/settings/subsonicsettingspage.cpp +++ b/src/settings/subsonicsettingspage.cpp @@ -47,7 +47,7 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog, QWidget *pare service_(dialog->app()->internet_services()->Service()) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("subsonic", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("subsonic"), true, 0, 32)); QObject::connect(ui_->button_test, &QPushButton::clicked, this, &SubsonicSettingsPage::TestClicked); QObject::connect(ui_->button_deletesongs, &QPushButton::clicked, &*service_, &SubsonicService::DeleteSongs); diff --git a/src/settings/tidalsettingspage.cpp b/src/settings/tidalsettingspage.cpp index 882bccce..66428c2e 100644 --- a/src/settings/tidalsettingspage.cpp +++ b/src/settings/tidalsettingspage.cpp @@ -48,7 +48,7 @@ TidalSettingsPage::TidalSettingsPage(SettingsDialog *dialog, QWidget *parent) service_(dialog->app()->internet_services()->Service()) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("tidal", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("tidal"), true, 0, 32)); QObject::connect(ui_->button_login, &QPushButton::clicked, this, &TidalSettingsPage::LoginClicked); QObject::connect(ui_->login_state, &LoginStateWidget::LogoutClicked, this, &TidalSettingsPage::LogoutClicked); @@ -62,20 +62,20 @@ TidalSettingsPage::TidalSettingsPage(SettingsDialog *dialog, QWidget *parent) dialog->installEventFilter(this); - ui_->quality->addItem("Low", "LOW"); - ui_->quality->addItem("High", "HIGH"); - ui_->quality->addItem("Lossless", "LOSSLESS"); - ui_->quality->addItem("Hi resolution", "HI_RES"); + ui_->quality->addItem(QStringLiteral("Low"), "LOW"); + ui_->quality->addItem(QStringLiteral("High"), "HIGH"); + ui_->quality->addItem(QStringLiteral("Lossless"), "LOSSLESS"); + ui_->quality->addItem(QStringLiteral("Hi resolution"), "HI_RES"); - ui_->coversize->addItem("160x160", "160x160"); - ui_->coversize->addItem("320x320", "320x320"); - ui_->coversize->addItem("640x640", "640x640"); - ui_->coversize->addItem("750x750", "750x750"); - ui_->coversize->addItem("1280x1280", "1280x1280"); + ui_->coversize->addItem(QStringLiteral("160x160"), "160x160"); + ui_->coversize->addItem(QStringLiteral("320x320"), "320x320"); + ui_->coversize->addItem(QStringLiteral("640x640"), "640x640"); + ui_->coversize->addItem(QStringLiteral("750x750"), "750x750"); + ui_->coversize->addItem(QStringLiteral("1280x1280"), "1280x1280"); - ui_->streamurl->addItem("streamurl", static_cast(StreamUrlMethod::StreamUrl)); - ui_->streamurl->addItem("urlpostpaywall", static_cast(StreamUrlMethod::UrlPostPaywall)); - ui_->streamurl->addItem("playbackinfopostpaywall", static_cast(StreamUrlMethod::PlaybackInfoPostPaywall)); + ui_->streamurl->addItem(QStringLiteral("streamurl"), static_cast(StreamUrlMethod::StreamUrl)); + ui_->streamurl->addItem(QStringLiteral("urlpostpaywall"), static_cast(StreamUrlMethod::UrlPostPaywall)); + ui_->streamurl->addItem(QStringLiteral("playbackinfopostpaywall"), static_cast(StreamUrlMethod::PlaybackInfoPostPaywall)); } @@ -96,14 +96,14 @@ void TidalSettingsPage::Load() { if (password.isEmpty()) ui_->password->clear(); else ui_->password->setText(QString::fromUtf8(QByteArray::fromBase64(password))); - ComboBoxLoadFromSettings(s, ui_->quality, "quality", "LOSSLESS"); + ComboBoxLoadFromSettings(s, ui_->quality, QStringLiteral("quality"), QStringLiteral("LOSSLESS")); ui_->searchdelay->setValue(s.value("searchdelay", 1500).toInt()); ui_->artistssearchlimit->setValue(s.value("artistssearchlimit", 4).toInt()); ui_->albumssearchlimit->setValue(s.value("albumssearchlimit", 10).toInt()); ui_->songssearchlimit->setValue(s.value("songssearchlimit", 10).toInt()); ui_->checkbox_fetchalbums->setChecked(s.value("fetchalbums", false).toBool()); ui_->checkbox_download_album_covers->setChecked(s.value("downloadalbumcovers", true).toBool()); - ComboBoxLoadFromSettings(s, ui_->coversize, "coversize", "640x640"); + ComboBoxLoadFromSettings(s, ui_->coversize, QStringLiteral("coversize"), QStringLiteral("640x640")); ui_->streamurl->setCurrentIndex(ui_->streamurl->findData(s.value("streamurl", static_cast(StreamUrlMethod::StreamUrl)).toInt())); ui_->checkbox_album_explicit->setChecked(s.value("album_explicit", false).toBool()); diff --git a/src/settings/transcodersettingspage.cpp b/src/settings/transcodersettingspage.cpp index 183b61ef..ad41f802 100644 --- a/src/settings/transcodersettingspage.cpp +++ b/src/settings/transcodersettingspage.cpp @@ -43,7 +43,7 @@ TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog *dialog, QWidget * ui_(new Ui_TranscoderSettingsPage) { ui_->setupUi(this); - setWindowIcon(IconLoader::Load("tools-wizard", true, 0, 32)); + setWindowIcon(IconLoader::Load(QStringLiteral("tools-wizard"), true, 0, 32)); } diff --git a/src/smartplaylists/smartplaylistsearch.cpp b/src/smartplaylists/smartplaylistsearch.cpp index 670c11c3..37dd9998 100644 --- a/src/smartplaylists/smartplaylistsearch.cpp +++ b/src/smartplaylists/smartplaylistsearch.cpp @@ -62,7 +62,7 @@ QString SmartPlaylistSearch::ToSql(const QString &songs_table) const { } if (!terms_.isEmpty() && search_type_ != SearchType::All) { - QString boolean_op = search_type_ == SearchType::And ? " AND " : " OR "; + QString boolean_op = search_type_ == SearchType::And ? QStringLiteral(" AND ") : QStringLiteral(" OR "); where_clauses << "(" + term_where_clauses.join(boolean_op) + ")"; } @@ -77,15 +77,15 @@ QString SmartPlaylistSearch::ToSql(const QString &songs_table) const { // We never want to include songs that have been deleted, // but are still kept in the database in case the directory containing them has just been unmounted. - where_clauses << "unavailable = 0"; + where_clauses << QStringLiteral("unavailable = 0"); if (!where_clauses.isEmpty()) { - sql += " WHERE " + where_clauses.join(" AND "); + sql += " WHERE " + where_clauses.join(QStringLiteral(" AND ")); } // Add sort by if (sort_type_ == SortType::Random) { - sql += " ORDER BY random()"; + sql += QLatin1String(" ORDER BY random()"); } else { sql += " ORDER BY " + SmartPlaylistSearchTerm::FieldColumnName(sort_field_) + (sort_type_ == SortType::FieldAsc ? " ASC" : " DESC"); @@ -93,7 +93,7 @@ QString SmartPlaylistSearch::ToSql(const QString &songs_table) const { // Add limit if (first_item_ > 0) { - sql += QString(" LIMIT %1 OFFSET %2").arg(limit_).arg(first_item_); + sql += QStringLiteral(" LIMIT %1 OFFSET %2").arg(limit_).arg(first_item_); } else if (limit_ != -1) { sql += " LIMIT " + QString::number(limit_); diff --git a/src/smartplaylists/smartplaylistsearchterm.cpp b/src/smartplaylists/smartplaylistsearchterm.cpp index 727990c3..27f539ea 100644 --- a/src/smartplaylists/smartplaylistsearchterm.cpp +++ b/src/smartplaylists/smartplaylistsearchterm.cpp @@ -39,7 +39,7 @@ QString SmartPlaylistSearchTerm::ToSql() const { QString col = FieldColumnName(field_); QString date = DateName(datetype_, true); QString value = value_.toString(); - value.replace('\'', "''"); + value.replace('\'', QLatin1String("''")); if (field_ == Field::Filetype) { Song::FileType filetype = Song::FiletypeByExtension(value); @@ -64,10 +64,10 @@ QString SmartPlaylistSearchTerm::ToSql() const { // We have a numeric date, consider also the time for more precision col = "DATETIME(" + col + ", 'unixepoch', 'localtime')"; second_value = second_value_.toString(); - second_value.replace('\'', "''"); + second_value.replace('\'', QLatin1String("''")); if (date == "weeks") { // Sqlite doesn't know weeks, transform them to days - date = "days"; + date = QStringLiteral("days"); value = QString::number(value_.toInt() * 7); second_value = QString::number(second_value_.toInt() * 7); } @@ -302,57 +302,57 @@ QString SmartPlaylistSearchTerm::FieldColumnName(const Field field) { switch (field) { case Field::AlbumArtist: - return "albumartist"; + return QStringLiteral("albumartist"); case Field::Artist: - return "artist"; + return QStringLiteral("artist"); case Field::Album: - return "album"; + return QStringLiteral("album"); case Field::Title: - return "title"; + return QStringLiteral("title"); case Field::Track: - return "track"; + return QStringLiteral("track"); case Field::Disc: - return "disc"; + return QStringLiteral("disc"); case Field::Year: - return "year"; + return QStringLiteral("year"); case Field::OriginalYear: - return "originalyear"; + return QStringLiteral("originalyear"); case Field::Genre: - return "genre"; + return QStringLiteral("genre"); case Field::Composer: - return "composer"; + return QStringLiteral("composer"); case Field::Performer: - return "performer"; + return QStringLiteral("performer"); case Field::Grouping: - return "grouping"; + return QStringLiteral("grouping"); case Field::Comment: - return "comment"; + return QStringLiteral("comment"); case Field::Length: - return "length"; + return QStringLiteral("length"); case Field::Filepath: - return "url"; + return QStringLiteral("url"); case Field::Filetype: - return "filetype"; + return QStringLiteral("filetype"); case Field::Filesize: - return "filesize"; + return QStringLiteral("filesize"); case Field::DateCreated: - return "ctime"; + return QStringLiteral("ctime"); case Field::DateModified: - return "mtime"; + return QStringLiteral("mtime"); case Field::PlayCount: - return "playcount"; + return QStringLiteral("playcount"); case Field::SkipCount: - return "skipcount"; + return QStringLiteral("skipcount"); case Field::LastPlayed: - return "lastplayed"; + return QStringLiteral("lastplayed"); case Field::Rating: - return "rating"; + return QStringLiteral("rating"); case Field::Samplerate: - return "samplerate"; + return QStringLiteral("samplerate"); case Field::Bitdepth: - return "bitdepth"; + return QStringLiteral("bitdepth"); case Field::Bitrate: - return "bitrate"; + return QStringLiteral("bitrate"); case Field::FieldCount: Q_ASSERT(0); } @@ -446,15 +446,15 @@ QString SmartPlaylistSearchTerm::DateName(const DateType datetype, const bool fo // If forQuery is true, untranslated keywords are returned switch (datetype) { case DateType::Hour: - return (forQuery ? "hours" : QObject::tr("Hours")); + return (forQuery ? QStringLiteral("hours") : QObject::tr("Hours")); case DateType::Day: - return (forQuery ? "days" : QObject::tr("Days")); + return (forQuery ? QStringLiteral("days") : QObject::tr("Days")); case DateType::Week: - return (forQuery ? "weeks" : QObject::tr("Weeks")); + return (forQuery ? QStringLiteral("weeks") : QObject::tr("Weeks")); case DateType::Month: - return (forQuery ? "months" : QObject::tr("Months")); + return (forQuery ? QStringLiteral("months") : QObject::tr("Months")); case DateType::Year: - return (forQuery ? "years" : QObject::tr("Years")); + return (forQuery ? QStringLiteral("years") : QObject::tr("Years")); } return QString(); diff --git a/src/smartplaylists/smartplaylistsearchtermwidget.cpp b/src/smartplaylists/smartplaylistsearchtermwidget.cpp index 711fcc26..7fe847e3 100644 --- a/src/smartplaylists/smartplaylistsearchtermwidget.cpp +++ b/src/smartplaylists/smartplaylistsearchtermwidget.cpp @@ -122,18 +122,18 @@ SmartPlaylistSearchTermWidget::SmartPlaylistSearchTermWidget(SharedPtrremove->setIcon(IconLoader::Load("list-remove")); + ui_->remove->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); // Set stylesheet - QFile stylesheet_file(":/style/smartplaylistsearchterm.css"); + QFile stylesheet_file(QStringLiteral(":/style/smartplaylistsearchterm.css")); if (stylesheet_file.open(QIODevice::ReadOnly)) { QString stylesheet = QString::fromLatin1(stylesheet_file.readAll()); stylesheet_file.close(); const QColor base(222, 97, 97, 128); - stylesheet.replace("%light2", Utilities::ColorToRgba(base.lighter(140))); - stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); - stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); - stylesheet.replace("%base", Utilities::ColorToRgba(base)); + stylesheet.replace(QLatin1String("%light2"), Utilities::ColorToRgba(base.lighter(140))); + stylesheet.replace(QLatin1String("%light"), Utilities::ColorToRgba(base.lighter(120))); + stylesheet.replace(QLatin1String("%dark"), Utilities::ColorToRgba(base.darker(120))); + stylesheet.replace(QLatin1String("%base"), Utilities::ColorToRgba(base)); setStyleSheet(stylesheet); } @@ -326,7 +326,7 @@ void SmartPlaylistSearchTermWidget::SetTerm(const SmartPlaylistSearchTerm &term) switch (SmartPlaylistSearchTerm::TypeOf(term.field_)) { case SmartPlaylistSearchTerm::Type::Text: if (ui_->value_stack->currentWidget() == ui_->page_empty) { - ui_->value_text->setText(""); + ui_->value_text->setText(QLatin1String("")); } else { ui_->value_text->setText(term.value_.toString()); @@ -418,7 +418,7 @@ void SmartPlaylistSearchTermWidget::RelativeValueChanged() { } // Explain the user why he can't proceed if (ui_->value_date_numeric1->value() >= ui_->value_date_numeric2->value()) { - QMessageBox::warning(this, "Strawberry", tr("The second value must be greater than the first one!")); + QMessageBox::warning(this, QStringLiteral("Strawberry"), tr("The second value must be greater than the first one!")); } // Emit the signal in any case, so the Next button will be disabled emit Changed(); @@ -430,7 +430,7 @@ SmartPlaylistSearchTermWidget::Overlay::Overlay(SmartPlaylistSearchTermWidget *p parent_(parent), opacity_(0.0), text_(tr("Add search term")), - icon_(IconLoader::Load("list-add").pixmap(kIconSize)) { + icon_(IconLoader::Load(QStringLiteral("list-add")).pixmap(kIconSize)) { raise(); setFocusPolicy(Qt::TabFocus); diff --git a/src/smartplaylists/smartplaylistsmodel.cpp b/src/smartplaylists/smartplaylistsmodel.cpp index 2084191c..089b5c51 100644 --- a/src/smartplaylists/smartplaylistsmodel.cpp +++ b/src/smartplaylists/smartplaylistsmodel.cpp @@ -48,7 +48,7 @@ const int SmartPlaylistsModel::kSmartPlaylistsVersion = 1; SmartPlaylistsModel::SmartPlaylistsModel(SharedPtr collection_backend, QObject *parent) : SimpleTreeModel(new SmartPlaylistsItem(this), parent), collection_backend_(collection_backend), - icon_(IconLoader::Load("view-media-playlist")) { + icon_(IconLoader::Load(QStringLiteral("view-media-playlist"))) { root_->lazy_loaded = true; @@ -289,7 +289,7 @@ QVariant SmartPlaylistsModel::data(const QModelIndex &idx, const int role) const } QStringList SmartPlaylistsModel::mimeTypes() const { - return QStringList() << "text/uri-list"; + return QStringList() << QStringLiteral("text/uri-list"); } QMimeData *SmartPlaylistsModel::mimeData(const QModelIndexList &indexes) const { diff --git a/src/smartplaylists/smartplaylistsviewcontainer.cpp b/src/smartplaylists/smartplaylistsviewcontainer.cpp index 4bae06c8..abd42f31 100644 --- a/src/smartplaylists/smartplaylistsviewcontainer.cpp +++ b/src/smartplaylists/smartplaylistsviewcontainer.cpp @@ -60,27 +60,27 @@ SmartPlaylistsViewContainer::SmartPlaylistsViewContainer(Application *app, QWidg model_->Init(); - action_new_smart_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("New smart playlist..."), this, &SmartPlaylistsViewContainer::NewSmartPlaylist); + action_new_smart_playlist_ = context_menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("New smart playlist..."), this, &SmartPlaylistsViewContainer::NewSmartPlaylist); - action_append_to_playlist_ = context_menu_selected_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &SmartPlaylistsViewContainer::AppendToPlaylist); - action_replace_current_playlist_ = context_menu_selected_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &SmartPlaylistsViewContainer::ReplaceCurrentPlaylist); - action_open_in_new_playlist_ = context_menu_selected_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &SmartPlaylistsViewContainer::OpenInNewPlaylist); + action_append_to_playlist_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &SmartPlaylistsViewContainer::AppendToPlaylist); + action_replace_current_playlist_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &SmartPlaylistsViewContainer::ReplaceCurrentPlaylist); + action_open_in_new_playlist_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &SmartPlaylistsViewContainer::OpenInNewPlaylist); context_menu_selected_->addSeparator(); - action_add_to_playlist_enqueue_ = context_menu_selected_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, &SmartPlaylistsViewContainer::AddToPlaylistEnqueue); - action_add_to_playlist_enqueue_next_ = context_menu_selected_->addAction(IconLoader::Load("go-next"), tr("Play next"), this, &SmartPlaylistsViewContainer::AddToPlaylistEnqueueNext); + action_add_to_playlist_enqueue_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Queue track"), this, &SmartPlaylistsViewContainer::AddToPlaylistEnqueue); + action_add_to_playlist_enqueue_next_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("go-next")), tr("Play next"), this, &SmartPlaylistsViewContainer::AddToPlaylistEnqueueNext); context_menu_selected_->addSeparator(); context_menu_selected_->addSeparator(); context_menu_selected_->addActions(QList() << action_new_smart_playlist_); - action_edit_smart_playlist_ = context_menu_selected_->addAction(IconLoader::Load("edit-rename"), tr("Edit smart playlist..."), this, &SmartPlaylistsViewContainer::EditSmartPlaylistFromContext); - action_delete_smart_playlist_ = context_menu_selected_->addAction(IconLoader::Load("edit-delete"), tr("Delete smart playlist"), this, &SmartPlaylistsViewContainer::DeleteSmartPlaylistFromContext); + action_edit_smart_playlist_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("edit-rename")), tr("Edit smart playlist..."), this, &SmartPlaylistsViewContainer::EditSmartPlaylistFromContext); + action_delete_smart_playlist_ = context_menu_selected_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete smart playlist"), this, &SmartPlaylistsViewContainer::DeleteSmartPlaylistFromContext); context_menu_selected_->addSeparator(); ui_->new_->setDefaultAction(action_new_smart_playlist_); - ui_->edit_->setIcon(IconLoader::Load("edit-rename")); - ui_->delete_->setIcon(IconLoader::Load("edit-delete")); + ui_->edit_->setIcon(IconLoader::Load(QStringLiteral("edit-rename"))); + ui_->delete_->setIcon(IconLoader::Load(QStringLiteral("edit-delete"))); QObject::connect(ui_->edit_, &QToolButton::clicked, this, &SmartPlaylistsViewContainer::EditSmartPlaylistFromButton); QObject::connect(ui_->delete_, &QToolButton::clicked, this, &SmartPlaylistsViewContainer::DeleteSmartPlaylistFromButton); diff --git a/src/smartplaylists/smartplaylistwizard.cpp b/src/smartplaylists/smartplaylistwizard.cpp index ffe1e3c1..a66d6240 100644 --- a/src/smartplaylists/smartplaylistwizard.cpp +++ b/src/smartplaylists/smartplaylistwizard.cpp @@ -68,7 +68,7 @@ SmartPlaylistWizard::SmartPlaylistWizard(Application *app, SharedPtrsetTitle(tr("Playlist type")); type_page_->setSubTitle(tr("A smart playlist is a dynamic list of songs that come from your collection. There are different types of smart playlist that offer different ways of selecting songs.")); - type_page_->setStyleSheet("QRadioButton { font-weight: bold; } QLabel { margin-bottom: 1em; margin-left: 24px; }"); + type_page_->setStyleSheet(QStringLiteral("QRadioButton { font-weight: bold; } QLabel { margin-bottom: 1em; margin-left: 24px; }")); addPage(type_page_); // Finish page diff --git a/src/subsonic/subsonicbaserequest.cpp b/src/subsonic/subsonicbaserequest.cpp index 235030b0..bcfa9d22 100644 --- a/src/subsonic/subsonicbaserequest.cpp +++ b/src/subsonic/subsonicbaserequest.cpp @@ -80,10 +80,10 @@ QUrl SubsonicBaseRequest::CreateUrl(const QUrl &server_url, const SubsonicSettin QUrl url(server_url); if (!url.path().isEmpty() && url.path().right(1) == "/") { - url.setPath(url.path() + QString("rest/") + ressource_name + QString(".view")); + url.setPath(url.path() + QStringLiteral("rest/") + ressource_name + QStringLiteral(".view")); } else { - url.setPath(url.path() + QString("/rest/") + ressource_name + QString(".view")); + url.setPath(url.path() + QStringLiteral("/rest/") + ressource_name + QStringLiteral(".view")); } url.setQuery(url_query); @@ -137,7 +137,7 @@ QByteArray SubsonicBaseRequest::GetReplyData(QNetworkReply *reply) { else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { @@ -148,24 +148,24 @@ QByteArray SubsonicBaseRequest::GetReplyData(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &parse_error); if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error")) { - QJsonValue json_error = json_obj["error"]; + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_error = json_obj[QStringLiteral("error")]; if (json_error.isObject()) { json_obj = json_error.toObject(); - if (!json_obj.isEmpty() && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - error = QString("%1 (%2)").arg(message).arg(code); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + error = QStringLiteral("%1 (%2)").arg(message).arg(code); } } } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } Error(error); @@ -182,34 +182,34 @@ QJsonObject SubsonicBaseRequest::ExtractJsonObj(QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error("Reply from server missing Json data.", data); + Error(QStringLiteral("Reply from server missing Json data."), data); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } - if (!json_obj.contains("subsonic-response")) { - Error("Json reply is missing subsonic-response.", json_obj); + if (!json_obj.contains(QStringLiteral("subsonic-response"))) { + Error(QStringLiteral("Json reply is missing subsonic-response."), json_obj); return QJsonObject(); } - QJsonValue json_response = json_obj["subsonic-response"]; + QJsonValue json_response = json_obj[QStringLiteral("subsonic-response")]; if (!json_response.isObject()) { - Error("Json response is not an object.", json_response); + Error(QStringLiteral("Json response is not an object."), json_response); return QJsonObject(); } json_obj = json_response.toObject(); diff --git a/src/subsonic/subsonicrequest.cpp b/src/subsonic/subsonicrequest.cpp index c94e3000..bed47beb 100644 --- a/src/subsonic/subsonicrequest.cpp +++ b/src/subsonic/subsonicrequest.cpp @@ -149,7 +149,7 @@ void SubsonicRequest::FlushAlbumsRequests() { if (request.size > 0) params << Param("size", QString::number(request.size)); if (request.offset > 0) params << Param("offset", QString::number(request.offset)); - QNetworkReply *reply = CreateGetRequest(QString("getAlbumList2"), params); + QNetworkReply *reply = CreateGetRequest(QStringLiteral("getAlbumList2"), params); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumsReplyReceived(reply, request.offset, request.size); }); timeouts_->AddReply(reply); @@ -182,38 +182,38 @@ void SubsonicRequest::AlbumsReplyReceived(QNetworkReply *reply, const int offset return; } - if (json_obj.contains("error")) { - QJsonValue json_error = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_error = json_obj[QStringLiteral("error")]; if (!json_error.isObject()) { - Error("Json error is not an object.", json_obj); + Error(QStringLiteral("Json error is not an object."), json_obj); AlbumsFinishCheck(offset_requested, size_requested); return; } json_obj = json_error.toObject(); - if (!json_obj.isEmpty() && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - Error(QString("%1 (%2)").arg(message).arg(code)); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + Error(QStringLiteral("%1 (%2)").arg(message).arg(code)); AlbumsFinishCheck(offset_requested, size_requested); } else { - Error("Json error object is missing code or message.", json_obj); + Error(QStringLiteral("Json error object is missing code or message."), json_obj); AlbumsFinishCheck(offset_requested, size_requested); } return; } - if (!json_obj.contains("albumList") && !json_obj.contains("albumList2")) { - Error("Json reply is missing albumList.", json_obj); + if (!json_obj.contains(QStringLiteral("albumList")) && !json_obj.contains(QStringLiteral("albumList2"))) { + Error(QStringLiteral("Json reply is missing albumList."), json_obj); AlbumsFinishCheck(offset_requested, size_requested); return; } QJsonValue value_albumlist; - if (json_obj.contains("albumList")) value_albumlist = json_obj["albumList"]; - else if (json_obj.contains("albumList2")) value_albumlist = json_obj["albumList2"]; + if (json_obj.contains(QStringLiteral("albumList"))) value_albumlist = json_obj[QStringLiteral("albumList")]; + else if (json_obj.contains(QStringLiteral("albumList2"))) value_albumlist = json_obj[QStringLiteral("albumList2")]; if (!value_albumlist.isObject()) { - Error("Json album list is not an object.", value_albumlist); + Error(QStringLiteral("Json album list is not an object."), value_albumlist); AlbumsFinishCheck(offset_requested, size_requested); } json_obj = value_albumlist.toObject(); @@ -223,18 +223,18 @@ void SubsonicRequest::AlbumsReplyReceived(QNetworkReply *reply, const int offset return; } - if (!json_obj.contains("album")) { - Error("Json album list does not contain album array.", json_obj); + if (!json_obj.contains(QStringLiteral("album"))) { + Error(QStringLiteral("Json album list does not contain album array."), json_obj); AlbumsFinishCheck(offset_requested, size_requested); } - QJsonValue json_album = json_obj["album"]; + QJsonValue json_album = json_obj[QStringLiteral("album")]; if (json_album.isNull()) { if (offset_requested == 0) no_results_ = true; AlbumsFinishCheck(offset_requested, size_requested); return; } if (!json_album.isArray()) { - Error("Json album is not an array.", json_album); + Error(QStringLiteral("Json album is not an array."), json_album); AlbumsFinishCheck(offset_requested, size_requested); } QJsonArray array_albums = json_album.toArray(); @@ -251,30 +251,30 @@ void SubsonicRequest::AlbumsReplyReceived(QNetworkReply *reply, const int offset ++albums_received; if (!value_album.isObject()) { - Error("Invalid Json reply, album is not an object."); + Error(QStringLiteral("Invalid Json reply, album is not an object.")); continue; } QJsonObject obj_album = value_album.toObject(); - if (!obj_album.contains("id") || !obj_album.contains("artist")) { - Error("Invalid Json reply, album object in array is missing ID or artist.", obj_album); + if (!obj_album.contains(QStringLiteral("id")) || !obj_album.contains(QStringLiteral("artist"))) { + Error(QStringLiteral("Invalid Json reply, album object in array is missing ID or artist."), obj_album); continue; } - if (!obj_album.contains("album") && !obj_album.contains("name")) { - Error("Invalid Json reply, album object in array is missing album or name.", obj_album); + if (!obj_album.contains(QStringLiteral("album")) && !obj_album.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, album object in array is missing album or name."), obj_album); continue; } - QString album_id = obj_album["id"].toString(); + QString album_id = obj_album[QStringLiteral("id")].toString(); if (album_id.isEmpty()) { - album_id = QString::number(obj_album["id"].toInt()); + album_id = QString::number(obj_album[QStringLiteral("id")].toInt()); } - QString artist = obj_album["artist"].toString(); + QString artist = obj_album[QStringLiteral("artist")].toString(); QString album; - if (obj_album.contains("album")) album = obj_album["album"].toString(); - else if (obj_album.contains("name")) album = obj_album["name"].toString(); + if (obj_album.contains(QStringLiteral("album"))) album = obj_album[QStringLiteral("album")].toString(); + else if (obj_album.contains(QStringLiteral("name"))) album = obj_album[QStringLiteral("name")].toString(); if (album_songs_requests_pending_.contains(album_id)) continue; @@ -341,7 +341,7 @@ void SubsonicRequest::FlushAlbumSongsRequests() { Request request = album_songs_requests_queue_.dequeue(); ++album_songs_requests_active_; - QNetworkReply *reply = CreateGetRequest(QString("getAlbum"), ParamList() << Param("id", request.album_id)); + QNetworkReply *reply = CreateGetRequest(QStringLiteral("getAlbum"), ParamList() << Param("id", request.album_id)); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist_id, request.album_id, request.album_artist); }); timeouts_->AddReply(reply); @@ -377,57 +377,57 @@ void SubsonicRequest::AlbumSongsReplyReceived(QNetworkReply *reply, const QStrin return; } - if (json_obj.contains("error")) { - QJsonValue json_error = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_error = json_obj[QStringLiteral("error")]; if (!json_error.isObject()) { - Error("Json error is not an object.", json_obj); + Error(QStringLiteral("Json error is not an object."), json_obj); SongsFinishCheck(); return; } json_obj = json_error.toObject(); - if (!json_obj.isEmpty() && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - Error(QString("%1 (%2)").arg(message).arg(code)); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + Error(QStringLiteral("%1 (%2)").arg(message).arg(code)); SongsFinishCheck(); } else { - Error("Json error object missing code or message.", json_obj); + Error(QStringLiteral("Json error object missing code or message."), json_obj); SongsFinishCheck(); } return; } - if (!json_obj.contains("album")) { - Error("Json reply is missing albumList.", json_obj); + if (!json_obj.contains(QStringLiteral("album"))) { + Error(QStringLiteral("Json reply is missing albumList."), json_obj); SongsFinishCheck(); return; } - QJsonValue value_album = json_obj["album"]; + QJsonValue value_album = json_obj[QStringLiteral("album")]; if (!value_album.isObject()) { - Error("Json album is not an object.", value_album); + Error(QStringLiteral("Json album is not an object."), value_album); SongsFinishCheck(); return; } QJsonObject obj_album = value_album.toObject(); - if (!obj_album.contains("song")) { - Error("Json album object does not contain song array.", json_obj); + if (!obj_album.contains(QStringLiteral("song"))) { + Error(QStringLiteral("Json album object does not contain song array."), json_obj); SongsFinishCheck(); return; } - QJsonValue json_song = obj_album["song"]; + QJsonValue json_song = obj_album[QStringLiteral("song")]; if (!json_song.isArray()) { - Error("Json song is not an array.", obj_album); + Error(QStringLiteral("Json song is not an array."), obj_album); SongsFinishCheck(); return; } QJsonArray array_songs = json_song.toArray(); qint64 created = 0; - if (obj_album.contains("created")) { - created = QDateTime::fromString(obj_album["created"].toString(), Qt::ISODate).toSecsSinceEpoch(); + if (obj_album.contains(QStringLiteral("created"))) { + created = QDateTime::fromString(obj_album[QStringLiteral("created")].toString(), Qt::ISODate).toSecsSinceEpoch(); } bool compilation = false; @@ -436,7 +436,7 @@ void SubsonicRequest::AlbumSongsReplyReceived(QNetworkReply *reply, const QStrin for (const QJsonValueRef value_song : array_songs) { if (!value_song.isObject()) { - Error("Invalid Json reply, track is not a object."); + Error(QStringLiteral("Invalid Json reply, track is not a object.")); continue; } QJsonObject obj_song = value_song.toObject(); @@ -489,133 +489,133 @@ QString SubsonicRequest::ParseSong(Song &song, const QJsonObject &json_obj, cons Q_UNUSED(album_id_requested); if ( - !json_obj.contains("id") || - !json_obj.contains("title") || - !json_obj.contains("size") || - !json_obj.contains("suffix") || - !json_obj.contains("duration") || - !json_obj.contains("type") + !json_obj.contains(QStringLiteral("id")) || + !json_obj.contains(QStringLiteral("title")) || + !json_obj.contains(QStringLiteral("size")) || + !json_obj.contains(QStringLiteral("suffix")) || + !json_obj.contains(QStringLiteral("duration")) || + !json_obj.contains(QStringLiteral("type")) ) { - Error("Invalid Json reply, song is missing one or more values.", json_obj); + Error(QStringLiteral("Invalid Json reply, song is missing one or more values."), json_obj); return QString(); } QString song_id; - if (json_obj["id"].type() == QJsonValue::String) { - song_id = json_obj["id"].toString(); + if (json_obj[QStringLiteral("id")].type() == QJsonValue::String) { + song_id = json_obj[QStringLiteral("id")].toString(); } else { - song_id = QString::number(json_obj["id"].toInt()); + song_id = QString::number(json_obj[QStringLiteral("id")].toInt()); } QString album_id; - if (json_obj.contains("albumId")) { - if (json_obj["albumId"].type() == QJsonValue::String) { - album_id = json_obj["albumId"].toString(); + if (json_obj.contains(QStringLiteral("albumId"))) { + if (json_obj[QStringLiteral("albumId")].type() == QJsonValue::String) { + album_id = json_obj[QStringLiteral("albumId")].toString(); } else { - album_id = QString::number(json_obj["albumId"].toInt()); + album_id = QString::number(json_obj[QStringLiteral("albumId")].toInt()); } } QString artist_id; - if (json_obj.contains("artistId")) { - if (json_obj["artistId"].type() == QJsonValue::String) { - artist_id = json_obj["artistId"].toString(); + if (json_obj.contains(QStringLiteral("artistId"))) { + if (json_obj[QStringLiteral("artistId")].type() == QJsonValue::String) { + artist_id = json_obj[QStringLiteral("artistId")].toString(); } else { - artist_id = QString::number(json_obj["artistId"].toInt()); + artist_id = QString::number(json_obj[QStringLiteral("artistId")].toInt()); } } - QString title = json_obj["title"].toString(); + QString title = json_obj[QStringLiteral("title")].toString(); QString album; - if (json_obj.contains("album")) { - album = json_obj["album"].toString(); + if (json_obj.contains(QStringLiteral("album"))) { + album = json_obj[QStringLiteral("album")].toString(); } QString artist; - if (json_obj.contains("artist")) { - artist = json_obj["artist"].toString(); + if (json_obj.contains(QStringLiteral("artist"))) { + artist = json_obj[QStringLiteral("artist")].toString(); } int size = 0; - if (json_obj["size"].type() == QJsonValue::String) { - size = json_obj["size"].toString().toInt(); + if (json_obj[QStringLiteral("size")].type() == QJsonValue::String) { + size = json_obj[QStringLiteral("size")].toString().toInt(); } else { - size = json_obj["size"].toInt(); + size = json_obj[QStringLiteral("size")].toInt(); } qint64 duration = 0; - if (json_obj["duration"].type() == QJsonValue::String) { - duration = json_obj["duration"].toString().toInt() * kNsecPerSec; + if (json_obj[QStringLiteral("duration")].type() == QJsonValue::String) { + duration = json_obj[QStringLiteral("duration")].toString().toInt() * kNsecPerSec; } else { - duration = json_obj["duration"].toInt() * kNsecPerSec; + duration = json_obj[QStringLiteral("duration")].toInt() * kNsecPerSec; } int bitrate = 0; - if (json_obj.contains("bitRate")) { - if (json_obj["bitRate"].type() == QJsonValue::String) { - bitrate = json_obj["bitRate"].toString().toInt(); + if (json_obj.contains(QStringLiteral("bitRate"))) { + if (json_obj[QStringLiteral("bitRate")].type() == QJsonValue::String) { + bitrate = json_obj[QStringLiteral("bitRate")].toString().toInt(); } else { - bitrate = json_obj["bitRate"].toInt(); + bitrate = json_obj[QStringLiteral("bitRate")].toInt(); } } QString mimetype; - if (json_obj.contains("contentType")) { - mimetype = json_obj["contentType"].toString(); + if (json_obj.contains(QStringLiteral("contentType"))) { + mimetype = json_obj[QStringLiteral("contentType")].toString(); } int year = 0; - if (json_obj.contains("year")) { - if (json_obj["year"].type() == QJsonValue::String) { - year = json_obj["year"].toString().toInt(); + if (json_obj.contains(QStringLiteral("year"))) { + if (json_obj[QStringLiteral("year")].type() == QJsonValue::String) { + year = json_obj[QStringLiteral("year")].toString().toInt(); } else { - year = json_obj["year"].toInt(); + year = json_obj[QStringLiteral("year")].toInt(); } } int disc = 0; - if (json_obj.contains("discNumber")) { - if (json_obj["discNumber"].type() == QJsonValue::String) { - disc = json_obj["discNumber"].toString().toInt(); + if (json_obj.contains(QStringLiteral("discNumber"))) { + if (json_obj[QStringLiteral("discNumber")].type() == QJsonValue::String) { + disc = json_obj[QStringLiteral("discNumber")].toString().toInt(); } else { - disc = json_obj["discNumber"].toInt(); + disc = json_obj[QStringLiteral("discNumber")].toInt(); } } int track = 0; - if (json_obj.contains("track")) { - if (json_obj["track"].type() == QJsonValue::String) { - track = json_obj["track"].toString().toInt(); + if (json_obj.contains(QStringLiteral("track"))) { + if (json_obj[QStringLiteral("track")].type() == QJsonValue::String) { + track = json_obj[QStringLiteral("track")].toString().toInt(); } else { - track = json_obj["track"].toInt(); + track = json_obj[QStringLiteral("track")].toInt(); } } QString genre; - if (json_obj.contains("genre")) genre = json_obj["genre"].toString(); + if (json_obj.contains(QStringLiteral("genre"))) genre = json_obj[QStringLiteral("genre")].toString(); QString cover_id; - if (json_obj.contains("coverArt")) { - if (json_obj["coverArt"].type() == QJsonValue::String) { - cover_id = json_obj["coverArt"].toString(); + if (json_obj.contains(QStringLiteral("coverArt"))) { + if (json_obj[QStringLiteral("coverArt")].type() == QJsonValue::String) { + cover_id = json_obj[QStringLiteral("coverArt")].toString(); } else { - cover_id = QString::number(json_obj["coverArt"].toInt()); + cover_id = QString::number(json_obj[QStringLiteral("coverArt")].toInt()); } } qint64 created = 0; - if (json_obj.contains("created")) { - created = QDateTime::fromString(json_obj["created"].toString(), Qt::ISODate).toSecsSinceEpoch(); + if (json_obj.contains(QStringLiteral("created"))) { + created = QDateTime::fromString(json_obj[QStringLiteral("created")].toString(), Qt::ISODate).toSecsSinceEpoch(); } else { created = album_created; @@ -631,7 +631,7 @@ QString SubsonicRequest::ParseSong(Song &song, const QJsonObject &json_obj, cons cover_url = cover_urls_[cover_id]; } else { - cover_url = CreateUrl(server_url(), auth_method(), username(), password(), "getCoverArt", ParamList() << Param("id", cover_id)); + cover_url = CreateUrl(server_url(), auth_method(), username(), password(), QStringLiteral("getCoverArt"), ParamList() << Param("id", cover_id)); cover_urls_.insert(cover_id, cover_url); } } @@ -702,11 +702,11 @@ void SubsonicRequest::AddAlbumCoverRequest(const Song &song) { QUrlQuery cover_url_query(cover_url); - if (!cover_url_query.hasQueryItem("id")) { + if (!cover_url_query.hasQueryItem(QStringLiteral("id"))) { return; } - QString cover_id = cover_url_query.queryItemValue("id"); + QString cover_id = cover_url_query.queryItemValue(QStringLiteral("id")); if (album_covers_requests_sent_.contains(cover_id)) { album_covers_requests_sent_.insert(cover_id, song.song_id()); @@ -785,14 +785,14 @@ void SubsonicRequest::AlbumCoverReceived(QNetworkReply *reply, const AlbumCoverR } if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2) for %3").arg(reply->errorString()).arg(reply->error()).arg(request.url.toString())); + Error(QStringLiteral("%1 (%2) for %3").arg(reply->errorString()).arg(reply->error()).arg(request.url.toString())); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); AlbumCoverFinishCheck(); return; } if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(request.url.toString())); + Error(QStringLiteral("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(request.url.toString())); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); AlbumCoverFinishCheck(); return; @@ -803,7 +803,7 @@ void SubsonicRequest::AlbumCoverReceived(QNetworkReply *reply, const AlbumCoverR mimetype = mimetype.left(mimetype.indexOf(';')); } if (!ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) && !ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) { - Error(QString("Unsupported mimetype for image reader %1 for %2").arg(mimetype, request.url.toString())); + Error(QStringLiteral("Unsupported mimetype for image reader %1 for %2").arg(mimetype, request.url.toString())); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); AlbumCoverFinishCheck(); return; @@ -811,7 +811,7 @@ void SubsonicRequest::AlbumCoverReceived(QNetworkReply *reply, const AlbumCoverR QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error(QString("Received empty image data for %1").arg(request.url.toString())); + Error(QStringLiteral("Received empty image data for %1").arg(request.url.toString())); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); AlbumCoverFinishCheck(); return; @@ -834,12 +834,12 @@ void SubsonicRequest::AlbumCoverReceived(QNetworkReply *reply, const AlbumCoverR } } else { - Error(QString("Error saving image data to %1.").arg(request.filename)); + Error(QStringLiteral("Error saving image data to %1.").arg(request.filename)); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); } } else { - Error(QString("Error decoding image data from %1.").arg(request.url.toString())); + Error(QStringLiteral("Error decoding image data from %1.").arg(request.url.toString())); if (album_covers_requests_sent_.contains(request.cover_id)) album_covers_requests_sent_.remove(request.cover_id); } diff --git a/src/subsonic/subsonicscrobblerequest.cpp b/src/subsonic/subsonicscrobblerequest.cpp index 54f72bc6..1c65a8ae 100644 --- a/src/subsonic/subsonicscrobblerequest.cpp +++ b/src/subsonic/subsonicscrobblerequest.cpp @@ -77,7 +77,7 @@ void SubsonicScrobbleRequest::FlushScrobbleRequests() { << Param("submission", QVariant(request.submission).toString()) << Param("time", QVariant(request.time_ms).toString()); - QNetworkReply *reply = CreateGetRequest("scrobble", params); + QNetworkReply *reply = CreateGetRequest(QStringLiteral("scrobble"), params); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply]() { ScrobbleReplyReceived(reply); }); @@ -109,22 +109,22 @@ void SubsonicScrobbleRequest::ScrobbleReplyReceived(QNetworkReply *reply) { return; } - if (json_obj.contains("error")) { - QJsonValue json_error = json_obj["error"]; + if (json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_error = json_obj[QStringLiteral("error")]; if (!json_error.isObject()) { - Error("Json error is not an object.", json_obj); + Error(QStringLiteral("Json error is not an object."), json_obj); FinishCheck(); return; } json_obj = json_error.toObject(); - if (!json_obj.isEmpty() && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - Error(QString("%1 (%2)").arg(message).arg(code)); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + Error(QStringLiteral("%1 (%2)").arg(message).arg(code)); FinishCheck(); } else { - Error("Json error object is missing code or message.", json_obj); + Error(QStringLiteral("Json error object is missing code or message."), json_obj); FinishCheck(); return; } diff --git a/src/subsonic/subsonicservice.cpp b/src/subsonic/subsonicservice.cpp index 2796c22c..71f643f8 100644 --- a/src/subsonic/subsonicservice.cpp +++ b/src/subsonic/subsonicservice.cpp @@ -69,7 +69,7 @@ const char *SubsonicService::kSongsFtsTable = "subsonic_songs_fts"; const int SubsonicService::kMaxRedirects = 3; SubsonicService::SubsonicService(Application *app, QObject *parent) - : InternetService(Song::Source::Subsonic, "Subsonic", "subsonic", SubsonicSettingsPage::kSettingsGroup, SettingsDialog::Page::Subsonic, app, parent), + : InternetService(Song::Source::Subsonic, QStringLiteral("Subsonic"), QStringLiteral("subsonic"), SubsonicSettingsPage::kSettingsGroup, SettingsDialog::Page::Subsonic, app, parent), app_(app), url_handler_(new SubsonicUrlHandler(app, this)), collection_backend_(nullptr), @@ -183,10 +183,10 @@ void SubsonicService::SendPingWithCredentials(QUrl url, const QString &username, if (!redirect) { if (!url.path().isEmpty() && url.path().right(1) == "/") { - url.setPath(url.path() + QString("rest/ping.view")); + url.setPath(url.path() + QStringLiteral("rest/ping.view")); } else { - url.setPath(url.path() + QString("/rest/ping.view")); + url.setPath(url.path() + QStringLiteral("/rest/ping.view")); } } @@ -237,7 +237,7 @@ void SubsonicService::HandlePingReply(QNetworkReply *reply, const QUrl &url, con if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - PingError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + PingError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); return; } else { @@ -268,24 +268,24 @@ void SubsonicService::HandlePingReply(QNetworkReply *reply, const QUrl &url, con QJsonDocument json_doc = QJsonDocument::fromJson(data, &parse_error); if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("error")) { - QJsonValue json_error = json_obj["error"]; + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("error"))) { + QJsonValue json_error = json_obj[QStringLiteral("error")]; if (json_error.isObject()) { json_obj = json_error.toObject(); - if (!json_obj.isEmpty() && json_obj.contains("code") && json_obj.contains("message")) { - int code = json_obj["code"].toInt(); - QString message = json_obj["message"].toString(); - errors_ << QString("%1 (%2)").arg(message).arg(code); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("code")) && json_obj.contains(QStringLiteral("message"))) { + int code = json_obj[QStringLiteral("code")].toInt(); + QString message = json_obj[QStringLiteral("message")].toString(); + errors_ << QStringLiteral("%1 (%2)").arg(message).arg(code); } } } } if (errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } PingError(); @@ -301,62 +301,62 @@ void SubsonicService::HandlePingReply(QNetworkReply *reply, const QUrl &url, con QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - PingError("Ping reply from server missing Json data."); + PingError(QStringLiteral("Ping reply from server missing Json data.")); return; } if (json_doc.isEmpty()) { - PingError("Ping reply from server has empty Json document."); + PingError(QStringLiteral("Ping reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - PingError("Ping reply from server has Json document that is not an object.", json_doc); + PingError(QStringLiteral("Ping reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - PingError("Ping reply from server has empty Json object.", json_doc); + PingError(QStringLiteral("Ping reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("subsonic-response")) { - PingError("Ping reply from server is missing subsonic-response", json_obj); + if (!json_obj.contains(QStringLiteral("subsonic-response"))) { + PingError(QStringLiteral("Ping reply from server is missing subsonic-response"), json_obj); return; } - QJsonValue value_response = json_obj["subsonic-response"]; + QJsonValue value_response = json_obj[QStringLiteral("subsonic-response")]; if (!value_response.isObject()) { - PingError("Ping reply from server subsonic-response is not an object", value_response); + PingError(QStringLiteral("Ping reply from server subsonic-response is not an object"), value_response); return; } QJsonObject obj_response = value_response.toObject(); - if (obj_response.contains("error")) { - QJsonValue value_error = obj_response["error"]; + if (obj_response.contains(QStringLiteral("error"))) { + QJsonValue value_error = obj_response[QStringLiteral("error")]; if (!value_error.isObject()) { - PingError("Authentication error reply from server is not an object", value_error); + PingError(QStringLiteral("Authentication error reply from server is not an object"), value_error); return; } QJsonObject obj_error = value_error.toObject(); - if (!obj_error.contains("code") || !obj_error.contains("message")) { - PingError("Authentication error reply from server is missing status or message", json_obj); + if (!obj_error.contains(QStringLiteral("code")) || !obj_error.contains(QStringLiteral("message"))) { + PingError(QStringLiteral("Authentication error reply from server is missing status or message"), json_obj); return; } //int status = obj_error["code"].toInt(); - QString message = obj_error["message"].toString(); + QString message = obj_error[QStringLiteral("message")].toString(); emit TestComplete(false, message); emit TestFailure(message); return; } - if (!obj_response.contains("status")) { - PingError("Ping reply from server is missing status", obj_response); + if (!obj_response.contains(QStringLiteral("status"))) { + PingError(QStringLiteral("Ping reply from server is missing status"), obj_response); return; } - QString status = obj_response["status"].toString().toLower(); - QString message = obj_response["message"].toString(); + QString status = obj_response[QStringLiteral("status")].toString().toLower(); + QString message = obj_response[QStringLiteral("message")].toString(); if (status == "failed") { emit TestComplete(false, message); @@ -369,7 +369,7 @@ void SubsonicService::HandlePingReply(QNetworkReply *reply, const QUrl &url, con return; } else { - PingError("Ping reply status from server is unknown", json_obj); + PingError(QStringLiteral("Ping reply status from server is unknown"), json_obj); return; } @@ -378,15 +378,15 @@ void SubsonicService::HandlePingReply(QNetworkReply *reply, const QUrl &url, con void SubsonicService::CheckConfiguration() { if (server_url_.isEmpty()) { - emit TestComplete(false, "Missing Subsonic server url."); + emit TestComplete(false, QStringLiteral("Missing Subsonic server url.")); return; } if (username_.isEmpty()) { - emit TestComplete(false, "Missing Subsonic username."); + emit TestComplete(false, QStringLiteral("Missing Subsonic username.")); return; } if (password_.isEmpty()) { - emit TestComplete(false, "Missing Subsonic password."); + emit TestComplete(false, QStringLiteral("Missing Subsonic password.")); return; } diff --git a/src/subsonic/subsonicurlhandler.cpp b/src/subsonic/subsonicurlhandler.cpp index 7c7a141b..a6854826 100644 --- a/src/subsonic/subsonicurlhandler.cpp +++ b/src/subsonic/subsonicurlhandler.cpp @@ -45,7 +45,7 @@ UrlHandler::LoadResult SubsonicUrlHandler::StartLoading(const QUrl &url) { using Param = QPair; using ParamList = QList; - const QUrl stream_url = SubsonicBaseRequest::CreateUrl(server_url(), auth_method(), username(), password(), "stream", ParamList() << Param("id", url.path())); + const QUrl stream_url = SubsonicBaseRequest::CreateUrl(server_url(), auth_method(), username(), password(), QStringLiteral("stream"), ParamList() << Param("id", url.path())); return LoadResult(url, LoadResult::Type::TrackAvailable, stream_url); diff --git a/src/tidal/tidalbaserequest.cpp b/src/tidal/tidalbaserequest.cpp index 9f402f6f..fd257748 100644 --- a/src/tidal/tidalbaserequest.cpp +++ b/src/tidal/tidalbaserequest.cpp @@ -55,7 +55,7 @@ QNetworkReply *TidalBaseRequest::CreateRequest(const QString &ressource_name, co url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(TidalService::kApiUrl) + QString("/") + ressource_name); + QUrl url(QString(TidalService::kApiUrl) + QStringLiteral("/") + ressource_name); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); @@ -90,7 +90,7 @@ QByteArray TidalBaseRequest::GetReplyData(QNetworkReply *reply, const bool send_ else { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); } else { // See if there is Json data containing "status" and "userMessage" - then use that instead. @@ -102,19 +102,19 @@ QByteArray TidalBaseRequest::GetReplyData(QNetworkReply *reply, const bool send_ int sub_status = 0; if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("userMessage")) { - status = json_obj["status"].toInt(); - sub_status = json_obj["subStatus"].toInt(); - QString user_message = json_obj["userMessage"].toString(); - error = QString("%1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("userMessage"))) { + status = json_obj[QStringLiteral("status")].toInt(); + sub_status = json_obj[QStringLiteral("subStatus")].toInt(); + QString user_message = json_obj[QStringLiteral("userMessage")].toString(); + error = QStringLiteral("%1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); } } if (error.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - error = QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + error = QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - error = QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + error = QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } if (status == 401 && sub_status == 6001) { // User does not have a valid session @@ -151,23 +151,23 @@ QJsonObject TidalBaseRequest::ExtractJsonObj(const QByteArray &data) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - Error("Reply from server missing Json data.", data); + Error(QStringLiteral("Reply from server missing Json data."), data); return QJsonObject(); } if (json_doc.isEmpty()) { - Error("Received empty Json document.", data); + Error(QStringLiteral("Received empty Json document."), data); return QJsonObject(); } if (!json_doc.isObject()) { - Error("Json document is not an object.", json_doc); + Error(QStringLiteral("Json document is not an object."), json_doc); return QJsonObject(); } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - Error("Received empty Json object.", json_doc); + Error(QStringLiteral("Received empty Json object."), json_doc); return QJsonObject(); } @@ -185,11 +185,11 @@ QJsonValue TidalBaseRequest::ExtractItems(const QByteArray &data) { QJsonValue TidalBaseRequest::ExtractItems(const QJsonObject &json_obj) { - if (!json_obj.contains("items")) { - Error("Json reply is missing items.", json_obj); + if (!json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json reply is missing items."), json_obj); return QJsonArray(); } - QJsonValue json_items = json_obj["items"]; + QJsonValue json_items = json_obj[QStringLiteral("items")]; return json_items; } diff --git a/src/tidal/tidalfavoriterequest.cpp b/src/tidal/tidalfavoriterequest.cpp index 15e39b0b..fd6b20fd 100644 --- a/src/tidal/tidalfavoriterequest.cpp +++ b/src/tidal/tidalfavoriterequest.cpp @@ -60,11 +60,11 @@ QString TidalFavoriteRequest::FavoriteText(const FavoriteType type) { switch (type) { case FavoriteType::Artists: - return "artists"; + return QStringLiteral("artists"); case FavoriteType::Albums: - return "albums"; + return QStringLiteral("albums"); case FavoriteType::Songs: - return "tracks"; + return QStringLiteral("tracks"); } return QString(); @@ -75,11 +75,11 @@ QString TidalFavoriteRequest::FavoriteMethod(const FavoriteType type) { switch (type) { case FavoriteType::Artists: - return "artistIds"; + return QStringLiteral("artistIds"); case FavoriteType::Albums: - return "albumIds"; + return QStringLiteral("albumIds"); case FavoriteType::Songs: - return "trackIds"; + return QStringLiteral("trackIds"); } return QString(); @@ -142,7 +142,7 @@ void TidalFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QS url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(TidalService::kApiUrl) + QString("/") + "users/" + QString::number(service_->user_id()) + "/favorites/" + FavoriteText(type)); + QUrl url(QString(TidalService::kApiUrl) + QStringLiteral("/") + "users/" + QString::number(service_->user_id()) + "/favorites/" + FavoriteText(type)); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); @@ -251,7 +251,7 @@ void TidalFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); } - QUrl url(QString(TidalService::kApiUrl) + QString("/") + "users/" + QString::number(service_->user_id()) + "/favorites/" + FavoriteText(type) + QString("/") + id); + QUrl url(QString(TidalService::kApiUrl) + QStringLiteral("/") + "users/" + QString::number(service_->user_id()) + "/favorites/" + FavoriteText(type) + QStringLiteral("/") + id); url.setQuery(url_query); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); diff --git a/src/tidal/tidalrequest.cpp b/src/tidal/tidalrequest.cpp index 182df339..cbb13b66 100644 --- a/src/tidal/tidalrequest.cpp +++ b/src/tidal/tidalrequest.cpp @@ -165,7 +165,7 @@ void TidalRequest::Process() { SongsSearch(); break; default: - Error("Invalid query type."); + Error(QStringLiteral("Invalid query type.")); break; } @@ -253,10 +253,10 @@ void TidalRequest::FlushArtistsRequests() { if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Artists) { - reply = CreateRequest(QString("users/%1/favorites/artists").arg(service_->user_id()), parameters); + reply = CreateRequest(QStringLiteral("users/%1/favorites/artists").arg(service_->user_id()), parameters); } if (query_type_ == QueryType::SearchArtists) { - reply = CreateRequest("search/artists", parameters); + reply = CreateRequest(QStringLiteral("search/artists"), parameters); } if (!reply) continue; replies_ << reply; @@ -301,10 +301,10 @@ void TidalRequest::FlushAlbumsRequests() { if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Albums) { - reply = CreateRequest(QString("users/%1/favorites/albums").arg(service_->user_id()), parameters); + reply = CreateRequest(QStringLiteral("users/%1/favorites/albums").arg(service_->user_id()), parameters); } if (query_type_ == QueryType::SearchAlbums) { - reply = CreateRequest("search/albums", parameters); + reply = CreateRequest(QStringLiteral("search/albums"), parameters); } if (!reply) continue; replies_ << reply; @@ -349,10 +349,10 @@ void TidalRequest::FlushSongsRequests() { if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); QNetworkReply *reply = nullptr; if (query_type_ == QueryType::Songs) { - reply = CreateRequest(QString("users/%1/favorites/tracks").arg(service_->user_id()), parameters); + reply = CreateRequest(QStringLiteral("users/%1/favorites/tracks").arg(service_->user_id()), parameters); } if (query_type_ == QueryType::SearchSongs) { - reply = CreateRequest("search/tracks", parameters); + reply = CreateRequest(QStringLiteral("search/tracks"), parameters); } if (!reply) continue; replies_ << reply; @@ -431,29 +431,29 @@ void TidalRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re return; } - if (!json_obj.contains("limit") || - !json_obj.contains("offset") || - !json_obj.contains("totalNumberOfItems") || - !json_obj.contains("items")) { - Error("Json object missing values.", json_obj); + if (!json_obj.contains(QStringLiteral("limit")) || + !json_obj.contains(QStringLiteral("offset")) || + !json_obj.contains(QStringLiteral("totalNumberOfItems")) || + !json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json object missing values."), json_obj); ArtistsFinishCheck(); return; } //int limit = json_obj["limit"].toInt(); - int offset = json_obj["offset"].toInt(); - int artists_total = json_obj["totalNumberOfItems"].toInt(); + int offset = json_obj[QStringLiteral("offset")].toInt(); + int artists_total = json_obj[QStringLiteral("totalNumberOfItems")].toInt(); if (offset_requested == 0) { artists_total_ = artists_total; } else if (artists_total != artists_total_) { - Error(QString("totalNumberOfItems returned does not match previous totalNumberOfItems! %1 != %2").arg(artists_total).arg(artists_total_)); + Error(QStringLiteral("totalNumberOfItems returned does not match previous totalNumberOfItems! %1 != %2").arg(artists_total).arg(artists_total_)); ArtistsFinishCheck(); return; } if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); ArtistsFinishCheck(); return; } @@ -480,33 +480,33 @@ void TidalRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re ++artists_received; if (!value_item.isObject()) { - Error("Invalid Json reply, item in array is not a object."); + Error(QStringLiteral("Invalid Json reply, item in array is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (obj_item.contains("item")) { - QJsonValue json_item = obj_item["item"]; + if (obj_item.contains(QStringLiteral("item"))) { + QJsonValue json_item = obj_item[QStringLiteral("item")]; if (!json_item.isObject()) { - Error("Invalid Json reply, item in array is not a object.", json_item); + Error(QStringLiteral("Invalid Json reply, item in array is not a object."), json_item); continue; } obj_item = json_item.toObject(); } - if (!obj_item.contains("id") || !obj_item.contains("name")) { - Error("Invalid Json reply, item missing id or album.", obj_item); + if (!obj_item.contains(QStringLiteral("id")) || !obj_item.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, item missing id or album."), obj_item); continue; } Artist artist; - if (obj_item["id"].isString()) { - artist.artist_id = obj_item["id"].toString(); + if (obj_item[QStringLiteral("id")].isString()) { + artist.artist_id = obj_item[QStringLiteral("id")].toString(); } else { - artist.artist_id = QString::number(obj_item["id"].toInt()); + artist.artist_id = QString::number(obj_item[QStringLiteral("id")].toInt()); } - artist.artist = obj_item["name"].toString(); + artist.artist = obj_item[QStringLiteral("name")].toString(); if (artist_albums_requests_pending_.contains(artist.artist_id)) continue; @@ -585,7 +585,7 @@ void TidalRequest::FlushArtistAlbumsRequests() { ParamList parameters; if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); - QNetworkReply *reply = CreateRequest(QString("artists/%1/albums").arg(request.artist.artist_id), parameters); + QNetworkReply *reply = CreateRequest(QStringLiteral("artists/%1/albums").arg(request.artist.artist_id), parameters); QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { ArtistAlbumsReplyReceived(reply, request.artist, request.offset); }); replies_ << reply; @@ -626,21 +626,21 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req return; } - if (!json_obj.contains("limit") || - !json_obj.contains("offset") || - !json_obj.contains("totalNumberOfItems") || - !json_obj.contains("items")) { - Error("Json object missing values.", json_obj); + if (!json_obj.contains(QStringLiteral("limit")) || + !json_obj.contains(QStringLiteral("offset")) || + !json_obj.contains(QStringLiteral("totalNumberOfItems")) || + !json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json object missing values."), json_obj); AlbumsFinishCheck(artist_requested); return; } //int limit = json_obj["limit"].toInt(); - int offset = json_obj["offset"].toInt(); - int albums_total = json_obj["totalNumberOfItems"].toInt(); + int offset = json_obj[QStringLiteral("offset")].toInt(); + int albums_total = json_obj[QStringLiteral("totalNumberOfItems")].toInt(); if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); AlbumsFinishCheck(artist_requested); return; } @@ -662,95 +662,95 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req ++albums_received; if (!value_item.isObject()) { - Error("Invalid Json reply, item in array is not a object."); + Error(QStringLiteral("Invalid Json reply, item in array is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (obj_item.contains("item")) { - QJsonValue json_item = obj_item["item"]; + if (obj_item.contains(QStringLiteral("item"))) { + QJsonValue json_item = obj_item[QStringLiteral("item")]; if (!json_item.isObject()) { - Error("Invalid Json reply, item in array is not a object.", json_item); + Error(QStringLiteral("Invalid Json reply, item in array is not a object."), json_item); continue; } obj_item = json_item.toObject(); } Album album; - if (obj_item.contains("type")) { // This was an albums request or search - if (!obj_item.contains("id") || !obj_item.contains("title")) { - Error("Invalid Json reply, item is missing ID or title.", obj_item); + if (obj_item.contains(QStringLiteral("type"))) { // This was an albums request or search + if (!obj_item.contains(QStringLiteral("id")) || !obj_item.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, item is missing ID or title."), obj_item); continue; } - if (obj_item["id"].isString()) { - album.album_id = obj_item["id"].toString(); + if (obj_item[QStringLiteral("id")].isString()) { + album.album_id = obj_item[QStringLiteral("id")].toString(); } else { - album.album_id = QString::number(obj_item["id"].toInt()); + album.album_id = QString::number(obj_item[QStringLiteral("id")].toInt()); } - album.album = obj_item["title"].toString(); - if (service_->album_explicit() && obj_item.contains("explicit")) { - album.album_explicit = obj_item["explicit"].toVariant().toBool(); + album.album = obj_item[QStringLiteral("title")].toString(); + if (service_->album_explicit() && obj_item.contains(QStringLiteral("explicit"))) { + album.album_explicit = obj_item[QStringLiteral("explicit")].toVariant().toBool(); if (album.album_explicit && !album.album.isEmpty()) { album.album.append(" (Explicit)"); } } } - else if (obj_item.contains("album")) { // This was a tracks request or search - QJsonValue value_album = obj_item["album"]; + else if (obj_item.contains(QStringLiteral("album"))) { // This was a tracks request or search + QJsonValue value_album = obj_item[QStringLiteral("album")]; if (!value_album.isObject()) { - Error("Invalid Json reply, item album is not a object.", value_album); + Error(QStringLiteral("Invalid Json reply, item album is not a object."), value_album); continue; } QJsonObject obj_album = value_album.toObject(); - if (!obj_album.contains("id") || !obj_album.contains("title")) { - Error("Invalid Json reply, item album is missing ID or title.", obj_album); + if (!obj_album.contains(QStringLiteral("id")) || !obj_album.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, item album is missing ID or title."), obj_album); continue; } - if (obj_album["id"].isString()) { - album.album_id = obj_album["id"].toString(); + if (obj_album[QStringLiteral("id")].isString()) { + album.album_id = obj_album[QStringLiteral("id")].toString(); } else { - album.album_id = QString::number(obj_album["id"].toInt()); + album.album_id = QString::number(obj_album[QStringLiteral("id")].toInt()); } - album.album = obj_album["title"].toString(); - if (service_->album_explicit() && obj_album.contains("explicit")) { - album.album_explicit = obj_album["explicit"].toVariant().toBool(); + album.album = obj_album[QStringLiteral("title")].toString(); + if (service_->album_explicit() && obj_album.contains(QStringLiteral("explicit"))) { + album.album_explicit = obj_album[QStringLiteral("explicit")].toVariant().toBool(); if (album.album_explicit && !album.album.isEmpty()) { album.album.append(" (Explicit)"); } } } else { - Error("Invalid Json reply, item missing type or album.", obj_item); + Error(QStringLiteral("Invalid Json reply, item missing type or album."), obj_item); continue; } if (album_songs_requests_pending_.contains(album.album_id)) continue; - if (!obj_item.contains("artist") || !obj_item.contains("title") || !obj_item.contains("audioQuality")) { - Error("Invalid Json reply, item missing artist, title or audioQuality.", obj_item); + if (!obj_item.contains(QStringLiteral("artist")) || !obj_item.contains(QStringLiteral("title")) || !obj_item.contains(QStringLiteral("audioQuality"))) { + Error(QStringLiteral("Invalid Json reply, item missing artist, title or audioQuality."), obj_item); continue; } - QJsonValue value_artist = obj_item["artist"]; + QJsonValue value_artist = obj_item[QStringLiteral("artist")]; if (!value_artist.isObject()) { - Error("Invalid Json reply, item artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, item artist is not a object."), value_artist); continue; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("id") || !obj_artist.contains("name")) { - Error("Invalid Json reply, item artist missing id or name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("id")) || !obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, item artist missing id or name."), obj_artist); continue; } Artist album_artist; - if (obj_artist["id"].isString()) { - album_artist.artist_id = obj_artist["id"].toString(); + if (obj_artist[QStringLiteral("id")].isString()) { + album_artist.artist_id = obj_artist[QStringLiteral("id")].toString(); } else { - album_artist.artist_id = QString::number(obj_artist["id"].toInt()); + album_artist.artist_id = QString::number(obj_artist[QStringLiteral("id")].toInt()); } - album_artist.artist = obj_artist["name"].toString(); + album_artist.artist = obj_artist[QStringLiteral("name")].toString(); //QString quality = obj_item["audioQuality"].toString(); //QString copyright = obj_item["copyright"].toString(); @@ -860,7 +860,7 @@ void TidalRequest::FlushAlbumSongsRequests() { AlbumSongsRequest request = album_songs_requests_queue_.dequeue(); ParamList parameters; if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); - QNetworkReply *reply = CreateRequest(QString("albums/%1/tracks").arg(request.album.album_id), parameters); + QNetworkReply *reply = CreateRequest(QStringLiteral("albums/%1/tracks").arg(request.album.album_id), parameters); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist, request.album, request.offset); }); @@ -903,21 +903,21 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con return; } - if (!json_obj.contains("limit") || - !json_obj.contains("offset") || - !json_obj.contains("totalNumberOfItems") || - !json_obj.contains("items")) { - Error("Json object missing values.", json_obj); + if (!json_obj.contains(QStringLiteral("limit")) || + !json_obj.contains(QStringLiteral("offset")) || + !json_obj.contains(QStringLiteral("totalNumberOfItems")) || + !json_obj.contains(QStringLiteral("items"))) { + Error(QStringLiteral("Json object missing values."), json_obj); SongsFinishCheck(artist, album, limit_requested, offset_requested); return; } //int limit = json_obj["limit"].toInt(); - int offset = json_obj["offset"].toInt(); - int songs_total = json_obj["totalNumberOfItems"].toInt(); + int offset = json_obj[QStringLiteral("offset")].toInt(); + int songs_total = json_obj[QStringLiteral("totalNumberOfItems")].toInt(); if (offset != offset_requested) { - Error(QString("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); + Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested)); SongsFinishCheck(artist, album, limit_requested, offset_requested, songs_total, 0); return; } @@ -941,15 +941,15 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con for (const QJsonValueRef value_item : array_items) { if (!value_item.isObject()) { - Error("Invalid Json reply, track is not a object."); + Error(QStringLiteral("Invalid Json reply, track is not a object.")); continue; } QJsonObject obj_item = value_item.toObject(); - if (obj_item.contains("item")) { - QJsonValue item = obj_item["item"]; + if (obj_item.contains(QStringLiteral("item"))) { + QJsonValue item = obj_item[QStringLiteral("item")]; if (!item.isObject()) { - Error("Invalid Json reply, item is not a object.", item); + Error(QStringLiteral("Invalid Json reply, item is not a object."), item); continue; } obj_item = item.toObject(); @@ -1017,93 +1017,93 @@ void TidalRequest::SongsFinishCheck(const Artist &artist, const Album &album, co void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Artist &album_artist, const Album &album) { if ( - !json_obj.contains("album") || - !json_obj.contains("allowStreaming") || - !json_obj.contains("artist") || - !json_obj.contains("artists") || - !json_obj.contains("audioQuality") || - !json_obj.contains("duration") || - !json_obj.contains("id") || - !json_obj.contains("streamReady") || - !json_obj.contains("title") || - !json_obj.contains("trackNumber") || - !json_obj.contains("url") || - !json_obj.contains("volumeNumber") || - !json_obj.contains("copyright") + !json_obj.contains(QStringLiteral("album")) || + !json_obj.contains(QStringLiteral("allowStreaming")) || + !json_obj.contains(QStringLiteral("artist")) || + !json_obj.contains(QStringLiteral("artists")) || + !json_obj.contains(QStringLiteral("audioQuality")) || + !json_obj.contains(QStringLiteral("duration")) || + !json_obj.contains(QStringLiteral("id")) || + !json_obj.contains(QStringLiteral("streamReady")) || + !json_obj.contains(QStringLiteral("title")) || + !json_obj.contains(QStringLiteral("trackNumber")) || + !json_obj.contains(QStringLiteral("url")) || + !json_obj.contains(QStringLiteral("volumeNumber")) || + !json_obj.contains(QStringLiteral("copyright")) ) { - Error("Invalid Json reply, track is missing one or more values.", json_obj); + Error(QStringLiteral("Invalid Json reply, track is missing one or more values."), json_obj); return; } - QJsonValue value_artist = json_obj["artist"]; - QJsonValue value_album = json_obj["album"]; - QJsonValue json_duration = json_obj["duration"]; + QJsonValue value_artist = json_obj[QStringLiteral("artist")]; + QJsonValue value_album = json_obj[QStringLiteral("album")]; + QJsonValue json_duration = json_obj[QStringLiteral("duration")]; //QJsonArray array_artists = json_obj["artists"].toArray(); QString song_id; - if (json_obj["id"].isString()) { - song_id = json_obj["id"].toString(); + if (json_obj[QStringLiteral("id")].isString()) { + song_id = json_obj[QStringLiteral("id")].toString(); } else { - song_id = QString::number(json_obj["id"].toInt()); + song_id = QString::number(json_obj[QStringLiteral("id")].toInt()); } - QString title = json_obj["title"].toString(); + QString title = json_obj[QStringLiteral("title")].toString(); //QString urlstr = json_obj["url"].toString(); - int track = json_obj["trackNumber"].toInt(); - int disc = json_obj["volumeNumber"].toInt(); - bool allow_streaming = json_obj["allowStreaming"].toBool(); - bool stream_ready = json_obj["streamReady"].toBool(); - QString copyright = json_obj["copyright"].toString(); + int track = json_obj[QStringLiteral("trackNumber")].toInt(); + int disc = json_obj[QStringLiteral("volumeNumber")].toInt(); + bool allow_streaming = json_obj[QStringLiteral("allowStreaming")].toBool(); + bool stream_ready = json_obj[QStringLiteral("streamReady")].toBool(); + QString copyright = json_obj[QStringLiteral("copyright")].toString(); if (!value_artist.isObject()) { - Error("Invalid Json reply, track artist is not a object.", value_artist); + Error(QStringLiteral("Invalid Json reply, track artist is not a object."), value_artist); return; } QJsonObject obj_artist = value_artist.toObject(); - if (!obj_artist.contains("id") || !obj_artist.contains("name")) { - Error("Invalid Json reply, track artist is missing id or name.", obj_artist); + if (!obj_artist.contains(QStringLiteral("id")) || !obj_artist.contains(QStringLiteral("name"))) { + Error(QStringLiteral("Invalid Json reply, track artist is missing id or name."), obj_artist); return; } QString artist_id; - if (obj_artist["id"].isString()) { - artist_id = obj_artist["id"].toString(); + if (obj_artist[QStringLiteral("id")].isString()) { + artist_id = obj_artist[QStringLiteral("id")].toString(); } else { - artist_id = QString::number(obj_artist["id"].toInt()); + artist_id = QString::number(obj_artist[QStringLiteral("id")].toInt()); } - QString artist = obj_artist["name"].toString(); + QString artist = obj_artist[QStringLiteral("name")].toString(); if (!value_album.isObject()) { - Error("Invalid Json reply, track album is not a object.", value_album); + Error(QStringLiteral("Invalid Json reply, track album is not a object."), value_album); return; } QJsonObject obj_album = value_album.toObject(); - if (!obj_album.contains("id") || !obj_album.contains("title")) { - Error("Invalid Json reply, track album is missing ID or title.", obj_album); + if (!obj_album.contains(QStringLiteral("id")) || !obj_album.contains(QStringLiteral("title"))) { + Error(QStringLiteral("Invalid Json reply, track album is missing ID or title."), obj_album); return; } QString album_id; - if (obj_album["id"].isString()) { - album_id = obj_album["id"].toString(); + if (obj_album[QStringLiteral("id")].isString()) { + album_id = obj_album[QStringLiteral("id")].toString(); } else { - album_id = QString::number(obj_album["id"].toInt()); + album_id = QString::number(obj_album[QStringLiteral("id")].toInt()); } if (!album.album_id.isEmpty() && album.album_id != album_id) { - Error("Invalid Json reply, track album id is wrong.", obj_album); + Error(QStringLiteral("Invalid Json reply, track album id is wrong."), obj_album); return; } - QString album_title = obj_album["title"].toString(); + QString album_title = obj_album[QStringLiteral("title")].toString(); if (album.album_explicit) album_title.append(" (Explicit)"); if (!allow_streaming) { - Warn(QString("Song %1 %2 %3 is not allowStreaming").arg(artist, album_title, title)); + Warn(QStringLiteral("Song %1 %2 %3 is not allowStreaming").arg(artist, album_title, title)); return; } if (!stream_ready) { - Warn(QString("Song %1 %2 %3 is not streamReady").arg(artist, album_title, title)); + Warn(QStringLiteral("Song %1 %2 %3 is not streamReady").arg(artist, album_title, title)); return; } @@ -1117,15 +1117,15 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti duration = q_duration.toLongLong() * kNsecPerSec; } else { - Error("Invalid duration for song.", json_duration); + Error(QStringLiteral("Invalid duration for song."), json_duration); return; } QUrl cover_url; - if (obj_album.contains("cover")) { - const QString cover = obj_album["cover"].toString().replace("-", "/"); + if (obj_album.contains(QStringLiteral("cover"))) { + const QString cover = obj_album[QStringLiteral("cover")].toString().replace(QLatin1String("-"), QLatin1String("/")); if (!cover.isEmpty()) { - cover_url.setUrl(QString("%1/images/%2/%3.jpg").arg(kResourcesUrl, cover, coversize_)); + cover_url.setUrl(QStringLiteral("%1/images/%2/%3.jpg").arg(kResourcesUrl, cover, coversize_)); } } @@ -1263,14 +1263,14 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album } if (reply->error() != QNetworkReply::NoError) { - Error(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + Error(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); album_covers_requests_sent_.remove(album_id); AlbumCoverFinishCheck(); return; } if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { - Error(QString("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(url.toString())); + Error(QStringLiteral("Received HTTP code %1 for %2.").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()).arg(url.toString())); if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id); AlbumCoverFinishCheck(); return; @@ -1281,7 +1281,7 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album mimetype = mimetype.left(mimetype.indexOf(';')); } if (!ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) && !ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) { - Error(QString("Unsupported mimetype for image reader %1 for %2").arg(mimetype, url.toString())); + Error(QStringLiteral("Unsupported mimetype for image reader %1 for %2").arg(mimetype, url.toString())); if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id); AlbumCoverFinishCheck(); return; @@ -1289,7 +1289,7 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album QByteArray data = reply->readAll(); if (data.isEmpty()) { - Error(QString("Received empty image data for %1").arg(url.toString())); + Error(QStringLiteral("Received empty image data for %1").arg(url.toString())); if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id); AlbumCoverFinishCheck(); return; @@ -1312,13 +1312,13 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album } } else { - Error(QString("Error saving image data to %1").arg(filename)); + Error(QStringLiteral("Error saving image data to %1").arg(filename)); if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id); } } else { if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id); - Error(QString("Error decoding image data from %1").arg(url.toString())); + Error(QStringLiteral("Error decoding image data from %1").arg(url.toString())); } AlbumCoverFinishCheck(); diff --git a/src/tidal/tidalservice.cpp b/src/tidal/tidalservice.cpp index 5bfd646b..f0218c15 100644 --- a/src/tidal/tidalservice.cpp +++ b/src/tidal/tidalservice.cpp @@ -87,7 +87,7 @@ constexpr char TidalService::kAlbumsSongsFtsTable[] = "tidal_albums_songs_fts"; constexpr char TidalService::kSongsFtsTable[] = "tidal_songs_fts"; TidalService::TidalService(Application *app, QObject *parent) - : InternetService(Song::Source::Tidal, "Tidal", "tidal", TidalSettingsPage::kSettingsGroup, SettingsDialog::Page::Tidal, app, parent), + : InternetService(Song::Source::Tidal, QStringLiteral("Tidal"), QStringLiteral("tidal"), TidalSettingsPage::kSettingsGroup, SettingsDialog::Page::Tidal, app, parent), app_(app), network_(app->network()), url_handler_(new TidalUrlHandler(app, this)), @@ -337,13 +337,13 @@ void TidalService::AuthorizationUrlReceived(const QUrl &url) { QUrlQuery url_query(url); - if (url_query.hasQueryItem("token_type") && url_query.hasQueryItem("expires_in") && url_query.hasQueryItem("access_token")) { + if (url_query.hasQueryItem(QStringLiteral("token_type")) && url_query.hasQueryItem(QStringLiteral("expires_in")) && url_query.hasQueryItem(QStringLiteral("access_token"))) { - access_token_ = url_query.queryItemValue("access_token").toUtf8(); - if (url_query.hasQueryItem("refresh_token")) { - refresh_token_ = url_query.queryItemValue("refresh_token").toUtf8(); + access_token_ = url_query.queryItemValue(QStringLiteral("access_token")).toUtf8(); + if (url_query.hasQueryItem(QStringLiteral("refresh_token"))) { + refresh_token_ = url_query.queryItemValue(QStringLiteral("refresh_token")).toUtf8(); } - expires_in_ = url_query.queryItemValue("expires_in").toInt(); + expires_in_ = url_query.queryItemValue(QStringLiteral("expires_in")).toInt(); login_time_ = QDateTime::currentDateTime().toSecsSinceEpoch(); session_id_.clear(); @@ -360,9 +360,9 @@ void TidalService::AuthorizationUrlReceived(const QUrl &url) { emit LoginSuccess(); } - else if (url_query.hasQueryItem("code") && url_query.hasQueryItem("state")) { + else if (url_query.hasQueryItem(QStringLiteral("code")) && url_query.hasQueryItem(QStringLiteral("state"))) { - QString code = url_query.queryItemValue("code"); + QString code = url_query.queryItemValue(QStringLiteral("code")); RequestAccessToken(code); @@ -432,7 +432,7 @@ void TidalService::AccessTokenRequestFinished(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - LoginError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + LoginError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); return; } else { @@ -442,19 +442,19 @@ void TidalService::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("userMessage")) { - int status = json_obj["status"].toInt(); - int sub_status = json_obj["subStatus"].toInt(); - QString user_message = json_obj["userMessage"].toString(); - login_errors_ << QString("Authentication failure: %1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("userMessage"))) { + int status = json_obj[QStringLiteral("status")].toInt(); + int sub_status = json_obj[QStringLiteral("subStatus")].toInt(); + QString user_message = json_obj[QStringLiteral("userMessage")].toString(); + login_errors_ << QStringLiteral("Authentication failure: %1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); } } if (login_errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - login_errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + login_errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - login_errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + login_errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } LoginError(); @@ -467,43 +467,43 @@ void TidalService::AccessTokenRequestFinished(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - LoginError("Authentication reply from server missing Json data."); + LoginError(QStringLiteral("Authentication reply from server missing Json data.")); return; } if (json_doc.isEmpty()) { - LoginError("Authentication reply from server has empty Json document."); + LoginError(QStringLiteral("Authentication reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - LoginError("Authentication reply from server has Json document that is not an object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - LoginError("Authentication reply from server has empty Json object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("access_token") || !json_obj.contains("expires_in")) { - LoginError("Authentication reply from server is missing access_token or expires_in", json_obj); + if (!json_obj.contains(QStringLiteral("access_token")) || !json_obj.contains(QStringLiteral("expires_in"))) { + LoginError(QStringLiteral("Authentication reply from server is missing access_token or expires_in"), json_obj); return; } - access_token_ = json_obj["access_token"].toString(); - expires_in_ = json_obj["expires_in"].toInt(); - if (json_obj.contains("refresh_token")) { - refresh_token_ = json_obj["refresh_token"].toString(); + access_token_ = json_obj[QStringLiteral("access_token")].toString(); + expires_in_ = json_obj[QStringLiteral("expires_in")].toInt(); + if (json_obj.contains(QStringLiteral("refresh_token"))) { + refresh_token_ = json_obj[QStringLiteral("refresh_token")].toString(); } login_time_ = QDateTime::currentDateTime().toSecsSinceEpoch(); - if (json_obj.contains("user") && json_obj["user"].isObject()) { - QJsonObject obj_user = json_obj["user"].toObject(); - if (obj_user.contains("countryCode") && obj_user.contains("userId")) { - country_code_ = obj_user["countryCode"].toString(); - user_id_ = obj_user["userId"].toInt(); + if (json_obj.contains(QStringLiteral("user")) && json_obj[QStringLiteral("user")].isObject()) { + QJsonObject obj_user = json_obj[QStringLiteral("user")].toObject(); + if (obj_user.contains(QStringLiteral("countryCode")) && obj_user.contains(QStringLiteral("userId"))) { + country_code_ = obj_user[QStringLiteral("countryCode")].toString(); + user_id_ = obj_user[QStringLiteral("userId")].toInt(); } } @@ -581,7 +581,7 @@ void TidalService::HandleAuthReply(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { if (reply->error() != QNetworkReply::NoError && reply->error() < 200) { // This is a network error, there is nothing more to do. - LoginError(QString("%1 (%2)").arg(reply->errorString()).arg(reply->error())); + LoginError(QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error())); login_errors_.clear(); return; } @@ -592,19 +592,19 @@ void TidalService::HandleAuthReply(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) { QJsonObject json_obj = json_doc.object(); - if (!json_obj.isEmpty() && json_obj.contains("status") && json_obj.contains("userMessage")) { - int status = json_obj["status"].toInt(); - int sub_status = json_obj["subStatus"].toInt(); - QString user_message = json_obj["userMessage"].toString(); - login_errors_ << QString("Authentication failure: %1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); + if (!json_obj.isEmpty() && json_obj.contains(QStringLiteral("status")) && json_obj.contains(QStringLiteral("userMessage"))) { + int status = json_obj[QStringLiteral("status")].toInt(); + int sub_status = json_obj[QStringLiteral("subStatus")].toInt(); + QString user_message = json_obj[QStringLiteral("userMessage")].toString(); + login_errors_ << QStringLiteral("Authentication failure: %1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status); } } if (login_errors_.isEmpty()) { if (reply->error() != QNetworkReply::NoError) { - login_errors_ << QString("%1 (%2)").arg(reply->errorString()).arg(reply->error()); + login_errors_ << QStringLiteral("%1 (%2)").arg(reply->errorString()).arg(reply->error()); } else { - login_errors_ << QString("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); + login_errors_ << QStringLiteral("Received HTTP code %1").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } LoginError(); @@ -620,34 +620,34 @@ void TidalService::HandleAuthReply(QNetworkReply *reply) { QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); if (json_error.error != QJsonParseError::NoError) { - LoginError("Authentication reply from server missing Json data."); + LoginError(QStringLiteral("Authentication reply from server missing Json data.")); return; } if (json_doc.isEmpty()) { - LoginError("Authentication reply from server has empty Json document."); + LoginError(QStringLiteral("Authentication reply from server has empty Json document.")); return; } if (!json_doc.isObject()) { - LoginError("Authentication reply from server has Json document that is not an object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc); return; } QJsonObject json_obj = json_doc.object(); if (json_obj.isEmpty()) { - LoginError("Authentication reply from server has empty Json object.", json_doc); + LoginError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc); return; } - if (!json_obj.contains("userId") || !json_obj.contains("sessionId") || !json_obj.contains("countryCode")) { - LoginError("Authentication reply from server is missing userId, sessionId or countryCode", json_obj); + if (!json_obj.contains(QStringLiteral("userId")) || !json_obj.contains(QStringLiteral("sessionId")) || !json_obj.contains(QStringLiteral("countryCode"))) { + LoginError(QStringLiteral("Authentication reply from server is missing userId, sessionId or countryCode"), json_obj); return; } - country_code_ = json_obj["countryCode"].toString(); - session_id_ = json_obj["sessionId"].toString(); - user_id_ = json_obj["userId"].toInt(); + country_code_ = json_obj[QStringLiteral("countryCode")].toString(); + session_id_ = json_obj[QStringLiteral("sessionId")].toString(); + user_id_ = json_obj[QStringLiteral("userId")].toInt(); access_token_.clear(); refresh_token_.clear(); diff --git a/src/tidal/tidalstreamurlrequest.cpp b/src/tidal/tidalstreamurlrequest.cpp index 93d3388f..9dd53a57 100644 --- a/src/tidal/tidalstreamurlrequest.cpp +++ b/src/tidal/tidalstreamurlrequest.cpp @@ -122,7 +122,7 @@ void TidalStreamURLRequest::GetStreamURL() { switch (stream_url_method()) { case TidalSettingsPage::StreamUrlMethod::StreamUrl: params << Param("soundQuality", quality()); - reply_ = CreateRequest(QString("tracks/%1/streamUrl").arg(song_id_), params); + reply_ = CreateRequest(QStringLiteral("tracks/%1/streamUrl").arg(song_id_), params); QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived); break; case TidalSettingsPage::StreamUrlMethod::UrlPostPaywall: @@ -130,14 +130,14 @@ void TidalStreamURLRequest::GetStreamURL() { params << Param("playbackmode", "STREAM"); params << Param("assetpresentation", "FULL"); params << Param("urlusagemode", "STREAM"); - reply_ = CreateRequest(QString("tracks/%1/urlpostpaywall").arg(song_id_), params); + reply_ = CreateRequest(QStringLiteral("tracks/%1/urlpostpaywall").arg(song_id_), params); QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived); break; case TidalSettingsPage::StreamUrlMethod::PlaybackInfoPostPaywall: params << Param("audioquality", quality()); params << Param("playbackmode", "STREAM"); params << Param("assetpresentation", "FULL"); - reply_ = CreateRequest(QString("tracks/%1/playbackinfopostpaywall").arg(song_id_), params); + reply_ = CreateRequest(QStringLiteral("tracks/%1/playbackinfopostpaywall").arg(song_id_), params); QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived); break; } @@ -169,22 +169,22 @@ void TidalStreamURLRequest::StreamURLReceived() { return; } - if (!json_obj.contains("trackId")) { - Error("Invalid Json reply, stream missing trackId.", json_obj); + if (!json_obj.contains(QStringLiteral("trackId"))) { + Error(QStringLiteral("Invalid Json reply, stream missing trackId."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } - int track_id = json_obj["trackId"].toInt(); + int track_id = json_obj[QStringLiteral("trackId")].toInt(); if (track_id != song_id_) { qLog(Debug) << "Tidal returned track ID" << track_id << "for" << media_url_; } Song::FileType filetype(Song::FileType::Stream); - if (json_obj.contains("codec") || json_obj.contains("codecs")) { + if (json_obj.contains(QStringLiteral("codec")) || json_obj.contains(QStringLiteral("codecs"))) { QString codec; - if (json_obj.contains("codec")) codec = json_obj["codec"].toString().toLower(); - if (json_obj.contains("codecs")) codec = json_obj["codecs"].toString().toLower(); + if (json_obj.contains(QStringLiteral("codec"))) codec = json_obj[QStringLiteral("codec")].toString().toLower(); + if (json_obj.contains(QStringLiteral("codecs"))) codec = json_obj[QStringLiteral("codecs")].toString().toLower(); filetype = Song::FiletypeByExtension(codec); if (filetype == Song::FileType::Unknown) { qLog(Debug) << "Tidal: Unknown codec" << codec; @@ -194,16 +194,16 @@ void TidalStreamURLRequest::StreamURLReceived() { QList urls; - if (json_obj.contains("manifest")) { + if (json_obj.contains(QStringLiteral("manifest"))) { - QString manifest(json_obj["manifest"].toString()); + QString manifest(json_obj[QStringLiteral("manifest")].toString()); QByteArray data_manifest = QByteArray::fromBase64(manifest.toUtf8()); QXmlStreamReader xml_reader(data_manifest); if (xml_reader.readNextStartElement()) { QUrl url; - url.setScheme("data"); - url.setPath(QString("application/dash+xml;base64,%1").arg(manifest)); + url.setScheme(QStringLiteral("data")); + url.setPath(QStringLiteral("application/dash+xml;base64,%1").arg(manifest)); urls << url; } @@ -215,9 +215,9 @@ void TidalStreamURLRequest::StreamURLReceived() { return; } - if (json_obj.contains("encryptionType") && json_obj.contains("keyId")) { - QString encryption_type = json_obj["encryptionType"].toString(); - QString key_id = json_obj["keyId"].toString(); + if (json_obj.contains(QStringLiteral("encryptionType")) && json_obj.contains(QStringLiteral("keyId"))) { + QString encryption_type = json_obj[QStringLiteral("encryptionType")].toString(); + QString key_id = json_obj[QStringLiteral("keyId")].toString(); if (!encryption_type.isEmpty() && !key_id.isEmpty()) { Error(tr("Received URL with %1 encrypted stream from Tidal. Strawberry does not currently support encrypted streams.").arg(encryption_type)); emit StreamURLFailure(id_, media_url_, errors_.first()); @@ -225,13 +225,13 @@ void TidalStreamURLRequest::StreamURLReceived() { } } - if (!json_obj.contains("mimeType")) { - Error("Invalid Json reply, stream url reply manifest is missing mimeType.", json_obj); + if (!json_obj.contains(QStringLiteral("mimeType"))) { + Error(QStringLiteral("Invalid Json reply, stream url reply manifest is missing mimeType."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } - QString mimetype = json_obj["mimeType"].toString(); + QString mimetype = json_obj[QStringLiteral("mimeType")].toString(); QMimeDatabase mimedb; QStringList suffixes = mimedb.mimeTypeForName(mimetype.toUtf8()).suffixes(); for (const QString &suffix : suffixes) { @@ -246,10 +246,10 @@ void TidalStreamURLRequest::StreamURLReceived() { } - if (json_obj.contains("urls")) { - QJsonValue json_urls = json_obj["urls"]; + if (json_obj.contains(QStringLiteral("urls"))) { + QJsonValue json_urls = json_obj[QStringLiteral("urls")]; if (!json_urls.isArray()) { - Error("Invalid Json reply, urls is not an array.", json_urls); + Error(QStringLiteral("Invalid Json reply, urls is not an array."), json_urls); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } @@ -259,8 +259,8 @@ void TidalStreamURLRequest::StreamURLReceived() { urls << QUrl(value.toString()); } } - else if (json_obj.contains("url")) { - QUrl new_url(json_obj["url"].toString()); + else if (json_obj.contains(QStringLiteral("url"))) { + QUrl new_url(json_obj[QStringLiteral("url")].toString()); urls << new_url; if (filetype == Song::FileType::Stream) { // Guess filetype by filename extension in URL. @@ -269,8 +269,8 @@ void TidalStreamURLRequest::StreamURLReceived() { } } - if (json_obj.contains("encryptionKey")) { - QString encryption_key = json_obj["encryptionKey"].toString(); + if (json_obj.contains(QStringLiteral("encryptionKey"))) { + QString encryption_key = json_obj[QStringLiteral("encryptionKey")].toString(); if (!encryption_key.isEmpty()) { Error(tr("Received URL with encrypted stream from Tidal. Strawberry does not currently support encrypted streams.")); emit StreamURLFailure(id_, media_url_, errors_.first()); @@ -278,9 +278,9 @@ void TidalStreamURLRequest::StreamURLReceived() { } } - if (json_obj.contains("securityType") && json_obj.contains("securityToken")) { - QString security_type = json_obj["securityType"].toString(); - QString security_token = json_obj["securityToken"].toString(); + if (json_obj.contains(QStringLiteral("securityType")) && json_obj.contains(QStringLiteral("securityToken"))) { + QString security_type = json_obj[QStringLiteral("securityType")].toString(); + QString security_token = json_obj[QStringLiteral("securityToken")].toString(); if (!security_type.isEmpty() && !security_token.isEmpty()) { Error(tr("Received URL with encrypted stream from Tidal. Strawberry does not currently support encrypted streams.")); emit StreamURLFailure(id_, media_url_, errors_.first()); @@ -289,7 +289,7 @@ void TidalStreamURLRequest::StreamURLReceived() { } if (urls.isEmpty()) { - Error("Missing stream urls.", json_obj); + Error(QStringLiteral("Missing stream urls."), json_obj); emit StreamURLFailure(id_, media_url_, errors_.first()); return; } diff --git a/src/tidal/tidalurlhandler.cpp b/src/tidal/tidalurlhandler.cpp index 9601e166..30707e21 100644 --- a/src/tidal/tidalurlhandler.cpp +++ b/src/tidal/tidalurlhandler.cpp @@ -42,7 +42,7 @@ TidalUrlHandler::TidalUrlHandler(Application *app, TidalService *service) UrlHandler::LoadResult TidalUrlHandler::StartLoading(const QUrl &url) { Request req; - req.task_id = app_->task_manager()->StartTask(QString("Loading %1 stream...").arg(url.scheme())); + req.task_id = app_->task_manager()->StartTask(QStringLiteral("Loading %1 stream...").arg(url.scheme())); QString error; req.id = service_->GetStreamURL(url, error); if (req.id == 0) { diff --git a/src/transcoder/transcodedialog.cpp b/src/transcoder/transcodedialog.cpp index b9af1c7a..be20554a 100644 --- a/src/transcoder/transcodedialog.cpp +++ b/src/transcoder/transcodedialog.cpp @@ -103,7 +103,7 @@ TranscodeDialog::TranscodeDialog(QMainWindow *mainwindow, QWidget *parent) QList presets = Transcoder::GetAllPresets(); std::sort(presets.begin(), presets.end(), ComparePresetsByName); for (const TranscoderPreset &preset : presets) { - ui_->format->addItem(QString("%1 (.%2)").arg(preset.name_, preset.extension_), QVariant::fromValue(preset)); + ui_->format->addItem(QStringLiteral("%1 (.%2)").arg(preset.name_, preset.extension_), QVariant::fromValue(preset)); } // Load settings @@ -310,7 +310,7 @@ void TranscodeDialog::UpdateStatusText() { sections << "" + tr("%n failed", "", finished_failed_) + ""; } - ui_->progress_text->setText(sections.join(", ")); + ui_->progress_text->setText(sections.join(QStringLiteral(", "))); } @@ -322,7 +322,7 @@ void TranscodeDialog::Add() { QStringList filenames = QFileDialog::getOpenFileNames( this, tr("Add files to transcode"), last_add_dir_, - QString("%1 (%2);;%3").arg(tr("Music"), FileView::kFileFilter, tr(MainWindow::kAllFilesFilterSpec))); + QStringLiteral("%1 (%2);;%3").arg(tr("Music"), FileView::kFileFilter, tr(MainWindow::kAllFilesFilterSpec))); if (filenames.isEmpty()) return; @@ -345,7 +345,7 @@ void TranscodeDialog::Import() { QStringList filenames; #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QStringList audioTypes = QString(FileView::kFileFilter).split(" ", Qt::SkipEmptyParts); + QStringList audioTypes = QString(FileView::kFileFilter).split(QStringLiteral(" "), Qt::SkipEmptyParts); #else QStringList audioTypes = QString(FileView::kFileFilter).split(" ", QString::SkipEmptyParts); #endif @@ -383,7 +383,7 @@ void TranscodeDialog::Remove() { qDeleteAll(ui_->files->selectedItems()); } void TranscodeDialog::LogLine(const QString &message) { QString date(QDateTime::currentDateTime().toString(Qt::TextDate)); - log_ui_->log->appendPlainText(QString("%1: %2").arg(date, message)); + log_ui_->log->appendPlainText(QStringLiteral("%1: %2").arg(date, message)); } @@ -421,7 +421,7 @@ void TranscodeDialog::AddDestination() { ui_->destination->removeItem(1); // The oldest folder item. } - QIcon icon = IconLoader::Load("folder"); + QIcon icon = IconLoader::Load(QStringLiteral("folder")); QVariant data_var = QVariant::fromValue(dir); // Do not insert duplicates. int duplicate_index = ui_->destination->findData(data_var); @@ -461,7 +461,7 @@ QString TranscodeDialog::GetOutputFileName(const QString &input_filepath, const QFileInfo fileinfo(output_filepath); const QString original_filename = fileinfo.completeBaseName(); for (int i = 1; fileinfo.exists(); ++i) { - fileinfo.setFile(QString("%1/%2-%3.%4").arg(fileinfo.path(), original_filename).arg(i).arg(fileinfo.suffix())); + fileinfo.setFile(QStringLiteral("%1/%2-%3.%4").arg(fileinfo.path(), original_filename).arg(i).arg(fileinfo.suffix())); } output_filepath = fileinfo.filePath(); } diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index b9165360..3eac9b92 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -95,8 +95,8 @@ GstElement *Transcoder::CreateElementForMimeType(const QString &element_type, co // HACK: Force mp4mux because it doesn't set any useful src caps if (mime_type == "audio/mp4") { - emit LogLine(QString("Using '%1' (rank %2)").arg("mp4mux").arg(-1)); - return CreateElement("mp4mux", bin); + emit LogLine(QStringLiteral("Using '%1' (rank %2)").arg(QStringLiteral("mp4mux")).arg(-1)); + return CreateElement(QStringLiteral("mp4mux"), bin); } // Keep track of all the suitable elements we find and figure out which is the best at the end. @@ -112,7 +112,7 @@ GstElement *Transcoder::CreateElementForMimeType(const QString &element_type, co GstElementFactory *factory = GST_ELEMENT_FACTORY(f->data); // Is this the right type of plugin? - if (QString(gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_KLASS)).contains(element_type)) { + if (QString::fromUtf8(gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_KLASS)).contains(element_type)) { const GList *const templates = gst_element_factory_get_static_pad_templates(factory); for (const GList *t = templates; t; t = g_list_next(t)) { // Only interested in source pads @@ -129,7 +129,7 @@ GstElement *Transcoder::CreateElementForMimeType(const QString &element_type, co int rank = static_cast(gst_plugin_feature_get_rank(GST_PLUGIN_FEATURE(factory))); QString name = GST_OBJECT_NAME(factory); - if (name.startsWith("ffmux") || name.startsWith("ffenc")) { + if (name.startsWith(QLatin1String("ffmux")) || name.startsWith(QLatin1String("ffenc"))) { rank = -1; // ffmpeg usually sucks } @@ -150,21 +150,21 @@ GstElement *Transcoder::CreateElementForMimeType(const QString &element_type, co std::sort(suitable_elements_.begin(), suitable_elements_.end()); const SuitableElement &best = suitable_elements_.last(); - emit LogLine(QString("Using '%1' (rank %2)").arg(best.name_).arg(best.rank_)); + emit LogLine(QStringLiteral("Using '%1' (rank %2)").arg(best.name_).arg(best.rank_)); if (best.name_ == "lamemp3enc") { // Special case: we need to add xingmux and id3v2mux to the pipeline when using lamemp3enc because it doesn't write the VBR or ID3v2 headers itself. - emit LogLine("Adding xingmux and id3v2mux to the pipeline"); + emit LogLine(QStringLiteral("Adding xingmux and id3v2mux to the pipeline")); // Create the bin GstElement *mp3bin = gst_bin_new("mp3bin"); gst_bin_add(GST_BIN(bin), mp3bin); // Create the elements - GstElement *lame = CreateElement("lamemp3enc", mp3bin); - GstElement *xing = CreateElement("xingmux", mp3bin); - GstElement *id3v2 = CreateElement("id3v2mux", mp3bin); + GstElement *lame = CreateElement(QStringLiteral("lamemp3enc"), mp3bin); + GstElement *xing = CreateElement(QStringLiteral("xingmux"), mp3bin); + GstElement *id3v2 = CreateElement(QStringLiteral("id3v2mux"), mp3bin); if (!lame || !xing || !id3v2) { return nullptr; @@ -248,25 +248,25 @@ TranscoderPreset Transcoder::PresetForFileType(const Song::FileType filetype) { switch (filetype) { case Song::FileType::WAV: - return TranscoderPreset(filetype, "Wav", "wav", QString(), "audio/x-wav"); + return TranscoderPreset(filetype, QStringLiteral("Wav"), QStringLiteral("wav"), QString(), QStringLiteral("audio/x-wav")); case Song::FileType::FLAC: - return TranscoderPreset(filetype, "FLAC", "flac", "audio/x-flac"); + return TranscoderPreset(filetype, QStringLiteral("FLAC"), QStringLiteral("flac"), QStringLiteral("audio/x-flac")); case Song::FileType::WavPack: - return TranscoderPreset(filetype, "WavPack", "wv", "audio/x-wavpack"); + return TranscoderPreset(filetype, QStringLiteral("WavPack"), QStringLiteral("wv"), QStringLiteral("audio/x-wavpack")); case Song::FileType::OggFlac: - return TranscoderPreset(filetype, "Ogg FLAC", "ogg", "audio/x-flac", "application/ogg"); + return TranscoderPreset(filetype, QStringLiteral("Ogg FLAC"), QStringLiteral("ogg"), QStringLiteral("audio/x-flac"), QStringLiteral("application/ogg")); case Song::FileType::OggVorbis: - return TranscoderPreset(filetype, "Ogg Vorbis", "ogg", "audio/x-vorbis", "application/ogg"); + return TranscoderPreset(filetype, QStringLiteral("Ogg Vorbis"), QStringLiteral("ogg"), QStringLiteral("audio/x-vorbis"), QStringLiteral("application/ogg")); case Song::FileType::OggOpus: - return TranscoderPreset(filetype, "Ogg Opus", "opus", "audio/x-opus", "application/ogg"); + return TranscoderPreset(filetype, QStringLiteral("Ogg Opus"), QStringLiteral("opus"), QStringLiteral("audio/x-opus"), QStringLiteral("application/ogg")); case Song::FileType::OggSpeex: - return TranscoderPreset(filetype, "Ogg Speex", "spx", "audio/x-speex", "application/ogg"); + return TranscoderPreset(filetype, QStringLiteral("Ogg Speex"), QStringLiteral("spx"), QStringLiteral("audio/x-speex"), QStringLiteral("application/ogg")); case Song::FileType::MPEG: - return TranscoderPreset(filetype, "MP3", "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); + return TranscoderPreset(filetype, QStringLiteral("MP3"), QStringLiteral("mp3"), QStringLiteral("audio/mpeg, mpegversion=(int)1, layer=(int)3")); case Song::FileType::MP4: - return TranscoderPreset(filetype, "M4A AAC", "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); + return TranscoderPreset(filetype, QStringLiteral("M4A AAC"), QStringLiteral("mp4"), QStringLiteral("audio/mpeg, mpegversion=(int)4"), QStringLiteral("audio/mp4")); case Song::FileType::ASF: - return TranscoderPreset(filetype, "Windows Media audio", "wma", "audio/x-wma", "video/x-ms-asf"); + return TranscoderPreset(filetype, QStringLiteral("Windows Media audio"), QStringLiteral("wma"), QStringLiteral("audio/x-wma"), QStringLiteral("video/x-ms-asf")); default: qLog(Warning) << "Unsupported format in PresetForFileType:" << static_cast(filetype); return TranscoderPreset(); @@ -313,7 +313,7 @@ QString Transcoder::GetFile(const QString &input, const TranscoderPreset &preset QString filename = fileinfo_output.completeBaseName(); QString suffix = fileinfo_output.suffix(); for (int i = 0;; ++i) { - QString new_filename = QString("%1/%2-%3.%4").arg(path, filename).arg(i).arg(suffix); + QString new_filename = QStringLiteral("%1/%2-%3.%4").arg(path, filename).arg(i).arg(suffix); fileinfo_output.setFile(new_filename); if (!fileinfo_output.exists()) { break; @@ -431,13 +431,13 @@ bool Transcoder::StartJob(const Job &job) { if (!state->pipeline_) return false; // Create all the elements - GstElement *src = CreateElement("filesrc", state->pipeline_); - GstElement *decode = CreateElement("decodebin", state->pipeline_); - GstElement *convert = CreateElement("audioconvert", state->pipeline_); - GstElement *resample = CreateElement("audioresample", state->pipeline_); - GstElement *codec = CreateElementForMimeType("Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); - GstElement *muxer = CreateElementForMimeType("Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); - GstElement *sink = CreateElement("filesink", state->pipeline_); + GstElement *src = CreateElement(QStringLiteral("filesrc"), state->pipeline_); + GstElement *decode = CreateElement(QStringLiteral("decodebin"), state->pipeline_); + GstElement *convert = CreateElement(QStringLiteral("audioconvert"), state->pipeline_); + GstElement *resample = CreateElement(QStringLiteral("audioresample"), state->pipeline_); + GstElement *codec = CreateElementForMimeType(QStringLiteral("Codec/Encoder/Audio"), job.preset.codec_mimetype_, state->pipeline_); + GstElement *muxer = CreateElementForMimeType(QStringLiteral("Codec/Muxer"), job.preset.muxer_mimetype_, state->pipeline_); + GstElement *sink = CreateElement(QStringLiteral("filesink"), state->pipeline_); if (!src || !decode || !convert || !sink) return false; @@ -589,7 +589,7 @@ void Transcoder::SetElementProperties(const QString &name, GObject *object) { continue; } - emit LogLine(QString("Setting %1 property: %2 = %3").arg(name, property->name, value.toString())); + emit LogLine(QStringLiteral("Setting %1 property: %2 = %3").arg(name, property->name, value.toString())); switch (property->value_type) { case G_TYPE_FLOAT:{ diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index a6f85713..95c6bf93 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -55,7 +55,7 @@ class Transcoder : public QObject { Q_OBJECT public: - explicit Transcoder(QObject *parent = nullptr, const QString &settings_postfix = ""); + explicit Transcoder(QObject *parent = nullptr, const QString &settings_postfix = QLatin1String("")); static TranscoderPreset PresetForFileType(const Song::FileType filetype); static QList GetAllPresets(); diff --git a/src/utilities/colorutils.cpp b/src/utilities/colorutils.cpp index 3f94d3b1..4a19d818 100644 --- a/src/utilities/colorutils.cpp +++ b/src/utilities/colorutils.cpp @@ -26,7 +26,7 @@ namespace Utilities { QString ColorToRgba(const QColor &c) { - return QString("rgba(%1, %2, %3, %4)") + return QStringLiteral("rgba(%1, %2, %3, %4)") .arg(c.red()) .arg(c.green()) .arg(c.blue()) diff --git a/src/utilities/coverutils.cpp b/src/utilities/coverutils.cpp index 9a5bba5e..5b1bffa6 100644 --- a/src/utilities/coverutils.cpp +++ b/src/utilities/coverutils.cpp @@ -49,7 +49,7 @@ QString CoverUtils::AlbumCoverFilename(QString artist, QString album, const QStr QString filename = artist + "-" + album; filename = Utilities::Transliterate(filename.toLower()); filename = filename.replace(' ', '-') - .replace("--", "-") + .replace(QLatin1String("--"), QLatin1String("-")) .remove(QRegularExpression(QString(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption)) .simplified(); @@ -94,7 +94,7 @@ QString CoverUtils::CoverFilePath(const CoverOptions &options, const Song::Sourc filename = CoverFilenameFromVariable(options, artist, album); filename.remove(QRegularExpression(QString(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption)).remove('/').remove('\\'); if (options.cover_lowercase) filename = filename.toLower(); - if (options.cover_replace_spaces) filename.replace(QRegularExpression("\\s"), "-"); + if (options.cover_replace_spaces) filename.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("-")); if (!extension.isEmpty()) { filename.append('.'); filename.append(extension); @@ -155,9 +155,9 @@ QString CoverUtils::CoverFilenameFromVariable(const CoverOptions &options, const album = Song::AlbumRemoveDisc(album); QString filename(options.cover_pattern); - filename.replace("%albumartist", artist); - filename.replace("%artist", artist); - filename.replace("%album", album); + filename.replace(QLatin1String("%albumartist"), artist); + filename.replace(QLatin1String("%artist"), artist); + filename.replace(QLatin1String("%album"), album); if (!extension.isEmpty()) { filename.append('.'); filename.append(extension); diff --git a/src/utilities/envutils.cpp b/src/utilities/envutils.cpp index d5caa8fe..f93173cf 100644 --- a/src/utilities/envutils.cpp +++ b/src/utilities/envutils.cpp @@ -45,16 +45,16 @@ void SetEnv(const char *key, const QString &value) { QString DesktopEnvironment() { - const QString de = GetEnv("XDG_CURRENT_DESKTOP"); + const QString de = GetEnv(QStringLiteral("XDG_CURRENT_DESKTOP")); if (!de.isEmpty()) return de; - if (!qEnvironmentVariableIsEmpty("KDE_FULL_SESSION")) return "KDE"; - if (!qEnvironmentVariableIsEmpty("GNOME_DESKTOP_SESSION_ID")) return "Gnome"; + if (!qEnvironmentVariableIsEmpty("KDE_FULL_SESSION")) return QStringLiteral("KDE"); + if (!qEnvironmentVariableIsEmpty("GNOME_DESKTOP_SESSION_ID")) return QStringLiteral("Gnome"); - QString session = GetEnv("DESKTOP_SESSION"); + QString session = GetEnv(QStringLiteral("DESKTOP_SESSION")); qint64 slash = session.lastIndexOf('/'); if (slash != -1) { - QSettings desktop_file(QString("%1.desktop").arg(session), QSettings::IniFormat); + QSettings desktop_file(QStringLiteral("%1.desktop").arg(session), QSettings::IniFormat); desktop_file.beginGroup("Desktop Entry"); QString name = desktop_file.value("DesktopNames").toString(); desktop_file.endGroup(); @@ -62,11 +62,11 @@ QString DesktopEnvironment() { session = session.mid(slash + 1); } - if (session == "kde") return "KDE"; - else if (session == "gnome") return "Gnome"; - else if (session == "xfce") return "XFCE"; + if (session == "kde") return QStringLiteral("KDE"); + else if (session == "gnome") return QStringLiteral("Gnome"); + else if (session == "xfce") return QStringLiteral("XFCE"); - return "Unknown"; + return QStringLiteral("Unknown"); } diff --git a/src/utilities/filemanagerutils.cpp b/src/utilities/filemanagerutils.cpp index 2539f2db..2ea60ab9 100644 --- a/src/utilities/filemanagerutils.cpp +++ b/src/utilities/filemanagerutils.cpp @@ -44,7 +44,7 @@ void OpenInFileManager(const QString &path, const QUrl &url) { QProcess proc; #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) - proc.startCommand("xdg-mime query default inode/directory"); + proc.startCommand(QStringLiteral("xdg-mime query default inode/directory")); #else proc.start("xdg-mime", QStringList() << "query" << "default" << "inode/directory"); #endif @@ -52,21 +52,21 @@ void OpenInFileManager(const QString &path, const QUrl &url) { QString desktop_file = proc.readLine().simplified(); QString xdg_data_dirs = QString(qgetenv("XDG_DATA_DIRS")); if (xdg_data_dirs.isEmpty()) { - xdg_data_dirs = "/usr/local/share/:/usr/share/"; + xdg_data_dirs = QStringLiteral("/usr/local/share/:/usr/share/"); } - QStringList data_dirs = xdg_data_dirs.split(":"); + QStringList data_dirs = xdg_data_dirs.split(QStringLiteral(":")); QString command; QStringList command_params; for (const QString &data_dir : data_dirs) { - QString desktop_file_path = QString("%1/applications/%2").arg(data_dir, desktop_file); + QString desktop_file_path = QStringLiteral("%1/applications/%2").arg(data_dir, desktop_file); if (!QFile::exists(desktop_file_path)) continue; QSettings setting(desktop_file_path, QSettings::IniFormat); setting.beginGroup("Desktop Entry"); if (setting.contains("Exec")) { QString cmd = setting.value("Exec").toString(); if (cmd.isEmpty()) break; - cmd = cmd.remove(QRegularExpression("[%][a-zA-Z]*( |$)", QRegularExpression::CaseInsensitiveOption)); + cmd = cmd.remove(QRegularExpression(QStringLiteral("[%][a-zA-Z]*( |$)"), QRegularExpression::CaseInsensitiveOption)); # if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) command_params = cmd.split(' ', Qt::SkipEmptyParts); # else @@ -79,23 +79,23 @@ void OpenInFileManager(const QString &path, const QUrl &url) { if (!command.isEmpty()) break; } - if (command.startsWith("/usr/bin/")) { - command = command.split("/").last(); + if (command.startsWith(QLatin1String("/usr/bin/"))) { + command = command.split(QStringLiteral("/")).last(); } if (command.isEmpty() || command == "exo-open") { QDesktopServices::openUrl(QUrl::fromLocalFile(path)); } - else if (command.startsWith("nautilus")) { - proc.startDetached(command, QStringList() << command_params << "--select" << url.toLocalFile()); + else if (command.startsWith(QLatin1String("nautilus"))) { + proc.startDetached(command, QStringList() << command_params << QStringLiteral("--select") << url.toLocalFile()); } - else if (command.startsWith("dolphin") || command.startsWith("konqueror") || command.startsWith("kfmclient")) { - proc.startDetached(command, QStringList() << command_params << "--select" << url.toLocalFile()); + else if (command.startsWith(QLatin1String("dolphin")) || command.startsWith(QLatin1String("konqueror")) || command.startsWith(QLatin1String("kfmclient"))) { + proc.startDetached(command, QStringList() << command_params << QStringLiteral("--select") << url.toLocalFile()); } - else if (command.startsWith("caja")) { - proc.startDetached(command, QStringList() << command_params << "--no-desktop" << path); + else if (command.startsWith(QLatin1String("caja"))) { + proc.startDetached(command, QStringList() << command_params << QStringLiteral("--no-desktop") << path); } - else if (command.startsWith("pcmanfm") || command.startsWith("thunar") || command.startsWith("spacefm")) { + else if (command.startsWith(QLatin1String("pcmanfm")) || command.startsWith(QLatin1String("thunar")) || command.startsWith(QLatin1String("spacefm"))) { proc.startDetached(command, QStringList() << command_params << path); } else { diff --git a/src/utilities/imageutils.cpp b/src/utilities/imageutils.cpp index d837b01d..7763a40c 100644 --- a/src/utilities/imageutils.cpp +++ b/src/utilities/imageutils.cpp @@ -123,7 +123,7 @@ QImage ImageUtils::ScaleImage(const QImage &image, const QSize desired_size, con QImage ImageUtils::GenerateNoCoverImage(const QSize size, const qreal device_pixel_ratio) { - QImage image(":/pictures/cdcase.png"); + QImage image(QStringLiteral(":/pictures/cdcase.png")); QSize scale_size(static_cast(size.width() * device_pixel_ratio), static_cast(size.height() * device_pixel_ratio)); // Get a square version of the nocover image with some transparency: diff --git a/src/utilities/macaddrutils.cpp b/src/utilities/macaddrutils.cpp index 746b026f..4f380614 100644 --- a/src/utilities/macaddrutils.cpp +++ b/src/utilities/macaddrutils.cpp @@ -41,7 +41,7 @@ QString MacAddress() { } } - if (ret.isEmpty()) ret = "00:00:00:00:00:00"; + if (ret.isEmpty()) ret = QStringLiteral("00:00:00:00:00:00"); return ret; diff --git a/src/utilities/randutils.cpp b/src/utilities/randutils.cpp index a67549cf..b26267f1 100644 --- a/src/utilities/randutils.cpp +++ b/src/utilities/randutils.cpp @@ -27,17 +27,17 @@ namespace Utilities { QString GetRandomStringWithChars(const int len) { - const QString UseCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + const QString UseCharacters(QStringLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); return GetRandomString(len, UseCharacters); } QString GetRandomStringWithCharsAndNumbers(const int len) { - const QString UseCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); + const QString UseCharacters(QStringLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")); return GetRandomString(len, UseCharacters); } QString CryptographicRandomString(const int len) { - const QString UseCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"); + const QString UseCharacters(QStringLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~")); return GetRandomString(len, UseCharacters); } diff --git a/src/utilities/strutils.cpp b/src/utilities/strutils.cpp index c254b982..9d03a6c9 100644 --- a/src/utilities/strutils.cpp +++ b/src/utilities/strutils.cpp @@ -94,17 +94,17 @@ QStringList Updateify(const QStringList &list) { QString DecodeHtmlEntities(const QString &text) { QString copy(text); - copy.replace("&", "&") - .replace("&", "&") - .replace(""", "\"") - .replace(""", "\"") - .replace("'", "'") - .replace("'", "'") - .replace("<", "<") - .replace("<", "<") - .replace(">", ">") - .replace(">", ">") - .replace("'", "'"); + copy.replace(QLatin1String("&"), QLatin1String("&")) + .replace(QLatin1String("&"), QLatin1String("&")) + .replace(QLatin1String("""), QLatin1String("\"")) + .replace(QLatin1String("""), QLatin1String("\"")) + .replace(QLatin1String("'"), QLatin1String("'")) + .replace(QLatin1String("'"), QLatin1String("'")) + .replace(QLatin1String("<"), QLatin1String("<")) + .replace(QLatin1String("<"), QLatin1String("<")) + .replace(QLatin1String(">"), QLatin1String(">")) + .replace(QLatin1String(">"), QLatin1String(">")) + .replace(QLatin1String("'"), QLatin1String("'")); return copy; @@ -112,7 +112,7 @@ QString DecodeHtmlEntities(const QString &text) { QString ReplaceMessage(const QString &message, const Song &song, const QString &newline, const bool html_escaped) { - QRegularExpression variable_replacer("[%][a-z]+[%]"); + QRegularExpression variable_replacer(QStringLiteral("[%][a-z]+[%]")); QString copy(message); // Replace the first line @@ -125,7 +125,7 @@ QString ReplaceMessage(const QString &message, const Song &song, const QString & pos += match.capturedLength(); } - qint64 index_of = copy.indexOf(QRegularExpression(" - (>|$)")); + qint64 index_of = copy.indexOf(QRegularExpression(QStringLiteral(" - (>|$)"))); if (index_of >= 0) copy = copy.remove(index_of, 3); return copy; diff --git a/src/utilities/timeutils.cpp b/src/utilities/timeutils.cpp index 6afcf024..16d8403b 100644 --- a/src/utilities/timeutils.cpp +++ b/src/utilities/timeutils.cpp @@ -67,7 +67,7 @@ QString WordyTime(const quint64 seconds) { if (days > 0) parts << (days == 1 ? QObject::tr("1 day") : QObject::tr("%1 days").arg(days)); parts << PrettyTime(static_cast(seconds - days * 60 * 60 * 24)); - return parts.join(" "); + return parts.join(QStringLiteral(" ")); } @@ -107,7 +107,7 @@ QString PrettyFutureDate(const QDate date) { QDateTime ParseRFC822DateTime(const QString &text) { - QRegularExpression regexp("(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); + QRegularExpression regexp(QStringLiteral("(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})")); QRegularExpressionMatch re_match = regexp.match(text); if (!re_match.hasMatch()) { return QDateTime(); @@ -116,30 +116,30 @@ QDateTime ParseRFC822DateTime(const QString &text) { enum class MatchNames { DAYS = 1, MONTHS, YEARS, HOURS, MINUTES, SECONDS }; QMap monthmap; - monthmap["Jan"] = 1; - monthmap["Feb"] = 2; - monthmap["Mar"] = 3; - monthmap["Apr"] = 4; - monthmap["May"] = 5; - monthmap["Jun"] = 6; - monthmap["Jul"] = 7; - monthmap["Aug"] = 8; - monthmap["Sep"] = 9; - monthmap["Oct"] = 10; - monthmap["Nov"] = 11; - monthmap["Dec"] = 12; - monthmap["January"] = 1; - monthmap["February"] = 2; - monthmap["March"] = 3; - monthmap["April"] = 4; - monthmap["May"] = 5; - monthmap["June"] = 6; - monthmap["July"] = 7; - monthmap["August"] = 8; - monthmap["September"] = 9; - monthmap["October"] = 10; - monthmap["November"] = 11; - monthmap["December"] = 12; + monthmap[QStringLiteral("Jan")] = 1; + monthmap[QStringLiteral("Feb")] = 2; + monthmap[QStringLiteral("Mar")] = 3; + monthmap[QStringLiteral("Apr")] = 4; + monthmap[QStringLiteral("May")] = 5; + monthmap[QStringLiteral("Jun")] = 6; + monthmap[QStringLiteral("Jul")] = 7; + monthmap[QStringLiteral("Aug")] = 8; + monthmap[QStringLiteral("Sep")] = 9; + monthmap[QStringLiteral("Oct")] = 10; + monthmap[QStringLiteral("Nov")] = 11; + monthmap[QStringLiteral("Dec")] = 12; + monthmap[QStringLiteral("January")] = 1; + monthmap[QStringLiteral("February")] = 2; + monthmap[QStringLiteral("March")] = 3; + monthmap[QStringLiteral("April")] = 4; + monthmap[QStringLiteral("May")] = 5; + monthmap[QStringLiteral("June")] = 6; + monthmap[QStringLiteral("July")] = 7; + monthmap[QStringLiteral("August")] = 8; + monthmap[QStringLiteral("September")] = 9; + monthmap[QStringLiteral("October")] = 10; + monthmap[QStringLiteral("November")] = 11; + monthmap[QStringLiteral("December")] = 12; const QDate date(re_match.captured(static_cast(MatchNames::YEARS)).toInt(), monthmap[re_match.captured(static_cast(MatchNames::MONTHS))], re_match.captured(static_cast(MatchNames::DAYS)).toInt()); diff --git a/src/widgets/busyindicator.cpp b/src/widgets/busyindicator.cpp index 4d490bd7..23ea3f16 100644 --- a/src/widgets/busyindicator.cpp +++ b/src/widgets/busyindicator.cpp @@ -48,7 +48,7 @@ BusyIndicator::BusyIndicator(QWidget *parent) void BusyIndicator::Init(const QString &text) { - movie_ = new QMovie(":/pictures/spinner.gif"), + movie_ = new QMovie(QStringLiteral(":/pictures/spinner.gif")), label_ = new QLabel; QLabel *icon = new QLabel; diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index 6dd596a5..70c9fc19 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -208,7 +208,7 @@ class FancyTabBar : public QTabBar { // clazy:exclude=missing-qobject-macro // Restore any label text that was hidden/cached for the IconOnlyTabs mode if (labelCache.count() > 0 && tabWidget->mode() != FancyTabWidget::Mode::IconOnlyTabs) { for (int i = 0; i < count(); ++i) { - setTabToolTip(i, ""); + setTabToolTip(i, QLatin1String("")); setTabText(i, labelCache[tabWidget->widget(i)]); } labelCache.clear(); @@ -219,7 +219,7 @@ class FancyTabBar : public QTabBar { // clazy:exclude=missing-qobject-macro for (int i = 0; i < count(); ++i) { labelCache[tabWidget->widget(i)] = tabText(i); setTabToolTip(i, tabText(i)); - setTabText(i, ""); + setTabText(i, QLatin1String("")); } } QTabBar::paintEvent(pe); @@ -461,7 +461,7 @@ FancyTabWidget::FancyTabWidget(QWidget *parent) setMovable(true); setElideMode(Qt::ElideNone); setUsesScrollButtons(true); - if (QApplication::style() && QApplication::style()->objectName().contains(QRegularExpression("^adwaita.*$", QRegularExpression::CaseInsensitiveOption))) { + if (QApplication::style() && QApplication::style()->objectName().contains(QRegularExpression(QStringLiteral("^adwaita.*$"), QRegularExpression::CaseInsensitiveOption))) { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) style_ = new FancyTabWidgetProxyStyle(QApplication::style()->name()); #else diff --git a/src/widgets/favoritewidget.cpp b/src/widgets/favoritewidget.cpp index c9083229..e421908b 100644 --- a/src/widgets/favoritewidget.cpp +++ b/src/widgets/favoritewidget.cpp @@ -36,8 +36,8 @@ FavoriteWidget::FavoriteWidget(const int tab_index, const bool favorite, QWidget : QWidget(parent), tab_index_(tab_index), favorite_(favorite), - on_(IconLoader::Load("star")), - off_(IconLoader::Load("star-grey")), + on_(IconLoader::Load(QStringLiteral("star"))), + off_(IconLoader::Load(QStringLiteral("star-grey"))), rect_(0, 0, kStarSize, kStarSize) {} void FavoriteWidget::SetFavorite(const bool favorite) { diff --git a/src/widgets/fileview.cpp b/src/widgets/fileview.cpp index 1b3aeffa..5e80a9e4 100644 --- a/src/widgets/fileview.cpp +++ b/src/widgets/fileview.cpp @@ -65,15 +65,15 @@ FileView::FileView(QWidget *parent) model_(nullptr), undo_stack_(new QUndoStack(this)), task_manager_(nullptr), - storage_(new FilesystemMusicStorage(Song::Source::LocalFile, "/")) { + storage_(new FilesystemMusicStorage(Song::Source::LocalFile, QStringLiteral("/"))) { ui_->setupUi(this); // Icons - ui_->back->setIcon(IconLoader::Load("go-previous")); - ui_->forward->setIcon(IconLoader::Load("go-next")); - ui_->home->setIcon(IconLoader::Load("go-home")); - ui_->up->setIcon(IconLoader::Load("go-up")); + ui_->back->setIcon(IconLoader::Load(QStringLiteral("go-previous"))); + ui_->forward->setIcon(IconLoader::Load(QStringLiteral("go-next"))); + ui_->home->setIcon(IconLoader::Load(QStringLiteral("go-home"))); + ui_->up->setIcon(IconLoader::Load(QStringLiteral("go-up"))); QObject::connect(ui_->back, &QToolButton::clicked, undo_stack_, &QUndoStack::undo); QObject::connect(ui_->forward, &QToolButton::clicked, undo_stack_, &QUndoStack::redo); @@ -94,7 +94,7 @@ FileView::FileView(QWidget *parent) QObject::connect(ui_->list, &FileViewList::EditTags, this, &FileView::EditTags); QString filter(FileView::kFileFilter); - filter_list_ << filter.split(" "); + filter_list_ << filter.split(QStringLiteral(" ")); ReloadSettings(); diff --git a/src/widgets/fileviewlist.cpp b/src/widgets/fileviewlist.cpp index 3a6c1fdb..6e55d18a 100644 --- a/src/widgets/fileviewlist.cpp +++ b/src/widgets/fileviewlist.cpp @@ -39,18 +39,18 @@ FileViewList::FileViewList(QWidget *parent) : QListView(parent), menu_(new QMenu(this)) { - menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, &FileViewList::AddToPlaylistSlot); - menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, &FileViewList::LoadSlot); - menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, &FileViewList::OpenInNewPlaylistSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Append to current playlist"), this, &FileViewList::AddToPlaylistSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("media-playback-start")), tr("Replace current playlist"), this, &FileViewList::LoadSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("document-new")), tr("Open in new playlist"), this, &FileViewList::OpenInNewPlaylistSlot); menu_->addSeparator(); - menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, &FileViewList::CopyToCollectionSlot); - menu_->addAction(IconLoader::Load("go-jump"), tr("Move to collection..."), this, &FileViewList::MoveToCollectionSlot); - menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, &FileViewList::CopyToDeviceSlot); - menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, &FileViewList::DeleteSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("edit-copy")), tr("Copy to collection..."), this, &FileViewList::CopyToCollectionSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("go-jump")), tr("Move to collection..."), this, &FileViewList::MoveToCollectionSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("device")), tr("Copy to device..."), this, &FileViewList::CopyToDeviceSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("edit-delete")), tr("Delete from disk..."), this, &FileViewList::DeleteSlot); menu_->addSeparator(); - menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit track information..."), this, &FileViewList::EditTagsSlot); - menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, &FileViewList::ShowInBrowser); + menu_->addAction(IconLoader::Load(QStringLiteral("edit-rename")), tr("Edit track information..."), this, &FileViewList::EditTagsSlot); + menu_->addAction(IconLoader::Load(QStringLiteral("document-open-folder")), tr("Show in file browser..."), this, &FileViewList::ShowInBrowser); setAttribute(Qt::WA_MacShowFocusRect, false); diff --git a/src/widgets/freespacebar.cpp b/src/widgets/freespacebar.cpp index abc135c9..1cf0137b 100644 --- a/src/widgets/freespacebar.cpp +++ b/src/widgets/freespacebar.cpp @@ -226,7 +226,7 @@ QString FreeSpaceBar::TextForSize(const QString &prefix, const quint64 size) { ret = Utilities::PrettySize(size); } else { - ret = "0 MB"; + ret = QStringLiteral("0 MB"); } if (!prefix.isEmpty()) ret.prepend(prefix + " "); diff --git a/src/widgets/groupediconview.cpp b/src/widgets/groupediconview.cpp index 5dc32203..c1a6b36a 100644 --- a/src/widgets/groupediconview.cpp +++ b/src/widgets/groupediconview.cpp @@ -56,7 +56,7 @@ GroupedIconView::GroupedIconView(QWidget *parent) header_spacing_(10), header_indent_(5), item_indent_(10), - header_text_("%1") { + header_text_(QStringLiteral("%1")) { setFlow(LeftToRight); setViewMode(IconMode); diff --git a/src/widgets/lineedit.cpp b/src/widgets/lineedit.cpp index 068ad029..4b379bf7 100644 --- a/src/widgets/lineedit.cpp +++ b/src/widgets/lineedit.cpp @@ -51,10 +51,10 @@ ExtendedEditor::ExtendedEditor(QWidget *widget, int extra_right_padding, bool dr font_point_size_(widget->font().pointSizeF() - 1), is_rtl_(false) { - clear_button_->setIcon(IconLoader::Load("edit-clear-locationbar-ltr")); + clear_button_->setIcon(IconLoader::Load(QStringLiteral("edit-clear-locationbar-ltr"))); clear_button_->setIconSize(QSize(16, 16)); clear_button_->setCursor(Qt::ArrowCursor); - clear_button_->setStyleSheet("QToolButton { border: none; padding: 0px; }"); + clear_button_->setStyleSheet(QStringLiteral("QToolButton { border: none; padding: 0px; }")); clear_button_->setToolTip(QWidget::tr("Clear")); clear_button_->setFocusPolicy(Qt::NoFocus); @@ -64,7 +64,7 @@ ExtendedEditor::ExtendedEditor(QWidget *widget, int extra_right_padding, bool dr reset_button_->setIcon(widget->style()->standardIcon(QStyle::SP_DialogResetButton, &opt, widget)); reset_button_->setIconSize(QSize(16, 16)); reset_button_->setCursor(Qt::ArrowCursor); - reset_button_->setStyleSheet("QToolButton { border: none; padding: 0px; }"); + reset_button_->setStyleSheet(QStringLiteral("QToolButton { border: none; padding: 0px; }")); reset_button_->setToolTip(QWidget::tr("Reset")); reset_button_->setFocusPolicy(Qt::NoFocus); reset_button_->hide(); @@ -112,7 +112,7 @@ void ExtendedEditor::UpdateButtonGeometry() { const int left = frame_width + 1 + (has_clear_button() ? clear_button_->sizeHint().width() : 0); const int right = frame_width + 1 + (has_reset_button() ? reset_button_->sizeHint().width() : 0); - widget_->setStyleSheet(QString("QLineEdit { padding-left: %1px; padding-right: %2px; }").arg(left).arg(right)); + widget_->setStyleSheet(QStringLiteral("QLineEdit { padding-left: %1px; padding-right: %2px; }").arg(left).arg(right)); QSize msz = widget_->minimumSizeHint(); widget_->setMinimumSize(msz.width() + (clear_button_->sizeHint().width() + frame_width + 1) * 2 + extra_right_padding_, qMax(msz.height(), clear_button_->sizeHint().height() + frame_width * 2 + 2)); @@ -251,7 +251,7 @@ void CheckBox::resizeEvent(QResizeEvent *e) { QString SpinBox::textFromValue(int val) const { if (val <= 0 && !hint_.isEmpty()) { - return "-"; + return QStringLiteral("-"); } return QSpinBox::textFromValue(val); diff --git a/src/widgets/linetextedit.cpp b/src/widgets/linetextedit.cpp index 6923f378..c31709e4 100644 --- a/src/widgets/linetextedit.cpp +++ b/src/widgets/linetextedit.cpp @@ -45,7 +45,7 @@ QSize LineTextEdit::sizeHint() const { static const int kMargin = 5; int h = 2 * kMargin + qMax(fm.height(), 14); - int w = 2 * kMargin + fm.horizontalAdvance("W") * 15; + int w = 2 * kMargin + fm.horizontalAdvance(QStringLiteral("W")) * 15; return QSize(w, h); diff --git a/src/widgets/loginstatewidget.cpp b/src/widgets/loginstatewidget.cpp index 5135e791..f17f624d 100644 --- a/src/widgets/loginstatewidget.cpp +++ b/src/widgets/loginstatewidget.cpp @@ -42,10 +42,10 @@ LoginStateWidget::LoginStateWidget(QWidget *parent) ui_->account_type->hide(); ui_->busy->hide(); - ui_->sign_out->setIcon(IconLoader::Load("list-remove")); - ui_->signed_in_icon_label->setPixmap(IconLoader::Load("dialog-ok-apply").pixmap(22)); - ui_->expires_icon_label->setPixmap(IconLoader::Load("dialog-password").pixmap(22)); - ui_->account_type_icon_label->setPixmap(IconLoader::Load("dialog-warning").pixmap(22)); + ui_->sign_out->setIcon(IconLoader::Load(QStringLiteral("list-remove"))); + ui_->signed_in_icon_label->setPixmap(IconLoader::Load(QStringLiteral("dialog-ok-apply")).pixmap(22)); + ui_->expires_icon_label->setPixmap(IconLoader::Load(QStringLiteral("dialog-password")).pixmap(22)); + ui_->account_type_icon_label->setPixmap(IconLoader::Load(QStringLiteral("dialog-warning")).pixmap(22)); QFont bold_font(font()); bold_font.setBold(true); diff --git a/src/widgets/multiloadingindicator.cpp b/src/widgets/multiloadingindicator.cpp index 41bc6aa3..0161ee0c 100644 --- a/src/widgets/multiloadingindicator.cpp +++ b/src/widgets/multiloadingindicator.cpp @@ -76,16 +76,16 @@ void MultiLoadingIndicator::UpdateText() { if (task.progress_max > 0) { int percentage = static_cast(static_cast(task.progress) / static_cast(task.progress_max) * 100.0F); - task_text += QString(" %1%").arg(percentage); + task_text += QStringLiteral(" %1%").arg(percentage); } strings << task_text; } - text_ = strings.join(", "); + text_ = strings.join(QStringLiteral(", ")); if (!text_.isEmpty()) { text_[0] = text_[0].toUpper(); - text_ += "..."; + text_ += QLatin1String("..."); } emit TaskCountChange(static_cast(tasks.count())); diff --git a/src/widgets/playingwidget.cpp b/src/widgets/playingwidget.cpp index ad8e3da9..599149ef 100644 --- a/src/widgets/playingwidget.cpp +++ b/src/widgets/playingwidget.cpp @@ -117,8 +117,8 @@ PlayingWidget::PlayingWidget(QWidget *parent) details_->setUndoRedoEnabled(false); // add placeholder text to get the correct height if (mode_ == Mode::LargeSongDetails) { - details_->setDefaultStyleSheet("p { font-size: small; font-weight: bold; }"); - details_->setHtml(QString("



")); + details_->setDefaultStyleSheet(QStringLiteral("p { font-size: small; font-weight: bold; }")); + details_->setHtml(QStringLiteral("



")); } UpdateHeight(); @@ -402,20 +402,20 @@ void PlayingWidget::UpdateHeight() { void PlayingWidget::UpdateDetailsText() { QString html; - details_->setDefaultStyleSheet("p { font-size: small; font-weight: bold; }"); + details_->setDefaultStyleSheet(QStringLiteral("p { font-size: small; font-weight: bold; }")); switch (mode_) { case Mode::SmallSongDetails: details_->setTextWidth(-1); - html += "

"; + html += QLatin1String("

"); break; case Mode::LargeSongDetails: details_->setTextWidth(desired_height_); - html += "

"; + html += QLatin1String("

"); break; } - html += QString("%1
%2
%3").arg(song_.PrettyTitle().toHtmlEscaped(), song_.artist().toHtmlEscaped(), song_.album().toHtmlEscaped()); - html += "

"; + html += QStringLiteral("%1
%2
%3").arg(song_.PrettyTitle().toHtmlEscaped(), song_.artist().toHtmlEscaped(), song_.album().toHtmlEscaped()); + html += QLatin1String("

"); details_->setHtml(html); diff --git a/src/widgets/qsearchfield_qt.cpp b/src/widgets/qsearchfield_qt.cpp index d7f13902..414b3299 100644 --- a/src/widgets/qsearchfield_qt.cpp +++ b/src/widgets/qsearchfield_qt.cpp @@ -72,11 +72,11 @@ QSearchField::QSearchField(QWidget *parent) : QWidget(parent) { QObject::connect(lineEdit, &QLineEdit::textChanged, this, &QSearchField::setText); QPushButton *clearbutton = new QPushButton(this); - QIcon clearIcon(IconLoader::Load("edit-clear-locationbar-ltr")); + QIcon clearIcon(IconLoader::Load(QStringLiteral("edit-clear-locationbar-ltr"))); clearbutton->setIcon(clearIcon); clearbutton->setIconSize(QSize(20, 20)); - clearbutton->setStyleSheet("border: none; padding: 2px;"); + clearbutton->setStyleSheet(QStringLiteral("border: none; padding: 2px;")); clearbutton->resize(clearbutton->sizeHint()); QObject::connect(clearbutton, &QPushButton::clicked, this, &QSearchField::clear); @@ -85,7 +85,7 @@ QSearchField::QSearchField(QWidget *parent) : QWidget(parent) { const int frame_width = lineEdit->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - lineEdit->setStyleSheet(QString("QLineEdit { padding-left: %1px; } ").arg(clearbutton->width())); + lineEdit->setStyleSheet(QStringLiteral("QLineEdit { padding-left: %1px; } ").arg(clearbutton->width())); const int width = frame_width + qMax(lineEdit->minimumSizeHint().width(), pimpl->clearButtonPaddedWidth()); const int height = frame_width + qMax(lineEdit->minimumSizeHint().height(), pimpl->clearButtonPaddedHeight()); lineEdit->setMinimumSize(width, height); @@ -103,7 +103,7 @@ void QSearchField::setIconSize(const int iconsize) { pimpl->clearbutton_->setIconSize(QSize(iconsize, iconsize)); pimpl->clearbutton_->resize(pimpl->clearbutton_->sizeHint()); - pimpl->lineedit_->setStyleSheet(QString("QLineEdit { padding-left: %1px; } ").arg(pimpl->clearbutton_->width())); + pimpl->lineedit_->setStyleSheet(QStringLiteral("QLineEdit { padding-left: %1px; } ").arg(pimpl->clearbutton_->width())); const int frame_width = pimpl->lineedit_->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); const int width = frame_width + qMax(pimpl->lineedit_->minimumSizeHint().width(), pimpl->clearButtonPaddedWidth()); const int height = frame_width + qMax(pimpl->lineedit_->minimumSizeHint().height(), pimpl->clearButtonPaddedHeight()); diff --git a/src/widgets/trackslider.cpp b/src/widgets/trackslider.cpp index f580e721..b4991b10 100644 --- a/src/widgets/trackslider.cpp +++ b/src/widgets/trackslider.cpp @@ -94,8 +94,8 @@ void TrackSlider::SetApplication(Application *app) { void TrackSlider::UpdateLabelWidth() { // We set the label's minimum size, so it won't resize itself when the user is dragging the slider. - UpdateLabelWidth(ui_->elapsed, "0:00:00"); - UpdateLabelWidth(ui_->remaining, "-0:00:00"); + UpdateLabelWidth(ui_->elapsed, QStringLiteral("0:00:00")); + UpdateLabelWidth(ui_->remaining, QStringLiteral("-0:00:00")); } @@ -158,8 +158,8 @@ void TrackSlider::UpdateTimes(const int elapsed) { void TrackSlider::SetStopped() { setEnabled(false); - ui_->elapsed->setText("0:00:00"); - ui_->remaining->setText("0:00:00"); + ui_->elapsed->setText(QStringLiteral("0:00:00")); + ui_->remaining->setText(QStringLiteral("0:00:00")); setting_value_ = true; ui_->slider->setValue(0); diff --git a/src/widgets/volumeslider.cpp b/src/widgets/volumeslider.cpp index 722e7219..201768d1 100644 --- a/src/widgets/volumeslider.cpp +++ b/src/widgets/volumeslider.cpp @@ -115,7 +115,7 @@ void VolumeSlider::paintEvent(QPaintEvent*) { void VolumeSlider::generateGradient() { - const QImage mask(":/pictures/volumeslider-gradient.png"); + const QImage mask(QStringLiteral(":/pictures/volumeslider-gradient.png")); QImage gradient_image(mask.size(), QImage::Format_ARGB32_Premultiplied); QPainter p(&gradient_image); @@ -177,8 +177,8 @@ QPixmap VolumeSlider::drawVolumePixmap() const { void VolumeSlider::drawVolumeSliderHandle() { - QImage pixmapHandle(":/pictures/volumeslider-handle.png"); - QImage pixmapHandleGlow(":/pictures/volumeslider-handle_glow.png"); + QImage pixmapHandle(QStringLiteral(":/pictures/volumeslider-handle.png")); + QImage pixmapHandleGlow(QStringLiteral(":/pictures/volumeslider-handle_glow.png")); QImage pixmapHandleGlow_image(pixmapHandleGlow.size(), QImage::Format_ARGB32_Premultiplied); QPainter painter(&pixmapHandleGlow_image); @@ -242,13 +242,13 @@ void VolumeSlider::contextMenuEvent(QContextMenuEvent *e) { QHash values; QMenu menu; - menu.setTitle("Volume"); - values[menu.addAction("100%")] = 100; - values[menu.addAction("80%")] = 80; - values[menu.addAction("60%")] = 60; - values[menu.addAction("40%")] = 40; - values[menu.addAction("20%")] = 20; - values[menu.addAction("0%")] = 0; + menu.setTitle(QStringLiteral("Volume")); + values[menu.addAction(QStringLiteral("100%"))] = 100; + values[menu.addAction(QStringLiteral("80%"))] = 80; + values[menu.addAction(QStringLiteral("60%"))] = 60; + values[menu.addAction(QStringLiteral("40%"))] = 40; + values[menu.addAction(QStringLiteral("20%"))] = 20; + values[menu.addAction(QStringLiteral("0%"))] = 0; QAction *ret = menu.exec(mapToGlobal(e->pos())); if (ret) {