diff --git a/ext/libstrawberry-common/core/logging.cpp b/ext/libstrawberry-common/core/logging.cpp
index 26ee8531e..35a95fb26 100644
--- a/ext/libstrawberry-common/core/logging.cpp
+++ b/ext/libstrawberry-common/core/logging.cpp
@@ -61,6 +61,8 @@
#include "logging.h"
+using namespace Qt::StringLiterals;
+
namespace logging {
static Level sDefaultLevel = Level_Debug;
@@ -159,7 +161,7 @@ static void MessageHandler(QtMsgType type, const QMessageLogContext&, const QStr
break;
}
- const QStringList lines = message.split(QLatin1Char('\n'));
+ const QStringList lines = message.split(u'\n');
for (const QString &line : lines) {
BufferedDebug d = CreateLogger(level, QStringLiteral("unknown"), -1, nullptr);
d << line.toLocal8Bit().constData();
@@ -196,9 +198,9 @@ void SetLevels(const QString &levels) {
if (!sClassLevels) return;
- const QStringList items = levels.split(QLatin1Char(','));
+ const QStringList items = levels.split(u',');
for (const QString &item : items) {
- const QStringList class_level = item.split(QLatin1Char(':'));
+ const QStringList class_level = item.split(u':');
QString class_name;
bool ok = false;
@@ -216,7 +218,7 @@ void SetLevels(const QString &levels) {
continue;
}
- if (class_name.isEmpty() || class_name == QLatin1Char('*')) {
+ if (class_name.isEmpty() || class_name == u'*') {
sDefaultLevel = static_cast(level);
}
else {
@@ -230,9 +232,9 @@ static QString ParsePrettyFunction(const char *pretty_function) {
// Get the class name out of the function name.
QString class_name = QLatin1String(pretty_function);
- const qint64 paren = class_name.indexOf(QLatin1Char('('));
+ const qint64 paren = class_name.indexOf(u'(');
if (paren != -1) {
- const qint64 colons = class_name.lastIndexOf(QLatin1String("::"), paren);
+ const qint64 colons = class_name.lastIndexOf("::"_L1, paren);
if (colons != -1) {
class_name = class_name.left(colons);
}
@@ -241,7 +243,7 @@ static QString ParsePrettyFunction(const char *pretty_function) {
}
}
- const qint64 space = class_name.lastIndexOf(QLatin1Char(' '));
+ const qint64 space = class_name.lastIndexOf(u' ');
if (space != -1) {
class_name = class_name.mid(space + 1);
}
diff --git a/ext/libstrawberry-tagreader/tagreaderbase.cpp b/ext/libstrawberry-tagreader/tagreaderbase.cpp
index ddf86d4e0..23722e401 100644
--- a/ext/libstrawberry-tagreader/tagreaderbase.cpp
+++ b/ext/libstrawberry-tagreader/tagreaderbase.cpp
@@ -31,6 +31,8 @@
#include "core/logging.h"
#include "tagreaderbase.h"
+using namespace Qt::StringLiterals;
+
TagReaderBase::TagReaderBase() = default;
TagReaderBase::~TagReaderBase() = default;
@@ -142,11 +144,11 @@ TagReaderBase::Cover TagReaderBase::LoadCoverFromRequest(const QString &song_fil
if (cover_mime_type.isEmpty()) {
cover_mime_type = QMimeDatabase().mimeTypeForData(cover_data).name();
}
- if (cover_mime_type == QLatin1String("image/jpeg")) {
+ if (cover_mime_type == "image/jpeg"_L1) {
qLog(Debug) << "Using cover from JPEG data for" << song_filename;
return Cover(cover_data, cover_mime_type);
}
- if (cover_mime_type == QLatin1String("image/png")) {
+ if (cover_mime_type == "image/png"_L1) {
qLog(Debug) << "Using cover from PNG data for" << song_filename;
return Cover(cover_data, cover_mime_type);
}
diff --git a/ext/libstrawberry-tagreader/tagreadergme.cpp b/ext/libstrawberry-tagreader/tagreadergme.cpp
index 606556aba..9a972481e 100644
--- a/ext/libstrawberry-tagreader/tagreadergme.cpp
+++ b/ext/libstrawberry-tagreader/tagreadergme.cpp
@@ -34,19 +34,21 @@
#include "tagreaderbase.h"
#include "tagreadertaglib.h"
+using namespace Qt::StringLiterals;
+
#undef TStringToQString
#undef QStringToTString
bool GME::IsSupportedFormat(const QFileInfo &fileinfo) {
- return fileinfo.exists() && (fileinfo.completeSuffix().endsWith(QLatin1String("spc"), Qt::CaseInsensitive) || fileinfo.completeSuffix().endsWith(QLatin1String("vgm")), Qt::CaseInsensitive);
+ return fileinfo.exists() && (fileinfo.completeSuffix().endsWith("spc"_L1, Qt::CaseInsensitive) || fileinfo.completeSuffix().endsWith("vgm"_L1), Qt::CaseInsensitive);
}
TagReaderBase::Result GME::ReadFile(const QFileInfo &fileinfo, spb::tagreader::SongMetadata *song) {
- if (fileinfo.completeSuffix().endsWith(QLatin1String("spc")), Qt::CaseInsensitive) {
+ if (fileinfo.completeSuffix().endsWith("spc"_L1), Qt::CaseInsensitive) {
return SPC::Read(fileinfo, song);
}
- if (fileinfo.completeSuffix().endsWith(QLatin1String("vgm"), Qt::CaseInsensitive)) {
+ if (fileinfo.completeSuffix().endsWith("vgm"_L1, Qt::CaseInsensitive)) {
return VGM::Read(fileinfo, song);
}
@@ -239,7 +241,7 @@ TagReaderBase::Result GME::VGM::Read(const QFileInfo &fileinfo, spb::tagreader::
QTextStream fileTagStream(gd3Data, QIODevice::ReadOnly);
// Stored as 16 bit UTF string, two bytes per letter.
fileTagStream.setEncoding(QStringConverter::Utf16);
- QStringList strings = fileTagStream.readLine(0).split(QLatin1Char('\0'));
+ QStringList strings = fileTagStream.readLine(0).split(u'\0');
if (strings.count() < 10) {
return TagReaderBase::Result::ErrorCode::FileParseError;
}
diff --git a/ext/libstrawberry-tagreader/tagreadertaglib.cpp b/ext/libstrawberry-tagreader/tagreadertaglib.cpp
index a80a6600c..464ea883e 100644
--- a/ext/libstrawberry-tagreader/tagreadertaglib.cpp
+++ b/ext/libstrawberry-tagreader/tagreadertaglib.cpp
@@ -97,6 +97,8 @@
#include "core/messagehandler.h"
#include "utilities/timeconstants.h"
+using namespace Qt::StringLiterals;
+
#undef TStringToQString
#undef QStringToTString
@@ -443,7 +445,7 @@ TagReaderBase::Result TagReaderTagLib::ReadFile(const QString &filename, spb::ta
}
if (!disc.isEmpty()) {
- const qint64 i = disc.indexOf(QLatin1Char('/'));
+ const qint64 i = disc.indexOf(u'/');
if (i != -1) {
// disc.right( i ).toInt() is total number of discs, we don't use this at the moment
song->set_disc(disc.left(i).toInt());
@@ -457,7 +459,7 @@ TagReaderBase::Result TagReaderTagLib::ReadFile(const QString &filename, spb::ta
// well, it wasn't set, but if the artist is VA assume it's a compilation
const QString albumartist = QString::fromStdString(song->albumartist());
const QString artist = QString::fromStdString(song->artist());
- if (artist.compare(QLatin1String("various artists")) == 0 || albumartist.compare(QLatin1String("various artists")) == 0) {
+ if (artist.compare("various artists"_L1) == 0 || albumartist.compare("various artists"_L1) == 0) {
song->set_compilation(true);
}
}
@@ -529,7 +531,7 @@ void TagReaderTagLib::ParseID3v2Tags(TagLib::ID3v2::Tag *tag, QString *disc, QSt
for (uint i = 0; i < map[kID3v2_CommercialFrame].size(); ++i) {
const TagLib::ID3v2::CommentsFrame *frame = dynamic_cast(map[kID3v2_CommercialFrame][i]);
- if (frame && TagLibStringToQString(frame->description()) != QLatin1String("iTunNORM")) {
+ if (frame && TagLibStringToQString(frame->description()) != "iTunNORM"_L1) {
AssignTagLibStringToStdString(frame->text(), song->mutable_comment());
break;
}
@@ -937,7 +939,7 @@ TagReaderBase::Result TagReaderTagLib::WriteFile(const QString &filename, const
save_tags_options << QStringLiteral("embedded cover");
}
- qLog(Debug) << "Saving" << save_tags_options.join(QLatin1String(", ")) << "to" << filename;
+ qLog(Debug) << "Saving" << save_tags_options.join(", "_L1) << "to" << filename;
const Cover cover = LoadCoverFromRequest(filename, request);
@@ -1501,10 +1503,10 @@ void TagReaderTagLib::SetEmbeddedArt(TagLib::MP4::File *aac_file, TagLib::MP4::T
}
else {
TagLib::MP4::CoverArt::Format cover_format = TagLib::MP4::CoverArt::Format::JPEG;
- if (mime_type == QLatin1String("image/jpeg")) {
+ if (mime_type == "image/jpeg"_L1) {
cover_format = TagLib::MP4::CoverArt::Format::JPEG;
}
- else if (mime_type == QLatin1String("image/png")) {
+ else if (mime_type == "image/png"_L1) {
cover_format = TagLib::MP4::CoverArt::Format::PNG;
}
else {
diff --git a/src/collection/collectionbackend.cpp b/src/collection/collectionbackend.cpp
index 694839ce6..f5cae681d 100644
--- a/src/collection/collectionbackend.cpp
+++ b/src/collection/collectionbackend.cpp
@@ -59,6 +59,8 @@
#include "collectionquery.h"
#include "collectiontask.h"
+using namespace Qt::StringLiterals;
+
CollectionBackend::CollectionBackend(QObject *parent)
: CollectionBackendInterface(parent),
db_(nullptr),
@@ -946,14 +948,14 @@ QStringList CollectionBackend::GetAllArtistsWithAlbums(const CollectionFilterOpt
CollectionQuery query(db, songs_table_, opt);
query.SetColumnSpec(QStringLiteral("DISTINCT albumartist"));
query.AddCompilationRequirement(false);
- query.AddWhere(QStringLiteral("album"), QLatin1String(""), QStringLiteral("!="));
+ query.AddWhere(QStringLiteral("album"), ""_L1, QStringLiteral("!="));
// Albums with no 'albumartist' (extract 'artist'):
CollectionQuery query2(db, songs_table_, opt);
query2.SetColumnSpec(QStringLiteral("DISTINCT artist"));
query2.AddCompilationRequirement(false);
- query2.AddWhere(QStringLiteral("album"), QLatin1String(""), QStringLiteral("!="));
- query2.AddWhere(QStringLiteral("albumartist"), QLatin1String(""), QStringLiteral("="));
+ query2.AddWhere(QStringLiteral("album"), ""_L1, QStringLiteral("!="));
+ query2.AddWhere(QStringLiteral("albumartist"), ""_L1, QStringLiteral("="));
if (!query.Exec()) {
ReportErrors(query);
@@ -1107,7 +1109,7 @@ SongList CollectionBackend::GetSongsByForeignId(const QStringList &ids, const QS
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
- QString in = ids.join(QLatin1Char(','));
+ QString in = ids.join(u',');
SqlQuery q(db);
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));
@@ -1138,7 +1140,7 @@ Song CollectionBackend::GetSongById(const int id, QSqlDatabase &db) {
SongList CollectionBackend::GetSongsById(const QStringList &ids, QSqlDatabase &db) {
- QString in = ids.join(QLatin1Char(','));
+ QString in = ids.join(u',');
SqlQuery q(db);
q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE ROWID IN (%3)").arg(Song::kRowIdColumnSpec, songs_table_, in));
@@ -1276,7 +1278,7 @@ SongList CollectionBackend::GetSongsBySongId(const QStringList &song_ids, QSqlDa
for (const QString &song_id : song_ids) {
song_ids2 << QLatin1Char('\'') + song_id + QLatin1Char('\'');
}
- QString in = song_ids2.join(QLatin1Char(','));
+ QString in = song_ids2.join(u',');
SqlQuery q(db);
q.prepare(QStringLiteral("SELECT %1 FROM %2 WHERE SONG_ID IN (%3)").arg(Song::kRowIdColumnSpec, songs_table_, in));
@@ -1524,7 +1526,7 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist,
key.append(album_info.album_artist);
}
if (!album_info.album.isEmpty()) {
- if (!key.isEmpty()) key.append(QLatin1Char('-'));
+ if (!key.isEmpty()) key.append(u'-');
key.append(album_info.album);
}
if (!filetype.isEmpty()) {
@@ -1640,7 +1642,7 @@ void CollectionBackend::UpdateManualAlbumArt(const QString &effective_albumartis
{
SqlQuery q(db);
q.prepare(QStringLiteral("UPDATE %1 SET art_manual = :art_manual, art_unset = 0 WHERE effective_albumartist = :effective_albumartist AND album = :album AND unavailable = 0").arg(songs_table_));
- q.BindValue(QStringLiteral(":art_manual"), art_manual.isValid() ? art_manual.toString(QUrl::FullyEncoded) : QLatin1String(""));
+ q.BindValue(QStringLiteral(":art_manual"), art_manual.isValid() ? art_manual.toString(QUrl::FullyEncoded) : ""_L1);
q.BindValue(QStringLiteral(":effective_albumartist"), effective_albumartist);
q.BindValue(QStringLiteral(":album"), album);
if (!q.Exec()) {
@@ -1773,7 +1775,7 @@ void CollectionBackend::ForceCompilation(const QString &album, const QStringList
// Update the songs
QString sql(QStringLiteral("UPDATE %1 SET compilation_on = :compilation_on, compilation_off = :compilation_off, compilation_effective = ((compilation OR compilation_detected OR :compilation_on) AND NOT :compilation_off) + 0 WHERE album = :album AND unavailable = 0").arg(songs_table_));
- if (!artist.isEmpty()) sql += QLatin1String(" AND artist = :artist");
+ if (!artist.isEmpty()) sql += " AND artist = :artist"_L1;
SqlQuery q(db);
q.prepare(sql);
@@ -1890,7 +1892,7 @@ bool CollectionBackend::ResetPlayStatistics(const QStringList &id_str_list) {
SqlQuery q(db);
q.prepare(QStringLiteral("UPDATE %1 SET playcount = 0, skipcount = 0, lastplayed = -1 WHERE ROWID IN (:ids)").arg(songs_table_));
- q.BindValue(QStringLiteral(":ids"), id_str_list.join(QLatin1Char(',')));
+ q.BindValue(QStringLiteral(":ids"), id_str_list.join(u','));
if (!q.Exec()) {
db_->ReportErrors(q);
return false;
@@ -2068,7 +2070,7 @@ 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(QLatin1Char(','));
+ QString ids = id_str_list.join(u',');
SqlQuery q(db);
q.prepare(QStringLiteral("UPDATE %1 SET rating = :rating WHERE ROWID IN (%2)").arg(songs_table_, ids));
q.BindValue(QStringLiteral(":rating"), rating);
diff --git a/src/collection/collectionfilterwidget.cpp b/src/collection/collectionfilterwidget.cpp
index 3a9ab596e..6efc45fa6 100644
--- a/src/collection/collectionfilterwidget.cpp
+++ b/src/collection/collectionfilterwidget.cpp
@@ -61,6 +61,8 @@
#include "settings/collectionsettingspage.h"
#include "settings/appearancesettingspage.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kFilterDelay = 500; // msec
}
@@ -296,7 +298,7 @@ QActionGroup *CollectionFilterWidget::CreateGroupByActions(const QString &saved_
if (version == 1) {
QStringList saved = s.childKeys();
for (int i = 0; i < saved.size(); ++i) {
- if (saved.at(i) == QLatin1String("version")) continue;
+ if (saved.at(i) == "version"_L1) continue;
QByteArray bytes = s.value(saved.at(i)).toByteArray();
QDataStream ds(&bytes, QIODevice::ReadOnly);
CollectionModel::Grouping g;
@@ -307,7 +309,7 @@ QActionGroup *CollectionFilterWidget::CreateGroupByActions(const QString &saved_
else {
QStringList saved = s.childKeys();
for (int i = 0; i < saved.size(); ++i) {
- if (saved.at(i) == QLatin1String("version")) continue;
+ if (saved.at(i) == "version"_L1) continue;
s.remove(saved.at(i));
}
}
diff --git a/src/collection/collectionmodel.cpp b/src/collection/collectionmodel.cpp
index a3cd67522..8226c7fcc 100644
--- a/src/collection/collectionmodel.cpp
+++ b/src/collection/collectionmodel.cpp
@@ -77,6 +77,7 @@
#include "settings/collectionsettingspage.h"
using namespace std::chrono_literals;
+using namespace Qt::StringLiterals;
const int CollectionModel::kPrettyCoverSize = 32;
namespace {
@@ -119,7 +120,7 @@ CollectionModel::CollectionModel(SharedPtr backend, Applicati
if (app_ && !sIconCache) {
sIconCache = new QNetworkDiskCache(this);
- sIconCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1Char('/') + QLatin1String(kPixmapDiskCacheDir));
+ sIconCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + u'/' + QLatin1String(kPixmapDiskCacheDir));
QObject::connect(app_, &Application::ClearPixmapDiskCache, this, &CollectionModel::ClearDiskCache);
}
@@ -585,7 +586,7 @@ void CollectionModel::AddSongsInternal(const SongList &songs) {
container_key = container->container_key;
}
else {
- if (!container_key.isEmpty()) container_key.append(QLatin1Char('-'));
+ if (!container_key.isEmpty()) container_key.append(u'-');
container_key.append(ContainerKey(group_by, song, has_unique_album_identifier));
if (container_nodes_[i].contains(container_key)) {
container = container_nodes_[i][container_key];
@@ -758,7 +759,7 @@ void CollectionModel::CreateDividerItem(const QString ÷r_key, const QStrin
CollectionItem *divider = new CollectionItem(CollectionItem::Type::Divider, root_);
divider->container_key = divider_key;
divider->display_text = display_text;
- divider->sort_text = divider_key + QLatin1String(" ");
+ divider->sort_text = divider_key + " "_L1;
divider_nodes_[divider_key] = divider;
endInsertRows();
@@ -802,7 +803,7 @@ CollectionItem *CollectionModel::CreateCompilationArtistNode(CollectionItem *par
if (parent != root_ && !parent->container_key.isEmpty()) parent->compilation_artist_node_->container_key.append(parent->container_key);
parent->compilation_artist_node_->container_key.append(QLatin1String(kVariousArtists));
parent->compilation_artist_node_->display_text = QLatin1String(kVariousArtists);
- parent->compilation_artist_node_->sort_text = QLatin1String(" various");
+ parent->compilation_artist_node_->sort_text = " various"_L1;
parent->compilation_artist_node_->container_level = parent->container_level + 1;
endInsertRows();
@@ -1056,14 +1057,14 @@ QString CollectionModel::TextOrUnknown(const QString &text) {
QString CollectionModel::PrettyYearAlbum(const int year, const QString &album) {
if (year <= 0) return TextOrUnknown(album);
- return QString::number(year) + QLatin1String(" - ") + TextOrUnknown(album);
+ return QString::number(year) + " - "_L1 + TextOrUnknown(album);
}
QString CollectionModel::PrettyAlbumDisc(const QString &album, const int disc) {
if (disc <= 0 || Song::AlbumContainsDisc(album)) return TextOrUnknown(album);
- return TextOrUnknown(album) + QLatin1String(" - (Disc ") + QString::number(disc) + QLatin1String(")");
+ return TextOrUnknown(album) + " - (Disc "_L1 + QString::number(disc) + ")"_L1;
}
@@ -1072,9 +1073,9 @@ QString CollectionModel::PrettyYearAlbumDisc(const int year, const QString &albu
QString str;
if (year <= 0) str = TextOrUnknown(album);
- else str = QString::number(year) + QLatin1String(" - ") + TextOrUnknown(album);
+ else str = QString::number(year) + " - "_L1 + TextOrUnknown(album);
- if (!Song::AlbumContainsDisc(album) && disc > 0) str += QLatin1String(" - (Disc ") + QString::number(disc) + QLatin1String(")");
+ if (!Song::AlbumContainsDisc(album) && disc > 0) str += " - (Disc "_L1 + QString::number(disc) + ")"_L1;
return str;
@@ -1082,7 +1083,7 @@ QString CollectionModel::PrettyYearAlbumDisc(const int year, const QString &albu
QString CollectionModel::PrettyDisc(const int disc) {
- return QLatin1String("Disc ") + QString::number(std::max(1, disc));
+ return "Disc "_L1 + QString::number(std::max(1, disc));
}
@@ -1159,7 +1160,7 @@ QString CollectionModel::SortText(const GroupBy group_by, const int container_le
QString CollectionModel::SortText(QString text) {
if (text.isEmpty()) {
- text = QLatin1String(" unknown");
+ text = " unknown"_L1;
}
else {
text = text.toLower();
@@ -1179,7 +1180,7 @@ QString CollectionModel::SortTextForArtist(QString artist, const bool skip_artic
for (const auto &i : Song::kArticles) {
if (artist.startsWith(i)) {
qint64 ilen = i.length();
- artist = artist.right(artist.length() - ilen) + QLatin1String(", ") + i.left(ilen - 1);
+ artist = artist.right(artist.length() - ilen) + ", "_L1 + i.left(ilen - 1);
break;
}
}
@@ -1190,7 +1191,6 @@ QString CollectionModel::SortTextForArtist(QString artist, const bool skip_artic
}
QString CollectionModel::SortTextForNumber(const int number) {
-
return QStringLiteral("%1").arg(number, 4, 10, QLatin1Char('0'));
}
@@ -1318,7 +1318,7 @@ QString CollectionModel::ContainerKey(const GroupBy group_by, const Song &song,
// Make sure we distinguish albums by different artists if the parent group by is not including artist.
if (IsAlbumGroupBy(group_by) && !has_unique_album_identifier && !song.is_compilation() && !song.effective_albumartist().isEmpty()) {
- key.prepend(QLatin1Char('-'));
+ key.prepend(u'-');
key.prepend(TextOrUnknown(song.effective_albumartist()));
has_unique_album_identifier = true;
}
@@ -1348,7 +1348,7 @@ QString CollectionModel::DividerKey(const GroupBy group_by, const Song &song, co
case GroupBy::FileType: {
QChar c = sort_text[0];
if (c.isDigit()) return QStringLiteral("0");
- if (c == QLatin1Char(' ')) return QString();
+ if (c == u' ') return QString();
if (c.decompositionTag() != QChar::NoDecomposition) {
QString decomposition = c.decomposition();
return QChar(decomposition[0]);
@@ -1397,25 +1397,25 @@ QString CollectionModel::DividerDisplayText(const GroupBy group_by, const QStrin
case GroupBy::Genre:
case GroupBy::FileType:
case GroupBy::Format:
- if (key == QLatin1String("0")) return QStringLiteral("0-9");
+ if (key == "0"_L1) return QStringLiteral("0-9");
return key.toUpper();
case GroupBy::YearAlbum:
case GroupBy::YearAlbumDisc:
case GroupBy::OriginalYearAlbum:
case GroupBy::OriginalYearAlbumDisc:
- if (key == QLatin1String("0000")) return tr("Unknown");
+ if (key == "0000"_L1) return tr("Unknown");
return key.toUpper();
case GroupBy::Year:
case GroupBy::OriginalYear:
- if (key == QLatin1String("0000")) return tr("Unknown");
+ if (key == "0000"_L1) return tr("Unknown");
return QString::number(key.toInt()); // To remove leading 0s
case GroupBy::Samplerate:
case GroupBy::Bitdepth:
case GroupBy::Bitrate:
- if (key == QLatin1String("000")) return tr("Unknown");
+ if (key == "000"_L1) return tr("Unknown");
return QString::number(key.toInt()); // To remove leading 0s
case GroupBy::None:
diff --git a/src/collection/collectionquery.cpp b/src/collection/collectionquery.cpp
index 6a993ba64..642caadd5 100644
--- a/src/collection/collectionquery.cpp
+++ b/src/collection/collectionquery.cpp
@@ -38,6 +38,8 @@
#include "collectionquery.h"
#include "collectionfilteroptions.h"
+using namespace Qt::StringLiterals;
+
CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_table, const CollectionFilterOptions &filter_options)
: SqlQuery(db),
songs_table_(songs_table),
@@ -63,7 +65,7 @@ CollectionQuery::CollectionQuery(const QSqlDatabase &db, const QString &songs_ta
void CollectionQuery::AddWhere(const QString &column, const QVariant &value, const QString &op) {
// Ignore 'literal' for IN
- if (op.compare(QLatin1String("IN"), Qt::CaseInsensitive) == 0) {
+ if (op.compare("IN"_L1, Qt::CaseInsensitive) == 0) {
const QStringList values = value.toStringList();
QStringList final_values;
final_values.reserve(values.count());
@@ -72,7 +74,7 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con
bound_values_ << single_value;
}
- where_clauses_ << QStringLiteral("%1 IN (%2)").arg(column, final_values.join(QLatin1Char(',')));
+ where_clauses_ << QStringLiteral("%1 IN (%2)").arg(column, final_values.join(u','));
}
else {
// Do integers inline - sqlite seems to get confused when you pass integers to bound parameters
@@ -81,7 +83,7 @@ void CollectionQuery::AddWhere(const QString &column, const QVariant &value, con
}
else if (value.metaType().id() == QMetaType::QString && value.toString().isNull()) {
where_clauses_ << QStringLiteral("%1 %2 ?").arg(column, op);
- bound_values_ << QLatin1String("");
+ bound_values_ << ""_L1;
}
else {
where_clauses_ << QStringLiteral("%1 %2 ?").arg(column, op);
@@ -115,13 +117,13 @@ bool CollectionQuery::Exec() {
where_clauses << QStringLiteral("unavailable = 0");
}
- if (!where_clauses.isEmpty()) sql += QLatin1String(" WHERE ") + where_clauses.join(QLatin1String(" AND "));
+ if (!where_clauses.isEmpty()) sql += " WHERE "_L1 + where_clauses.join(" AND "_L1);
- if (!order_by_.isEmpty()) sql += QLatin1String(" ORDER BY ") + order_by_;
+ if (!order_by_.isEmpty()) sql += " ORDER BY "_L1 + order_by_;
- if (limit_ != -1) sql += QLatin1String(" LIMIT ") + QString::number(limit_);
+ if (limit_ != -1) sql += " LIMIT "_L1 + QString::number(limit_);
- sql.replace(QLatin1String("%songs_table"), songs_table_);
+ sql.replace("%songs_table"_L1, songs_table_);
if (!QSqlQuery::prepare(sql)) return false;
diff --git a/src/collection/collectionwatcher.cpp b/src/collection/collectionwatcher.cpp
index cdef7c01c..082f415e4 100644
--- a/src/collection/collectionwatcher.cpp
+++ b/src/collection/collectionwatcher.cpp
@@ -71,6 +71,7 @@
#endif
using namespace std::chrono_literals;
+using namespace Qt::StringLiterals;
QStringList CollectionWatcher::sValidImages = QStringList() << QStringLiteral("jpg") << QStringLiteral("png") << QStringLiteral("gif") << QStringLiteral("jpeg");
@@ -360,7 +361,7 @@ SongList CollectionWatcher::ScanTransaction::FindSongsInSubdirectory(const QStri
if (cached_songs_dirty_) {
const SongList songs = watcher_->backend_->FindSongsInDirectory(dir_);
for (const Song &song : songs) {
- const QString p = song.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
+ const QString p = song.url().toLocalFile().section(u'/', 0, -2);
cached_songs_.insert(p, song);
}
cached_songs_dirty_ = false;
@@ -379,7 +380,7 @@ bool CollectionWatcher::ScanTransaction::HasSongsWithMissingFingerprint(const QS
if (cached_songs_missing_fingerprint_dirty_) {
const SongList songs = watcher_->backend_->SongsWithMissingFingerprint(dir_);
for (const Song &song : songs) {
- const QString p = song.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
+ const QString p = song.url().toLocalFile().section(u'/', 0, -2);
cached_songs_missing_fingerprint_.insert(p, song);
}
cached_songs_missing_fingerprint_dirty_ = false;
@@ -394,7 +395,7 @@ bool CollectionWatcher::ScanTransaction::HasSongsWithMissingLoudnessCharacterist
if (cached_songs_missing_loudness_characteristics_dirty_) {
const SongList songs = watcher_->backend_->SongsWithMissingLoudnessCharacteristics(dir_);
for (const Song &song : songs) {
- const QString p = song.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
+ const QString p = song.url().toLocalFile().section(u'/', 0, -2);
cached_songs_missing_loudness_characteristics_.insert(p, song);
}
cached_songs_missing_loudness_characteristics_dirty_ = false;
@@ -559,7 +560,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu
else {
QString ext_part(ExtensionPart(child));
QString dir_part(DirectoryPart(child));
- if (Song::kRejectedExtensions.contains(child_info.suffix(), Qt::CaseInsensitive) || child_info.baseName() == QLatin1String("qt_temp")) {
+ if (Song::kRejectedExtensions.contains(child_info.suffix(), Qt::CaseInsensitive) || child_info.baseName() == "qt_temp"_L1) {
t->AddToProgress(1);
}
else if (sValidImages.contains(ext_part)) {
@@ -661,7 +662,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu
Chromaprinter chromaprinter(file);
fingerprint = chromaprinter.CreateFingerprint();
if (fingerprint.isEmpty()) {
- fingerprint = QLatin1String("NONE");
+ fingerprint = "NONE"_L1;
}
}
#endif
@@ -688,11 +689,11 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu
Chromaprinter chromaprinter(file);
fingerprint = chromaprinter.CreateFingerprint();
if (fingerprint.isEmpty()) {
- fingerprint = QLatin1String("NONE");
+ fingerprint = "NONE"_L1;
}
}
#endif
- if (song_tracking_ && !fingerprint.isEmpty() && fingerprint != QLatin1String("NONE") && FindSongsByFingerprint(file, fingerprint, &matching_songs)) {
+ if (song_tracking_ && !fingerprint.isEmpty() && fingerprint != "NONE"_L1 && FindSongsByFingerprint(file, fingerprint, &matching_songs)) {
// The song is in the database and still on disk.
// Check the mtime to see if it's been changed since it was added.
@@ -985,7 +986,7 @@ void CollectionWatcher::AddChangedSong(const QString &file, const Song &matching
qLog(Debug) << "Song" << file << "unchanged.";
}
else {
- qLog(Debug) << "Song" << file << changes.join(QLatin1String(", ")) << "changed.";
+ qLog(Debug) << "Song" << file << changes.join(", "_L1) << "changed.";
}
}
@@ -1360,7 +1361,7 @@ void CollectionWatcher::RescanSongs(const SongList &songs) {
QStringList scanned_paths;
for (const Song &song : songs) {
if (stop_or_abort_requested()) break;
- const QString song_path = song.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
+ const QString song_path = song.url().toLocalFile().section(u'/', 0, -2);
if (scanned_paths.contains(song_path)) continue;
ScanTransaction transaction(this, song.directory_id(), false, true, mark_songs_unavailable_);
const CollectionSubdirectoryList subdirs = transaction.GetAllSubdirs();
diff --git a/src/collection/collectionwatcher.h b/src/collection/collectionwatcher.h
index fe2c202b4..0ab0bc7ce 100644
--- a/src/collection/collectionwatcher.h
+++ b/src/collection/collectionwatcher.h
@@ -47,6 +47,8 @@ class FileSystemWatcherInterface;
class TaskManager;
class CueParser;
+using namespace Qt::Literals::StringLiterals;
+
class CollectionWatcher : public QObject {
Q_OBJECT
@@ -259,14 +261,14 @@ class CollectionWatcher : public QObject {
};
inline QString CollectionWatcher::NoExtensionPart(const QString &fileName) {
- return fileName.contains(QLatin1Char('.')) ? fileName.section(QLatin1Char('.'), 0, -2) : QLatin1String("");
+ return fileName.contains(u'.') ? fileName.section(u'.', 0, -2) : ""_L1;
}
// Thanks Amarok
inline QString CollectionWatcher::ExtensionPart(const QString &fileName) {
- return fileName.contains(QLatin1Char('.')) ? fileName.mid(fileName.lastIndexOf(QLatin1Char('.')) + 1).toLower() : QLatin1String("");
+ return fileName.contains(u'.') ? fileName.mid(fileName.lastIndexOf(u'.') + 1).toLower() : ""_L1;
}
inline QString CollectionWatcher::DirectoryPart(const QString &fileName) {
- return fileName.section(QLatin1Char('/'), 0, -2);
+ return fileName.section(u'/', 0, -2);
}
#endif // COLLECTIONWATCHER_H
diff --git a/src/collection/savedgroupingmanager.cpp b/src/collection/savedgroupingmanager.cpp
index 72e006345..5ed2bb85d 100644
--- a/src/collection/savedgroupingmanager.cpp
+++ b/src/collection/savedgroupingmanager.cpp
@@ -44,6 +44,8 @@
#include "savedgroupingmanager.h"
#include "ui_savedgroupingmanager.h"
+using namespace Qt::StringLiterals;
+
const char *SavedGroupingManager::kSavedGroupingsSettingsGroup = "SavedGroupings";
SavedGroupingManager::SavedGroupingManager(const QString &saved_groupings_settings_group, QWidget *parent)
@@ -165,7 +167,7 @@ void SavedGroupingManager::UpdateModel() {
if (version == 1) {
QStringList saved = s.childKeys();
for (int i = 0; i < saved.size(); ++i) {
- if (saved.at(i) == QLatin1String("version")) continue;
+ if (saved.at(i) == "version"_L1) continue;
QByteArray bytes = s.value(saved.at(i)).toByteArray();
QDataStream ds(&bytes, QIODevice::ReadOnly);
CollectionModel::Grouping g;
@@ -183,7 +185,7 @@ void SavedGroupingManager::UpdateModel() {
else {
QStringList saved = s.childKeys();
for (int i = 0; i < saved.size(); ++i) {
- if (saved.at(i) == QLatin1String("version")) continue;
+ if (saved.at(i) == "version"_L1) continue;
s.remove(saved.at(i));
}
}
diff --git a/src/context/contextview.cpp b/src/context/contextview.cpp
index f60b1628a..9cabf582d 100644
--- a/src/context/contextview.cpp
+++ b/src/context/contextview.cpp
@@ -67,6 +67,8 @@
#include "contextview.h"
#include "contextalbum.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kWidgetSpacing = 50;
}
@@ -410,15 +412,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 += QLatin1String("
");
+ html += "
"_L1;
if (collectionview_->TotalArtists() == 1) html += tr("%1 artist").arg(collectionview_->TotalArtists());
else html += tr("%1 artists").arg(collectionview_->TotalArtists());
- html += QLatin1String("
");
+ html += "
"_L1;
if (collectionview_->TotalAlbums() == 1) html += tr("%1 album").arg(collectionview_->TotalAlbums());
else html += tr("%1 albums").arg(collectionview_->TotalAlbums());
- html += QLatin1String("
");
+ html += "
"_L1;
label_stop_summary_->setFont(font_normal_);
label_stop_summary_->setText(html);
@@ -636,10 +638,10 @@ void ContextView::UpdateLyrics(const quint64 id, const QString &provider, const
if (static_cast(id) != lyrics_id_) return;
if (lyrics.isEmpty()) {
- lyrics_ = QLatin1String("No lyrics found.\n");
+ lyrics_ = "No lyrics found.\n"_L1;
}
else {
- lyrics_ = lyrics + QLatin1String("\n\n(Lyrics from ") + provider + QLatin1String(")\n");
+ lyrics_ = lyrics + "\n\n(Lyrics from "_L1 + provider + ")\n"_L1;
}
lyrics_id_ = -1;
diff --git a/src/core/database.cpp b/src/core/database.cpp
index 1287f7101..fd95cc092 100644
--- a/src/core/database.cpp
+++ b/src/core/database.cpp
@@ -49,6 +49,8 @@
#include "sqlquery.h"
#include "scopedtransaction.h"
+using namespace Qt::StringLiterals;
+
const int Database::kSchemaVersion = 20;
namespace {
@@ -136,7 +138,7 @@ QSqlDatabase Database::Connect() {
//qLog(Debug) << "Opened database with connection id" << connection_id;
if (injected_database_name_.isNull()) {
- db.setDatabaseName(directory_ + QLatin1Char('/') + QLatin1String(kDatabaseFilename));
+ db.setDatabaseName(directory_ + u'/' + QLatin1String(kDatabaseFilename));
}
else {
db.setDatabaseName(injected_database_name_);
@@ -352,7 +354,7 @@ 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(QLatin1String("://"))) {
+ if (filename.isEmpty() || filename.contains("://"_L1)) {
continue;
}
@@ -376,8 +378,8 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase &db, const QString &filen
}
QByteArray data = schema_file.readAll();
QString schema = QString::fromUtf8(data);
- if (schema.contains(QLatin1String("\r\n"))) {
- schema = schema.replace(QLatin1String("\r\n"), QLatin1String("\n"));
+ if (schema.contains("\r\n"_L1)) {
+ schema = schema.replace("\r\n"_L1, "\n"_L1);
}
schema_file.close();
ExecSchemaCommands(db, schema, schema_version, in_transaction);
@@ -414,7 +416,7 @@ void Database::ExecSongTablesCommands(QSqlDatabase &db, const QStringList &song_
if (command.contains(QLatin1String(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(QLatin1String("device_")) && command.contains(QLatin1String(kMagicAllSongsTables) + QLatin1String("_fts"))) {
+ if (table.startsWith("device_"_L1) && command.contains(QLatin1String(kMagicAllSongsTables) + "_fts"_L1)) {
continue;
}
@@ -450,7 +452,7 @@ QStringList Database::SongsTables(QSqlDatabase &db, const int schema_version) {
// look for the tables in the main db
const QStringList &tables = db.tables();
for (const QString &table : tables) {
- if (table == QLatin1String("songs") || table.endsWith(QLatin1String("_songs"))) ret << table;
+ if (table == "songs"_L1 || table.endsWith("_songs"_L1)) ret << table;
}
// look for the tables in attached dbs
@@ -502,7 +504,7 @@ bool Database::IntegrityCheck(const QSqlDatabase &db) {
QString message = q.value(0).toString();
// If no errors are found, a single row with the value "ok" is returned
- if (message == QLatin1String("ok")) {
+ if (message == "ok"_L1) {
ok = true;
break;
}
diff --git a/src/core/iconmapper.h b/src/core/iconmapper.h
index 6b4848a56..e37305e36 100644
--- a/src/core/iconmapper.h
+++ b/src/core/iconmapper.h
@@ -27,6 +27,8 @@
namespace IconMapper {
+using namespace Qt::Literals::StringLiterals;
+
struct IconProperties {
explicit IconProperties() : min_size(0), max_size(0), allow_system_icon(true) {}
IconProperties(const QStringList &_names, const int _min_size = 16, const int _max_size = 512, const bool _allow_system_icon = true) : names(_names), min_size(_min_size), max_size(_max_size), allow_system_icon(_allow_system_icon) {}
@@ -100,7 +102,7 @@ static const QMap iconmapper_ = { // clazy:exclude=non
{ QStringLiteral("media-eject"), { {}} },
{ QStringLiteral("media-playback-pause"), { {QStringLiteral("media-pause")}} },
{ QStringLiteral("media-playlist-repeat"), { {}} },
- { QStringLiteral("media-playlist-shuffle"), { {QLatin1String("")}} },
+ { QStringLiteral("media-playlist-shuffle"), { {""_L1}} },
{ QStringLiteral("media-playback-start"), { {QStringLiteral("media-play"), QStringLiteral("media-playback-playing")}} },
{ QStringLiteral("media-seek-backward"), { {}} },
{ QStringLiteral("media-seek-forward"), { {}} },
diff --git a/src/core/localredirectserver.cpp b/src/core/localredirectserver.cpp
index b6a96978e..abc16e517 100644
--- a/src/core/localredirectserver.cpp
+++ b/src/core/localredirectserver.cpp
@@ -39,6 +39,8 @@
#include
#include
+using namespace Qt::StringLiterals;
+
LocalRedirectServer::LocalRedirectServer(QObject *parent)
: QTcpServer(parent),
port_(0),
@@ -86,7 +88,7 @@ void LocalRedirectServer::incomingConnection(qintptr socket_descriptor) {
if (!tcp_socket->setSocketDescriptor(socket_descriptor)) {
delete tcp_socket;
close();
- error_ = QLatin1String("Unable to set socket descriptor");
+ error_ = "Unable to set socket descriptor"_L1;
Q_EMIT Finished();
return;
}
@@ -151,7 +153,7 @@ void LocalRedirectServer::WriteTemplate() const {
.pixmap(16)
.toImage()
.save(&image_buffer, "PNG");
- page_data.replace(QLatin1String("@IMAGE_DATA@"), QString::fromUtf8(image_buffer.data().toBase64()));
+ page_data.replace("@IMAGE_DATA@"_L1, QString::fromUtf8(image_buffer.data().toBase64()));
image_buffer.close();
}
diff --git a/src/core/macfslistener.mm b/src/core/macfslistener.mm
index 72b6a2132..e90465a26 100644
--- a/src/core/macfslistener.mm
+++ b/src/core/macfslistener.mm
@@ -32,6 +32,8 @@
#include "core/logging.h"
#include "scoped_nsobject.h"
+using namespace Qt::Literals::StringLiterals;
+
MacFSListener::MacFSListener(QObject *parent)
: FileSystemWatcherInterface(parent),
run_loop_(nullptr),
@@ -57,7 +59,7 @@ void MacFSListener::EventStreamCallback(ConstFSEventStreamRef stream, void *user
for (size_t i = 0; i < num_events; ++i) {
QString path = QString::fromUtf8(paths[i]);
qLog(Debug) << "Something changed at:" << path;
- while (path.endsWith(QLatin1Char('/'))) {
+ while (path.endsWith(u'/')) {
path.chop(1);
}
Q_EMIT me->PathChanged(path);
diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp
index 314d50e05..5206165d8 100644
--- a/src/core/mainwindow.cpp
+++ b/src/core/mainwindow.cpp
@@ -223,6 +223,7 @@
using std::make_unique;
using std::make_shared;
using namespace std::chrono_literals;
+using namespace Qt::StringLiterals;
const char *MainWindow::kSettingsGroup = "MainWindow";
const char *MainWindow::kAllFilesFilterSpec = QT_TR_NOOP("All Files (*)");
@@ -1268,7 +1269,7 @@ void MainWindow::ReloadAllSettings() {
void MainWindow::RefreshStyleSheet() {
QString contents(styleSheet());
- setStyleSheet(QLatin1String(""));
+ setStyleSheet(""_L1);
setStyleSheet(contents);
}
@@ -2344,7 +2345,7 @@ void MainWindow::ShowInCollection() {
}
QString search;
if (!songs.isEmpty()) {
- search = QLatin1String("artist:") + songs.first().artist() + QLatin1String(" album:") + songs.first().album();
+ search = "artist:"_L1 + songs.first().artist() + " album:"_L1 + songs.first().album();
}
collection_view_->filter_widget()->ShowInCollection(search);
@@ -2437,9 +2438,9 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) {
break;
case CommandlineOptions::PlayerAction::ResizeWindow:{
- if (options.window_size().contains(QLatin1Char('x')) && options.window_size().length() >= 4) {
- QString str_w = options.window_size().left(options.window_size().indexOf(QLatin1Char('x')));
- QString str_h = options.window_size().right(options.window_size().length() - options.window_size().indexOf(QLatin1Char('x')) - 1);
+ if (options.window_size().contains(u'x') && options.window_size().length() >= 4) {
+ QString str_w = options.window_size().left(options.window_size().indexOf(u'x'));
+ QString str_h = options.window_size().right(options.window_size().length() - options.window_size().indexOf(u'x') - 1);
bool w_ok = false;
bool h_ok = false;
int w = str_w.toInt(&w_ok);
@@ -2479,7 +2480,7 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) {
#ifdef HAVE_TIDAL
const QList urls = options.urls();
for (const QUrl &url : urls) {
- if (url.scheme() == QLatin1String("tidal") && url.host() == QLatin1String("login")) {
+ if (url.scheme() == "tidal"_L1 && url.host() == "login"_L1) {
Q_EMIT AuthorizationUrlReceived(url);
return;
}
@@ -2557,7 +2558,7 @@ bool MainWindow::LoadUrl(const QString &url) {
return true;
}
#ifdef HAVE_TIDAL
- if (url.startsWith(QLatin1String("tidal://login"))) {
+ if (url.startsWith("tidal://login"_L1)) {
Q_EMIT AuthorizationUrlReceived(QUrl(url));
return true;
}
@@ -2927,9 +2928,9 @@ void MainWindow::CheckFullRescanRevisions() {
if (!reasons.isEmpty()) {
QString message = tr("The version of Strawberry you've just updated to requires a full collection rescan because of the new features listed below:") + QStringLiteral("");
for (const QString &reason : reasons) {
- message += QLatin1String("- ") + reason + QLatin1String("
");
+ message += "- "_L1 + reason + "
"_L1;
}
- message += QLatin1String("
") + tr("Would you like to run a full rescan right now?");
+ message += ""_L1 + tr("Would you like to run a full rescan right now?");
if (QMessageBox::question(this, tr("Collection rescan notice"), message, QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
app_->collection()->FullScan();
}
diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp
index 80ef6bce4..55cb3ec7d 100644
--- a/src/core/mpris2.cpp
+++ b/src/core/mpris2.cpp
@@ -64,6 +64,8 @@
#include "mpris2_root.h"
#include "mpris2_tracklist.h"
+using namespace Qt::StringLiterals;
+
QDBusArgument &operator<<(QDBusArgument &arg, const MprisPlaylist &playlist) {
arg.beginStructure();
arg << playlist.id << playlist.name << playlist.icon;
@@ -132,13 +134,13 @@ Mpris2::Mpris2(Application *app, QObject *parent)
app_name_[0] = app_name_[0].toUpper();
- QStringList data_dirs = QString::fromUtf8(qgetenv("XDG_DATA_DIRS")).split(QLatin1Char(':'));
+ QStringList data_dirs = QString::fromUtf8(qgetenv("XDG_DATA_DIRS")).split(u':');
- if (!data_dirs.contains(QLatin1String("/usr/local/share"))) {
+ if (!data_dirs.contains("/usr/local/share"_L1)) {
data_dirs.append(QStringLiteral("/usr/local/share"));
}
- if (!data_dirs.contains(QLatin1String("/usr/share"))) {
+ if (!data_dirs.contains("/usr/share"_L1)) {
data_dirs.append(QStringLiteral("/usr/share"));
}
@@ -208,18 +210,18 @@ void Mpris2::EmitNotification(const QString &name, const QVariant &value, const
void Mpris2::EmitNotification(const QString &name) {
QVariant value;
- if (name == QLatin1String("PlaybackStatus")) value = PlaybackStatus();
- else if (name == QLatin1String("LoopStatus")) value = LoopStatus();
- else if (name == QLatin1String("Shuffle")) value = Shuffle();
- else if (name == QLatin1String("Metadata")) value = Metadata();
- else if (name == QLatin1String("Rating")) value = Rating();
- else if (name == QLatin1String("Volume")) value = Volume();
- else if (name == QLatin1String("Position")) value = Position();
- else if (name == QLatin1String("CanPlay")) value = CanPlay();
- else if (name == QLatin1String("CanPause")) value = CanPause();
- else if (name == QLatin1String("CanSeek")) value = CanSeek();
- else if (name == QLatin1String("CanGoNext")) value = CanGoNext();
- else if (name == QLatin1String("CanGoPrevious")) value = CanGoPrevious();
+ if (name == "PlaybackStatus"_L1) value = PlaybackStatus();
+ else if (name == "LoopStatus"_L1) value = LoopStatus();
+ else if (name == "Shuffle"_L1) value = Shuffle();
+ else if (name == "Metadata"_L1) value = Metadata();
+ else if (name == "Rating"_L1) value = Rating();
+ else if (name == "Volume"_L1) value = Volume();
+ else if (name == "Position"_L1) value = Position();
+ else if (name == "CanPlay"_L1) value = CanPlay();
+ else if (name == "CanPause"_L1) value = CanPause();
+ else if (name == "CanSeek"_L1) value = CanSeek();
+ else if (name == "CanGoNext"_L1) value = CanGoNext();
+ else if (name == "CanGoPrevious"_L1) value = CanGoPrevious();
if (value.isValid()) EmitNotification(name, value);
@@ -326,13 +328,13 @@ void Mpris2::SetLoopStatus(const QString &value) {
PlaylistSequence::RepeatMode mode = PlaylistSequence::RepeatMode::Off;
- if (value == QLatin1String("None")) {
+ if (value == "None"_L1) {
mode = PlaylistSequence::RepeatMode::Off;
}
- else if (value == QLatin1String("Track")) {
+ else if (value == "Track"_L1) {
mode = PlaylistSequence::RepeatMode::Track;
}
- else if (value == QLatin1String("Playlist")) {
+ else if (value == "Playlist"_L1) {
mode = PlaylistSequence::RepeatMode::Playlist;
}
@@ -461,7 +463,7 @@ bool Mpris2::CanPlay() const {
// This one's a bit different than MPRIS 1 - we want this to be true even when the song is already paused or stopped.
bool Mpris2::CanPause() const {
- return (app_->player()->GetCurrentItem() && app_->player()->GetState() == EngineBase::State::Playing && !(app_->player()->GetCurrentItem()->options() & PlaylistItem::Option::PauseDisabled)) || PlaybackStatus() == QLatin1String("Paused") || PlaybackStatus() == QLatin1String("Stopped");
+ return (app_->player()->GetCurrentItem() && app_->player()->GetState() == EngineBase::State::Playing && !(app_->player()->GetCurrentItem()->options() & PlaylistItem::Option::PauseDisabled)) || PlaybackStatus() == "Paused"_L1 || PlaybackStatus() == "Stopped"_L1;
}
bool Mpris2::CanSeek() const { return CanSeek(app_->player()->GetState()); }
@@ -595,7 +597,7 @@ MaybePlaylist Mpris2::ActivePlaylist() const {
void Mpris2::ActivatePlaylist(const QDBusObjectPath &playlist_id) {
- QStringList split_path = playlist_id.path().split(QLatin1Char('/'));
+ QStringList split_path = playlist_id.path().split(u'/');
qLog(Debug) << Q_FUNC_INFO << playlist_id.path() << split_path;
if (split_path.isEmpty()) {
return;
@@ -649,7 +651,7 @@ void Mpris2::PlaylistChangedSlot(Playlist *playlist) {
void Mpris2::PlaylistCollectionChanged(Playlist *playlist) {
Q_UNUSED(playlist);
- EmitNotification(QStringLiteral("PlaylistCount"), QLatin1String(""), QStringLiteral("org.mpris.MediaPlayer2.Playlists"));
+ EmitNotification(QStringLiteral("PlaylistCount"), ""_L1, QStringLiteral("org.mpris.MediaPlayer2.Playlists"));
}
} // namespace mpris
diff --git a/src/core/mpris_common.h b/src/core/mpris_common.h
index adffabde1..f2cf9ee37 100644
--- a/src/core/mpris_common.h
+++ b/src/core/mpris_common.h
@@ -32,6 +32,8 @@
namespace mpris {
+using namespace Qt::Literals::StringLiterals;
+
inline void AddMetadata(const QString &key, const QString &metadata, QVariantMap *map) {
if (!metadata.isEmpty()) (*map)[key] = metadata;
}
@@ -61,7 +63,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) : QLatin1String("");
+ return time != -1 ? QDateTime::fromSecsSinceEpoch(time).toString(Qt::ISODate) : ""_L1;
}
} // namespace mpris
diff --git a/src/core/networkproxyfactory.cpp b/src/core/networkproxyfactory.cpp
index 67a2826ff..4761e6f25 100644
--- a/src/core/networkproxyfactory.cpp
+++ b/src/core/networkproxyfactory.cpp
@@ -32,6 +32,8 @@
#include "core/settings.h"
#include "networkproxyfactory.h"
+using namespace Qt::StringLiterals;
+
NetworkProxyFactory *NetworkProxyFactory::sInstance = nullptr;
const char *NetworkProxyFactory::kSettingsGroup = "NetworkProxy";
@@ -112,7 +114,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(QLatin1String("http"))) {
+ if (env_url_.scheme().startsWith("http"_L1)) {
ret.setType(QNetworkProxy::HttpProxy);
}
else {
diff --git a/src/core/player.cpp b/src/core/player.cpp
index 9cae30b63..b23d66134 100644
--- a/src/core/player.cpp
+++ b/src/core/player.cpp
@@ -70,7 +70,6 @@
#include "settings/playlistsettingspage.h"
using namespace std::chrono_literals;
-
using std::make_shared;
const char *Player::kSettingsGroup = "Player";
diff --git a/src/core/song.cpp b/src/core/song.cpp
index f19ff0ee0..f03dd5d1e 100644
--- a/src/core/song.cpp
+++ b/src/core/song.cpp
@@ -63,6 +63,8 @@
#endif
#include "tagreadermessages.pb.h"
+using namespace Qt::StringLiterals;
+
const QStringList Song::kColumns = QStringList() << QStringLiteral("title")
<< QStringLiteral("album")
<< QStringLiteral("artist")
@@ -144,10 +146,10 @@ const QStringList Song::kColumns = QStringList() << QStringLiteral("title")
const QStringList Song::kRowIdColumns = QStringList() << QStringLiteral("ROWID") << kColumns;
-const QString Song::kColumnSpec = kColumns.join(QLatin1String(", "));
-const QString Song::kRowIdColumnSpec = kRowIdColumns.join(QLatin1String(", "));
-const QString Song::kBindSpec = Utilities::Prepend(QStringLiteral(":"), kColumns).join(QLatin1String(", "));
-const QString Song::kUpdateSpec = Utilities::Updateify(kColumns).join(QLatin1String(", "));
+const QString Song::kColumnSpec = kColumns.join(", "_L1);
+const QString Song::kRowIdColumnSpec = kRowIdColumns.join(", "_L1);
+const QString Song::kBindSpec = Utilities::Prepend(QStringLiteral(":"), kColumns).join(", "_L1);
+const QString Song::kUpdateSpec = Utilities::Updateify(kColumns).join(", "_L1);
const QStringList Song::kTextSearchColumns = QStringList() << QStringLiteral("title")
<< QStringLiteral("album")
@@ -421,9 +423,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() ? 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_; }
+QString Song::artist_id() const { return d->artist_id_.isNull() ? ""_L1 : d->artist_id_; }
+QString Song::album_id() const { return d->album_id_.isNull() ? ""_L1 : d->album_id_; }
+QString Song::song_id() const { return d->song_id_.isNull() ? ""_L1 : d->song_id_; }
qint64 Song::beginning_nanosec() const { return d->beginning_; }
qint64 Song::end_nanosec() const { return d->end_; }
@@ -725,7 +727,7 @@ int Song::ColumnIndex(const QString &field) {
}
QString Song::JoinSpec(const QString &table) {
- return Utilities::Prepend(table + QLatin1Char('.'), kRowIdColumns).join(QLatin1String(", "));
+ return Utilities::Prepend(table + QLatin1Char('.'), kRowIdColumns).join(", "_L1);
}
QString Song::PrettyTitle() const {
@@ -779,7 +781,7 @@ QString Song::TitleWithCompilationArtist() const {
if (title.isEmpty()) title = d->basefilename_;
- if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.contains(QLatin1String("various"), Qt::CaseInsensitive)) title = d->artist_ + QStringLiteral(" - ") + title;
+ if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.contains("various"_L1, Qt::CaseInsensitive)) title = d->artist_ + QStringLiteral(" - ") + title;
return title;
@@ -787,7 +789,7 @@ QString Song::TitleWithCompilationArtist() const {
QString Song::SampleRateBitDepthToText() const {
- if (d->samplerate_ == -1) return QLatin1String("");
+ if (d->samplerate_ == -1) return ""_L1;
if (d->bitdepth_ == -1) return QStringLiteral("%1 hz").arg(d->samplerate_);
return QStringLiteral("%1 hz / %2 bit").arg(d->samplerate_).arg(d->bitdepth_);
@@ -957,11 +959,11 @@ Song::Source Song::SourceFromURL(const QUrl &url) {
if (url.scheme() == QStringLiteral("spotify")) return Source::Spotify;
if (url.scheme() == QStringLiteral("qobuz")) return Source::Qobuz;
if (url.scheme() == QStringLiteral("http") || url.scheme() == QStringLiteral("https") || url.scheme() == QStringLiteral("rtsp")) {
- if (url.host().endsWith(QLatin1String("tidal.com"), Qt::CaseInsensitive)) { return Source::Tidal; }
- if (url.host().endsWith(QLatin1String("spotify.com"), Qt::CaseInsensitive)) { return Source::Spotify; }
- 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; }
+ if (url.host().endsWith("tidal.com"_L1, Qt::CaseInsensitive)) { return Source::Tidal; }
+ if (url.host().endsWith("spotify.com"_L1, Qt::CaseInsensitive)) { return Source::Spotify; }
+ if (url.host().endsWith("qobuz.com"_L1, Qt::CaseInsensitive)) { return Source::Qobuz; }
+ if (url.host().endsWith("somafm.com"_L1, Qt::CaseInsensitive)) { return Source::SomaFM; }
+ if (url.host().endsWith("radioparadise.com"_L1, Qt::CaseInsensitive)) { return Source::RadioParadise; }
return Source::Stream;
}
else return Source::Unknown;
@@ -1010,17 +1012,17 @@ QString Song::DescriptionForSource(const Source source) {
Song::Source Song::SourceFromText(const QString &source) {
- 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("subsonic"), Qt::CaseInsensitive) == 0) return Source::Subsonic;
- if (source.compare(QLatin1String("tidal"), Qt::CaseInsensitive) == 0) return Source::Tidal;
- if (source.compare(QLatin1String("spotify"), Qt::CaseInsensitive) == 0) return Source::Spotify;
- 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;
+ if (source.compare("file"_L1, Qt::CaseInsensitive) == 0) return Source::LocalFile;
+ if (source.compare("collection"_L1, Qt::CaseInsensitive) == 0) return Source::Collection;
+ if (source.compare("cd"_L1, Qt::CaseInsensitive) == 0) return Source::CDDA;
+ if (source.compare("device"_L1, Qt::CaseInsensitive) == 0) return Source::Device;
+ if (source.compare("stream"_L1, Qt::CaseInsensitive) == 0) return Source::Stream;
+ if (source.compare("subsonic"_L1, Qt::CaseInsensitive) == 0) return Source::Subsonic;
+ if (source.compare("tidal"_L1, Qt::CaseInsensitive) == 0) return Source::Tidal;
+ if (source.compare("spotify"_L1, Qt::CaseInsensitive) == 0) return Source::Spotify;
+ if (source.compare("qobuz"_L1, Qt::CaseInsensitive) == 0) return Source::Qobuz;
+ if (source.compare("somafm"_L1, Qt::CaseInsensitive) == 0) return Source::SomaFM;
+ if (source.compare("radioparadise"_L1, Qt::CaseInsensitive) == 0) return Source::RadioParadise;
return Source::Unknown;
@@ -1166,26 +1168,26 @@ bool Song::IsFileLossless() const {
Song::FileType Song::FiletypeByMimetype(const QString &mimetype) {
- if (mimetype.compare(QLatin1String("audio/wav"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("audio/x-wav"), Qt::CaseInsensitive) == 0) return FileType::WAV;
- if (mimetype.compare(QLatin1String("audio/x-flac"), Qt::CaseInsensitive) == 0) return FileType::FLAC;
- if (mimetype.compare(QLatin1String("audio/x-wavpack"), Qt::CaseInsensitive) == 0) return FileType::WavPack;
- if (mimetype.compare(QLatin1String("audio/x-vorbis"), Qt::CaseInsensitive) == 0) return FileType::OggVorbis;
- if (mimetype.compare(QLatin1String("audio/x-opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus;
- if (mimetype.compare(QLatin1String("audio/x-speex"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
+ if (mimetype.compare("audio/wav"_L1, Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-wav"_L1, Qt::CaseInsensitive) == 0) return FileType::WAV;
+ if (mimetype.compare("audio/x-flac"_L1, Qt::CaseInsensitive) == 0) return FileType::FLAC;
+ if (mimetype.compare("audio/x-wavpack"_L1, Qt::CaseInsensitive) == 0) return FileType::WavPack;
+ if (mimetype.compare("audio/x-vorbis"_L1, Qt::CaseInsensitive) == 0) return FileType::OggVorbis;
+ if (mimetype.compare("audio/x-opus"_L1, Qt::CaseInsensitive) == 0) return FileType::OggOpus;
+ if (mimetype.compare("audio/x-speex"_L1, Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
// Gstreamer returns audio/mpeg for both MP3 and MP4/AAC.
// if (mimetype.compare("audio/mpeg", Qt::CaseInsensitive) == 0) return FileType::MPEG;
- if (mimetype.compare(QLatin1String("audio/aac"), Qt::CaseInsensitive) == 0) return FileType::MP4;
- if (mimetype.compare(QLatin1String("audio/x-wma"), Qt::CaseInsensitive) == 0) return FileType::ASF;
- if (mimetype.compare(QLatin1String("audio/aiff"), Qt::CaseInsensitive) == 0 || mimetype.compare(QLatin1String("audio/x-aiff"), Qt::CaseInsensitive) == 0) return FileType::AIFF;
- if (mimetype.compare(QLatin1String("audio/x-musepack"), Qt::CaseInsensitive) == 0) return FileType::MPC;
- if (mimetype.compare(QLatin1String("application/x-project"), Qt::CaseInsensitive) == 0) return FileType::MPC;
- if (mimetype.compare(QLatin1String("audio/x-dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF;
- if (mimetype.compare(QLatin1String("audio/x-dsd"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
- 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;
- if (mimetype.compare(QLatin1String("audio/x-mod"), Qt::CaseInsensitive) == 0) return FileType::MOD;
- if (mimetype.compare(QLatin1String("audio/x-s3m"), Qt::CaseInsensitive) == 0) return FileType::S3M;
- if (mimetype.compare(QLatin1String("audio/x-spc"), Qt::CaseInsensitive) == 0) return FileType::SPC;
- if (mimetype.compare(QLatin1String("audio/x-vgm"), Qt::CaseInsensitive) == 0) return FileType::VGM;
+ if (mimetype.compare("audio/aac"_L1, Qt::CaseInsensitive) == 0) return FileType::MP4;
+ if (mimetype.compare("audio/x-wma"_L1, Qt::CaseInsensitive) == 0) return FileType::ASF;
+ if (mimetype.compare("audio/aiff"_L1, Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-aiff"_L1, Qt::CaseInsensitive) == 0) return FileType::AIFF;
+ if (mimetype.compare("audio/x-musepack"_L1, Qt::CaseInsensitive) == 0) return FileType::MPC;
+ if (mimetype.compare("application/x-project"_L1, Qt::CaseInsensitive) == 0) return FileType::MPC;
+ if (mimetype.compare("audio/x-dsf"_L1, Qt::CaseInsensitive) == 0) return FileType::DSF;
+ if (mimetype.compare("audio/x-dsd"_L1, Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
+ if (mimetype.compare("audio/x-ape"_L1, Qt::CaseInsensitive) == 0 || mimetype.compare("application/x-ape"_L1, Qt::CaseInsensitive) == 0 || mimetype.compare("audio/x-ffmpeg-parsed-ape"_L1, Qt::CaseInsensitive) == 0) return FileType::APE;
+ if (mimetype.compare("audio/x-mod"_L1, Qt::CaseInsensitive) == 0) return FileType::MOD;
+ if (mimetype.compare("audio/x-s3m"_L1, Qt::CaseInsensitive) == 0) return FileType::S3M;
+ if (mimetype.compare("audio/x-spc"_L1, Qt::CaseInsensitive) == 0) return FileType::SPC;
+ if (mimetype.compare("audio/x-vgm"_L1, Qt::CaseInsensitive) == 0) return FileType::VGM;
return FileType::Unknown;
@@ -1193,26 +1195,26 @@ Song::FileType Song::FiletypeByMimetype(const QString &mimetype) {
Song::FileType Song::FiletypeByDescription(const QString &text) {
- if (text.compare(QLatin1String("WAV"), Qt::CaseInsensitive) == 0) return FileType::WAV;
- if (text.compare(QLatin1String("Free Lossless Audio Codec (FLAC)"), Qt::CaseInsensitive) == 0) return FileType::FLAC;
- if (text.compare(QLatin1String("Wavpack"), Qt::CaseInsensitive) == 0) return FileType::WavPack;
- if (text.compare(QLatin1String("Vorbis"), Qt::CaseInsensitive) == 0) return FileType::OggVorbis;
- if (text.compare(QLatin1String("Opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus;
- if (text.compare(QLatin1String("Speex"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
- if (text.compare(QLatin1String("MPEG-1 Layer 2 (MP2)"), Qt::CaseInsensitive) == 0) return FileType::MPEG;
- if (text.compare(QLatin1String("MPEG-1 Layer 3 (MP3)"), Qt::CaseInsensitive) == 0) return FileType::MPEG;
- if (text.compare(QLatin1String("MPEG-4 AAC"), Qt::CaseInsensitive) == 0) return FileType::MP4;
- if (text.compare(QLatin1String("WMA"), Qt::CaseInsensitive) == 0) return FileType::ASF;
- if (text.compare(QLatin1String("Audio Interchange File Format"), Qt::CaseInsensitive) == 0) return FileType::AIFF;
- if (text.compare(QLatin1String("MPC"), Qt::CaseInsensitive) == 0) return FileType::MPC;
- if (text.compare(QLatin1String("Musepack (MPC)"), Qt::CaseInsensitive) == 0) return FileType::MPC;
- if (text.compare(QLatin1String("audio/x-dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF;
- if (text.compare(QLatin1String("audio/x-dsd"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
- if (text.compare(QLatin1String("audio/x-ffmpeg-parsed-ape"), Qt::CaseInsensitive) == 0) return FileType::APE;
- if (text.compare(QLatin1String("Module Music Format (MOD)"), Qt::CaseInsensitive) == 0) return FileType::MOD;
- if (text.compare(QLatin1String("Module Music Format (MOD)"), Qt::CaseInsensitive) == 0) return FileType::S3M;
- if (text.compare(QLatin1String("SNES SPC700"), Qt::CaseInsensitive) == 0) return FileType::SPC;
- if (text.compare(QLatin1String("VGM"), Qt::CaseInsensitive) == 0) return FileType::VGM;
+ if (text.compare("WAV"_L1, Qt::CaseInsensitive) == 0) return FileType::WAV;
+ if (text.compare("Free Lossless Audio Codec (FLAC)"_L1, Qt::CaseInsensitive) == 0) return FileType::FLAC;
+ if (text.compare("Wavpack"_L1, Qt::CaseInsensitive) == 0) return FileType::WavPack;
+ if (text.compare("Vorbis"_L1, Qt::CaseInsensitive) == 0) return FileType::OggVorbis;
+ if (text.compare("Opus"_L1, Qt::CaseInsensitive) == 0) return FileType::OggOpus;
+ if (text.compare("Speex"_L1, Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
+ if (text.compare("MPEG-1 Layer 2 (MP2)"_L1, Qt::CaseInsensitive) == 0) return FileType::MPEG;
+ if (text.compare("MPEG-1 Layer 3 (MP3)"_L1, Qt::CaseInsensitive) == 0) return FileType::MPEG;
+ if (text.compare("MPEG-4 AAC"_L1, Qt::CaseInsensitive) == 0) return FileType::MP4;
+ if (text.compare("WMA"_L1, Qt::CaseInsensitive) == 0) return FileType::ASF;
+ if (text.compare("Audio Interchange File Format"_L1, Qt::CaseInsensitive) == 0) return FileType::AIFF;
+ if (text.compare("MPC"_L1, Qt::CaseInsensitive) == 0) return FileType::MPC;
+ if (text.compare("Musepack (MPC)"_L1, Qt::CaseInsensitive) == 0) return FileType::MPC;
+ if (text.compare("audio/x-dsf"_L1, Qt::CaseInsensitive) == 0) return FileType::DSF;
+ if (text.compare("audio/x-dsd"_L1, Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
+ if (text.compare("audio/x-ffmpeg-parsed-ape"_L1, Qt::CaseInsensitive) == 0) return FileType::APE;
+ if (text.compare("Module Music Format (MOD)"_L1, Qt::CaseInsensitive) == 0) return FileType::MOD;
+ if (text.compare("Module Music Format (MOD)"_L1, Qt::CaseInsensitive) == 0) return FileType::S3M;
+ if (text.compare("SNES SPC700"_L1, Qt::CaseInsensitive) == 0) return FileType::SPC;
+ if (text.compare("VGM"_L1, Qt::CaseInsensitive) == 0) return FileType::VGM;
return FileType::Unknown;
@@ -1220,29 +1222,29 @@ Song::FileType Song::FiletypeByDescription(const QString &text) {
Song::FileType Song::FiletypeByExtension(const QString &ext) {
- if (ext.compare(QLatin1String("wav"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wave"), Qt::CaseInsensitive) == 0) return FileType::WAV;
- if (ext.compare(QLatin1String("flac"), Qt::CaseInsensitive) == 0) return FileType::FLAC;
- if (ext.compare(QLatin1String("wavpack"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wv"), Qt::CaseInsensitive) == 0) return FileType::WavPack;
- if (ext.compare(QLatin1String("opus"), Qt::CaseInsensitive) == 0) return FileType::OggOpus;
- if (ext.compare(QLatin1String("speex"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("spx"), Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
- if (ext.compare(QLatin1String("mp2"), Qt::CaseInsensitive) == 0) return FileType::MPEG;
- if (ext.compare(QLatin1String("mp3"), Qt::CaseInsensitive) == 0) return FileType::MPEG;
- 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;
- if (ext.compare(QLatin1String("asf"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("wma"), Qt::CaseInsensitive) == 0) return FileType::ASF;
- 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;
- 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;
- if (ext.compare(QLatin1String("dsf"), Qt::CaseInsensitive) == 0) return FileType::DSF;
- if (ext.compare(QLatin1String("dsd"), Qt::CaseInsensitive) == 0 || ext.compare(QLatin1String("dff"), Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
- if (ext.compare(QLatin1String("ape"), Qt::CaseInsensitive) == 0) return FileType::APE;
- 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;
- if (ext.compare(QLatin1String("s3m"), Qt::CaseInsensitive) == 0) return FileType::S3M;
- if (ext.compare(QLatin1String("xm"), Qt::CaseInsensitive) == 0) return FileType::XM;
- if (ext.compare(QLatin1String("it"), Qt::CaseInsensitive) == 0) return FileType::IT;
- if (ext.compare(QLatin1String("spc"), Qt::CaseInsensitive) == 0) return FileType::SPC;
- if (ext.compare(QLatin1String("vgm"), Qt::CaseInsensitive) == 0) return FileType::VGM;
+ if (ext.compare("wav"_L1, Qt::CaseInsensitive) == 0 || ext.compare("wave"_L1, Qt::CaseInsensitive) == 0) return FileType::WAV;
+ if (ext.compare("flac"_L1, Qt::CaseInsensitive) == 0) return FileType::FLAC;
+ if (ext.compare("wavpack"_L1, Qt::CaseInsensitive) == 0 || ext.compare("wv"_L1, Qt::CaseInsensitive) == 0) return FileType::WavPack;
+ if (ext.compare("opus"_L1, Qt::CaseInsensitive) == 0) return FileType::OggOpus;
+ if (ext.compare("speex"_L1, Qt::CaseInsensitive) == 0 || ext.compare("spx"_L1, Qt::CaseInsensitive) == 0) return FileType::OggSpeex;
+ if (ext.compare("mp2"_L1, Qt::CaseInsensitive) == 0) return FileType::MPEG;
+ if (ext.compare("mp3"_L1, Qt::CaseInsensitive) == 0) return FileType::MPEG;
+ if (ext.compare("mp4"_L1, Qt::CaseInsensitive) == 0 || ext.compare("m4a"_L1, Qt::CaseInsensitive) == 0 || ext.compare("aac"_L1, Qt::CaseInsensitive) == 0) return FileType::MP4;
+ if (ext.compare("asf"_L1, Qt::CaseInsensitive) == 0 || ext.compare("wma"_L1, Qt::CaseInsensitive) == 0) return FileType::ASF;
+ if (ext.compare("aiff"_L1, Qt::CaseInsensitive) == 0 || ext.compare("aif"_L1, Qt::CaseInsensitive) == 0 || ext.compare("aifc"_L1, Qt::CaseInsensitive) == 0) return FileType::AIFF;
+ if (ext.compare("mpc"_L1, Qt::CaseInsensitive) == 0 || ext.compare("mp+"_L1, Qt::CaseInsensitive) == 0 || ext.compare("mpp"_L1, Qt::CaseInsensitive) == 0) return FileType::MPC;
+ if (ext.compare("dsf"_L1, Qt::CaseInsensitive) == 0) return FileType::DSF;
+ if (ext.compare("dsd"_L1, Qt::CaseInsensitive) == 0 || ext.compare("dff"_L1, Qt::CaseInsensitive) == 0) return FileType::DSDIFF;
+ if (ext.compare("ape"_L1, Qt::CaseInsensitive) == 0) return FileType::APE;
+ if (ext.compare("mod"_L1, Qt::CaseInsensitive) == 0 ||
+ ext.compare("module"_L1, Qt::CaseInsensitive) == 0 ||
+ ext.compare("nst"_L1, Qt::CaseInsensitive) == 0||
+ ext.compare("wow"_L1, Qt::CaseInsensitive) == 0) return FileType::MOD;
+ if (ext.compare("s3m"_L1, Qt::CaseInsensitive) == 0) return FileType::S3M;
+ if (ext.compare("xm"_L1, Qt::CaseInsensitive) == 0) return FileType::XM;
+ if (ext.compare("it"_L1, Qt::CaseInsensitive) == 0) return FileType::IT;
+ if (ext.compare("spc"_L1, Qt::CaseInsensitive) == 0) return FileType::SPC;
+ if (ext.compare("vgm"_L1, Qt::CaseInsensitive) == 0) return FileType::VGM;
return FileType::Unknown;
@@ -1588,8 +1590,8 @@ void Song::InitFromItdb(Itdb_Track *track, const QString &prefix) {
d->source_ = Source::Device;
QString filename = QString::fromLocal8Bit(track->ipod_path);
- filename.replace(QLatin1Char(':'), QLatin1Char('/'));
- if (prefix.contains(QLatin1String("://"))) {
+ filename.replace(u':', u'/');
+ if (prefix.contains("://"_L1)) {
set_url(QUrl(prefix + filename));
}
else {
@@ -1935,7 +1937,7 @@ void Song::MergeUserSetData(const Song &other, const bool merge_playcount, const
}
QString Song::AlbumKey() const {
- return QStringLiteral("%1|%2|%3").arg(is_compilation() ? QStringLiteral("_compilation") : effective_albumartist(), has_cue() ? cue_path() : QLatin1String(""), effective_album());
+ return QStringLiteral("%1|%2|%3").arg(is_compilation() ? QStringLiteral("_compilation") : effective_albumartist(), has_cue() ? cue_path() : ""_L1, effective_album());
}
size_t qHash(const Song &song) {
diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp
index aa69ae47c..257875b27 100644
--- a/src/core/songloader.cpp
+++ b/src/core/songloader.cpp
@@ -307,7 +307,7 @@ SongLoader::Result SongLoader::LoadLocalAsync(const QString &filename) {
// It's a CUE - create virtual tracks
QFile cue(matching_cue);
if (cue.open(QIODevice::ReadOnly)) {
- const SongList songs = cue_parser_->Load(&cue, matching_cue, QDir(filename.section(QLatin1Char('/'), 0, -2)));
+ const SongList songs = cue_parser_->Load(&cue, matching_cue, QDir(filename.section(u'/', 0, -2)));
cue.close();
for (const Song &song : songs) {
if (song.is_valid()) songs_ << song;
diff --git a/src/core/sqlquery.cpp b/src/core/sqlquery.cpp
index 068dc15a1..f78f1577d 100644
--- a/src/core/sqlquery.cpp
+++ b/src/core/sqlquery.cpp
@@ -26,6 +26,8 @@
#include "sqlquery.h"
+using namespace Qt::StringLiterals;
+
void SqlQuery::BindValue(const QString &placeholder, const QVariant &value) {
bound_values_.insert(placeholder, value);
@@ -36,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() ? QLatin1String("") : value);
+ BindValue(placeholder, value.isNull() ? ""_L1 : value);
}
void SqlQuery::BindUrlValue(const QString &placeholder, const QUrl &value) {
- BindValue(placeholder, value.isValid() ? value.toString(QUrl::FullyEncoded) : QLatin1String(""));
+ BindValue(placeholder, value.isValid() ? value.toString(QUrl::FullyEncoded) : ""_L1);
}
diff --git a/src/core/stylehelper.cpp b/src/core/stylehelper.cpp
index 69ecb3f09..c27e6b484 100644
--- a/src/core/stylehelper.cpp
+++ b/src/core/stylehelper.cpp
@@ -34,6 +34,8 @@
#include
#include
+using namespace Qt::StringLiterals;
+
// Clamps float color values within (0, 255)
static int clamp(float x) {
const int val = x > 255 ? 255 : static_cast(x);
@@ -461,7 +463,7 @@ QString StyleHelper::dpiSpecificImageFile(const QString &fileName) {
QString StyleHelper::imageFileWithResolution(const QString &fileName, int dpr) {
const QFileInfo fi(fileName);
- return dpr == 1 ? fileName : fi.path() + QLatin1Char('/') + fi.completeBaseName() + QLatin1Char('@') + QString::number(dpr) + QLatin1String("x.") + fi.suffix();
+ return dpr == 1 ? fileName : fi.path() + QLatin1Char('/') + fi.completeBaseName() + QLatin1Char('@') + QString::number(dpr) + "x."_L1 + fi.suffix();
}
diff --git a/src/core/stylesheetloader.cpp b/src/core/stylesheetloader.cpp
index 86cb90256..5eedcc2a6 100644
--- a/src/core/stylesheetloader.cpp
+++ b/src/core/stylesheetloader.cpp
@@ -39,6 +39,8 @@
#include "core/logging.h"
#include "stylesheetloader.h"
+using namespace Qt::StringLiterals;
+
using std::make_shared;
StyleSheetLoader::StyleSheetLoader(QObject *parent) : QObject(parent) {}
@@ -90,7 +92,7 @@ void StyleSheetLoader::UpdateStyleSheet(QWidget *widget, SharedPtrclassName()));
diff --git a/src/core/temporaryfile.cpp b/src/core/temporaryfile.cpp
index 188c57015..0dd35b35d 100644
--- a/src/core/temporaryfile.cpp
+++ b/src/core/temporaryfile.cpp
@@ -61,7 +61,7 @@ QString TemporaryFile::GenerateFilename(const QString &filename_pattern) const {
QString filename = filename_pattern;
Q_FOREVER {
- const int i = static_cast(filename.indexOf(QLatin1Char('X')));
+ const int i = static_cast(filename.indexOf(u'X'));
if (i == -1) break;
const qint64 index = QRandomGenerator::global()->bounded(0, random_chars.length());
const QChar random_char = random_chars.at(index);
diff --git a/src/covermanager/albumcoverchoicecontroller.cpp b/src/covermanager/albumcoverchoicecontroller.cpp
index 996614901..d6d406bc1 100644
--- a/src/covermanager/albumcoverchoicecontroller.cpp
+++ b/src/covermanager/albumcoverchoicecontroller.cpp
@@ -79,6 +79,8 @@
#include "coverfromurldialog.h"
#include "currentalbumcoverloader.h"
+using namespace Qt::StringLiterals;
+
const char *AlbumCoverChoiceController::kLoadImageFileFilter = QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)");
const char *AlbumCoverChoiceController::kSaveImageFileFilter = QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)");
const char *AlbumCoverChoiceController::kAllFilesFilter = QT_TR_NOOP("All files (*)");
@@ -233,12 +235,12 @@ QUrl AlbumCoverChoiceController::LoadCoverFromFile(Song *song) {
void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const AlbumCoverImageResult &result) {
- QString initial_file_name = QLatin1String("/");
+ QString initial_file_name = "/"_L1;
if (!song.effective_albumartist().isEmpty()) {
initial_file_name = initial_file_name + song.effective_albumartist();
}
- initial_file_name = initial_file_name + QLatin1Char('-') + (song.effective_album().isEmpty() ? tr("unknown") : song.effective_album()) + QLatin1String(".jpg");
+ initial_file_name = initial_file_name + QLatin1Char('-') + (song.effective_album().isEmpty() ? tr("unknown") : song.effective_album()) + ".jpg"_L1;
initial_file_name = initial_file_name.toLower();
static const QRegularExpression regex_whitespaces(QStringLiteral("\\s"));
initial_file_name.replace(regex_whitespaces, QStringLiteral("-"));
@@ -251,16 +253,16 @@ void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const A
QFileInfo fileinfo(save_filename);
if (fileinfo.suffix().isEmpty()) {
- save_filename.append(QLatin1String(".jpg"));
+ save_filename.append(".jpg"_L1);
fileinfo.setFile(save_filename);
}
if (!QImageWriter::supportedImageFormats().contains(fileinfo.completeSuffix().toUtf8().toLower())) {
- save_filename = Utilities::PathWithoutFilenameExtension(save_filename) + QLatin1String(".jpg");
+ save_filename = Utilities::PathWithoutFilenameExtension(save_filename) + ".jpg"_L1;
fileinfo.setFile(save_filename);
}
- if (result.is_jpeg() && fileinfo.completeSuffix().compare(QLatin1String("jpg"), Qt::CaseInsensitive) == 0) {
+ if (result.is_jpeg() && fileinfo.completeSuffix().compare("jpg"_L1, 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();
@@ -294,8 +296,8 @@ QString AlbumCoverChoiceController::GetInitialPathForFileDialog(const Song &song
}
// If no automatic art, start in the song's folder
- if (!song.url().isEmpty() && song.url().isValid() && song.url().isLocalFile() && song.url().toLocalFile().contains(QLatin1Char('/'))) {
- return song.url().toLocalFile().section(QLatin1Char('/'), 0, -2) + filename;
+ if (!song.url().isEmpty() && song.url().isValid() && song.url().isLocalFile() && song.url().toLocalFile().contains(u'/')) {
+ return song.url().toLocalFile().section(u'/', 0, -2) + filename;
}
return QDir::home().absolutePath() + filename;
@@ -478,13 +480,13 @@ void AlbumCoverChoiceController::ShowCover(const Song &song, const QPixmap &pixm
// Use Artist - Album as the window title
QString title_text(song.effective_albumartist());
- if (!song.effective_album().isEmpty()) title_text += QLatin1String(" - ") + song.effective_album();
+ if (!song.effective_album().isEmpty()) title_text += " - "_L1 + song.effective_album();
QLabel *label = new QLabel(dialog);
label->setPixmap(pixmap);
// Add (WxHpx) to the title before possibly resizing
- title_text += QLatin1String(" (") + QString::number(pixmap.width()) + QLatin1Char('x') + QString::number(pixmap.height()) + QLatin1String("px)");
+ title_text += QLatin1String(" (") + QString::number(pixmap.width()) + QLatin1Char('x') + QString::number(pixmap.height()) + "px)"_L1;
// If the cover is larger than the screen, resize the window 85% seems to be enough to account for title bar and taskbar etc.
QScreen *screen = Utilities::GetScreen(this);
@@ -666,7 +668,7 @@ QUrl AlbumCoverChoiceController::SaveCoverToFileAutomatic(const Song::Source sou
if (source == Song::Source::Collection && !cover_options_.cover_overwrite && !force_overwrite && get_save_album_cover_type() == CoverOptions::CoverType::Album && cover_options_.cover_filename == CoverOptions::CoverFilename::Pattern && file.exists()) {
while (file.exists()) {
QFileInfo fileinfo(file.fileName());
- file.setFileName(fileinfo.path() + QLatin1String("/0") + fileinfo.fileName());
+ file.setFileName(fileinfo.path() + "/0"_L1 + fileinfo.fileName());
}
filepath = file.fileName();
}
diff --git a/src/covermanager/albumcoverexport.cpp b/src/covermanager/albumcoverexport.cpp
index 5b45f6b2c..602745645 100644
--- a/src/covermanager/albumcoverexport.cpp
+++ b/src/covermanager/albumcoverexport.cpp
@@ -35,6 +35,8 @@
#include "core/settings.h"
+using namespace Qt::StringLiterals;
+
const char *AlbumCoverExport::kSettingsGroup = "AlbumCoverExport";
AlbumCoverExport::AlbumCoverExport(QWidget *parent) : QDialog(parent), ui_(new Ui_AlbumCoverExport) {
@@ -62,8 +64,8 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() {
ui_->overwriteAll->setChecked(static_cast(s.value("overwrite", static_cast(OverwriteMode::All)).toInt()) == OverwriteMode::All);
ui_->overwriteSmaller->setChecked(static_cast(s.value("overwrite", static_cast(OverwriteMode::Smaller)).toInt()) == OverwriteMode::Smaller);
ui_->forceSize->setChecked(s.value("forceSize", false).toBool());
- ui_->width->setText(s.value("width", QLatin1String("")).toString());
- ui_->height->setText(s.value("height", QLatin1String("")).toString());
+ ui_->width->setText(s.value("width", ""_L1).toString());
+ ui_->height->setText(s.value("height", ""_L1).toString());
ui_->export_downloaded->setChecked(s.value("export_downloaded", true).toBool());
ui_->export_embedded->setChecked(s.value("export_embedded", false).toBool());
diff --git a/src/covermanager/albumcoverfetchersearch.cpp b/src/covermanager/albumcoverfetchersearch.cpp
index 331270dfd..ea3d64a30 100644
--- a/src/covermanager/albumcoverfetchersearch.cpp
+++ b/src/covermanager/albumcoverfetchersearch.cpp
@@ -48,6 +48,8 @@
#include "coverproviders.h"
#include "albumcoverimageresult.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kSearchTimeoutMs = 20000;
constexpr int kImageLoadTimeoutMs = 6000;
@@ -86,7 +88,7 @@ void AlbumCoverFetcherSearch::TerminateSearch() {
void AlbumCoverFetcherSearch::Start(SharedPtr cover_providers) {
// Ignore Radio Paradise "commercial" break.
- if (request_.artist.compare(QLatin1String("commercial-free"), Qt::CaseInsensitive) == 0 && request_.title.compare(QLatin1String("listener-supported"), Qt::CaseInsensitive) == 0) {
+ if (request_.artist.compare("commercial-free"_L1, Qt::CaseInsensitive) == 0 && request_.title.compare("listener-supported"_L1, Qt::CaseInsensitive) == 0) {
TerminateSearch();
return;
}
@@ -170,51 +172,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(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)
+ result_album.contains("hits"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("greatest"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("best"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("collection"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("classics"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("singles"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("bootleg"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("live"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("concert"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("essential"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("ultimate"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("karaoke"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("mixtape"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("country rock"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("indie folk"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("soft rock"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("folk music"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("60's rock"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("60's romance"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("60s music"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("late 60s"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("the 60s"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("folk and blues"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("60 from the 60's"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("classic psychedelic"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("playlist: acoustic"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("90's rnb playlist"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("rock 80s"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("classic 80s"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("rock anthems"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("rock songs"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("rock 2019"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("guitar anthems"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("driving anthems"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("traffic jam jams"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("perfect background music"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("70's gold"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("rockfluence"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("acoustic dinner accompaniment"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("complete studio albums"_L1, Qt::CaseInsensitive) ||
+ result_album.contains("mellow rock"_L1, Qt::CaseInsensitive)
)) {
results_copy[i].score_match -= 1;
}
- else if (request_album.isEmpty() && result_album.contains(QLatin1String("soundtrack"), Qt::CaseInsensitive)) {
+ else if (request_album.isEmpty() && result_album.contains("soundtrack"_L1, Qt::CaseInsensitive)) {
results_copy[i].score_match -= 0.5;
}
@@ -323,8 +325,8 @@ void AlbumCoverFetcherSearch::ProviderCoverFetchFinished(QNetworkReply *reply) {
}
else {
QString mimetype = reply->header(QNetworkRequest::ContentTypeHeader).toString();
- if (mimetype.contains(QLatin1Char(';'))) {
- mimetype = mimetype.left(mimetype.indexOf(QLatin1Char(';')));
+ if (mimetype.contains(u';')) {
+ mimetype = mimetype.left(mimetype.indexOf(u';'));
}
if (ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) || ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) {
QByteArray image_data = reply->readAll();
diff --git a/src/covermanager/albumcoverloaderoptions.cpp b/src/covermanager/albumcoverloaderoptions.cpp
index 8eb638cbf..70be50414 100644
--- a/src/covermanager/albumcoverloaderoptions.cpp
+++ b/src/covermanager/albumcoverloaderoptions.cpp
@@ -24,6 +24,8 @@
#include "core/settings.h"
#include "settings/coverssettingspage.h"
+using namespace Qt::StringLiterals;
+
AlbumCoverLoaderOptions::AlbumCoverLoaderOptions(const Options _options, const QSize _desired_scaled_size, const qreal _device_pixel_ratio, const Types &_types)
: options(_options),
desired_scaled_size(_desired_scaled_size),
@@ -39,16 +41,16 @@ AlbumCoverLoaderOptions::Types AlbumCoverLoaderOptions::LoadTypes() {
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 == QLatin1String("art_unset")) {
+ if (cover_type_str == "art_unset"_L1) {
cover_types << AlbumCoverLoaderOptions::Type::Unset;
}
- else if (cover_type_str == QLatin1String("art_embedded")) {
+ else if (cover_type_str == "art_embedded"_L1) {
cover_types << AlbumCoverLoaderOptions::Type::Embedded;
}
- else if (cover_type_str == QLatin1String("art_manual")) {
+ else if (cover_type_str == "art_manual"_L1) {
cover_types << AlbumCoverLoaderOptions::Type::Manual;
}
- else if (cover_type_str == QLatin1String("art_automatic")) {
+ else if (cover_type_str == "art_automatic"_L1) {
cover_types << AlbumCoverLoaderOptions::Type::Automatic;
}
}
diff --git a/src/covermanager/albumcovermanager.cpp b/src/covermanager/albumcovermanager.cpp
index bf8fc45e6..817b8f6e4 100644
--- a/src/covermanager/albumcovermanager.cpp
+++ b/src/covermanager/albumcovermanager.cpp
@@ -95,6 +95,7 @@
#include "ui_albumcovermanager.h"
using namespace std::literals::chrono_literals;
+using namespace Qt::StringLiterals;
namespace {
constexpr char kSettingsGroup[] = "CoverManager";
@@ -289,10 +290,10 @@ void AlbumCoverManager::LoadGeometry() {
Settings s;
s.beginGroup(kSettingsGroup);
- if (s.contains(QLatin1String("geometry"))) {
+ if (s.contains("geometry"_L1)) {
restoreGeometry(s.value("geometry").toByteArray());
}
- if (s.contains(QLatin1String("splitter_state"))) {
+ if (s.contains("splitter_state"_L1)) {
ui_->splitter->restoreState(s.value("splitter_state").toByteArray());
}
else {
@@ -402,7 +403,7 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem *current) {
display_text = album_info.album;
}
else {
- display_text = album_info.album_artist + QLatin1String(" - ") + album_info.album;
+ display_text = album_info.album_artist + " - "_L1 + album_info.album;
}
AlbumItem *album_item = new AlbumItem(icon_nocover_item_, display_text, ui_->albums);
@@ -418,7 +419,7 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem *current) {
album_item->setToolTip(album_info.album);
}
else {
- album_item->setToolTip(album_info.album_artist + QLatin1String(" - ") + album_info.album);
+ album_item->setToolTip(album_info.album_artist + " - "_L1 + album_info.album);
}
album_item->setData(Role_ArtEmbedded, album_info.art_embedded);
@@ -536,7 +537,7 @@ bool AlbumCoverManager::ShouldHide(const AlbumItem &album_item, const QString &f
return false;
}
- const QStringList query = filter.split(QLatin1Char(' '));
+ const QStringList query = filter.split(u' ');
for (const QString &s : query) {
bool in_text = album_item.text().contains(s, Qt::CaseInsensitive);
bool in_albumartist = album_item.data(Role_AlbumArtist).toString().contains(s, Qt::CaseInsensitive);
@@ -597,7 +598,7 @@ void AlbumCoverManager::UpdateStatusText() {
.arg(fetch_statistics_.missing_images_);
if (fetch_statistics_.bytes_transferred_ > 0) {
- message += QLatin1String(", ") + tr("%1 transferred").arg(Utilities::PrettySize(fetch_statistics_.bytes_transferred_));
+ message += ", "_L1 + tr("%1 transferred").arg(Utilities::PrettySize(fetch_statistics_.bytes_transferred_));
}
statusBar()->showMessage(message);
@@ -671,7 +672,7 @@ Song AlbumCoverManager::AlbumItemAsSong(AlbumItem *album_item) {
QString title = album_item->data(Role_Album).toString();
QString artist_name = album_item->data(Role_AlbumArtist).toString();
if (!artist_name.isEmpty()) {
- result.set_title(artist_name + QLatin1String(" - ") + title);
+ result.set_title(artist_name + " - "_L1 + title);
}
else {
result.set_title(title);
diff --git a/src/covermanager/coverexportrunnable.cpp b/src/covermanager/coverexportrunnable.cpp
index df9a04915..bfb6f4b43 100644
--- a/src/covermanager/coverexportrunnable.cpp
+++ b/src/covermanager/coverexportrunnable.cpp
@@ -34,6 +34,8 @@
#include "albumcoverexport.h"
#include "coverexportrunnable.h"
+using namespace Qt::StringLiterals;
+
CoverExportRunnable::CoverExportRunnable(const AlbumCoverExport::DialogResult &dialog_result, const AlbumCoverLoaderOptions::Types &cover_types, const Song &song, QObject *parent)
: QObject(parent),
dialog_result_(dialog_result),
@@ -78,7 +80,7 @@ void CoverExportRunnable::ProcessAndExportCover() {
if (song_.art_embedded() && dialog_result_.export_embedded_) {
const TagReaderClient::Result result = TagReaderClient::Instance()->LoadEmbeddedArtAsImageBlocking(song_.url().toLocalFile(), image);
if (result.success() && !image.isNull()) {
- extension = QLatin1String("jpg");
+ extension = "jpg"_L1;
}
}
break;
@@ -86,7 +88,7 @@ void CoverExportRunnable::ProcessAndExportCover() {
if (dialog_result_.export_downloaded_ && song_.art_manual_is_valid()) {
const QString cover_path = song_.art_manual().toLocalFile();
if (image.load(cover_path)) {
- extension = cover_path.section(QLatin1Char('.'), -1);
+ extension = cover_path.section(u'.', -1);
}
}
break;
@@ -94,7 +96,7 @@ void CoverExportRunnable::ProcessAndExportCover() {
if (dialog_result_.export_downloaded_ && song_.art_automatic_is_valid()) {
const QString cover_path = song_.art_automatic().toLocalFile();
if (image.load(cover_path)) {
- extension = cover_path.section(QLatin1Char('.'), -1);
+ extension = cover_path.section(u'.', -1);
}
}
break;
@@ -112,8 +114,8 @@ void CoverExportRunnable::ProcessAndExportCover() {
image = image.scaled(QSize(dialog_result_.width_, dialog_result_.height_), Qt::IgnoreAspectRatio);
}
- QString cover_dir = song_.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
- QString new_file = cover_dir + QLatin1Char('/') + dialog_result_.filename_ + QLatin1Char('.') + (song_.art_embedded() ? QLatin1String("jpg") : extension);
+ QString cover_dir = song_.url().toLocalFile().section(u'/', 0, -2);
+ QString new_file = cover_dir + QLatin1Char('/') + dialog_result_.filename_ + QLatin1Char('.') + (song_.art_embedded() ? "jpg"_L1 : extension);
// If the file exists, do not override!
if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode::None && QFile::exists(new_file)) {
@@ -171,7 +173,7 @@ void CoverExportRunnable::ExportCover() {
const TagReaderClient::Result result = TagReaderClient::Instance()->LoadEmbeddedArtAsImageBlocking(song_.url().toLocalFile(), image);
if (result.success() && !image.isNull()) {
embedded_cover = true;
- extension = QLatin1String("jpg");
+ extension = "jpg"_L1;
}
}
break;
@@ -179,7 +181,7 @@ void CoverExportRunnable::ExportCover() {
if (dialog_result_.export_downloaded_ && song_.art_manual_is_valid()) {
cover_path = song_.art_manual().toLocalFile();
if (image.load(cover_path)) {
- extension = cover_path.section(QLatin1Char('.'), -1);
+ extension = cover_path.section(u'.', -1);
}
}
break;
@@ -187,7 +189,7 @@ void CoverExportRunnable::ExportCover() {
if (dialog_result_.export_downloaded_ && song_.art_automatic_is_valid()) {
cover_path = song_.art_automatic().toLocalFile();
if (image.load(cover_path)) {
- extension = cover_path.section(QLatin1Char('.'), -1);
+ extension = cover_path.section(u'.', -1);
}
}
break;
@@ -200,7 +202,7 @@ void CoverExportRunnable::ExportCover() {
return;
}
- QString cover_dir = song_.url().toLocalFile().section(QLatin1Char('/'), 0, -2);
+ QString cover_dir = song_.url().toLocalFile().section(u'/', 0, -2);
QString new_file = cover_dir + QLatin1Char('/') + dialog_result_.filename_ + QLatin1Char('.') + extension;
// If the file exists, do not override!
diff --git a/src/covermanager/coverfromurldialog.cpp b/src/covermanager/coverfromurldialog.cpp
index d97e57c98..9418c4404 100644
--- a/src/covermanager/coverfromurldialog.cpp
+++ b/src/covermanager/coverfromurldialog.cpp
@@ -39,6 +39,8 @@
#include "coverfromurldialog.h"
#include "ui_coverfromurldialog.h"
+using namespace Qt::StringLiterals;
+
CoverFromURLDialog::CoverFromURLDialog(SharedPtr network, QWidget *parent)
: QDialog(parent),
network_(network),
@@ -56,7 +58,7 @@ CoverFromURLDialog::~CoverFromURLDialog() {
AlbumCoverImageResult CoverFromURLDialog::Exec() {
// reset state
- ui_->url->setText(QLatin1String(""));
+ ui_->url->setText(""_L1);
last_album_cover_ = AlbumCoverImageResult();
QClipboard *clipboard = QApplication::clipboard();
diff --git a/src/covermanager/deezercoverprovider.cpp b/src/covermanager/deezercoverprovider.cpp
index d357868a7..8b3d3e152 100644
--- a/src/covermanager/deezercoverprovider.cpp
+++ b/src/covermanager/deezercoverprovider.cpp
@@ -48,6 +48,8 @@
#include "jsoncoverprovider.h"
#include "deezercoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kApiUrl[] = "https://api.deezer.com";
constexpr int kLimit = 10;
@@ -74,14 +76,14 @@ bool DeezerCoverProvider::StartSearch(const QString &artist, const QString &albu
QString resource;
QString query = artist;
if (album.isEmpty() && !title.isEmpty()) {
- resource = QLatin1String("search/track");
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ resource = "search/track"_L1;
+ if (!query.isEmpty()) query.append(u' ');
query.append(title);
}
else {
- resource = QLatin1String("search/album");
+ resource = "search/album"_L1;
if (!album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(album);
}
}
@@ -130,12 +132,12 @@ 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(QLatin1String("error"))) {
- QJsonValue value_error = json_obj[QLatin1String("error")];
+ if (json_obj.contains("error"_L1)) {
+ QJsonValue value_error = json_obj["error"_L1];
if (value_error.isObject()) {
QJsonObject obj_error = value_error.toObject();
- int code = obj_error[QLatin1String("code")].toInt();
- QString message = obj_error[QLatin1String("message")].toString();
+ int code = obj_error["code"_L1].toInt();
+ QString message = obj_error["message"_L1].toString();
error = QStringLiteral("%1 (%2)").arg(message).arg(code);
}
}
@@ -162,27 +164,27 @@ QJsonValue DeezerCoverProvider::ExtractData(const QByteArray &data) {
QJsonObject json_obj = ExtractJsonObj(data);
if (json_obj.isEmpty()) return QJsonObject();
- if (json_obj.contains(QLatin1String("error"))) {
- QJsonValue value_error = json_obj[QLatin1String("error")];
+ if (json_obj.contains("error"_L1)) {
+ QJsonValue value_error = json_obj["error"_L1];
if (!value_error.isObject()) {
Error(QStringLiteral("Error missing object"), json_obj);
return QJsonValue();
}
QJsonObject obj_error = value_error.toObject();
- const int code = obj_error[QLatin1String("code")].toInt();
- QString message = obj_error[QLatin1String("message")].toString();
+ const int code = obj_error["code"_L1].toInt();
+ QString message = obj_error["message"_L1].toString();
Error(QStringLiteral("%1 (%2)").arg(message).arg(code));
return QJsonValue();
}
- if (!json_obj.contains(QLatin1String("data")) && !json_obj.contains(QLatin1String("DATA"))) {
+ if (!json_obj.contains("data"_L1) && !json_obj.contains("DATA"_L1)) {
Error(QStringLiteral("Json reply object is missing data."), json_obj);
return QJsonValue();
}
QJsonValue value_data;
- if (json_obj.contains(QLatin1String("data"))) value_data = json_obj[QLatin1String("data")];
- else value_data = json_obj[QLatin1String("DATA")];
+ if (json_obj.contains("data"_L1)) value_data = json_obj["data"_L1];
+ else value_data = json_obj["DATA"_L1];
return value_data;
@@ -223,50 +225,50 @@ void DeezerCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id)
}
QJsonObject json_obj = json_value.toObject();
QJsonObject obj_album;
- if (json_obj.contains(QLatin1String("album")) && json_obj[QLatin1String("album")].isObject()) { // Song search, so extract the album.
- obj_album = json_obj[QLatin1String("album")].toObject();
+ if (json_obj.contains("album"_L1) && json_obj["album"_L1].isObject()) { // Song search, so extract the album.
+ obj_album = json_obj["album"_L1].toObject();
}
else {
obj_album = json_obj;
}
- if (!json_obj.contains(QLatin1String("id")) || !obj_album.contains(QLatin1String("id"))) {
+ if (!json_obj.contains("id"_L1) || !obj_album.contains("id"_L1)) {
Error(QStringLiteral("Invalid Json reply, data array value object is missing ID."), json_obj);
continue;
}
- if (!obj_album.contains(QLatin1String("type"))) {
+ if (!obj_album.contains("type"_L1)) {
Error(QStringLiteral("Invalid Json reply, data array value album object is missing type."), obj_album);
continue;
}
- QString type = obj_album[QLatin1String("type")].toString();
- if (type != QLatin1String("album")) {
+ QString type = obj_album["type"_L1].toString();
+ if (type != "album"_L1) {
Error(QStringLiteral("Invalid Json reply, data array value album object has incorrect type returned"), obj_album);
continue;
}
- if (!json_obj.contains(QLatin1String("artist"))) {
+ if (!json_obj.contains("artist"_L1)) {
Error(QStringLiteral("Invalid Json reply, data array value object is missing artist."), json_obj);
continue;
}
- QJsonValue value_artist = json_obj[QLatin1String("artist")];
+ QJsonValue value_artist = json_obj["artist"_L1];
if (!value_artist.isObject()) {
Error(QStringLiteral("Invalid Json reply, data array value artist is not a object."), value_artist);
continue;
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) {
+ if (!obj_artist.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, data array value artist object is missing name."), obj_artist);
continue;
}
- QString artist = obj_artist[QLatin1String("name")].toString();
+ QString artist = obj_artist["name"_L1].toString();
- if (!obj_album.contains(QLatin1String("title"))) {
+ if (!obj_album.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, data array value album object is missing title."), obj_album);
continue;
}
- QString album = obj_album[QLatin1String("title")].toString();
+ QString album = obj_album["title"_L1].toString();
CoverProviderSearchResult cover_result;
cover_result.artist = artist;
diff --git a/src/covermanager/discogscoverprovider.cpp b/src/covermanager/discogscoverprovider.cpp
index 89ce866f4..b9cc8eb30 100644
--- a/src/covermanager/discogscoverprovider.cpp
+++ b/src/covermanager/discogscoverprovider.cpp
@@ -50,6 +50,7 @@
#include "jsoncoverprovider.h"
#include "discogscoverprovider.h"
+using namespace Qt::StringLiterals;
using std::make_shared;
const char *DiscogsCoverProvider::kUrlSearch = "https://api.discogs.com/database/search";
@@ -163,7 +164,7 @@ QNetworkReply *DiscogsCoverProvider::CreateRequest(QUrl url, const ParamList &pa
url.setQuery(url_query);
// Sign the request
- const QByteArray data_to_sign = QStringLiteral("GET\n%1\n%2\n%3").arg(url.host(), url.path(), query_items.join(QLatin1Char('&'))).toUtf8();
+ const QByteArray data_to_sign = QStringLiteral("GET\n%1\n%2\n%3").arg(url.host(), url.path(), query_items.join(u'&')).toUtf8();
const QByteArray signature(Utilities::HmacSha256(QByteArray::fromBase64(kSecretKeyB64), data_to_sign));
// Add the signature to the request
@@ -201,8 +202,8 @@ 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(QLatin1String("message"))) {
- error = json_obj[QLatin1String("message")].toString();
+ if (json_obj.contains("message"_L1)) {
+ error = json_obj["message"_L1].toString();
}
}
if (error.isEmpty()) {
@@ -245,11 +246,11 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id)
}
QJsonValue value_results;
- if (json_obj.contains(QLatin1String("results"))) {
- value_results = json_obj[QLatin1String("results")];
+ if (json_obj.contains("results"_L1)) {
+ value_results = json_obj["results"_L1];
}
- else if (json_obj.contains(QLatin1String("message"))) {
- QString message = json_obj[QLatin1String("message")].toString();
+ else if (json_obj.contains("message"_L1)) {
+ QString message = json_obj["message"_L1].toString();
Error(QStringLiteral("%1").arg(message));
EndSearch(search);
return;
@@ -274,15 +275,15 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id)
continue;
}
QJsonObject obj_result = value_result.toObject();
- if (!obj_result.contains(QLatin1String("id")) || !obj_result.contains(QLatin1String("title")) || !obj_result.contains(QLatin1String("resource_url"))) {
+ if (!obj_result.contains("id"_L1) || !obj_result.contains("title"_L1) || !obj_result.contains("resource_url"_L1)) {
Error(QStringLiteral("Invalid Json reply, results value object is missing ID, title or resource_url."), obj_result);
continue;
}
- quint64 release_id = obj_result[QLatin1String("id")].toInt();
- QUrl resource_url(obj_result[QLatin1String("resource_url")].toString());
- QString title = obj_result[QLatin1String("title")].toString();
+ quint64 release_id = obj_result["id"_L1].toInt();
+ QUrl resource_url(obj_result["resource_url"_L1].toString());
+ QString title = obj_result["title"_L1].toString();
- if (title.contains(QLatin1String(" - "))) {
+ if (title.contains(" - "_L1)) {
QStringList title_splitted = title.split(QStringLiteral(" - "));
if (title_splitted.count() == 2) {
QString artist = title_splitted.first();
@@ -354,18 +355,18 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se
return;
}
- if (!json_obj.contains(QLatin1String("artists")) || !json_obj.contains(QLatin1String("title"))) {
+ if (!json_obj.contains("artists"_L1) || !json_obj.contains("title"_L1)) {
Error(QStringLiteral("Json reply object is missing artists or title."), json_obj);
EndSearch(search, release.id);
return;
}
- if (!json_obj.contains(QLatin1String("images"))) {
+ if (!json_obj.contains("images"_L1)) {
EndSearch(search, release.id);
return;
}
- QJsonValue value_artists = json_obj[QLatin1String("artists")];
+ QJsonValue value_artists = json_obj["artists"_L1];
if (!value_artists.isArray()) {
Error(QStringLiteral("Json reply object artists is not a array."), value_artists);
EndSearch(search, release.id);
@@ -380,11 +381,11 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se
continue;
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) {
+ if (!obj_artist.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, artists array value object is missing name."), obj_artist);
continue;
}
- artist = obj_artist[QLatin1String("name")].toString();
+ artist = obj_artist["name"_L1].toString();
++i;
if (artist == search->artist) break;
}
@@ -393,15 +394,15 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se
EndSearch(search, release.id);
return;
}
- if (i > 1 && artist != search->artist) artist = QLatin1String("Various artists");
+ if (i > 1 && artist != search->artist) artist = "Various artists"_L1;
- QString album = json_obj[QLatin1String("title")].toString();
+ QString album = json_obj["title"_L1].toString();
if (artist != search->artist && album != search->album) {
EndSearch(search, release.id);
return;
}
- QJsonValue value_images = json_obj[QLatin1String("images")];
+ QJsonValue value_images = json_obj["images"_L1];
if (!value_images.isArray()) {
Error(QStringLiteral("Json images is not an array."));
EndSearch(search, release.id);
@@ -422,23 +423,23 @@ void DiscogsCoverProvider::HandleReleaseReply(QNetworkReply *reply, const int se
continue;
}
QJsonObject obj_image = value_image.toObject();
- if (!obj_image.contains(QLatin1String("type")) || !obj_image.contains(QLatin1String("resource_url")) || !obj_image.contains(QLatin1String("width")) || !obj_image.contains(QLatin1String("height"))) {
+ if (!obj_image.contains("type"_L1) || !obj_image.contains("resource_url"_L1) || !obj_image.contains("width"_L1) || !obj_image.contains("height"_L1)) {
Error(QStringLiteral("Invalid Json reply, images array value object is missing type, resource_url, width or height."), obj_image);
continue;
}
- QString type = obj_image[QLatin1String("type")].toString();
- if (type != QLatin1String("primary")) {
+ QString type = obj_image["type"_L1].toString();
+ if (type != "primary"_L1) {
continue;
}
- int width = obj_image[QLatin1String("width")].toInt();
- int height = obj_image[QLatin1String("height")].toInt();
+ int width = obj_image["width"_L1].toInt();
+ int height = obj_image["height"_L1].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[QLatin1String("resource_url")].toString());
+ result.image_url = QUrl(obj_image["resource_url"_L1].toString());
if (result.image_url.isEmpty()) continue;
search->results.append(result);
}
diff --git a/src/covermanager/lastfmcoverprovider.cpp b/src/covermanager/lastfmcoverprovider.cpp
index 759efc861..5e0dd3b6f 100644
--- a/src/covermanager/lastfmcoverprovider.cpp
+++ b/src/covermanager/lastfmcoverprovider.cpp
@@ -47,6 +47,8 @@
#include "albumcoverfetcher.h"
#include "lastfmcoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kUrl[] = "https://ws.audioscrobbler.com/2.0/";
constexpr char kApiKey[] = "211990b4c96782c05d1536e7219eb56e";
@@ -75,16 +77,16 @@ bool LastFmCoverProvider::StartSearch(const QString &artist, const QString &albu
QString type;
QString query = artist;
if (album.isEmpty() && !title.isEmpty()) {
- method = QLatin1String("track.search");
- type = QLatin1String("track");
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ method = "track.search"_L1;
+ type = "track"_L1;
+ if (!query.isEmpty()) query.append(u' ');
query.append(title);
}
else {
- method = QLatin1String("album.search");
- type = QLatin1String("album");
+ method = "album.search"_L1;
+ type = "album"_L1;
if (!album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(album);
}
}
@@ -105,7 +107,7 @@ bool LastFmCoverProvider::StartSearch(const QString &artist, const QString &albu
data_to_sign += QLatin1String(kSecret);
QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5);
- QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, QLatin1Char('0')).toLower();
+ QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, u'0').toLower();
url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("api_sig"))), QString::fromLatin1(QUrl::toPercentEncoding(signature)));
url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("format"))), QString::fromLatin1(QUrl::toPercentEncoding(QStringLiteral("json"))));
@@ -144,12 +146,12 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons
}
QJsonValue value_results;
- if (json_obj.contains(QLatin1String("results"))) {
- value_results = json_obj[QLatin1String("results")];
+ if (json_obj.contains("results"_L1)) {
+ value_results = json_obj["results"_L1];
}
- else if (json_obj.contains(QLatin1String("error")) && json_obj.contains(QLatin1String("message"))) {
- int error = json_obj[QLatin1String("error")].toInt();
- QString message = json_obj[QLatin1String("message")].toString();
+ else if (json_obj.contains("error"_L1) && json_obj.contains("message"_L1)) {
+ int error = json_obj["error"_L1].toInt();
+ QString message = json_obj["message"_L1].toString();
Error(QStringLiteral("Error: %1: %2").arg(QString::number(error), message));
Q_EMIT SearchFinished(id, results);
return;
@@ -175,9 +177,9 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons
QJsonValue value_matches;
- if (type == QLatin1String("album")) {
- if (obj_results.contains(QLatin1String("albummatches"))) {
- value_matches = obj_results[QLatin1String("albummatches")];
+ if (type == "album"_L1) {
+ if (obj_results.contains("albummatches"_L1)) {
+ value_matches = obj_results["albummatches"_L1];
}
else {
Error(QStringLiteral("Json results object is missing albummatches."), obj_results);
@@ -185,9 +187,9 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons
return;
}
}
- else if (type == QLatin1String("track")) {
- if (obj_results.contains(QLatin1String("trackmatches"))) {
- value_matches = obj_results[QLatin1String("trackmatches")];
+ else if (type == "track"_L1) {
+ if (obj_results.contains("trackmatches"_L1)) {
+ value_matches = obj_results["trackmatches"_L1];
}
else {
Error(QStringLiteral("Json results object is missing trackmatches."), obj_results);
@@ -231,17 +233,17 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons
continue;
}
QJsonObject obj = value.toObject();
- if (!obj.contains(QLatin1String("artist")) || !obj.contains(QLatin1String("image")) || !obj.contains(QLatin1String("name"))) {
+ if (!obj.contains("artist"_L1) || !obj.contains("image"_L1) || !obj.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, album is missing artist, image or name."), obj);
continue;
}
- QString artist = obj[QLatin1String("artist")].toString();
+ QString artist = obj["artist"_L1].toString();
QString album;
- if (type == QLatin1String("album")) {
- album = obj[QLatin1String("name")].toString();
+ if (type == "album"_L1) {
+ album = obj["name"_L1].toString();
}
- QJsonValue json_image = obj[QLatin1String("image")];
+ QJsonValue json_image = obj["image"_L1];
if (!json_image.isArray()) {
Error(QStringLiteral("Invalid Json reply, album image is not a array."), json_image);
continue;
@@ -255,13 +257,13 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply *reply, const int id, cons
continue;
}
QJsonObject obj_image = value_image.toObject();
- if (!obj_image.contains(QLatin1String("#text")) || !obj_image.contains(QLatin1String("size"))) {
+ if (!obj_image.contains("#text"_L1) || !obj_image.contains("size"_L1)) {
Error(QStringLiteral("Invalid Json reply, album image value is missing #text or size."), obj_image);
continue;
}
- QString image_url = obj_image[QLatin1String("#text")].toString();
+ QString image_url = obj_image["#text"_L1].toString();
if (image_url.isEmpty()) continue;
- LastFmImageSize image_size = ImageSizeFromString(obj_image[QLatin1String("size")].toString().toLower());
+ LastFmImageSize image_size = ImageSizeFromString(obj_image["size"_L1].toString().toLower());
if (image_url_use.isEmpty() || image_size > image_size_use) {
image_url_use = image_url;
image_size_use = image_size;
@@ -271,8 +273,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(QLatin1String("/300x300/"))) {
- image_url_use = image_url_use.replace(QLatin1String("/300x300/"), QLatin1String("/740x0/"));
+ if (image_url_use.contains("/300x300/"_L1)) {
+ image_url_use = image_url_use.replace("/300x300/"_L1, "/740x0/"_L1);
}
QUrl url(image_url_use);
if (!url.isValid()) continue;
@@ -308,10 +310,10 @@ 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(QLatin1String("error")) && json_obj.contains(QLatin1String("message"))) {
- int code = json_obj[QLatin1String("error")].toInt();
- QString message = json_obj[QLatin1String("message")].toString();
- error = QLatin1String("Error: ") + QString::number(code) + QLatin1String(": ") + message;
+ if (json_obj.contains("error"_L1) && json_obj.contains("message"_L1)) {
+ int code = json_obj["error"_L1].toInt();
+ QString message = json_obj["message"_L1].toString();
+ error = "Error: "_L1 + QString::number(code) + ": "_L1 + message;
}
}
if (error.isEmpty()) {
@@ -340,10 +342,10 @@ void LastFmCoverProvider::Error(const QString &error, const QVariant &debug) {
LastFmCoverProvider::LastFmImageSize LastFmCoverProvider::ImageSizeFromString(const QString &size) {
- if (size == QLatin1String("small")) return LastFmImageSize::Small;
- if (size == QLatin1String("medium")) return LastFmImageSize::Medium;
- if (size == QLatin1String("large")) return LastFmImageSize::Large;
- if (size == QLatin1String("extralarge")) return LastFmImageSize::ExtraLarge;
+ if (size == "small"_L1) return LastFmImageSize::Small;
+ if (size == "medium"_L1) return LastFmImageSize::Medium;
+ if (size == "large"_L1) return LastFmImageSize::Large;
+ if (size == "extralarge"_L1) return LastFmImageSize::ExtraLarge;
return LastFmImageSize::Unknown;
diff --git a/src/covermanager/musicbrainzcoverprovider.cpp b/src/covermanager/musicbrainzcoverprovider.cpp
index d18579868..01463d2ba 100644
--- a/src/covermanager/musicbrainzcoverprovider.cpp
+++ b/src/covermanager/musicbrainzcoverprovider.cpp
@@ -44,6 +44,8 @@
#include "jsoncoverprovider.h"
#include "musicbrainzcoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kReleaseSearchUrl[] = "https://musicbrainz.org/ws/2/release/";
constexpr char kAlbumCoverUrl[] = "https://coverartarchive.org/release/%1/front";
@@ -91,7 +93,7 @@ bool MusicbrainzCoverProvider::StartSearch(const QString &artist, const QString
void MusicbrainzCoverProvider::SendSearchRequest(const SearchRequest &request) {
- QString query = QStringLiteral("release:\"%1\" AND artist:\"%2\"").arg(request.album.trimmed().replace(QLatin1Char('"'), QLatin1String("\\\"")), request.artist.trimmed().replace(QLatin1Char('"'), QLatin1String("\\\"")));
+ QString query = QStringLiteral("release:\"%1\" AND artist:\"%2\"").arg(request.album.trimmed().replace(u'"', "\""_L1), request.artist.trimmed().replace(u'"', "\""_L1));
QUrlQuery url_query;
url_query.addQueryItem(QStringLiteral("query"), query);
@@ -140,9 +142,9 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
return;
}
- if (!json_obj.contains(QLatin1String("releases"))) {
- if (json_obj.contains(QLatin1String("error"))) {
- QString error = json_obj[QLatin1String("error")].toString();
+ if (!json_obj.contains("releases"_L1)) {
+ if (json_obj.contains("error"_L1)) {
+ QString error = json_obj["error"_L1].toString();
Error(error);
}
else {
@@ -151,7 +153,7 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
Q_EMIT SearchFinished(search_id, results);
return;
}
- QJsonValue value_releases = json_obj[QLatin1String("releases")];
+ QJsonValue value_releases = json_obj["releases"_L1];
if (!value_releases.isArray()) {
Error(QStringLiteral("Json releases is not an array."), value_releases);
@@ -172,12 +174,12 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
continue;
}
QJsonObject obj_release = value_release.toObject();
- if (!obj_release.contains(QLatin1String("id")) || !obj_release.contains(QLatin1String("artist-credit")) || !obj_release.contains(QLatin1String("title"))) {
+ if (!obj_release.contains("id"_L1) || !obj_release.contains("artist-credit"_L1) || !obj_release.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, releases array object is missing id, artist-credit or title."), obj_release);
continue;
}
- QJsonValue json_artists = obj_release[QLatin1String("artist-credit")];
+ QJsonValue json_artists = obj_release["artist-credit"_L1];
if (!json_artists.isArray()) {
Error(QStringLiteral("Invalid Json reply, artist-credit is not a array."), json_artists);
continue;
@@ -192,28 +194,28 @@ void MusicbrainzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("artist"))) {
+ if (!obj_artist.contains("artist"_L1)) {
Error(QStringLiteral("Invalid Json reply, artist is missing."), obj_artist);
continue;
}
- QJsonValue value_artist2 = obj_artist[QLatin1String("artist")];
+ QJsonValue value_artist2 = obj_artist["artist"_L1];
if (!value_artist2.isObject()) {
Error(QStringLiteral("Invalid Json reply, artist is not an object."), value_artist2);
continue;
}
QJsonObject obj_artist2 = value_artist2.toObject();
- if (!obj_artist2.contains(QLatin1String("name"))) {
+ if (!obj_artist2.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, artist is missing name."), value_artist2);
continue;
}
- artist = obj_artist2[QLatin1String("name")].toString();
+ artist = obj_artist2["name"_L1].toString();
++i;
}
- if (i > 1) artist = QLatin1String("Various artists");
+ if (i > 1) artist = "Various artists"_L1;
- QString id = obj_release[QLatin1String("id")].toString();
- QString album = obj_release[QLatin1String("title")].toString();
+ QString id = obj_release["id"_L1].toString();
+ QString album = obj_release["title"_L1].toString();
CoverProviderSearchResult cover_result;
QUrl url(QString::fromLatin1(kAlbumCoverUrl).arg(id));
@@ -247,8 +249,8 @@ 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(QLatin1String("error"))) {
- error = json_obj[QLatin1String("error")].toString();
+ if (json_obj.contains("error"_L1)) {
+ error = json_obj["error"_L1].toString();
}
}
if (error.isEmpty()) {
diff --git a/src/covermanager/musixmatchcoverprovider.cpp b/src/covermanager/musixmatchcoverprovider.cpp
index 20e51fb09..abda0b7d4 100644
--- a/src/covermanager/musixmatchcoverprovider.cpp
+++ b/src/covermanager/musixmatchcoverprovider.cpp
@@ -40,6 +40,8 @@
#include "jsoncoverprovider.h"
#include "musixmatchcoverprovider.h"
+using namespace Qt::StringLiterals;
+
MusixmatchCoverProvider::MusixmatchCoverProvider(Application *app, SharedPtr network, QObject *parent)
: JsonCoverProvider(QStringLiteral("Musixmatch"), true, false, 1.0, true, false, app, network, parent) {}
@@ -107,8 +109,8 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
return;
}
const QString content = QString::fromUtf8(data);
- const QString data_begin = QLatin1String("");
+ const QString data_begin = ""_L1;
if (!content.contains(data_begin) || !content.contains(data_end)) {
Q_EMIT SearchFinished(id, results);
return;
@@ -162,47 +164,47 @@ void MusixmatchCoverProvider::HandleSearchReply(QNetworkReply *reply, const int
return;
}
- if (!obj_data.contains(QLatin1String("props")) || !obj_data[QLatin1String("props")].isObject()) {
+ if (!obj_data.contains("props"_L1) || !obj_data["props"_L1].isObject()) {
Error(QStringLiteral("Json reply is missing props."), obj_data);
Q_EMIT SearchFinished(id, results);
return;
}
- obj_data = obj_data[QLatin1String("props")].toObject();
+ obj_data = obj_data["props"_L1].toObject();
- if (!obj_data.contains(QLatin1String("pageProps")) || !obj_data[QLatin1String("pageProps")].isObject()) {
+ if (!obj_data.contains("pageProps"_L1) || !obj_data["pageProps"_L1].isObject()) {
Error(QStringLiteral("Json props is missing pageProps."), obj_data);
Q_EMIT SearchFinished(id, results);
return;
}
- obj_data = obj_data[QLatin1String("pageProps")].toObject();
+ obj_data = obj_data["pageProps"_L1].toObject();
- if (!obj_data.contains(QLatin1String("data")) || !obj_data[QLatin1String("data")].isObject()) {
+ if (!obj_data.contains("data"_L1) || !obj_data["data"_L1].isObject()) {
Error(QStringLiteral("Json pageProps is missing data."), obj_data);
Q_EMIT SearchFinished(id, results);
return;
}
- obj_data = obj_data[QLatin1String("data")].toObject();
+ obj_data = obj_data["data"_L1].toObject();
- if (!obj_data.contains(QLatin1String("albumGet")) || !obj_data[QLatin1String("albumGet")].isObject()) {
+ if (!obj_data.contains("albumGet"_L1) || !obj_data["albumGet"_L1].isObject()) {
Error(QStringLiteral("Json data is missing albumGet."), obj_data);
Q_EMIT SearchFinished(id, results);
return;
}
- obj_data = obj_data[QLatin1String("albumGet")].toObject();
+ obj_data = obj_data["albumGet"_L1].toObject();
- if (!obj_data.contains(QLatin1String("data")) || !obj_data[QLatin1String("data")].isObject()) {
+ if (!obj_data.contains("data"_L1) || !obj_data["data"_L1].isObject()) {
Error(QStringLiteral("Json albumGet reply is missing data."), obj_data);
Q_EMIT SearchFinished(id, results);
return;
}
- obj_data = obj_data[QLatin1String("data")].toObject();
+ obj_data = obj_data["data"_L1].toObject();
CoverProviderSearchResult result;
- if (obj_data.contains(QLatin1String("artistName")) && obj_data[QLatin1String("artistName")].isString()) {
- result.artist = obj_data[QLatin1String("artistName")].toString();
+ if (obj_data.contains("artistName"_L1) && obj_data["artistName"_L1].isString()) {
+ result.artist = obj_data["artistName"_L1].toString();
}
- if (obj_data.contains(QLatin1String("name")) && obj_data[QLatin1String("name")].isString()) {
- result.album = obj_data[QLatin1String("name")].toString();
+ if (obj_data.contains("name"_L1) && obj_data["name"_L1].isString()) {
+ result.album = obj_data["name"_L1].toString();
}
if (result.artist.compare(artist, Qt::CaseInsensitive) != 0 && result.album.compare(album, Qt::CaseInsensitive) != 0) {
diff --git a/src/covermanager/opentidalcoverprovider.cpp b/src/covermanager/opentidalcoverprovider.cpp
index 29da2a47d..1f90f1ab6 100644
--- a/src/covermanager/opentidalcoverprovider.cpp
+++ b/src/covermanager/opentidalcoverprovider.cpp
@@ -47,6 +47,8 @@
#include "jsoncoverprovider.h"
#include "opentidalcoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kSettingsGroup[] = "OpenTidal";
constexpr char kAuthUrl[] = "https://auth.tidal.com/v1/oauth2/token";
@@ -208,21 +210,21 @@ void OpenTidalCoverProvider::LoginFinished(QNetworkReply *reply) {
return;
}
- if (!json_obj.contains(QLatin1String("access_token")) ||
- !json_obj.contains(QLatin1String("token_type")) ||
- !json_obj.contains(QLatin1String("expires_in")) ||
- !json_obj[QLatin1String("access_token")].isString() ||
- !json_obj[QLatin1String("token_type")].isString()) {
+ if (!json_obj.contains("access_token"_L1) ||
+ !json_obj.contains("token_type"_L1) ||
+ !json_obj.contains("expires_in"_L1) ||
+ !json_obj["access_token"_L1].isString() ||
+ !json_obj["token_type"_L1].isString()) {
qLog(Error) << "OpenTidal: Invalid login reply.";
FinishAllSearches();
return;
}
have_login_ = true;
- token_type_ = json_obj[QLatin1String("token_type")].toString();
- access_token_ = json_obj[QLatin1String("access_token")].toString();
+ token_type_ = json_obj["token_type"_L1].toString();
+ access_token_ = json_obj["access_token"_L1].toString();
login_time_ = QDateTime::currentSecsSinceEpoch();
- expires_in_ = json_obj[QLatin1String("expires_in")].toInt();
+ expires_in_ = json_obj["expires_in"_L1].toInt();
Settings s;
s.beginGroup(kSettingsGroup);
@@ -285,21 +287,21 @@ QJsonObject OpenTidalCoverProvider::GetJsonObject(QNetworkReply *reply) {
return QJsonObject();
}
QJsonObject json_obj = ExtractJsonObj(data);
- if (json_obj.contains(QLatin1String("errors")) && json_obj[QLatin1String("errors")].isArray()) {
- const QJsonArray array = json_obj[QLatin1String("errors")].toArray();
+ if (json_obj.contains("errors"_L1) && json_obj["errors"_L1].isArray()) {
+ const QJsonArray array = json_obj["errors"_L1].toArray();
for (const QJsonValue &value : array) {
if (!value.isObject()) continue;
QJsonObject obj = value.toObject();
- if (!obj.contains(QLatin1String("category")) ||
- !obj.contains(QLatin1String("code")) ||
- !obj.contains(QLatin1String("detail"))) {
+ if (!obj.contains("category"_L1) ||
+ !obj.contains("code"_L1) ||
+ !obj.contains("detail"_L1)) {
continue;
}
- QString category = obj[QLatin1String("category")].toString();
- QString code = obj[QLatin1String("code")].toString();
- QString detail = obj[QLatin1String("detail")].toString();
+ QString category = obj["category"_L1].toString();
+ QString code = obj["code"_L1].toString();
+ QString detail = obj["detail"_L1].toString();
qLog(Error) << "OpenTidal:" << category << code << detail;
- if (category == QLatin1String("AUTHENTICATION_ERROR")) {
+ if (category == "AUTHENTICATION_ERROR"_L1) {
LoginCheck();
}
}
@@ -320,11 +322,11 @@ void OpenTidalCoverProvider::SendSearchRequest(SearchRequestPtr search_request)
QString query = search_request->artist;
if (!search_request->album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(search_request->album);
}
else if (!search_request->title.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(search_request->title);
}
@@ -332,7 +334,7 @@ void OpenTidalCoverProvider::SendSearchRequest(SearchRequestPtr search_request)
url_query.addQueryItem(QStringLiteral("query"), QString::fromUtf8(QUrl::toPercentEncoding(query)));
url_query.addQueryItem(QStringLiteral("limit"), QString::number(kLimit));
url_query.addQueryItem(QStringLiteral("countryCode"), QStringLiteral("US"));
- QUrl url(QLatin1String(kApiUrl) + QLatin1String("/search"));
+ QUrl url(QLatin1String(kApiUrl) + "/search"_L1);
url.setQuery(url_query);
QNetworkRequest req(url);
req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
@@ -363,13 +365,13 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque
return;
}
- if (!json_obj.contains(QLatin1String("albums")) || !json_obj[QLatin1String("albums")].isArray()) {
+ if (!json_obj.contains("albums"_L1) || !json_obj["albums"_L1].isArray()) {
qLog(Debug) << "OpenTidal: Json object is missing albums.";
Q_EMIT SearchFinished(search_request->id, CoverProviderSearchResults());
return;
}
- const QJsonArray array_albums = json_obj[QLatin1String("albums")].toArray();
+ const QJsonArray array_albums = json_obj["albums"_L1].toArray();
if (array_albums.isEmpty()) {
Q_EMIT SearchFinished(search_request->id, CoverProviderSearchResults());
return;
@@ -385,55 +387,55 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque
}
QJsonObject obj_album = value_album.toObject();
- if (!obj_album.contains(QLatin1String("resource")) || !obj_album[QLatin1String("resource")].isObject()) {
+ if (!obj_album.contains("resource"_L1) || !obj_album["resource"_L1].isObject()) {
qLog(Debug) << "OpenTidal: Invalid Json reply: Albums array album is missing resource object.";
continue;
}
- QJsonObject obj_resource = obj_album[QLatin1String("resource")].toObject();
+ QJsonObject obj_resource = obj_album["resource"_L1].toObject();
- if (!obj_resource.contains(QLatin1String("artists")) || !obj_resource[QLatin1String("artists")].isArray()) {
+ if (!obj_resource.contains("artists"_L1) || !obj_resource["artists"_L1].isArray()) {
qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing artists array.";
continue;
}
- if (!obj_resource.contains(QLatin1String("title")) || !obj_resource[QLatin1String("title")].isString()) {
+ if (!obj_resource.contains("title"_L1) || !obj_resource["title"_L1].isString()) {
qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing title.";
continue;
}
- if (!obj_resource.contains(QLatin1String("imageCover")) || !obj_resource[QLatin1String("imageCover")].isArray()) {
+ if (!obj_resource.contains("imageCover"_L1) || !obj_resource["imageCover"_L1].isArray()) {
qLog(Debug) << "OpenTidal: Invalid Json reply: Resource is missing imageCover array.";
continue;
}
QString artist;
- const QString album = obj_resource[QLatin1String("title")].toString();
+ const QString album = obj_resource["title"_L1].toString();
- const QJsonArray array_artists = obj_resource[QLatin1String("artists")].toArray();
+ const QJsonArray array_artists = obj_resource["artists"_L1].toArray();
for (const QJsonValue &value_artist : array_artists) {
if (!value_artist.isObject()) {
continue;
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) {
+ if (!obj_artist.contains("name"_L1)) {
continue;
}
- artist = obj_artist[QLatin1String("name")].toString();
+ artist = obj_artist["name"_L1].toString();
break;
}
- const QJsonArray array_covers = obj_resource[QLatin1String("imageCover")].toArray();
+ const QJsonArray array_covers = obj_resource["imageCover"_L1].toArray();
for (const QJsonValue &value_cover : array_covers) {
if (!value_cover.isObject()) {
continue;
}
QJsonObject obj_cover = value_cover.toObject();
- if (!obj_cover.contains(QLatin1String("url")) || !obj_cover.contains(QLatin1String("width")) || !obj_cover.contains(QLatin1String("height"))) {
+ if (!obj_cover.contains("url"_L1) || !obj_cover.contains("width"_L1) || !obj_cover.contains("height"_L1)) {
continue;
}
- const QUrl url(obj_cover[QLatin1String("url")].toString());
- const int width = obj_cover[QLatin1String("width")].toInt();
- const int height = obj_cover[QLatin1String("height")].toInt();
+ const QUrl url(obj_cover["url"_L1].toString());
+ const int width = obj_cover["width"_L1].toInt();
+ const int height = obj_cover["height"_L1].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 bff615f4c..35b60cebc 100644
--- a/src/covermanager/qobuzcoverprovider.cpp
+++ b/src/covermanager/qobuzcoverprovider.cpp
@@ -47,6 +47,8 @@
#include "jsoncoverprovider.h"
#include "qobuzcoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kLimit = 10;
}
@@ -73,14 +75,14 @@ bool QobuzCoverProvider::StartSearch(const QString &artist, const QString &album
QString resource;
QString query = artist;
if (album.isEmpty() && !title.isEmpty()) {
- resource = QLatin1String("track/search");
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ resource = "track/search"_L1;
+ if (!query.isEmpty()) query.append(u' ');
query.append(title);
}
else {
- resource = QLatin1String("album/search");
+ resource = "album/search"_L1;
if (!album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(album);
}
}
@@ -134,9 +136,9 @@ 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(QLatin1String("status")) && json_obj.contains(QLatin1String("code")) && json_obj.contains(QLatin1String("message"))) {
- int code = json_obj[QLatin1String("code")].toInt();
- QString message = json_obj[QLatin1String("message")].toString();
+ if (!json_obj.isEmpty() && json_obj.contains("status"_L1) && json_obj.contains("code"_L1) && json_obj.contains("message"_L1)) {
+ int code = json_obj["code"_L1].toInt();
+ QString message = json_obj["message"_L1].toString();
error = QStringLiteral("%1 (%2)").arg(message).arg(code);
}
}
@@ -179,11 +181,11 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
}
QJsonValue value_type;
- if (json_obj.contains(QLatin1String("albums"))) {
- value_type = json_obj[QLatin1String("albums")];
+ if (json_obj.contains("albums"_L1)) {
+ value_type = json_obj["albums"_L1];
}
- else if (json_obj.contains(QLatin1String("tracks"))) {
- value_type = json_obj[QLatin1String("tracks")];
+ else if (json_obj.contains("tracks"_L1)) {
+ value_type = json_obj["tracks"_L1];
}
else {
Error(QStringLiteral("Json reply is missing albums and tracks object."), json_obj);
@@ -198,12 +200,12 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
}
QJsonObject obj_type = value_type.toObject();
- if (!obj_type.contains(QLatin1String("items"))) {
+ if (!obj_type.contains("items"_L1)) {
Error(QStringLiteral("Json albums or tracks object does not contain items."), obj_type);
Q_EMIT SearchFinished(id, results);
return;
}
- QJsonValue value_items = obj_type[QLatin1String("items")];
+ QJsonValue value_items = obj_type["items"_L1];
if (!value_items.isArray()) {
Error(QStringLiteral("Json albums or track object items is not a array."), value_items);
@@ -221,49 +223,49 @@ void QobuzCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
QJsonObject item_obj = value.toObject();
QJsonObject obj_album;
- if (item_obj.contains(QLatin1String("album"))) {
- if (!item_obj[QLatin1String("album")].isObject()) {
+ if (item_obj.contains("album"_L1)) {
+ if (!item_obj["album"_L1].isObject()) {
Error(QStringLiteral("Invalid Json reply, items album is not a object."), item_obj);
continue;
}
- obj_album = item_obj[QLatin1String("album")].toObject();
+ obj_album = item_obj["album"_L1].toObject();
}
else {
obj_album = item_obj;
}
- if (!obj_album.contains(QLatin1String("artist")) || !obj_album.contains(QLatin1String("image")) || !obj_album.contains(QLatin1String("title"))) {
+ if (!obj_album.contains("artist"_L1) || !obj_album.contains("image"_L1) || !obj_album.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, item is missing artist, title or image."), obj_album);
continue;
}
- QString album = obj_album[QLatin1String("title")].toString();
+ QString album = obj_album["title"_L1].toString();
// Artist
- QJsonValue value_artist = obj_album[QLatin1String("artist")];
+ QJsonValue value_artist = obj_album["artist"_L1];
if (!value_artist.isObject()) {
Error(QStringLiteral("Invalid Json reply, items (album) artist is not a object."), value_artist);
continue;
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) {
+ if (!obj_artist.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, items (album) artist is missing name."), obj_artist);
continue;
}
- QString artist = obj_artist[QLatin1String("name")].toString();
+ QString artist = obj_artist["name"_L1].toString();
// Image
- QJsonValue value_image = obj_album[QLatin1String("image")];
+ QJsonValue value_image = obj_album["image"_L1];
if (!value_image.isObject()) {
Error(QStringLiteral("Invalid Json reply, items (album) image is not a object."), value_image);
continue;
}
QJsonObject obj_image = value_image.toObject();
- if (!obj_image.contains(QLatin1String("large"))) {
+ if (!obj_image.contains("large"_L1)) {
Error(QStringLiteral("Invalid Json reply, items (album) image is missing large."), obj_image);
continue;
}
- QUrl cover_url(obj_image[QLatin1String("large")].toString());
+ QUrl cover_url(obj_image["large"_L1].toString());
CoverProviderSearchResult cover_result;
cover_result.artist = artist;
diff --git a/src/covermanager/spotifycoverprovider.cpp b/src/covermanager/spotifycoverprovider.cpp
index 6ece328aa..76d473ff9 100644
--- a/src/covermanager/spotifycoverprovider.cpp
+++ b/src/covermanager/spotifycoverprovider.cpp
@@ -52,6 +52,8 @@
#include "jsoncoverprovider.h"
#include "spotifycoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kApiUrl[] = "https://api.spotify.com/v1";
constexpr int kLimit = 10;
@@ -82,16 +84,16 @@ bool SpotifyCoverProvider::StartSearch(const QString &artist, const QString &alb
QString extract;
QString query = artist;
if (album.isEmpty() && !title.isEmpty()) {
- type = QLatin1String("track");
- extract = QLatin1String("tracks");
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ type = "track"_L1;
+ extract = "tracks"_L1;
+ if (!query.isEmpty()) query.append(u' ');
query.append(title);
}
else {
- type = QLatin1String("album");
- extract = QLatin1String("albums");
+ type = "album"_L1;
+ extract = "albums"_L1;
if (!album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(album);
}
}
@@ -141,11 +143,11 @@ 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(QLatin1String("error")) && json_obj[QLatin1String("error")].isObject()) {
- QJsonObject obj_error = json_obj[QLatin1String("error")].toObject();
- if (obj_error.contains(QLatin1String("status")) && obj_error.contains(QLatin1String("message"))) {
- int status = obj_error[QLatin1String("status")].toInt();
- QString message = obj_error[QLatin1String("message")].toString();
+ if (!json_obj.isEmpty() && json_obj.contains("error"_L1) && json_obj["error"_L1].isObject()) {
+ QJsonObject obj_error = json_obj["error"_L1].toObject();
+ if (obj_error.contains("status"_L1) && obj_error.contains("message"_L1)) {
+ int status = obj_error["status"_L1].toInt();
+ QString message = obj_error["message"_L1].toString();
error = QStringLiteral("%1 (%2)").arg(message).arg(status);
if (status == 401) Deauthenticate();
}
@@ -195,13 +197,13 @@ void SpotifyCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id,
}
json_obj = json_obj[extract].toObject();
- if (!json_obj.contains(QLatin1String("items")) || !json_obj[QLatin1String("items")].isArray()) {
+ if (!json_obj.contains("items"_L1) || !json_obj["items"_L1].isArray()) {
Error(QStringLiteral("%1 object is missing items array.").arg(extract), json_obj);
Q_EMIT SearchFinished(id, CoverProviderSearchResults());
return;
}
- const QJsonArray array_items = json_obj[QLatin1String("items")].toArray();
+ const QJsonArray array_items = json_obj["items"_L1].toArray();
if (array_items.isEmpty()) {
Q_EMIT SearchFinished(id, CoverProviderSearchResults());
return;
@@ -216,33 +218,33 @@ void SpotifyCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id,
QJsonObject obj_item = value_item.toObject();
QJsonObject obj_album = obj_item;
- if (obj_item.contains(QLatin1String("album")) && obj_item[QLatin1String("album")].isObject()) {
- obj_album = obj_item[QLatin1String("album")].toObject();
+ if (obj_item.contains("album"_L1) && obj_item["album"_L1].isObject()) {
+ obj_album = obj_item["album"_L1].toObject();
}
- if (!obj_album.contains(QLatin1String("artists")) || !obj_album.contains(QLatin1String("name")) || !obj_album.contains(QLatin1String("images")) || !obj_album[QLatin1String("artists")].isArray() || !obj_album[QLatin1String("images")].isArray()) {
+ if (!obj_album.contains("artists"_L1) || !obj_album.contains("name"_L1) || !obj_album.contains("images"_L1) || !obj_album["artists"_L1].isArray() || !obj_album["images"_L1].isArray()) {
continue;
}
- const QJsonArray array_artists = obj_album[QLatin1String("artists")].toArray();
- const QJsonArray array_images = obj_album[QLatin1String("images")].toArray();
- QString album = obj_album[QLatin1String("name")].toString();
+ const QJsonArray array_artists = obj_album["artists"_L1].toArray();
+ const QJsonArray array_images = obj_album["images"_L1].toArray();
+ QString album = obj_album["name"_L1].toString();
QStringList artists;
for (const QJsonValue &value_artist : array_artists) {
if (!value_artist.isObject()) continue;
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) continue;
- artists << obj_artist[QLatin1String("name")].toString();
+ if (!obj_artist.contains("name"_L1)) continue;
+ artists << obj_artist["name"_L1].toString();
}
for (const QJsonValue &value_image : array_images) {
if (!value_image.isObject()) continue;
QJsonObject obj_image = value_image.toObject();
- if (!obj_image.contains(QLatin1String("url")) || !obj_image.contains(QLatin1String("width")) || !obj_image.contains(QLatin1String("height"))) continue;
- int width = obj_image[QLatin1String("width")].toInt();
- int height = obj_image[QLatin1String("height")].toInt();
+ if (!obj_image.contains("url"_L1) || !obj_image.contains("width"_L1) || !obj_image.contains("height"_L1)) continue;
+ int width = obj_image["width"_L1].toInt();
+ int height = obj_image["height"_L1].toInt();
if (width < 300 || height < 300) continue;
- QUrl url(obj_image[QLatin1String("url")].toString());
+ QUrl url(obj_image["url"_L1].toString());
CoverProviderSearchResult result;
result.album = album;
result.image_url = url;
diff --git a/src/covermanager/tidalcoverprovider.cpp b/src/covermanager/tidalcoverprovider.cpp
index 10e7e4d23..37592f3e6 100644
--- a/src/covermanager/tidalcoverprovider.cpp
+++ b/src/covermanager/tidalcoverprovider.cpp
@@ -45,6 +45,8 @@
#include "jsoncoverprovider.h"
#include "tidalcoverprovider.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kLimit = 10;
}
@@ -73,14 +75,14 @@ bool TidalCoverProvider::StartSearch(const QString &artist, const QString &album
QString resource;
QString query = artist;
if (album.isEmpty() && !title.isEmpty()) {
- resource = QLatin1String("search/tracks");
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ resource = "search/tracks"_L1;
+ if (!query.isEmpty()) query.append(u' ');
query.append(title);
}
else {
- resource = QLatin1String("search/albums");
+ resource = "search/albums"_L1;
if (!album.isEmpty()) {
- if (!query.isEmpty()) query.append(QLatin1Char(' '));
+ if (!query.isEmpty()) query.append(u' ');
query.append(album);
}
}
@@ -134,10 +136,10 @@ 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(QLatin1String("status")) && json_obj.contains(QLatin1String("userMessage"))) {
- status = json_obj[QLatin1String("status")].toInt();
- sub_status = json_obj[QLatin1String("subStatus")].toInt();
- QString user_message = json_obj[QLatin1String("userMessage")].toString();
+ if (!json_obj.isEmpty() && json_obj.contains("status"_L1) && json_obj.contains("userMessage"_L1)) {
+ status = json_obj["status"_L1].toInt();
+ sub_status = json_obj["subStatus"_L1].toInt();
+ QString user_message = json_obj["userMessage"_L1].toString();
error = QStringLiteral("%1 (%2) (%3)").arg(user_message).arg(status).arg(sub_status);
}
}
@@ -180,12 +182,12 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
return;
}
- if (!json_obj.contains(QLatin1String("items"))) {
+ if (!json_obj.contains("items"_L1)) {
Error(QStringLiteral("Json object is missing items."), json_obj);
Q_EMIT SearchFinished(id, CoverProviderSearchResults());
return;
}
- QJsonValue value_items = json_obj[QLatin1String("items")];
+ QJsonValue value_items = json_obj["items"_L1];
if (!value_items.isArray()) {
Q_EMIT SearchFinished(id, CoverProviderSearchResults());
@@ -207,25 +209,25 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
}
QJsonObject obj_item = value_item.toObject();
- if (!obj_item.contains(QLatin1String("artist"))) {
+ if (!obj_item.contains("artist"_L1)) {
Error(QStringLiteral("Invalid Json reply, items array item is missing artist."), obj_item);
continue;
}
- QJsonValue value_artist = obj_item[QLatin1String("artist")];
+ QJsonValue value_artist = obj_item["artist"_L1];
if (!value_artist.isObject()) {
Error(QStringLiteral("Invalid Json reply, items array item artist is not a object."), value_artist);
continue;
}
QJsonObject obj_artist = value_artist.toObject();
- if (!obj_artist.contains(QLatin1String("name"))) {
+ if (!obj_artist.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, items array item artist is missing name."), obj_artist);
continue;
}
- QString artist = obj_artist[QLatin1String("name")].toString();
+ QString artist = obj_artist["name"_L1].toString();
QJsonObject obj_album;
- if (obj_item.contains(QLatin1String("album"))) {
- QJsonValue value_album = obj_item[QLatin1String("album")];
+ if (obj_item.contains("album"_L1)) {
+ QJsonValue value_album = obj_item["album"_L1];
if (value_album.isObject()) {
obj_album = value_album.toObject();
}
@@ -238,12 +240,12 @@ void TidalCoverProvider::HandleSearchReply(QNetworkReply *reply, const int id) {
obj_album = obj_item;
}
- if (!obj_album.contains(QLatin1String("title")) || !obj_album.contains(QLatin1String("cover"))) {
+ if (!obj_album.contains("title"_L1) || !obj_album.contains("cover"_L1)) {
Error(QStringLiteral("Invalid Json reply, items array item album is missing title or cover."), obj_album);
continue;
}
- QString album = obj_album[QLatin1String("title")].toString();
- QString cover = obj_album[QLatin1String("cover")].toString().replace(QLatin1String("-"), QLatin1String("/"));
+ QString album = obj_album["title"_L1].toString();
+ QString cover = obj_album["cover"_L1].toString().replace("-"_L1, "/"_L1);
CoverProviderSearchResult cover_result;
cover_result.artist = artist;
diff --git a/src/device/connecteddevice.cpp b/src/device/connecteddevice.cpp
index 51ca93c1c..f4ddfd010 100644
--- a/src/device/connecteddevice.cpp
+++ b/src/device/connecteddevice.cpp
@@ -38,6 +38,7 @@
#include "devicemanager.h"
#include "deviceinfo.h"
+using namespace Qt::StringLiterals;
using std::make_shared;
ConnectedDevice::ConnectedDevice(const QUrl &url, DeviceLister *lister, const QString &unique_id, SharedPtr manager, Application *app, const int database_id, const bool first_time, QObject *parent)
@@ -60,7 +61,7 @@ ConnectedDevice::ConnectedDevice(const QUrl &url, DeviceLister *lister, const QS
backend_->moveToThread(app_->database()->thread());
qLog(Debug) << &*backend_ << "for device" << unique_id_ << "moved to thread" << app_->database()->thread();
- if (url_.scheme() != QLatin1String("cdda")) {
+ if (url_.scheme() != "cdda"_L1) {
QObject::connect(&*backend_, &CollectionBackend::TotalSongCountUpdated, this, &ConnectedDevice::BackendTotalSongCountUpdated);
}
diff --git a/src/device/devicedatabasebackend.cpp b/src/device/devicedatabasebackend.cpp
index 9309384b4..3fd1f6b12 100644
--- a/src/device/devicedatabasebackend.cpp
+++ b/src/device/devicedatabasebackend.cpp
@@ -38,6 +38,8 @@
#include "core/scopedtransaction.h"
#include "devicedatabasebackend.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int kDeviceSchemaVersion = 5;
}
@@ -144,13 +146,13 @@ int DeviceDatabaseBackend::AddDevice(const Device &device) {
int id = q.lastInsertId().toInt();
// Create the songs tables for the device
- QString filename(QLatin1String(":/schema/device-schema.sql"));
+ QString filename(":/schema/device-schema.sql"_L1);
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(QLatin1String("%deviceid"), QString::number(id));
+ schema.replace("%deviceid"_L1, QString::number(id));
db_->ExecSchemaCommands(db, schema, 0, true);
diff --git a/src/device/deviceinfo.cpp b/src/device/deviceinfo.cpp
index 1398a8778..5ee3445b8 100644
--- a/src/device/deviceinfo.cpp
+++ b/src/device/deviceinfo.cpp
@@ -34,6 +34,8 @@
#include "devicedatabasebackend.h"
#include "deviceinfo.h"
+using namespace Qt::StringLiterals;
+
DeviceDatabaseBackend::Device DeviceInfo::SaveToDb() const {
DeviceDatabaseBackend::Device ret;
@@ -49,7 +51,7 @@ DeviceDatabaseBackend::Device DeviceInfo::SaveToDb() const {
for (const Backend &backend : backends_) {
unique_ids << backend.unique_id_;
}
- ret.unique_id_ = unique_ids.join(QLatin1Char(','));
+ ret.unique_id_ = unique_ids.join(u',');
return ret;
@@ -64,7 +66,7 @@ void DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device &dev) {
transcode_format_ = dev.transcode_format_;
icon_name_ = dev.icon_name_;
- const QStringList unique_ids = dev.unique_id_.split(QLatin1Char(','));
+ const QStringList unique_ids = dev.unique_id_.split(u',');
for (const QString &id : unique_ids) {
backends_ << Backend(nullptr, id);
}
@@ -90,7 +92,7 @@ const DeviceInfo::Backend *DeviceInfo::BestBackend() const {
void DeviceInfo::LoadIcon(const QVariantList &icons, const QString &name_hint) {
- icon_name_ = QLatin1String("device");
+ icon_name_ = "device"_L1;
if (icons.isEmpty()) {
icon_ = IconLoader::Load(icon_name_);
@@ -121,10 +123,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(QLatin1String("phone"))) icon_name_ = QLatin1String("device-phone");
- else if (hint.contains(QLatin1String("ipod")) || hint.contains(QLatin1String("apple"))) icon_name_ = QLatin1String("device-ipod");
- else if ((hint.contains(QLatin1String("usb"))) && (hint.contains(QLatin1String("reader")))) icon_name_ = QLatin1String("device-usb-flash");
- else if (hint.contains(QLatin1String("usb"))) icon_name_ = QLatin1String("device-usb-drive");
+ if (hint.contains("phone"_L1)) icon_name_ = "device-phone"_L1;
+ else if (hint.contains("ipod"_L1) || hint.contains("apple"_L1)) icon_name_ = "device-ipod"_L1;
+ else if ((hint.contains("usb"_L1)) && (hint.contains("reader"_L1))) icon_name_ = "device-usb-flash"_L1;
+ else if (hint.contains("usb"_L1)) icon_name_ = "device-usb-drive"_L1;
icon_ = IconLoader::Load(icon_name_);
if (!icon_.isNull()) {
return;
@@ -133,7 +135,7 @@ void DeviceInfo::LoadIcon(const QVariantList &icons, const QString &name_hint) {
}
}
- icon_name_ = QLatin1String("device");
+ icon_name_ = "device"_L1;
icon_ = IconLoader::Load(icon_name_);
}
diff --git a/src/device/devicelister.cpp b/src/device/devicelister.cpp
index f4c1a1397..cea3e1822 100644
--- a/src/device/devicelister.cpp
+++ b/src/device/devicelister.cpp
@@ -37,6 +37,8 @@
#include "core/logging.h"
+using namespace Qt::StringLiterals;
+
DeviceLister::DeviceLister(QObject *parent)
: QObject(parent),
thread_(nullptr),
@@ -226,9 +228,9 @@ QUrl DeviceLister::MakeUrlFromLocalPath(const QString &path) const {
}
bool DeviceLister::IsIpod(const QString &path) {
- return QFile::exists(path + QLatin1String("/iTunes_Control")) ||
- QFile::exists(path + QLatin1String("/iPod_Control")) ||
- QFile::exists(path + QLatin1String("/iTunes/iTunes_Control"));
+ return QFile::exists(path + "/iTunes_Control"_L1) ||
+ QFile::exists(path + "/iPod_Control"_L1) ||
+ QFile::exists(path + "/iTunes/iTunes_Control"_L1);
}
QVariantList DeviceLister::GuessIconForPath(const QString &path) {
@@ -277,7 +279,7 @@ QVariantList DeviceLister::GuessIconForPath(const QString &path) {
QVariantList DeviceLister::GuessIconForModel(const QString &vendor, const QString &model) {
QVariantList ret;
- if (vendor.startsWith(QLatin1String("Google")) && model.contains(QLatin1String("Nexus"))) {
+ if (vendor.startsWith("Google"_L1) && model.contains("Nexus"_L1)) {
ret << QStringLiteral("phone-google-nexus-one");
}
return ret;
diff --git a/src/device/devicemanager.cpp b/src/device/devicemanager.cpp
index 6a68d1f21..911500ba0 100644
--- a/src/device/devicemanager.cpp
+++ b/src/device/devicemanager.cpp
@@ -84,6 +84,7 @@
# include "gpoddevice.h"
#endif
+using namespace Qt::StringLiterals;
using std::make_unique;
const int DeviceManager::kDeviceIconSize = 32;
@@ -244,7 +245,7 @@ void DeviceManager::LoadAllDevices() {
void DeviceManager::AddDeviceFromDB(DeviceInfo *info) {
- const QStringList icon_names = info->icon_name_.split(QLatin1Char(','));
+ const QStringList icon_names = info->icon_name_.split(u',');
QVariantList icons;
icons.reserve(icon_names.count());
for (const QString &icon_name : icon_names) {
@@ -603,7 +604,7 @@ SharedPtr DeviceManager::Connect(DeviceInfo *info) {
// If we get here it means that this URL scheme wasn't supported.
// If it was "ipod" or "mtp" then the user compiled out support and the device won't work properly.
- if (url.scheme() == QLatin1String("mtp") || url.scheme() == QLatin1String("gphoto2")) {
+ if (url.scheme() == "mtp"_L1 || url.scheme() == "gphoto2"_L1) {
if (QMessageBox::critical(nullptr, tr("This device will not work properly"),
tr("This is an MTP device, but you compiled Strawberry without libmtp support.") + QStringLiteral(" ") +
tr("If you continue, this device will work slowly and songs copied to it may not work."),
@@ -611,9 +612,9 @@ SharedPtr DeviceManager::Connect(DeviceInfo *info) {
return ret;
}
- if (url.scheme() == QLatin1String("ipod")) {
+ if (url.scheme() == "ipod"_L1) {
if (QMessageBox::critical(nullptr, tr("This device will not work properly"),
- tr("This is an iPod, but you compiled Strawberry without libgpod support.") + QLatin1String(" ") +
+ tr("This is an iPod, but you compiled Strawberry without libgpod support.") + " "_L1 +
tr("If you continue, this device will work slowly and songs copied to it may not work."),
QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort)
return ret;
@@ -628,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(QLatin1String(", "))));
+ app_->AddError(tr("This type of device is not supported: %1").arg(url_strings.join(", "_L1)));
return ret;
}
diff --git a/src/device/deviceview.cpp b/src/device/deviceview.cpp
index ff57616d2..2d8230ea6 100644
--- a/src/device/deviceview.cpp
+++ b/src/device/deviceview.cpp
@@ -67,6 +67,7 @@
#include "deviceproperties.h"
#include "deviceview.h"
+using namespace Qt::StringLiterals;
using std::make_unique;
const int DeviceItemDelegate::kIconPadding = 6;
@@ -143,7 +144,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 ? QLatin1String("") : QLatin1String("s"));
+ status_text = tr("%1 song%2").arg(count).arg(count == 1 ? ""_L1 : "s"_L1);
}
else {
status_text = idx.data(DeviceManager::Role_MountPath).toString();
diff --git a/src/device/giolister.cpp b/src/device/giolister.cpp
index 04e73686f..bb3280b5f 100644
--- a/src/device/giolister.cpp
+++ b/src/device/giolister.cpp
@@ -47,6 +47,8 @@
#include "devicelister.h"
#include "giolister.h"
+using namespace Qt::StringLiterals;
+
QString GioLister::DeviceInfo::unique_id() const {
if (!volume_root_uri.isEmpty()) return volume_root_uri;
@@ -69,7 +71,7 @@ bool GioLister::DeviceInfo::is_suitable() const {
if (filesystem_type.isEmpty()) return true;
- return filesystem_type != QLatin1String("udf") && filesystem_type != QLatin1String("smb") && filesystem_type != QLatin1String("cifs") && filesystem_type != QLatin1String("ssh") && filesystem_type != QLatin1String("isofs");
+ return filesystem_type != "udf"_L1 && filesystem_type != "smb"_L1 && filesystem_type != "cifs"_L1 && filesystem_type != "ssh"_L1 && filesystem_type != "isofs"_L1;
}
@@ -295,12 +297,12 @@ void GioLister::VolumeAdded(GVolume *volume) {
DeviceInfo info;
info.ReadVolumeInfo(volume);
- if (info.volume_root_uri.startsWith(QLatin1String("afc://")) || info.volume_root_uri.startsWith(QLatin1String("gphoto2://"))) {
+ if (info.volume_root_uri.startsWith("afc://"_L1) || info.volume_root_uri.startsWith("gphoto2://"_L1)) {
// Handled by iLister.
return;
}
#ifdef HAVE_AUDIOCD
- if (info.volume_root_uri.startsWith(QLatin1String("cdda"))) {
+ if (info.volume_root_uri.startsWith("cdda"_L1)) {
// Audio CD devices are already handled by CDDA lister
return;
}
@@ -339,12 +341,12 @@ void GioLister::MountAdded(GMount *mount) {
DeviceInfo info;
info.ReadVolumeInfo(g_mount_get_volume(mount));
- if (info.volume_root_uri.startsWith(QLatin1String("afc://")) || info.volume_root_uri.startsWith(QLatin1String("gphoto2://"))) {
+ if (info.volume_root_uri.startsWith("afc://"_L1) || info.volume_root_uri.startsWith("gphoto2://"_L1)) {
// Handled by iLister.
return;
}
#ifdef HAVE_AUDIOCD
- if (info.volume_root_uri.startsWith(QLatin1String("cdda"))) {
+ if (info.volume_root_uri.startsWith("cdda"_L1)) {
// Audio CD devices are already handled by CDDA lister
return;
}
@@ -506,7 +508,7 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount *mount) {
// Query the file's info for a filesystem ID
// Only afc devices (that I know of) give reliably unique IDs
- if (filesystem_type == QLatin1String("afc")) {
+ if (filesystem_type == "afc"_L1) {
error = nullptr;
info = g_file_query_info(root, G_FILE_ATTRIBUTE_ID_FILESYSTEM, G_FILE_QUERY_INFO_NONE, nullptr, &error);
if (error) {
@@ -580,7 +582,7 @@ void GioLister::UpdateDeviceFreeSpace(const QString &id) {
{
QMutexLocker l(&mutex_);
- if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_.value(id).volume_root_uri.startsWith(QLatin1String("mtp://"))) return;
+ if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_.value(id).volume_root_uri.startsWith("mtp://"_L1)) return;
GFile *root = g_mount_get_root(devices_.value(id).mount_ptr);
@@ -605,7 +607,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(QLatin1String("mtp://")) && !devices_[id].volume_root_uri.startsWith(QLatin1String("gphoto2://"));
+ return devices_.contains(id) && !devices_[id].mount_ptr && !devices_[id].volume_root_uri.startsWith("mtp://"_L1) && !devices_[id].volume_root_uri.startsWith("gphoto2://"_L1);
}
@@ -632,7 +634,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_.value(id).volume_root_uri.startsWith(QLatin1String("mtp://"))) return;
+ if (!devices_.contains(id) || !devices_[id].mount_ptr || devices_.value(id).volume_root_uri.startsWith("mtp://"_L1)) return;
const DeviceInfo device_info = devices_.value(id);
diff --git a/src/device/gpoddevice.cpp b/src/device/gpoddevice.cpp
index 3c591afc1..eee333c9b 100644
--- a/src/device/gpoddevice.cpp
+++ b/src/device/gpoddevice.cpp
@@ -325,10 +325,10 @@ bool GPodDevice::RemoveTrackFromITunesDb(const QString &path, const QString &rel
QString ipod_filename = path;
if (!relative_to.isEmpty() && path.startsWith(relative_to)) {
- ipod_filename.remove(0, relative_to.length() + (relative_to.endsWith(QLatin1Char('/')) ? -1 : 0));
+ ipod_filename.remove(0, relative_to.length() + (relative_to.endsWith(u'/') ? -1 : 0));
}
- ipod_filename.replace(QLatin1Char('/'), QLatin1Char(':'));
+ ipod_filename.replace(u'/', u':');
// Find the track in the itdb, identify it by its filename
Itdb_Track *track = nullptr;
diff --git a/src/device/macosdevicelister.mm b/src/device/macosdevicelister.mm
index 75b42301f..dbc55107c 100644
--- a/src/device/macosdevicelister.mm
+++ b/src/device/macosdevicelister.mm
@@ -53,6 +53,8 @@
#import
#import
+using namespace Qt::Literals::StringLiterals;
+
#ifndef kUSBSerialNumberString
#define kUSBSerialNumberString "USB Serial Number"
#endif
@@ -134,9 +136,9 @@ bool MacOsDeviceLister::Init() {
}
MTPDevice d;
- d.vendor = QLatin1String("SanDisk");
+ d.vendor = "SanDisk"_L1;
d.vendor_id = 0x781;
- d.product = QLatin1String("Sansa Clip+");
+ d.product = "Sansa Clip+"_L1;
d.product_id = 0x74d0;
d.quirks = 0x2 | 0x4 | 0x40 | 0x4000;
@@ -299,7 +301,7 @@ QString GetIconForDevice(io_object_t device) {
scoped_nsobject bundle_url(reinterpret_cast(KextManagerCreateURLForBundleIdentifier(kCFAllocatorDefault, reinterpret_cast(bundle))));
QString path = QString::fromUtf8([[bundle_url path] UTF8String]);
- path += QLatin1String("/Contents/Resources/");
+ path += "/Contents/Resources/"_L1;
path += QString::fromUtf8([file UTF8String]);
return path;
}
@@ -312,7 +314,7 @@ QString GetSerialForDevice(io_object_t device) {
const QString serial = GetUSBRegistryEntryString(device, CFSTR(kUSBSerialNumberString));
if (!serial.isEmpty()) {
- return QLatin1String("USB/") + serial;
+ return "USB/"_L1 + serial;
}
return QString();
@@ -322,7 +324,7 @@ QString GetSerialForDevice(io_object_t device) {
QString GetSerialForMTPDevice(io_object_t device) {
scoped_nsobject serial(reinterpret_cast(GetPropertyForDevice(device, CFSTR(kUSBSerialNumberString))));
- return QLatin1String("MTP/") + QString::fromUtf8([serial UTF8String]);
+ return "MTP/"_L1 + QString::fromUtf8([serial UTF8String]);
}
@@ -596,14 +598,14 @@ void MacOsDeviceLister::USBDeviceAddedCallback(void *refcon, io_iterator_t it) {
// Because this was designed by MS, the characters are in UTF-16 (LE?).
QString str = QString::fromUtf16(reinterpret_cast(data.data() + 2), (data.size() / 2) - 2);
- if (str.startsWith(QLatin1String("MSFT100"))) {
+ if (str.startsWith("MSFT100"_L1)) {
// We got the OS descriptor!
char vendor_code = data[16];
ret = DeviceRequest(dev, kUSBIn, kUSBVendor, kUSBDevice, vendor_code, 0, 4, 256, &data);
if (!ret || data.at(0) != 0x28)
continue;
- if (QString::fromLatin1(data.data() + 0x12, 3) != QLatin1String("MTP")) {
+ if (QString::fromLatin1(data.data() + 0x12, 3) != "MTP"_L1) {
// Not quite.
continue;
}
@@ -613,7 +615,7 @@ void MacOsDeviceLister::USBDeviceAddedCallback(void *refcon, io_iterator_t it) {
continue;
}
- if (QString::fromLatin1(data.data() + 0x12, 3) != QLatin1String("MTP")) {
+ if (QString::fromLatin1(data.data() + 0x12, 3) != "MTP"_L1) {
// Not quite.
continue;
}
@@ -674,7 +676,7 @@ void MacOsDeviceLister::FoundMTPDevice(const MTPDevice &device, const QString &s
}
-bool IsMTPSerial(const QString &serial) { return serial.startsWith(QLatin1String("MTP")); }
+bool IsMTPSerial(const QString &serial) { return serial.startsWith("MTP"_L1); }
bool MacOsDeviceLister::IsCDDevice(const QString &serial) const {
return cd_devices_.contains(serial);
diff --git a/src/device/mtpdevice.cpp b/src/device/mtpdevice.cpp
index 30fbbe799..2c98e1b1f 100644
--- a/src/device/mtpdevice.cpp
+++ b/src/device/mtpdevice.cpp
@@ -44,6 +44,8 @@
#include "mtploader.h"
#include "mtpconnection.h"
+using namespace Qt::StringLiterals;
+
class DeviceLister;
class DeviceManager;
@@ -187,7 +189,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(QLatin1String(""));
+ metadata_on_device.set_albumartist(""_L1);
songs_to_add_ << metadata_on_device;
// Remove the original if requested
@@ -226,7 +228,7 @@ bool MtpDevice::DeleteFromStorage(const DeleteJob &job) {
// Extract the ID from the song's URL
QString filename = job.metadata_.url().path();
- filename.remove(QLatin1Char('/'));
+ filename.remove(u'/');
bool ok = false;
uint32_t id = filename.toUInt(&ok);
diff --git a/src/device/udisks2lister.cpp b/src/device/udisks2lister.cpp
index 92ef80113..f62f51415 100644
--- a/src/device/udisks2lister.cpp
+++ b/src/device/udisks2lister.cpp
@@ -54,6 +54,7 @@
#include "udisks2filesystem.h"
#include "udisks2job.h"
+using namespace Qt::StringLiterals;
using std::make_unique;
using std::make_shared;
@@ -83,7 +84,7 @@ QVariantList Udisks2Lister::DeviceIcons(const QString &id) {
QString Udisks2Lister::DeviceManufacturer(const QString &id) {
QReadLocker locker(&device_data_lock_);
- if (!device_data_.contains(id)) return QLatin1String("");
+ if (!device_data_.contains(id)) return ""_L1;
return device_data_.value(id).vendor;
}
@@ -91,7 +92,7 @@ QString Udisks2Lister::DeviceManufacturer(const QString &id) {
QString Udisks2Lister::DeviceModel(const QString &id) {
QReadLocker locker(&device_data_lock_);
- if (!device_data_.contains(id)) return QLatin1String("");
+ if (!device_data_.contains(id)) return ""_L1;
return device_data_.value(id).model;
}
@@ -122,7 +123,7 @@ QVariantMap Udisks2Lister::DeviceHardwareInfo(const QString &id) {
const PartitionData data = device_data_.value(id);
result[QStringLiteral(QT_TR_NOOP("D-Bus path"))] = data.dbus_path;
result[QStringLiteral(QT_TR_NOOP("Serial number"))] = data.serial;
- result[QStringLiteral(QT_TR_NOOP("Mount points"))] = data.mount_paths.join(QLatin1String(", "));
+ result[QStringLiteral(QT_TR_NOOP("Mount points"))] = data.mount_paths.join(", "_L1);
result[QStringLiteral(QT_TR_NOOP("Partition label"))] = data.label;
result[QStringLiteral(QT_TR_NOOP("UUID"))] = data.uuid;
@@ -133,7 +134,7 @@ QVariantMap Udisks2Lister::DeviceHardwareInfo(const QString &id) {
QString Udisks2Lister::MakeFriendlyName(const QString &id) {
QReadLocker locker(&device_data_lock_);
- if (!device_data_.contains(id)) return QLatin1String("");
+ if (!device_data_.contains(id)) return ""_L1;
return device_data_.value(id).friendly_name;
}
@@ -226,17 +227,17 @@ void Udisks2Lister::DBusInterfaceAdded(const QDBusObjectPath &path, const Interf
for (auto interface = interfaces.constBegin(); interface != interfaces.constEnd(); ++interface) {
- if (interface.key() != QLatin1String("org.freedesktop.UDisks2.Job")) continue;
+ if (interface.key() != "org.freedesktop.UDisks2.Job"_L1) continue;
SharedPtr job = make_shared(QLatin1String(kUDisks2Service), path.path(), QDBusConnection::systemBus());
if (!job->isValid()) continue;
bool is_mount_job = false;
- if (job->operation() == QLatin1String("filesystem-mount")) {
+ if (job->operation() == "filesystem-mount"_L1) {
is_mount_job = true;
}
- else if (job->operation() == QLatin1String("filesystem-unmount")) {
+ else if (job->operation() == "filesystem-unmount"_L1) {
is_mount_job = false;
}
else {
diff --git a/src/dialogs/about.cpp b/src/dialogs/about.cpp
index 5117d2685..a4361f15f 100644
--- a/src/dialogs/about.cpp
+++ b/src/dialogs/about.cpp
@@ -36,6 +36,8 @@
#include "about.h"
#include "ui_about.h"
+using namespace Qt::StringLiterals;
+
About::About(QWidget *parent) : QDialog(parent), ui_{} {
ui_.setupUi(this);
@@ -106,31 +108,31 @@ QString About::MainHtml() const {
QString ret;
- ret += QLatin1String("");
+ ret += "
"_L1;
ret += tr("Version %1").arg(QCoreApplication::applicationVersion());
- ret += QLatin1String("
");
+ ret += "
"_L1;
- ret += QLatin1String("");
+ ret += "
"_L1;
ret += tr("Strawberry is a music player and music collection organizer.");
- ret += QLatin1String("
");
+ ret += "
"_L1;
ret += tr("It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles.");
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
+ ret += "
"_L1;
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 += QLatin1String("
");
+ ret += "
"_L1;
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 += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
+ ret += "
"_L1;
ret += tr("If you like Strawberry and can make use of it, consider sponsoring or donating.");
- ret += QLatin1String("
");
+ ret += "
"_L1;
ret += tr("You can sponsor the author on %1. You can also make a one-time payment through %2.").arg(
QStringLiteral("GitHub sponsors").arg(palette().text().color().name()),
QStringLiteral("paypal.me/jonaskvinge").arg(palette().text().color().name())
);
- ret += QLatin1String("
");
+ ret += ""_L1;
return ret;
@@ -140,54 +142,54 @@ QString About::ContributorsHtml() const {
QString ret;
- ret += QLatin1String("");
- ret += QLatin1String("");
+ ret += "
"_L1;
+ ret += ""_L1;
ret += tr("Author and maintainer");
- ret += QLatin1String("");
+ ret += ""_L1;
for (const Person &person : strawberry_authors_) {
- ret += QLatin1String("
") + PersonToHtml(person);
+ ret += "
"_L1 + PersonToHtml(person);
}
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
- ret += QLatin1String("");
+ ret += "
"_L1;
+ ret += ""_L1;
ret += tr("Contributors");
- ret += QLatin1String("");
+ ret += ""_L1;
for (const Person &person : strawberry_contributors_) {
- ret += QLatin1String("
") + PersonToHtml(person);
+ ret += "
"_L1 + PersonToHtml(person);
}
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
- ret += QLatin1String("");
+ ret += "
"_L1;
+ ret += ""_L1;
ret += tr("Clementine authors");
- ret += QLatin1String("");
+ ret += ""_L1;
for (const Person &person : clementine_authors_) {
- ret += QLatin1String("
") + PersonToHtml(person);
+ ret += "
"_L1 + PersonToHtml(person);
}
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
- ret += QLatin1String("");
+ ret += "
"_L1;
+ ret += ""_L1;
ret += tr("Clementine contributors");
- ret += QLatin1String("");
+ ret += ""_L1;
for (const Person &person : clementine_contributors_) {
- ret += QLatin1String("
") + PersonToHtml(person);
+ ret += "
"_L1 + PersonToHtml(person);
}
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
- ret += QLatin1String("");
+ ret += "
"_L1;
+ ret += ""_L1;
ret += tr("Thanks to");
- ret += QLatin1String("");
+ ret += ""_L1;
for (const Person &person : strawberry_thanks_) {
- ret += QLatin1String("
") + PersonToHtml(person);
+ ret += "
"_L1 + PersonToHtml(person);
}
- ret += QLatin1String("
");
+ ret += ""_L1;
- ret += QLatin1String("");
+ ret += "
"_L1;
ret += tr("Thanks to all the other Amarok and Clementine contributors.");
- ret += QLatin1String("
");
+ ret += ""_L1;
return ret;
}
diff --git a/src/dialogs/console.cpp b/src/dialogs/console.cpp
index 5c6f4a06e..bd138ed4e 100644
--- a/src/dialogs/console.cpp
+++ b/src/dialogs/console.cpp
@@ -79,7 +79,7 @@ void Console::RunQuery() {
values.append(record.value(i).toString());
}
- ui_.output->append(values.join(QLatin1Char('|')));
+ ui_.output->append(values.join(u'|'));
}
diff --git a/src/dialogs/edittagdialog.cpp b/src/dialogs/edittagdialog.cpp
index 3a43c8fa6..10db15b27 100644
--- a/src/dialogs/edittagdialog.cpp
+++ b/src/dialogs/edittagdialog.cpp
@@ -101,6 +101,8 @@
#include "ui_edittagdialog.h"
#include "tagreadermessages.pb.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr char kTagsDifferentHintText[] = QT_TR_NOOP("(different across multiple songs)");
constexpr char kArtDifferentHintText[] = QT_TR_NOOP("Different art across multiple songs.");
@@ -476,21 +478,21 @@ void EditTagDialog::SetSongListVisibility(bool visible) {
QVariant EditTagDialog::Data::value(const Song &song, const QString &id) {
- if (id == QLatin1String("title")) return song.title();
- if (id == QLatin1String("artist")) return song.artist();
- if (id == QLatin1String("album")) return song.album();
- if (id == QLatin1String("albumartist")) return song.albumartist();
- if (id == QLatin1String("composer")) return song.composer();
- if (id == QLatin1String("performer")) return song.performer();
- if (id == QLatin1String("grouping")) return song.grouping();
- if (id == QLatin1String("genre")) return song.genre();
- if (id == QLatin1String("comment")) return song.comment();
- if (id == QLatin1String("lyrics")) return song.lyrics();
- if (id == QLatin1String("track")) return song.track();
- if (id == QLatin1String("disc")) return song.disc();
- if (id == QLatin1String("year")) return song.year();
- if (id == QLatin1String("compilation")) return song.compilation();
- if (id == QLatin1String("rating")) { return song.rating(); }
+ if (id == "title"_L1) return song.title();
+ if (id == "artist"_L1) return song.artist();
+ if (id == "album"_L1) return song.album();
+ if (id == "albumartist"_L1) return song.albumartist();
+ if (id == "composer"_L1) return song.composer();
+ if (id == "performer"_L1) return song.performer();
+ if (id == "grouping"_L1) return song.grouping();
+ if (id == "genre"_L1) return song.genre();
+ if (id == "comment"_L1) return song.comment();
+ if (id == "lyrics"_L1) return song.lyrics();
+ if (id == "track"_L1) return song.track();
+ if (id == "disc"_L1) return song.disc();
+ if (id == "year"_L1) return song.year();
+ if (id == "compilation"_L1) return song.compilation();
+ if (id == "rating"_L1) { return song.rating(); }
qLog(Warning) << "Unknown ID" << id;
return QVariant();
@@ -498,21 +500,21 @@ QVariant EditTagDialog::Data::value(const Song &song, const QString &id) {
void EditTagDialog::Data::set_value(const QString &id, const QVariant &value) {
- if (id == QLatin1String("title")) current_.set_title(value.toString());
- else if (id == QLatin1String("artist")) current_.set_artist(value.toString());
- else if (id == QLatin1String("album")) current_.set_album(value.toString());
- else if (id == QLatin1String("albumartist")) current_.set_albumartist(value.toString());
- else if (id == QLatin1String("composer")) current_.set_composer(value.toString());
- else if (id == QLatin1String("performer")) current_.set_performer(value.toString());
- else if (id == QLatin1String("grouping")) current_.set_grouping(value.toString());
- else if (id == QLatin1String("genre")) current_.set_genre(value.toString());
- else if (id == QLatin1String("comment")) current_.set_comment(value.toString());
- else if (id == QLatin1String("lyrics")) current_.set_lyrics(value.toString());
- else if (id == QLatin1String("track")) current_.set_track(value.toInt());
- else if (id == QLatin1String("disc")) current_.set_disc(value.toInt());
- else if (id == QLatin1String("year")) current_.set_year(value.toInt());
- else if (id == QLatin1String("compilation")) current_.set_compilation(value.toBool());
- else if (id == QLatin1String("rating")) { current_.set_rating(value.toFloat()); }
+ if (id == "title"_L1) current_.set_title(value.toString());
+ else if (id == "artist"_L1) current_.set_artist(value.toString());
+ else if (id == "album"_L1) current_.set_album(value.toString());
+ else if (id == "albumartist"_L1) current_.set_albumartist(value.toString());
+ else if (id == "composer"_L1) current_.set_composer(value.toString());
+ else if (id == "performer"_L1) current_.set_performer(value.toString());
+ else if (id == "grouping"_L1) current_.set_grouping(value.toString());
+ else if (id == "genre"_L1) current_.set_genre(value.toString());
+ else if (id == "comment"_L1) current_.set_comment(value.toString());
+ else if (id == "lyrics"_L1) current_.set_lyrics(value.toString());
+ else if (id == "track"_L1) current_.set_track(value.toInt());
+ else if (id == "disc"_L1) current_.set_disc(value.toInt());
+ else if (id == "year"_L1) current_.set_year(value.toInt());
+ else if (id == "compilation"_L1) current_.set_compilation(value.toBool());
+ else if (id == "rating"_L1) { current_.set_rating(value.toFloat()); }
else qLog(Warning) << "Unknown ID" << id;
}
@@ -692,12 +694,12 @@ void EditTagDialog::SelectionChanged() {
QString summary;
if (indexes.count() == 1) {
- summary += QLatin1String("") + first_song.PrettyTitleWithArtist().toHtmlEscaped() + QLatin1String("
");
+ summary += ""_L1 + first_song.PrettyTitleWithArtist().toHtmlEscaped() + "
"_L1;
}
else {
- summary += QLatin1String("");
+ summary += "
"_L1;
summary += tr("%1 songs selected.").arg(indexes.count());
- summary += QLatin1String("
");
+ summary += ""_L1;
}
ui_->tags_summary->setText(summary);
@@ -864,7 +866,7 @@ QString EditTagDialog::GetArtSummary(const Song &song, const AlbumCoverLoaderRes
}
if (!song.is_collection_song()) {
- if (!summary.isEmpty()) summary += QLatin1String("
");
+ if (!summary.isEmpty()) summary += "
"_L1;
summary = tr("Album cover editing is only available for collection songs.");
}
@@ -911,8 +913,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 += QLatin1String("
");
- summary += QLatin1String("
");
+ summary += "
"_L1;
+ summary += "
"_L1;
summary += GetArtSummary(data_[idx.row()].current_, result.type);
ui_->summary->setText(summary);
}
@@ -938,8 +940,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 += QLatin1String("
");
- summary += QLatin1String("
");
+ summary += "
"_L1;
+ summary += "
"_L1;
if (cover_action == UpdateCoverAction::None) {
summary += GetArtSummary(first_song, result.type);
}
diff --git a/src/dialogs/errordialog.cpp b/src/dialogs/errordialog.cpp
index 3c3381877..abb6d4f5a 100644
--- a/src/dialogs/errordialog.cpp
+++ b/src/dialogs/errordialog.cpp
@@ -35,6 +35,8 @@
#include "errordialog.h"
#include "ui_errordialog.h"
+using namespace Qt::StringLiterals;
+
ErrorDialog::ErrorDialog(QWidget *parent)
: QDialog(parent),
ui_(new Ui_ErrorDialog) {
@@ -83,7 +85,7 @@ void ErrorDialog::UpdateContent() {
QString html;
for (const QString &message : std::as_const(current_messages_)) {
if (!html.isEmpty()) {
- html += QLatin1String("
");
+ html += "
"_L1;
}
html += message.toHtmlEscaped();
}
diff --git a/src/dialogs/snapdialog.cpp b/src/dialogs/snapdialog.cpp
index f73f334f1..ea79cf139 100644
--- a/src/dialogs/snapdialog.cpp
+++ b/src/dialogs/snapdialog.cpp
@@ -25,6 +25,8 @@
#include "snapdialog.h"
#include "ui_messagedialog.h"
+using namespace Qt::StringLiterals;
+
SnapDialog::SnapDialog(QWidget *parent) : MessageDialog(parent) {
setWindowTitle(tr("Strawberry is running as a Snap"));
@@ -34,56 +36,56 @@ SnapDialog::SnapDialog(QWidget *parent) : MessageDialog(parent) {
ui_->label_logo->setPixmap(pixmap);
QString text;
- text += QLatin1String("");
+ text += "
"_L1;
text += tr("It is detected that Strawberry is running as a Snap");
- text += QLatin1String("
");
+ text += ""_L1;
- text += QLatin1String("");
+ text += "
"_L1;
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 += QLatin1String("
");
+ text += ""_L1;
- text += QLatin1String("");
- text += QLatin1String("Strawberry is available natively in the official package repositories for Fedora, openSUSE, Mageia, Arch, Manjaro, MX Linux and most other popular Linux distributions.");
- text += QLatin1String("
");
+ text += ""_L1;
+ text += "Strawberry is available natively in the official package repositories for Fedora, openSUSE, Mageia, Arch, Manjaro, MX Linux and most other popular Linux distributions."_L1;
+ text += "
"_L1;
- text += QLatin1String("");
+ text += "
"_L1;
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 += QLatin1String("
");
+ text += ""_L1;
- text += QLatin1String("");
+ text += "
"_L1;
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 += QLatin1String("
");
+ text += ""_L1;
- text += QLatin1String("");
+ text += "
"_L1;
text += tr("For a better experience please consider the other options above.");
- text += QLatin1String("
");
+ text += ""_L1;
- text += QLatin1String("");
+ text += "
"_L1;
text += tr("Copy your strawberry.conf and strawberry.db from your ~/snap directory to avoid losing configuration before you uninstall the snap:");
- text += QLatin1String("
");
- text += QLatin1String("cp ~/snap/strawberry/current/.config/strawberry/strawberry.conf ~/.config/strawberry/strawberry.conf
");
- text += QLatin1String("cp ~/snap/strawberry/current/.local/share/strawberry/strawberry/strawberry.db ~/.local/share/strawberry/strawberry/strawberry.db
");
- text += QLatin1String("
");
- text += QLatin1String("");
+ text += "
"_L1;
+ text += "cp ~/snap/strawberry/current/.config/strawberry/strawberry.conf ~/.config/strawberry/strawberry.conf
"_L1;
+ text += "cp ~/snap/strawberry/current/.local/share/strawberry/strawberry/strawberry.db ~/.local/share/strawberry/strawberry/strawberry.db
"_L1;
+ text += "
"_L1;
+ text += ""_L1;
text += tr("Uninstall the snap with:");
- text += QLatin1String("
");
- text += QLatin1String("snap remove strawberry");
- text += QLatin1String("
");
- text += QLatin1String("");
+ text += "
"_L1;
+ text += "snap remove strawberry"_L1;
+ text += "
"_L1;
+ text += ""_L1;
text += tr("Install strawberry through PPA:");
- text += QLatin1String("
");
- text += QLatin1String("sudo add-apt-repository ppa:jonaski/strawberry
");
- text += QLatin1String("sudo apt-get update
");
- text += QLatin1String("sudo apt install strawberry");
- text += QLatin1String("
");
- text += QLatin1String("");
+ text += "
"_L1;
+ text += "sudo add-apt-repository ppa:jonaski/strawberry
"_L1;
+ text += "sudo apt-get update
"_L1;
+ text += "sudo apt install strawberry"_L1;
+ text += ""_L1;
+ text += ""_L1;
ui_->label_text->setText(text);
ui_->label_text->adjustSize();
adjustSize();
settings_group_ = QLatin1String(MainWindow::kSettingsGroup);
- do_not_show_message_again_ = QLatin1String("ignore_snap");
+ do_not_show_message_again_ = "ignore_snap"_L1;
if (parent) {
Utilities::CenterWidgetOnScreen(Utilities::GetScreen(parent), this);
diff --git a/src/engine/alsapcmdevicefinder.cpp b/src/engine/alsapcmdevicefinder.cpp
index 9bfa964c4..bdba97175 100644
--- a/src/engine/alsapcmdevicefinder.cpp
+++ b/src/engine/alsapcmdevicefinder.cpp
@@ -52,14 +52,14 @@ EngineDeviceList AlsaPCMDeviceFinder::ListDevices() {
for (char *desc_i = hint_desc; desc_i && *desc_i != '\0'; ++desc_i) {
if (*desc_i == '\n') {
*desc_i = '\0';
- if (!description.isEmpty()) description.append(QLatin1Char(' '));
+ if (!description.isEmpty()) description.append(u' ');
description.append(QString::fromUtf8(desc_last));
desc_last = desc_i + 1;
}
}
if (desc_last) {
- if (!description.isEmpty()) description.append(QLatin1Char(' '));
+ if (!description.isEmpty()) description.append(u' ');
description.append(QString::fromUtf8(desc_last));
}
diff --git a/src/engine/devicefinders.cpp b/src/engine/devicefinders.cpp
index c99ea38b6..0de6183c1 100644
--- a/src/engine/devicefinders.cpp
+++ b/src/engine/devicefinders.cpp
@@ -49,6 +49,8 @@
# endif // _MSC_VER
#endif // Q_OS_WIN32
+using namespace Qt::StringLiterals;
+
DeviceFinders::DeviceFinders(QObject *parent) : QObject(parent) {
setObjectName(QLatin1String(metaObject()->className()));
diff --git a/src/engine/ebur128analysis.cpp b/src/engine/ebur128analysis.cpp
index 19cb113e7..83a095e43 100644
--- a/src/engine/ebur128analysis.cpp
+++ b/src/engine/ebur128analysis.cpp
@@ -45,6 +45,7 @@
#include "ebur128analysis.h"
+using namespace Qt::StringLiterals;
using std::unique_ptr;
namespace {
@@ -216,16 +217,16 @@ FrameFormat::FrameFormat(GstCaps *caps) : channels(0), channel_mask(0), samplera
channel_mask = gst_value_get_bitmask(value);
}
- if (format_str == QLatin1String("S16LE")) {
+ if (format_str == "S16LE"_L1) {
format = DataFormat::S16;
}
- else if (format_str == QLatin1String("S32LE")) {
+ else if (format_str == "S32LE"_L1) {
format = DataFormat::S32;
}
- else if (format_str == QLatin1String("F32LE")) {
+ else if (format_str == "F32LE"_L1) {
format = DataFormat::FP32;
}
- else if (format_str == QLatin1String("F64LE")) {
+ else if (format_str == "F64LE"_L1) {
format = DataFormat::FP64;
}
else {
diff --git a/src/engine/enginebase.cpp b/src/engine/enginebase.cpp
index b772f4348..c78da34c4 100644
--- a/src/engine/enginebase.cpp
+++ b/src/engine/enginebase.cpp
@@ -41,6 +41,8 @@
# include "settings/spotifysettingspage.h"
#endif
+using namespace Qt::StringLiterals;
+
EngineBase::EngineBase(QObject *parent)
: QObject(parent),
exclusive_mode_(false),
@@ -83,8 +85,8 @@ EngineBase::~EngineBase() = default;
EngineBase::Type EngineBase::TypeFromName(const QString &name) {
- if (name.compare(QLatin1String("gstreamer"), Qt::CaseInsensitive) == 0) return Type::GStreamer;
- if (name.compare(QLatin1String("vlc"), Qt::CaseInsensitive) == 0) return Type::VLC;
+ if (name.compare("gstreamer"_L1, Qt::CaseInsensitive) == 0) return Type::GStreamer;
+ if (name.compare("vlc"_L1, Qt::CaseInsensitive) == 0) return Type::VLC;
return Type::None;
@@ -207,7 +209,7 @@ void EngineBase::ReloadSettings() {
bool http2_enabled = s.value("http2", false).toBool();
if (http2_enabled != http2_enabled_) {
http2_enabled_ = http2_enabled;
- Utilities::SetEnv("SOUP_FORCE_HTTP1", http2_enabled_ ? QLatin1String("") : QStringLiteral("1"));
+ Utilities::SetEnv("SOUP_FORCE_HTTP1", http2_enabled_ ? ""_L1 : QStringLiteral("1"));
qLog(Debug) << "SOUP_FORCE_HTTP1:" << (http2_enabled_ ? "OFF" : "ON");
}
diff --git a/src/engine/enginedevice.cpp b/src/engine/enginedevice.cpp
index f618492c0..133245f79 100644
--- a/src/engine/enginedevice.cpp
+++ b/src/engine/enginedevice.cpp
@@ -19,29 +19,31 @@
#include "enginedevice.h"
+using namespace Qt::StringLiterals;
+
EngineDevice::EngineDevice() : card(0), device(0) {}
QString EngineDevice::GuessIconName() const {
- if (description.contains(QLatin1String("mcintosh"), Qt::CaseInsensitive)) {
+ if (description.contains("mcintosh"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("mcintosh");
}
- if (description.contains(QLatin1String("electrocompaniet"), Qt::CaseInsensitive)) {
+ if (description.contains("electrocompaniet"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("electrocompaniet");
}
- if (description.contains(QLatin1String("intel"), Qt::CaseInsensitive)) {
+ if (description.contains("intel"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("intel");
}
- if (description.contains(QLatin1String("realtek"), Qt::CaseInsensitive)) {
+ if (description.contains("realtek"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("realtek");
}
- if (description.contains(QLatin1String("nvidia"), Qt::CaseInsensitive)) {
+ if (description.contains("nvidia"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("nvidia");
}
- if (description.contains(QLatin1String("headset"), Qt::CaseInsensitive)) {
+ if (description.contains("headset"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("headset");
}
- if (description.contains(QLatin1String("pulseaudio"), Qt::CaseInsensitive)) {
+ if (description.contains("pulseaudio"_L1, Qt::CaseInsensitive)) {
return QStringLiteral("pulseaudio");
}
diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp
index 854a2255d..3ce7f0752 100644
--- a/src/engine/gstengine.cpp
+++ b/src/engine/gstengine.cpp
@@ -61,6 +61,7 @@
#include "gstbufferconsumer.h"
#include "enginemetadata.h"
+using namespace Qt::StringLiterals;
using std::make_shared;
const char *GstEngine::kAutoSink = "autoaudiosink";
@@ -455,24 +456,24 @@ 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));
- const QStringList classes = metadata.split(QLatin1Char('/'));
- if (classes.contains(QLatin1String("Audio"), Qt::CaseInsensitive) && (classes.contains(QLatin1String("Sink"), Qt::CaseInsensitive) || (classes.contains(QLatin1String("Source"), Qt::CaseInsensitive) && name.contains(QLatin1String("sink"))))) {
+ const QStringList classes = metadata.split(u'/');
+ if (classes.contains("Audio"_L1, Qt::CaseInsensitive) && (classes.contains("Sink"_L1, Qt::CaseInsensitive) || (classes.contains("Source"_L1, Qt::CaseInsensitive) && name.contains("sink"_L1)))) {
QString description = QString::fromUtf8(gst_element_factory_get_metadata(factory, GST_ELEMENT_METADATA_DESCRIPTION));
- if (name == QLatin1String("wasapi2sink") && description == QLatin1String("Stream audio to an audio capture device through WASAPI")) {
- description.append(QLatin1Char('2'));
+ if (name == "wasapi2sink"_L1 && description == "Stream audio to an audio capture device through WASAPI"_L1) {
+ description.append(u'2');
}
- else if (name == QLatin1String("pipewiresink") && description == QLatin1String("Send video to PipeWire")) {
- description = QLatin1String("Send audio to PipeWire");
+ else if (name == "pipewiresink"_L1 && description == "Send video to PipeWire"_L1) {
+ description = "Send audio to PipeWire"_L1;
}
OutputDetails output;
output.name = name;
output.description = description;
- if (output.name == QLatin1String(kAutoSink)) output.iconname = QLatin1String("soundcard");
- else if (output.name == QLatin1String(kALSASink) || output.name == QLatin1String(kOSS4Sink)) output.iconname = QLatin1String("alsa");
- else if (output.name == QLatin1String(kJackAudioSink)) output.iconname = QLatin1String("jack");
- else if (output.name == QLatin1String(kPulseSink)) output.iconname = QLatin1String("pulseaudio");
- else if (output.name == QLatin1String(kA2DPSink) || output.name == QLatin1String(kAVDTPSink)) output.iconname = QLatin1String("bluetooth");
- else output.iconname = QLatin1String("soundcard");
+ if (output.name == QLatin1String(kAutoSink)) output.iconname = "soundcard"_L1;
+ else if (output.name == QLatin1String(kALSASink) || output.name == QLatin1String(kOSS4Sink)) output.iconname = "alsa"_L1;
+ else if (output.name == QLatin1String(kJackAudioSink)) output.iconname = "jack"_L1;
+ else if (output.name == QLatin1String(kPulseSink)) output.iconname = "pulseaudio"_L1;
+ else if (output.name == QLatin1String(kA2DPSink) || output.name == QLatin1String(kAVDTPSink)) output.iconname = "bluetooth"_L1;
+ else output.iconname = "soundcard"_L1;
outputs << output;
}
}
@@ -796,22 +797,22 @@ QByteArray GstEngine::FixupUrl(const QUrl &url) {
// QUrl::fromLocalFile does this when given a \\host\share\file path on Windows.
// Munge it back into a path that gstreamer will recognise.
if (url.isLocalFile() && !url.host().isEmpty()) {
- QString str = QLatin1String("file:////") + url.host() + url.path();
+ QString str = "file:////"_L1 + url.host() + url.path();
uri = str.toUtf8();
}
- else if (url.scheme() == QLatin1String("cdda")) {
+ else if (url.scheme() == "cdda"_L1) {
QString str;
if (url.path().isEmpty()) {
str = url.toString();
- str.remove(str.lastIndexOf(QLatin1Char('a')), 1);
+ str.remove(str.lastIndexOf(u'a'), 1);
}
else {
// Currently, Gstreamer can't handle input CD devices inside cdda 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(QLatin1Char('/'));
+ QStringList path = url.path().split(u'/');
str = QStringLiteral("cdda://%1").arg(path.takeLast());
- QString device = path.join(QLatin1Char('/'));
+ QString device = path.join(u'/');
if (current_pipeline_) current_pipeline_->SetSourceDevice(device);
}
uri = str.toUtf8();
@@ -1030,12 +1031,12 @@ void GstEngine::UpdateScope(const int chunk_length) {
scope_chunk_++;
- 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"))
+ if (buffer_format_.startsWith("S16LE"_L1) ||
+ buffer_format_.startsWith("U16LE"_L1) ||
+ buffer_format_.startsWith("S24LE"_L1) ||
+ buffer_format_.startsWith("S24_32LE"_L1) ||
+ buffer_format_.startsWith("S32LE"_L1) ||
+ buffer_format_.startsWith("F32LE"_L1)
) {
memcpy(dest, source, bytes);
}
@@ -1102,7 +1103,7 @@ void GstEngine::StreamDiscovered(GstDiscoverer*, GstDiscovererInfo *info, GError
GstStructure *gst_structure = gst_caps_get_structure(caps, i);
if (!gst_structure) continue;
QString mimetype = QString::fromUtf8(gst_structure_get_name(gst_structure));
- if (!mimetype.isEmpty() && mimetype != QLatin1String("audio/mpeg")) {
+ if (!mimetype.isEmpty() && mimetype != "audio/mpeg"_L1) {
engine_metadata.filetype = Song::FiletypeByMimetype(mimetype);
if (engine_metadata.filetype == Song::FileType::Unknown) {
qLog(Error) << "Unknown mimetype" << mimetype;
diff --git a/src/engine/gstenginepipeline.cpp b/src/engine/gstenginepipeline.cpp
index 4a60cd41d..5926b81be 100644
--- a/src/engine/gstenginepipeline.cpp
+++ b/src/engine/gstenginepipeline.cpp
@@ -67,6 +67,8 @@
#include "gstenginepipeline.h"
#include "gstbufferconsumer.h"
+using namespace Qt::StringLiterals;
+
namespace {
constexpr int GST_PLAY_FLAG_VIDEO = 0x00000001;
@@ -296,7 +298,7 @@ QString GstEnginePipeline::GstStateText(const GstState state) {
GstElement *GstEnginePipeline::CreateElement(const QString &factory_name, const QString &name, GstElement *bin, QString &error) const {
- QString unique_name = QLatin1String("pipeline") + QLatin1Char('-') + QString::number(id()) + QLatin1Char('-') + (name.isEmpty() ? factory_name : name);
+ QString unique_name = "pipeline"_L1 + u'-' + QString::number(id()) + u'-' + (name.isEmpty() ? factory_name : name);
GstElement *element = gst_element_factory_make(factory_name.toUtf8().constData(), unique_name.toUtf8().constData());
if (!element) {
@@ -491,7 +493,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
if (!device.isEmpty()) {
qLog(Debug) << "Setting device" << device << "for" << output_;
g_object_set(G_OBJECT(audiosink_), "device", device.toUtf8().constData(), nullptr);
- if (output_ == QLatin1String(GstEngine::kALSASink) && (device.startsWith(QLatin1String("hw:")) || device.startsWith(QLatin1String("plughw:")))) {
+ if (output_ == QLatin1String(GstEngine::kALSASink) && (device.startsWith("hw:"_L1) || device.startsWith("plughw:"_L1))) {
exclusive_mode_ = true;
}
}
@@ -783,7 +785,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 = QLatin1String("Failed to link replaygain volume, limiter and converter elements.");
+ error = "Failed to link replaygain volume, limiter and converter elements."_L1;
return false;
}
element_link = rgconverter;
@@ -796,7 +798,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 = QLatin1String("Failed to link EBU R 128 volume element.");
+ error = "Failed to link EBU R 128 volume element."_L1;
return false;
}
gst_caps_unref(raw_fp_audio_caps);
@@ -806,7 +808,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 = QLatin1String("Failed to link equalizer and equalizer preamp elements.");
+ error = "Failed to link equalizer and equalizer preamp elements."_L1;
return false;
}
element_link = equalizer_;
@@ -815,7 +817,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 = QLatin1String("Failed to link audio panorama (stereo balancer).");
+ error = "Failed to link audio panorama (stereo balancer)."_L1;
return false;
}
element_link = audiopanorama_;
@@ -824,7 +826,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 = QLatin1String("Failed to link software volume.");
+ error = "Failed to link software volume."_L1;
return false;
}
element_link = volume_sw_;
@@ -833,7 +835,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 = QLatin1String("Failed to link fading volume.");
+ error = "Failed to link fading volume."_L1;
return false;
}
element_link = volume_fading_;
@@ -843,21 +845,21 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
if (bs2b_enabled_ && bs2b) {
qLog(Debug) << "Enabling bs2b";
if (!gst_element_link(element_link, bs2b)) {
- error = QLatin1String("Failed to link bs2b.");
+ error = "Failed to link bs2b."_L1;
return false;
}
element_link = bs2b;
}
if (!gst_element_link(element_link, audiosinkconverter)) {
- error = QLatin1String("Failed to link audio sink converter.");
+ error = "Failed to link audio sink converter."_L1;
return false;
}
{
GstCaps *caps = gst_caps_new_empty_simple("audio/x-raw");
if (!caps) {
- error = QLatin1String("Failed to create caps for raw audio.");
+ error = "Failed to create caps for raw audio."_L1;
return false;
}
if (channels_enabled_ && channels_ > 0) {
@@ -867,7 +869,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
const bool link_filtered_result = gst_element_link_filtered(audiosinkconverter, audiosink_, caps);
gst_caps_unref(caps);
if (!link_filtered_result) {
- error = QLatin1String("Failed to link audio sink converter to audio sink with filter for ") + output_;
+ error = "Failed to link audio sink converter to audio sink with filter for "_L1 + output_;
return false;
}
}
@@ -960,7 +962,7 @@ void GstEnginePipeline::ElementAddedCallback(GstBin *bin, GstBin *sub_bin, GstEl
const QString element_name = QString::fromUtf8(element_name_char);
g_free(element_name_char);
- if (bin != GST_BIN(instance->audiobin_) || element_name == QLatin1String("fake-audio-sink") || GST_ELEMENT(gst_element_get_parent(element)) != instance->audiosink_) return;
+ if (bin != GST_BIN(instance->audiobin_) || element_name == "fake-audio-sink"_L1 || GST_ELEMENT(gst_element_get_parent(element)) != instance->audiosink_) return;
GstElement *volume = nullptr;
if (GST_IS_STREAM_VOLUME(element)) {
@@ -1186,10 +1188,10 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb
quint64 duration = GST_BUFFER_DURATION(buf);
qint64 end_time = static_cast(start_time + duration);
- if (format.startsWith(QLatin1String("S16LE"))) {
+ if (format.startsWith("S16LE"_L1)) {
instance->logged_unsupported_analyzer_format_ = false;
}
- else if (format.startsWith(QLatin1String("S32LE"))) {
+ else if (format.startsWith("S32LE"_L1)) {
GstMapInfo map_info;
gst_buffer_map(buf, &map_info, GST_MAP_READ);
@@ -1210,7 +1212,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb
instance->logged_unsupported_analyzer_format_ = false;
}
- else if (format.startsWith(QLatin1String("F32LE"))) {
+ else if (format.startsWith("F32LE"_L1)) {
GstMapInfo map_info;
gst_buffer_map(buf, &map_info, GST_MAP_READ);
@@ -1231,7 +1233,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb
instance->logged_unsupported_analyzer_format_ = false;
}
- else if (format.startsWith(QLatin1String("S24LE"))) {
+ else if (format.startsWith("S24LE"_L1)) {
GstMapInfo map_info;
gst_buffer_map(buf, &map_info, GST_MAP_READ);
@@ -1254,7 +1256,7 @@ GstPadProbeReturn GstEnginePipeline::BufferProbeCallback(GstPad *pad, GstPadProb
instance->logged_unsupported_analyzer_format_ = false;
}
- else if (format.startsWith(QLatin1String("S24_32LE"))) {
+ else if (format.startsWith("S24_32LE"_L1)) {
GstMapInfo map_info;
gst_buffer_map(buf, &map_info, GST_MAP_READ);
@@ -1526,7 +1528,7 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage *msg) {
{
QMutexLocker l(&mutex_redirect_url_);
- if (!redirect_url_.isEmpty() && debugstr.contains(QLatin1String("A redirect message was posted on the bus and should have been handled by the application."))) {
+ if (!redirect_url_.isEmpty() && debugstr.contains("A redirect message was posted on the bus and should have been handled by the application."_L1)) {
// 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;
@@ -1567,11 +1569,11 @@ 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(QLatin1String(" - "))) {
+ if (engine_metadata.title.contains(" - "_L1)) {
title_splitted = engine_metadata.title.split(QStringLiteral(" - "));
}
- else if (engine_metadata.title.contains(QLatin1Char('~'))) {
- title_splitted = engine_metadata.title.split(QLatin1Char('~'));
+ else if (engine_metadata.title.contains(u'~')) {
+ title_splitted = engine_metadata.title.split(u'~');
}
if (!title_splitted.isEmpty() && title_splitted.count() >= 2) {
int i = 0;
diff --git a/src/engine/gststartup.cpp b/src/engine/gststartup.cpp
index 6316f32b8..819e91c91 100644
--- a/src/engine/gststartup.cpp
+++ b/src/engine/gststartup.cpp
@@ -44,6 +44,8 @@
#include "gststartup.h"
+using namespace Qt::Literals::StringLiterals;
+
GThread *GstStartup::kGThread = nullptr;
gpointer GstStartup::GLibMainLoopThreadFunc(gpointer) {
@@ -115,28 +117,28 @@ void GstStartup::SetEnvironment() {
// Set plugin root path
QString plugin_root_path;
# if defined(Q_OS_MACOS)
- plugin_root_path = QDir::cleanPath(app_path + QLatin1String("/../PlugIns"));
+ plugin_root_path = QDir::cleanPath(app_path + "/../PlugIns"_L1);
# elif defined(Q_OS_UNIX)
- plugin_root_path = QDir::cleanPath(app_path + QLatin1String("/../plugins"));
+ plugin_root_path = QDir::cleanPath(app_path + "/../plugins"_L1);
# elif defined(Q_OS_WIN32)
plugin_root_path = app_path;
# endif
// Set GIO module path
- const QString gio_module_path = plugin_root_path + QLatin1String("/gio-modules");
+ const QString gio_module_path = plugin_root_path + "/gio-modules"_L1;
// Set GStreamer plugin scanner path
QString gst_plugin_scanner;
# if defined(Q_OS_UNIX)
- gst_plugin_scanner = plugin_root_path + QLatin1String("/gst-plugin-scanner");
+ gst_plugin_scanner = plugin_root_path + "/gst-plugin-scanner"_L1;
# endif
// Set GStreamer plugin path
QString gst_plugin_path;
# if defined(Q_OS_WIN32)
- gst_plugin_path = plugin_root_path + QLatin1String("/gstreamer-plugins");
+ gst_plugin_path = plugin_root_path + "/gstreamer-plugins"_L1;
# else
- gst_plugin_path = plugin_root_path + QLatin1String("/gstreamer");
+ gst_plugin_path = plugin_root_path + "/gstreamer"_L1;
# endif
if (!gio_module_path.isEmpty()) {
diff --git a/src/engine/macosdevicefinder.cpp b/src/engine/macosdevicefinder.cpp
index de9c3e036..de63e7d9a 100644
--- a/src/engine/macosdevicefinder.cpp
+++ b/src/engine/macosdevicefinder.cpp
@@ -33,6 +33,8 @@
#include "macosdevicefinder.h"
#include "enginedevice.h"
+using namespace Qt::Literals::StringLiterals;
+
namespace {
template
@@ -107,7 +109,7 @@ EngineDeviceList MacOsDeviceFinder::ListDevices() {
EngineDevice device;
device.value = id;
device.description = QString::fromUtf8(CFStringGetCStringPtr(*device_name, CFStringGetSystemEncoding()));
- if (device.description.isEmpty()) device.description = QLatin1String("Unknown device ") + device.value.toString();
+ if (device.description.isEmpty()) device.description = "Unknown device "_L1 + device.value.toString();
device.iconname = device.GuessIconName();
device_list.append(device);
}
diff --git a/src/engine/uwpdevicefinder.cpp b/src/engine/uwpdevicefinder.cpp
index 787c5c1ba..e3d3d2556 100644
--- a/src/engine/uwpdevicefinder.cpp
+++ b/src/engine/uwpdevicefinder.cpp
@@ -41,6 +41,8 @@ using namespace ABI::Windows::Foundation;
using namespace ABI::Windows::Foundation::Collections;
using namespace ABI::Windows::Devices::Enumeration;
+using namespace Qt::Literals::StringLiterals;
+
UWPDeviceFinder::UWPDeviceFinder() : DeviceFinder(QStringLiteral("uwpdevice"), { QStringLiteral("wasapi2sink") }) {}
namespace {
@@ -107,7 +109,7 @@ EngineDeviceList UWPDeviceFinder::ListDevices() {
{
EngineDevice default_device;
- default_device.description = QStringLiteral("Default device");
+ default_device.description = "Default device"_L1;
default_device.iconname = default_device.GuessIconName();
devices.append(default_device);
}
diff --git a/src/engine/vlcengine.cpp b/src/engine/vlcengine.cpp
index aa18758ae..9d3f0bcb1 100644
--- a/src/engine/vlcengine.cpp
+++ b/src/engine/vlcengine.cpp
@@ -40,6 +40,8 @@
#include "vlcengine.h"
#include "vlcscopedref.h"
+using namespace Qt::StringLiterals;
+
VLCEngine::VLCEngine(SharedPtr task_manager, QObject *parent)
: EngineBase(parent),
instance_(nullptr),
@@ -131,7 +133,7 @@ bool VLCEngine::Play(const bool pause, const quint64 offset_nanosec) {
if (!Initialized()) return false;
// Set audio output
- if (!output_.isEmpty() && output_ != QLatin1String("auto")) {
+ if (!output_.isEmpty() && output_ != "auto"_L1) {
int result = libvlc_audio_output_set(player_, output_.toUtf8().constData());
if (result != 0) qLog(Error) << "Failed to set output to" << output_;
}
@@ -221,8 +223,8 @@ EngineBase::OutputDetailsList VLCEngine::GetOutputsList() const {
OutputDetailsList outputs;
OutputDetails output_auto;
- output_auto.name = QLatin1String("auto");
- output_auto.description = QLatin1String("Automatically detected");
+ output_auto.name = "auto"_L1;
+ output_auto.description = "Automatically detected"_L1;
outputs << output_auto;
libvlc_audio_output_t *audio_output_list = libvlc_audio_output_list_get(instance_);
@@ -230,12 +232,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 == QLatin1String("auto")) output.iconname = QLatin1String("soundcard");
- else if ((output.name == QLatin1String("alsa"))||(output.name == QLatin1String("oss"))) output.iconname = QLatin1String("alsa");
- else if (output.name== QLatin1String("jack")) output.iconname = QLatin1String("jack");
- else if (output.name == QLatin1String("pulse")) output.iconname = QLatin1String("pulseaudio");
- else if (output.name == QLatin1String("afile")) output.iconname = QLatin1String("document-new");
- else output.iconname = QLatin1String("soundcard");
+ if (output.name == "auto"_L1) output.iconname = "soundcard"_L1;
+ else if ((output.name == "alsa"_L1)||(output.name == "oss"_L1)) output.iconname = "alsa"_L1;
+ else if (output.name== "jack"_L1) output.iconname = "jack"_L1;
+ else if (output.name == "pulse"_L1) output.iconname = "pulseaudio"_L1;
+ else if (output.name == "afile"_L1) output.iconname = "document-new"_L1;
+ else output.iconname = "soundcard"_L1;
outputs << output;
}
libvlc_audio_output_list_release(audio_output_list);
@@ -252,11 +254,11 @@ bool VLCEngine::ValidOutput(const QString &output) {
}
bool VLCEngine::CustomDeviceSupport(const QString &output) const {
- return output != QLatin1String("auto");
+ return output != "auto"_L1;
}
bool VLCEngine::ALSADeviceSupport(const QString &output) const {
- return output == QLatin1String("alsa");
+ return output == "alsa"_L1;
}
bool VLCEngine::ExclusiveModeSupport(const QString &output) const {
diff --git a/src/engine/vlcengine.h b/src/engine/vlcengine.h
index 8ed09b85e..95e4ecb27 100644
--- a/src/engine/vlcengine.h
+++ b/src/engine/vlcengine.h
@@ -37,6 +37,8 @@
#include "enginebase.h"
+using namespace Qt::Literals::StringLiterals;
+
struct libvlc_event_t;
class TaskManager;
@@ -67,7 +69,7 @@ class VLCEngine : public EngineBase {
OutputDetailsList GetOutputsList() const override;
bool ValidOutput(const QString &output) override;
- QString DefaultOutput() const override { return QLatin1String(""); }
+ QString DefaultOutput() const override { return ""_L1; }
bool CustomDeviceSupport(const QString &output) const override;
bool ALSADeviceSupport(const QString &output) const override;
bool ExclusiveModeSupport(const QString &output) const override;
diff --git a/src/filterparser/filterparser.cpp b/src/filterparser/filterparser.cpp
index 5854d5fe5..30854e9cd 100644
--- a/src/filterparser/filterparser.cpp
+++ b/src/filterparser/filterparser.cpp
@@ -28,6 +28,8 @@
#include "filtertree.h"
#include "filterparsersearchcomparators.h"
+using namespace Qt::StringLiterals;
+
FilterParser::FilterParser(const QString &filter_string) : filter_string_(filter_string), iter_{}, end_{} {}
FilterTree *FilterParser::parse() {
@@ -73,7 +75,7 @@ FilterTree *FilterParser::parseAndGroup() {
do {
group->add(parseSearchExpression());
advance();
- if (iter_ != end_ && *iter_ == QLatin1Char(')')) break;
+ if (iter_ != end_ && *iter_ == u')') break;
if (checkOr(false)) {
break;
}
@@ -87,16 +89,16 @@ FilterTree *FilterParser::parseAndGroup() {
bool FilterParser::checkAnd() {
if (iter_ != end_) {
- if (*iter_ == QLatin1Char('A')) {
+ if (*iter_ == u'A') {
buf_ += *iter_;
++iter_;
- if (iter_ != end_ && *iter_ == QLatin1Char('N')) {
+ if (iter_ != end_ && *iter_ == u'N') {
buf_ += *iter_;
++iter_;
- if (iter_ != end_ && *iter_ == QLatin1Char('D')) {
+ if (iter_ != end_ && *iter_ == u'D') {
buf_ += *iter_;
++iter_;
- if (iter_ != end_ && (iter_->isSpace() || *iter_ == QLatin1Char('-') || *iter_ == QLatin1Char('('))) {
+ if (iter_ != end_ && (iter_->isSpace() || *iter_ == u'-' || *iter_ == u'(')) {
advance();
buf_.clear();
return true;
@@ -113,7 +115,7 @@ bool FilterParser::checkAnd() {
bool FilterParser::checkOr(const bool step_over) {
if (!buf_.isEmpty()) {
- if (buf_ == QLatin1String("OR")) {
+ if (buf_ == "OR"_L1) {
if (step_over) {
buf_.clear();
advance();
@@ -123,13 +125,13 @@ bool FilterParser::checkOr(const bool step_over) {
}
else {
if (iter_ != end_) {
- if (*iter_ == QLatin1Char('O')) {
+ if (*iter_ == u'O') {
buf_ += *iter_;
++iter_;
- if (iter_ != end_ && *iter_ == QLatin1Char('R')) {
+ if (iter_ != end_ && *iter_ == u'R') {
buf_ += *iter_;
++iter_;
- if (iter_ != end_ && (iter_->isSpace() || *iter_ == QLatin1Char('-') || *iter_ == QLatin1Char('('))) {
+ if (iter_ != end_ && (iter_->isSpace() || *iter_ == u'-' || *iter_ == u'(')) {
if (step_over) {
buf_.clear();
advance();
@@ -149,19 +151,19 @@ FilterTree *FilterParser::parseSearchExpression() {
advance();
if (iter_ == end_) return new NopFilter;
- if (*iter_ == QLatin1Char('(')) {
+ if (*iter_ == u'(') {
++iter_;
advance();
FilterTree *tree = parseOrGroup();
advance();
if (iter_ != end_) {
- if (*iter_ == QLatin1Char(')')) {
+ if (*iter_ == u')') {
++iter_;
}
}
return tree;
}
- else if (*iter_ == QLatin1Char('-')) {
+ else if (*iter_ == u'-') {
++iter_;
FilterTree *tree = parseSearchExpression();
if (tree->type() != FilterTree::FilterType::Nop) return new NotFilter(tree);
@@ -183,7 +185,7 @@ FilterTree *FilterParser::parseSearchTerm() {
for (; iter_ != end_; ++iter_) {
if (in_quotes) {
- if (*iter_ == QLatin1Char('"')) {
+ if (*iter_ == u'"') {
in_quotes = false;
}
else {
@@ -191,23 +193,23 @@ FilterTree *FilterParser::parseSearchTerm() {
}
}
else {
- if (*iter_ == QLatin1Char('"')) {
+ if (*iter_ == u'"') {
in_quotes = true;
}
- else if (column.isEmpty() && *iter_ == QLatin1Char(':')) {
+ else if (column.isEmpty() && *iter_ == u':') {
column = buf_.toLower();
buf_.clear();
prefix.clear(); // Prefix isn't allowed here - let's ignore it
}
- else if (iter_->isSpace() || *iter_ == QLatin1Char('(') || *iter_ == QLatin1Char(')') || *iter_ == QLatin1Char('-')) {
+ else if (iter_->isSpace() || *iter_ == u'(' || *iter_ == u')' || *iter_ == u'-') {
break;
}
else if (buf_.isEmpty()) {
// We don't know whether there is a column part in this search term thus we assume the latter and just try and read a prefix
- if (prefix.isEmpty() && (*iter_ == QLatin1Char('>') || *iter_ == QLatin1Char('<') || *iter_ == QLatin1Char('=') || *iter_ == QLatin1Char('!'))) {
+ if (prefix.isEmpty() && (*iter_ == u'>' || *iter_ == u'<' || *iter_ == u'=' || *iter_ == u'!')) {
prefix += *iter_;
}
- else if (prefix != QLatin1Char('=') && *iter_ == QLatin1Char('=')) {
+ else if (prefix != u'=' && *iter_ == u'=') {
prefix += *iter_;
}
else {
@@ -229,17 +231,17 @@ FilterTree *FilterParser::parseSearchTerm() {
FilterTree *FilterParser::createSearchTermTreeNode(const QString &column, const QString &prefix, const QString &value) const {
- if (value.isEmpty() && prefix != QLatin1Char('=')) {
+ if (value.isEmpty() && prefix != u'=') {
return new NopFilter;
}
FilterParserSearchTermComparator *cmp = nullptr;
if (Song::kTextSearchColumns.contains(column, Qt::CaseInsensitive)) {
- if (prefix == QLatin1Char('=') || prefix == QLatin1String("==")) {
+ if (prefix == u'=' || prefix == "=="_L1) {
cmp = new FilterParserTextEqComparator(value);
}
- else if (prefix == QLatin1String("!=") || prefix == QLatin1String("<>")) {
+ else if (prefix == "!="_L1 || prefix == "<>"_L1) {
cmp = new FilterParserTextNeComparator(value);
}
else {
@@ -250,22 +252,22 @@ FilterTree *FilterParser::createSearchTermTreeNode(const QString &column, const
bool ok = false;
int number = value.toInt(&ok);
if (ok) {
- if (prefix == QLatin1Char('=') || prefix == QLatin1String("==")) {
+ if (prefix == u'=' || prefix == "=="_L1) {
cmp = new FilterParserIntEqComparator(number);
}
- else if (prefix == QLatin1String("!=") || prefix == QLatin1String("<>")) {
+ else if (prefix == "!="_L1 || prefix == "<>"_L1) {
cmp = new FilterParserIntNeComparator(number);
}
- else if (prefix == QLatin1Char('>')) {
+ else if (prefix == u'>') {
cmp = new FilterParserIntGtComparator(number);
}
- else if (prefix == QLatin1String(">=")) {
+ else if (prefix == ">="_L1) {
cmp = new FilterParserIntGeComparator(number);
}
- else if (prefix == QLatin1Char('<')) {
+ else if (prefix == u'<') {
cmp = new FilterParserIntLtComparator(number);
}
- else if (prefix == QLatin1String("<=")) {
+ else if (prefix == "<="_L1) {
cmp = new FilterParserIntLeComparator(number);
}
else {
@@ -277,22 +279,22 @@ FilterTree *FilterParser::createSearchTermTreeNode(const QString &column, const
bool ok = false;
uint number = value.toUInt(&ok);
if (ok) {
- if (prefix == QLatin1Char('=') || prefix == QLatin1String("==")) {
+ if (prefix == u'=' || prefix == "=="_L1) {
cmp = new FilterParserUIntEqComparator(number);
}
- else if (prefix == QLatin1String("!=") || prefix == QLatin1String("<>")) {
+ else if (prefix == "!="_L1 || prefix == "<>"_L1) {
cmp = new FilterParserUIntNeComparator(number);
}
- else if (prefix == QLatin1Char('>')) {
+ else if (prefix == u'>') {
cmp = new FilterParserUIntGtComparator(number);
}
- else if (prefix == QLatin1String(">=")) {
+ else if (prefix == ">="_L1) {
cmp = new FilterParserUIntGeComparator(number);
}
- else if (prefix == QLatin1Char('<')) {
+ else if (prefix == u'<') {
cmp = new FilterParserUIntLtComparator(number);
}
- else if (prefix == QLatin1String("<=")) {
+ else if (prefix == "<="_L1) {
cmp = new FilterParserUIntLeComparator(number);
}
else {
@@ -302,28 +304,28 @@ FilterTree *FilterParser::createSearchTermTreeNode(const QString &column, const
}
else if (Song::kInt64SearchColumns.contains(column, Qt::CaseInsensitive)) {
qint64 number = 0;
- if (column == QLatin1String("length")) {
+ if (column == "length"_L1) {
number = ParseTime(value);
}
else {
number = value.toLongLong();
}
- if (prefix == QLatin1Char('=') || prefix == QLatin1String("==")) {
+ if (prefix == u'=' || prefix == "=="_L1) {
cmp = new FilterParserInt64EqComparator(number);
}
- else if (prefix == QLatin1String("!=") || prefix == QLatin1String("<>")) {
+ else if (prefix == "!="_L1 || prefix == "<>"_L1) {
cmp = new FilterParserInt64NeComparator(number);
}
- else if (prefix == QLatin1Char('>')) {
+ else if (prefix == u'>') {
cmp = new FilterParserInt64GtComparator(number);
}
- else if (prefix == QLatin1String(">=")) {
+ else if (prefix == ">="_L1) {
cmp = new FilterParserInt64GeComparator(number);
}
- else if (prefix == QLatin1Char('<')) {
+ else if (prefix == u'<') {
cmp = new FilterParserInt64LtComparator(number);
}
- else if (prefix == QLatin1String("<=")) {
+ else if (prefix == "<="_L1) {
cmp = new FilterParserInt64LeComparator(number);
}
else {
@@ -332,22 +334,22 @@ FilterTree *FilterParser::createSearchTermTreeNode(const QString &column, const
}
else if (Song::kFloatSearchColumns.contains(column, Qt::CaseInsensitive)) {
const float rating = ParseRating(value);
- if (prefix == QLatin1Char('=') || prefix == QLatin1String("==")) {
+ if (prefix == u'=' || prefix == "=="_L1) {
cmp = new FilterParserFloatEqComparator(rating);
}
- else if (prefix == QLatin1String("!=") || prefix == QLatin1String("<>")) {
+ else if (prefix == "!="_L1 || prefix == "<>"_L1) {
cmp = new FilterParserFloatNeComparator(rating);
}
- else if (prefix == QLatin1Char('>')) {
+ else if (prefix == u'>') {
cmp = new FilterParserFloatGtComparator(rating);
}
- else if (prefix == QLatin1String(">=")) {
+ else if (prefix == ">="_L1) {
cmp = new FilterParserFloatGeComparator(rating);
}
- else if (prefix == QLatin1Char('<')) {
+ else if (prefix == u'<') {
cmp = new FilterParserFloatLtComparator(rating);
}
- else if (prefix == QLatin1String("<=")) {
+ else if (prefix == "<="_L1) {
cmp = new FilterParserFloatLeComparator(rating);
}
else {
@@ -385,7 +387,7 @@ qint64 FilterParser::ParseTime(const QString &time_str) {
if (c.isDigit()) {
accum = accum * 10LL + static_cast(c.digitValue());
}
- else if (c == QLatin1Char(':')) {
+ else if (c == u':') {
seconds = seconds * 60LL + accum;
accum = 0LL;
++colon_count;
@@ -419,15 +421,15 @@ float FilterParser::ParseRating(const QString &rating_str) {
float rating = -1.0F;
// Check if the search is a float
- if (rating_str.contains(QLatin1Char('f'), Qt::CaseInsensitive)) {
- if (rating_str.count(QLatin1Char('f'), Qt::CaseInsensitive) > 1) {
+ if (rating_str.contains(u'f', Qt::CaseInsensitive)) {
+ if (rating_str.count(u'f', Qt::CaseInsensitive) > 1) {
return rating;
}
QString rating_float_str = rating_str;
- if (rating_str.at(0) == QLatin1Char('f') || rating_str.at(0) == QLatin1Char('F')) {
+ if (rating_str.at(0) == u'f' || rating_str.at(0) == u'F') {
rating_float_str = rating_float_str.remove(0, 1);
}
- if (rating_str.right(1) == QLatin1Char('f') || rating_str.right(1) == QLatin1Char('F')) {
+ if (rating_str.right(1) == u'f' || rating_str.right(1) == u'F') {
rating_float_str.chop(1);
}
bool ok = false;
@@ -459,29 +461,29 @@ QString FilterParser::ToolTip() {
return QLatin1String("") +
QObject::tr("Prefix a search term with a field name to limit the search to that field, e.g.:") +
QLatin1Char(' ') +
- QLatin1String("") +
+ ""_L1 +
QObject::tr("artist") +
- QLatin1String(":Strawbs ") +
- QObject::tr("searches for all artists containing the word %1. ").arg(QLatin1String("Strawbs")) +
- QLatin1String("
") +
+ ":Strawbs "_L1 +
+ QObject::tr("searches for all artists containing the word %1. ").arg("Strawbs"_L1) +
+ "
"_L1 +
QObject::tr("Search terms for numerical fields can be prefixed with %1 or %2 to refine the search, e.g.: ")
- .arg(QLatin1String(" =, !=, <, >, <="), QLatin1String(">=")) +
- QLatin1String("") +
+ .arg(" =, !=, <, >, <="_L1, ">="_L1) +
+ ""_L1 +
QObject::tr("rating") +
- QLatin1String("") +
- QLatin1String(":>=") +
- QLatin1String("4") +
- QLatin1String("
") +
+ ""_L1 +
+ ":>="_L1 +
+ "4"_L1 +
+ "
"_L1 +
QObject::tr("Multiple search terms can also be combined with \"%1\" (default) and \"%2\", as well as grouped with parentheses. ")
- .arg(QLatin1String("AND"), QLatin1String("OR")) +
+ .arg("AND"_L1, "OR"_L1) +
- QLatin1String("
") +
+ "
"_L1 +
QObject::tr("Available fields") +
- QLatin1String(": ") + QLatin1String("") +
- Song::kSearchColumns.join(QLatin1String(", ")) +
- QLatin1String(".") +
- QLatin1String("
");
+ ": "_L1 + ""_L1 +
+ Song::kSearchColumns.join(", "_L1) +
+ "."_L1 +
+ "