From b654fde9cd43202903c0e9e08b2043315335759b Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Fri, 2 Sep 2016 19:51:51 +0200 Subject: [PATCH] Convert Q_FOREACH loops to C++11 for loops. Q_FOREACH will de deprecated soon. --- src/autotype/AutoType.cpp | 18 +++++++------ src/autotype/WildcardMatcher.cpp | 2 +- src/autotype/xcb/AutoTypeXCB.cpp | 2 +- src/core/Database.cpp | 9 ++++--- src/core/Entry.cpp | 8 +++--- src/core/EntryAttributes.cpp | 14 ++++++---- src/core/EntrySearcher.cpp | 13 ++++++---- src/core/FilePath.cpp | 20 +++++++------- src/core/Global.h | 9 +++++++ src/core/Group.cpp | 36 ++++++++++++++------------ src/core/Metadata.cpp | 4 +-- src/core/PasswordGenerator.cpp | 6 ++--- src/core/SignalMultiplexer.cpp | 6 +++-- src/core/Tools.cpp | 10 ++++--- src/core/Translator.cpp | 21 ++++++++------- src/format/CsvExporter.cpp | 6 +++-- src/format/KeePass1Reader.cpp | 21 ++++++++------- src/format/KeePass2XmlReader.cpp | 21 ++++++++------- src/format/KeePass2XmlWriter.cpp | 33 ++++++++++++++--------- src/gui/DatabaseSettingsWidget.cpp | 4 +-- src/gui/DatabaseWidget.cpp | 10 +++---- src/gui/DatabaseWidgetStateSync.cpp | 6 ++--- src/gui/EditWidgetIcons.cpp | 10 +++---- src/gui/MainWindow.cpp | 22 ++++++++++------ src/gui/entry/EntryAttributesModel.cpp | 3 ++- src/gui/entry/EntryHistoryModel.cpp | 3 ++- src/gui/entry/EntryModel.cpp | 14 +++++----- src/gui/group/GroupModel.cpp | 2 +- src/gui/group/GroupView.cpp | 3 ++- src/keys/CompositeKey.cpp | 5 ++-- src/main.cpp | 4 +-- 31 files changed, 202 insertions(+), 143 deletions(-) diff --git a/src/autotype/AutoType.cpp b/src/autotype/AutoType.cpp index 15185b2975..8032c27d2b 100644 --- a/src/autotype/AutoType.cpp +++ b/src/autotype/AutoType.cpp @@ -157,7 +157,7 @@ void AutoType::performAutoType(const Entry* entry, QWidget* hideWindow, const QS QCoreApplication::processEvents(QEventLoop::AllEvents, 10); - Q_FOREACH (AutoTypeAction* action, actions) { + for (AutoTypeAction* action : asConst(actions)) { if (m_plugin->activeWindow() != window) { qWarning("Active window changed, interrupting auto-type."); break; @@ -187,8 +187,9 @@ void AutoType::performGlobalAutoType(const QList& dbList) QList entryList; QHash sequenceHash; - Q_FOREACH (Database* db, dbList) { - Q_FOREACH (Entry* entry, db->rootGroup()->entriesRecursive()) { + for (Database* db : dbList) { + const QList dbEntries = db->rootGroup()->entriesRecursive(); + for (Entry* entry : dbEntries) { QString sequence = autoTypeSequence(entry, windowTitle); if (!sequence.isEmpty()) { entryList << entry; @@ -300,7 +301,7 @@ bool AutoType::parseActions(const QString& sequence, const Entry* entry, QList AutoType::createActionFromTemplate(const QString& tmpl, c } - QString placeholder = QString("{%1}").arg(tmplName); - QString resolved = entry->resolvePlaceholders(placeholder); + const QString placeholder = QString("{%1}").arg(tmplName); + const QString resolved = entry->resolvePlaceholders(placeholder); if (placeholder != resolved) { - Q_FOREACH (const QChar& ch, resolved) { + for (const QChar& ch : resolved) { if (ch == '\n') { list.append(new AutoTypeKey(Qt::Key_Enter)); } @@ -511,7 +512,8 @@ QString AutoType::autoTypeSequence(const Entry* entry, const QString& windowTitl QString sequence; if (!windowTitle.isEmpty()) { bool match = false; - Q_FOREACH (const AutoTypeAssociations::Association& assoc, entry->autoTypeAssociations()->getAll()) { + const QList assocList = entry->autoTypeAssociations()->getAll(); + for (const AutoTypeAssociations::Association& assoc : assocList) { if (windowMatches(windowTitle, assoc.window)) { if (!assoc.sequence.isEmpty()) { sequence = assoc.sequence; diff --git a/src/autotype/WildcardMatcher.cpp b/src/autotype/WildcardMatcher.cpp index 3d7cc75119..ad83f9b0a6 100644 --- a/src/autotype/WildcardMatcher.cpp +++ b/src/autotype/WildcardMatcher.cpp @@ -70,7 +70,7 @@ bool WildcardMatcher::startOrEndDoesNotMatch(const QStringList& parts) bool WildcardMatcher::partsMatch(const QStringList& parts) { int index = 0; - Q_FOREACH (const QString& part, parts) { + for (const QString& part : parts) { int matchIndex = getMatchIndex(part, index); if (noMatchFound(matchIndex)) { return false; diff --git a/src/autotype/xcb/AutoTypeXCB.cpp b/src/autotype/xcb/AutoTypeXCB.cpp index 47734c064f..becb65e0ce 100644 --- a/src/autotype/xcb/AutoTypeXCB.cpp +++ b/src/autotype/xcb/AutoTypeXCB.cpp @@ -344,7 +344,7 @@ QList AutoTypePlatformX11::widgetsToX11Windows(const QWidgetList& widget { QList windows; - Q_FOREACH (const QWidget* widget, widgetList) { + for (const QWidget* widget : widgetList) { windows.append(widget->effectiveWinId()); } diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 6f9423570e..9e01d3bc05 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -91,13 +91,15 @@ Entry* Database::resolveEntry(const Uuid& uuid) Entry* Database::recFindEntry(const Uuid& uuid, Group* group) { - Q_FOREACH (Entry* entry, group->entries()) { + const QList entryList = group->entries(); + for (Entry* entry : entryList) { if (entry->uuid() == uuid) { return entry; } } - Q_FOREACH (Group* child, group->children()) { + const QList children = group->children(); + for (Group* child : children) { Entry* result = recFindEntry(uuid, child); if (result) { return result; @@ -118,7 +120,8 @@ Group* Database::recFindGroup(const Uuid& uuid, Group* group) return group; } - Q_FOREACH (Group* child, group->children()) { + const QList children = group->children(); + for (Group* child : children) { Group* result = recFindGroup(uuid, child); if (result) { return result; diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index e402d33ead..d90a33fe86 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -382,7 +382,7 @@ void Entry::removeHistoryItems(const QList& historyEntries) return; } - Q_FOREACH (Entry* entry, historyEntries) { + for (Entry* entry : historyEntries) { Q_ASSERT(!entry->parent()); Q_ASSERT(entry->uuid() == uuid()); Q_ASSERT(m_history.contains(entry)); @@ -431,8 +431,8 @@ void Entry::truncateHistory() if (size <= histMaxSize) { size += historyItem->attributes()->attributesSize(); - QSet newAttachments = historyItem->attachments()->values().toSet() - foundAttachements; - Q_FOREACH (const QByteArray& attachment, newAttachments) { + const QSet newAttachments = historyItem->attachments()->values().toSet() - foundAttachements; + for (const QByteArray& attachment : newAttachments) { size += attachment.size(); } foundAttachements += newAttachments; @@ -461,7 +461,7 @@ Entry* Entry::clone(CloneFlags flags) const entry->m_attachments->copyDataFrom(m_attachments); entry->m_autoTypeAssociations->copyDataFrom(this->m_autoTypeAssociations); if (flags & CloneIncludeHistory) { - Q_FOREACH (Entry* historyItem, m_history) { + for (Entry* historyItem : m_history) { Entry* historyItemClone = historyItem->clone(flags & ~CloneIncludeHistory & ~CloneNewUuid); historyItemClone->setUpdateTimeinfo(false); historyItemClone->setUuid(entry->uuid()); diff --git a/src/core/EntryAttributes.cpp b/src/core/EntryAttributes.cpp index 01dcf9624c..5b30c703aa 100644 --- a/src/core/EntryAttributes.cpp +++ b/src/core/EntryAttributes.cpp @@ -44,7 +44,8 @@ bool EntryAttributes::hasKey(const QString& key) const QList EntryAttributes::customKeys() { QList customKeys; - Q_FOREACH (const QString& key, keys()) { + const QList keyList = keys(); + for (const QString& key : keyList) { if (!isDefaultAttribute(key)) { customKeys.append(key); } @@ -162,14 +163,16 @@ void EntryAttributes::copyCustomKeysFrom(const EntryAttributes* other) Q_EMIT aboutToBeReset(); // remove all non-default keys - Q_FOREACH (const QString& key, keys()) { + const QList keyList = keys(); + for (const QString& key : keyList) { if (!isDefaultAttribute(key)) { m_attributes.remove(key); m_protectedAttributes.remove(key); } } - Q_FOREACH (const QString& key, other->keys()) { + const QList otherKeyList = other->keys(); + for (const QString& key : otherKeyList) { if (!isDefaultAttribute(key)) { m_attributes.insert(key, other->value(key)); if (other->isProtected(key)) { @@ -189,7 +192,8 @@ bool EntryAttributes::areCustomKeysDifferent(const EntryAttributes* other) return true; } - Q_FOREACH (const QString& key, keys()) { + const QList keyList = keys(); + for (const QString& key : keyList) { if (isDefaultAttribute(key)) { continue; } @@ -234,7 +238,7 @@ void EntryAttributes::clear() m_attributes.clear(); m_protectedAttributes.clear(); - Q_FOREACH (const QString& key, DefaultAttributes) { + for (const QString& key : DefaultAttributes) { m_attributes.insert(key, ""); } diff --git a/src/core/EntrySearcher.cpp b/src/core/EntrySearcher.cpp index 05c4c58926..c0360a36c3 100644 --- a/src/core/EntrySearcher.cpp +++ b/src/core/EntrySearcher.cpp @@ -34,10 +34,13 @@ QList EntrySearcher::searchEntries(const QString& searchTerm, const Grou { QList searchResult; - Q_FOREACH (Entry* entry, group->entries()) { - searchResult.append(matchEntry(searchTerm, entry, caseSensitivity)); + const QList entryList = group->entries(); + for (Entry* entry : entryList) { + searchResult.append(matchEntry(searchTerm, entry, caseSensitivity)); } - Q_FOREACH (Group* childGroup, group->children()) { + + const QList children = group->children(); + for (Group* childGroup : children) { if (childGroup->searchingEnabled() != Group::Disable) { searchResult.append(searchEntries(searchTerm, childGroup, caseSensitivity)); } @@ -49,8 +52,8 @@ QList EntrySearcher::searchEntries(const QString& searchTerm, const Grou QList EntrySearcher::matchEntry(const QString& searchTerm, Entry* entry, Qt::CaseSensitivity caseSensitivity) { - QStringList wordList = searchTerm.split(QRegExp("\\s"), QString::SkipEmptyParts); - Q_FOREACH (const QString& word, wordList) { + const QStringList wordList = searchTerm.split(QRegExp("\\s"), QString::SkipEmptyParts); + for (const QString& word : wordList) { if (!wordMatch(word, entry, caseSensitivity)) { return QList(); } diff --git a/src/core/FilePath.cpp b/src/core/FilePath.cpp index 497568ad1d..06208b7c91 100644 --- a/src/core/FilePath.cpp +++ b/src/core/FilePath.cpp @@ -22,6 +22,7 @@ #include #include "config-keepassx.h" +#include "core/Global.h" FilePath* FilePath::m_instance(nullptr); @@ -40,7 +41,8 @@ QString FilePath::pluginPath(const QString& name) QStringList pluginPaths; QDir buildDir(QCoreApplication::applicationDirPath() + "/autotype"); - Q_FOREACH (const QString& dir, buildDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { + const QStringList buildDirEntryList = buildDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); + for (const QString& dir : buildDirEntryList) { pluginPaths << QCoreApplication::applicationDirPath() + "/autotype/" + dir; } @@ -68,10 +70,10 @@ QString FilePath::pluginPath(const QString& name) QStringList dirFilter; dirFilter << QString("*%1*").arg(name); - Q_FOREACH (const QString& path, pluginPaths) { - QStringList fileCandidates = QDir(path).entryList(dirFilter, QDir::Files); + for (const QString& path : asConst(pluginPaths)) { + const QStringList fileCandidates = QDir(path).entryList(dirFilter, QDir::Files); - Q_FOREACH (const QString& file, fileCandidates) { + for (const QString& file : fileCandidates) { QString filePath = path + "/" + file; if (QLibrary::isLibrary(filePath)) { @@ -103,10 +105,9 @@ QIcon FilePath::icon(const QString& category, const QString& name, bool fromThem } if (icon.isNull()) { - QList pngSizes; - pngSizes << 16 << 22 << 24 << 32 << 48 << 64 << 128; + const QList pngSizes = { 16, 22, 24, 32, 48, 64, 128 }; QString filename; - Q_FOREACH (int size, pngSizes) { + for (int size : pngSizes) { filename = QString("%1/icons/application/%2x%2/%3.png").arg(m_dataPath, QString::number(size), combinedName); if (QFile::exists(filename)) { @@ -148,10 +149,9 @@ QIcon FilePath::onOffIcon(const QString& category, const QString& name) stateName = "on"; } - QList pngSizes; - pngSizes << 16 << 22 << 24 << 32 << 48 << 64 << 128; + const QList pngSizes = { 16, 22, 24, 32, 48, 64, 128 }; QString filename; - Q_FOREACH (int size, pngSizes) { + for (int size : pngSizes) { filename = QString("%1/icons/application/%2x%2/%3-%4.png").arg(m_dataPath, QString::number(size), combinedName, stateName); if (QFile::exists(filename)) { diff --git a/src/core/Global.h b/src/core/Global.h index 14281eeec6..bd6a73356b 100644 --- a/src/core/Global.h +++ b/src/core/Global.h @@ -36,4 +36,13 @@ #define QUINT32_MAX 4294967295U #endif +template struct AddConst { typedef const T Type; }; + +// this adds const to non-const objects (like std::as_const) +template +constexpr typename AddConst::Type& asConst(T &t) noexcept { return t; } +// prevent rvalue arguments: +template +void asConst(const T&&) = delete; + #endif // KEEPASSX_GLOBAL_H diff --git a/src/core/Group.cpp b/src/core/Group.cpp index 43967d58d7..325ef9467a 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -18,6 +18,7 @@ #include "Group.h" #include "core/Config.h" +#include "core/Global.h" #include "core/DatabaseIcons.h" #include "core/Metadata.h" @@ -37,13 +38,13 @@ Group::~Group() { // Destroy entries and children manually so DeletedObjects can be added // to database. - QList entries = m_entries; - Q_FOREACH (Entry* entry, entries) { + const QList entries = m_entries; + for (Entry* entry : entries) { delete entry; } - QList children = m_children; - Q_FOREACH (Group* group, children) { + const QList children = m_children; + for (Group* group : children) { delete group; } @@ -427,12 +428,12 @@ QList Group::entriesRecursive(bool includeHistoryItems) const entryList.append(m_entries); if (includeHistoryItems) { - Q_FOREACH (Entry* entry, m_entries) { + for (Entry* entry : m_entries) { entryList.append(entry->historyItems()); } } - Q_FOREACH (Group* group, m_children) { + for (Group* group : m_children) { entryList.append(group->entriesRecursive(includeHistoryItems)); } @@ -446,7 +447,7 @@ QList Group::groupsRecursive(bool includeSelf) const groupList.append(this); } - Q_FOREACH (const Group* group, m_children) { + for (const Group* group : m_children) { groupList.append(group->groupsRecursive(true)); } @@ -460,7 +461,7 @@ QList Group::groupsRecursive(bool includeSelf) groupList.append(this); } - Q_FOREACH (Group* group, m_children) { + for (Group* group : asConst(m_children)) { groupList.append(group->groupsRecursive(true)); } @@ -475,13 +476,14 @@ QSet Group::customIconsRecursive() const result.insert(iconUuid()); } - Q_FOREACH (Entry* entry, entriesRecursive(true)) { + const QList entryList = entriesRecursive(true); + for (Entry* entry : entryList) { if (!entry->iconUuid().isNull()) { result.insert(entry->iconUuid()); } } - Q_FOREACH (Group* group, m_children) { + for (Group* group : m_children) { result.unite(group->customIconsRecursive()); } @@ -497,12 +499,14 @@ Group* Group::clone(Entry::CloneFlags entryFlags) const clonedGroup->setUuid(Uuid::random()); clonedGroup->m_data = m_data; - Q_FOREACH (Entry* entry, entries()) { + const QList entryList = entries(); + for (Entry* entry : entryList) { Entry* clonedEntry = entry->clone(entryFlags); clonedEntry->setGroup(clonedGroup); } - Q_FOREACH (Group* groupChild, children()) { + const QList childrenGroups = children(); + for (Group* groupChild : childrenGroups) { Group* clonedGroupChild = groupChild->clone(entryFlags); clonedGroupChild->setParent(clonedGroup); } @@ -569,7 +573,7 @@ void Group::recSetDatabase(Database* db) disconnect(SIGNAL(modified()), m_db); } - Q_FOREACH (Entry* entry, m_entries) { + for (Entry* entry : asConst(m_entries)) { if (m_db) { entry->disconnect(m_db); } @@ -591,7 +595,7 @@ void Group::recSetDatabase(Database* db) m_db = db; - Q_FOREACH (Group* group, m_children) { + for (Group* group : asConst(m_children)) { group->recSetDatabase(db); } } @@ -609,11 +613,11 @@ void Group::cleanupParent() void Group::recCreateDelObjects() { if (m_db) { - Q_FOREACH (Entry* entry, m_entries) { + for (Entry* entry : asConst(m_entries)) { m_db->addDeletedObject(entry->uuid()); } - Q_FOREACH (Group* group, m_children) { + for (Group* group : asConst(m_children)) { group->recCreateDelObjects(); } m_db->addDeletedObject(m_uuid); diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp index a50c6ef451..e908fbb243 100644 --- a/src/core/Metadata.cpp +++ b/src/core/Metadata.cpp @@ -218,7 +218,7 @@ QHash Metadata::customIconsScaledPixmaps() const { QHash result; - Q_FOREACH (const Uuid& uuid, m_customIconsOrder) { + for (const Uuid& uuid : m_customIconsOrder) { result.insert(uuid, customIconScaledPixmap(uuid)); } @@ -427,7 +427,7 @@ void Metadata::removeCustomIcon(const Uuid& uuid) void Metadata::copyCustomIcons(const QSet& iconList, const Metadata* otherMetadata) { - Q_FOREACH (const Uuid& uuid, iconList) { + for (const Uuid& uuid : iconList) { Q_ASSERT(otherMetadata->containsCustomIcon(uuid)); if (!containsCustomIcon(uuid) && otherMetadata->containsCustomIcon(uuid)) { diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index 5915ba8989..f52f6e4790 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -45,11 +45,11 @@ QString PasswordGenerator::generatePassword() const { Q_ASSERT(isValid()); - QVector groups = passwordGroups(); + const QVector groups = passwordGroups(); QVector passwordChars; - Q_FOREACH (const PasswordGroup& group, groups) { - Q_FOREACH (QChar ch, group) { + for (const PasswordGroup& group : groups) { + for (QChar ch : group) { passwordChars.append(ch); } } diff --git a/src/core/SignalMultiplexer.cpp b/src/core/SignalMultiplexer.cpp index ebf38bf64f..7b5fab93b8 100644 --- a/src/core/SignalMultiplexer.cpp +++ b/src/core/SignalMultiplexer.cpp @@ -17,6 +17,8 @@ #include "SignalMultiplexer.h" +#include "core/Global.h" + SignalMultiplexer::SignalMultiplexer() { } @@ -45,7 +47,7 @@ void SignalMultiplexer::setCurrentObject(QObject* object) } if (m_currentObject) { - Q_FOREACH (const Connection& con, m_connections) { + for (const Connection& con : asConst(m_connections)) { disconnect(con); } } @@ -53,7 +55,7 @@ void SignalMultiplexer::setCurrentObject(QObject* object) m_currentObject = object; if (object) { - Q_FOREACH (const Connection& con, m_connections) { + for (const Connection& con : asConst(m_connections)) { connect(con); } } diff --git a/src/core/Tools.cpp b/src/core/Tools.cpp index 06eb73d1ad..bc63bf1395 100644 --- a/src/core/Tools.cpp +++ b/src/core/Tools.cpp @@ -71,7 +71,9 @@ bool hasChild(const QObject* parent, const QObject* child) if (!parent || !child) { return false; } - Q_FOREACH (QObject* c, parent->children()) { + + const QObjectList children = parent->children(); + for (QObject* c : children) { if (child == c || hasChild(c, child)) { return true; } @@ -120,10 +122,10 @@ bool readAllFromDevice(QIODevice* device, QByteArray& data) QString imageReaderFilter() { - QList formats = QImageReader::supportedImageFormats(); + const QList formats = QImageReader::supportedImageFormats(); QStringList formatsStringList; - Q_FOREACH (const QByteArray& format, formats) { + for (const QByteArray& format : formats) { for (int i = 0; i < format.size(); i++) { if (!QChar(format.at(i)).isLetterOrNumber()) { continue; @@ -138,7 +140,7 @@ QString imageReaderFilter() bool isHex(const QByteArray& ba) { - Q_FOREACH (char c, ba) { + for (char c : ba) { if ( !( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ) ) { return false; } diff --git a/src/core/Translator.cpp b/src/core/Translator.cpp index 8ddd1de2c1..713727ea1d 100644 --- a/src/core/Translator.cpp +++ b/src/core/Translator.cpp @@ -49,18 +49,20 @@ void Translator::installTranslator() QList > Translator::availableLanguages() { - QStringList paths; + const QStringList paths = { #ifdef QT_DEBUG - paths.append(QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR)); + QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR), #endif - paths.append(filePath()->dataPath("translations")); + filePath()->dataPath("translations") + }; QList > languages; languages.append(QPair("system", "System default")); QRegExp regExp("keepassx_([a-zA-Z_]+)\\.qm", Qt::CaseInsensitive, QRegExp::RegExp2); - Q_FOREACH (const QString& path, paths) { - Q_FOREACH (const QString& filename, QDir(path).entryList()) { + for (const QString& path : paths) { + const QStringList fileList = QDir(path).entryList(); + for (const QString& filename : fileList) { if (regExp.exactMatch(filename)) { QString langcode = regExp.cap(1); if (langcode == "en_plurals") { @@ -85,13 +87,14 @@ QList > Translator::availableLanguages() bool Translator::installTranslator(const QString& language) { - QStringList paths; + const QStringList paths = { #ifdef QT_DEBUG - paths.append(QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR)); + QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR), #endif - paths.append(filePath()->dataPath("translations")); + filePath()->dataPath("translations") + }; - Q_FOREACH (const QString& path, paths) { + for (const QString& path : paths) { if (installTranslator(language, path)) { return true; } diff --git a/src/format/CsvExporter.cpp b/src/format/CsvExporter.cpp index 11378642f5..c444afe237 100644 --- a/src/format/CsvExporter.cpp +++ b/src/format/CsvExporter.cpp @@ -64,7 +64,8 @@ bool CsvExporter::writeGroup(QIODevice* device, const Group* group, QString grou } groupPath.append(group->name()); - Q_FOREACH (const Entry* entry, group->entries()) { + const QList entryList = group->entries(); + for (const Entry* entry : entryList) { QString line; addColumn(line, groupPath); @@ -82,7 +83,8 @@ bool CsvExporter::writeGroup(QIODevice* device, const Group* group, QString grou } } - Q_FOREACH (const Group* child, group->children()) { + const QList children = group->children(); + for (const Group* child : children) { if (!writeGroup(device, child, groupPath)) { return false; } diff --git a/src/format/KeePass1Reader.cpp b/src/format/KeePass1Reader.cpp index 27c6d1469d..4747d7f878 100644 --- a/src/format/KeePass1Reader.cpp +++ b/src/format/KeePass1Reader.cpp @@ -195,7 +195,7 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor return nullptr; } - Q_FOREACH (Entry* entry, entries) { + for (Entry* entry : asConst(entries)) { if (isMetaStream(entry)) { parseMetaStream(entry); @@ -215,7 +215,8 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor db->rootGroup()->setName(tr("Root")); - Q_FOREACH (Group* group, db->rootGroup()->children()) { + const QList children = db->rootGroup()->children(); + for (Group* group : children) { if (group->name() == "Backup") { group->setSearchingEnabled(Group::Disable); group->setAutoTypeEnabled(Group::Disable); @@ -225,11 +226,12 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor Q_ASSERT(m_tmpParent->children().isEmpty()); Q_ASSERT(m_tmpParent->entries().isEmpty()); - Q_FOREACH (Group* group, groups) { + for (Group* group : asConst(groups)) { group->setUpdateTimeinfo(true); } - Q_FOREACH (Entry* entry, m_db->rootGroup()->entriesRecursive()) { + const QList dbEntries = m_db->rootGroup()->entriesRecursive(); + for (Entry* entry : dbEntries) { entry->setUpdateTimeinfo(true); } @@ -298,15 +300,14 @@ QString KeePass1Reader::errorString() SymmetricCipherStream* KeePass1Reader::testKeys(const QString& password, const QByteArray& keyfileData, qint64 contentPos) { - QList encodings; - encodings << Windows1252 << Latin1 << UTF8; + const QList encodings = { Windows1252, Latin1, UTF8 }; QScopedPointer cipherStream; QByteArray passwordData; QTextCodec* codec = QTextCodec::codecForName("Windows-1252"); QByteArray passwordDataCorrect = codec->fromUnicode(password); - Q_FOREACH (PasswordEncoding encoding, encodings) { + for (PasswordEncoding encoding : encodings) { if (encoding == Windows1252) { passwordData = passwordDataCorrect; } @@ -727,7 +728,8 @@ void KeePass1Reader::parseNotes(const QString& rawNotes, Entry* entry) QStringList notes; bool lastLineAutoType = false; - Q_FOREACH (QString line, rawNotes.split("\n")) { + const QStringList rawNotesLines = rawNotes.split("\n"); + for (QString line : rawNotesLines) { line.remove("\r"); if (sequenceRegexp.exactMatch(line)) { @@ -769,8 +771,9 @@ void KeePass1Reader::parseNotes(const QString& rawNotes, Entry* entry) i.next(); QString sequence = sequences.value(i.key()); + const QStringList windowList = i.value(); - Q_FOREACH (const QString& window, i.value()) { + for (const QString& window : windowList) { AutoTypeAssociations::Association assoc; assoc.window = window; assoc.sequence = sequence; diff --git a/src/format/KeePass2XmlReader.cpp b/src/format/KeePass2XmlReader.cpp index a0d69afbdf..f706725922 100644 --- a/src/format/KeePass2XmlReader.cpp +++ b/src/format/KeePass2XmlReader.cpp @@ -86,17 +86,17 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra } } - QSet poolKeys = m_binaryPool.keys().toSet(); - QSet entryKeys = m_binaryMap.keys().toSet(); - QSet unmappedKeys = entryKeys - poolKeys; - QSet unusedKeys = poolKeys - entryKeys; + const QSet poolKeys = m_binaryPool.keys().toSet(); + const QSet entryKeys = m_binaryMap.keys().toSet(); + const QSet unmappedKeys = entryKeys - poolKeys; + const QSet unusedKeys = poolKeys - entryKeys; if (!unmappedKeys.isEmpty()) { raiseError("Unmapped keys left."); } if (!m_xml.error()) { - Q_FOREACH (const QString& key, unusedKeys) { + for (const QString& key : unusedKeys) { qWarning("KeePass2XmlReader::readDatabase: found unused key \"%s\"", qPrintable(key)); } } @@ -118,7 +118,8 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra for (iEntry = m_entries.constBegin(); iEntry != m_entries.constEnd(); ++iEntry) { iEntry.value()->setUpdateTimeinfo(true); - Q_FOREACH (Entry* histEntry, iEntry.value()->historyItems()) { + const QList historyItems = iEntry.value()->historyItems(); + for (Entry* histEntry : historyItems) { histEntry->setUpdateTimeinfo(true); } } @@ -614,11 +615,11 @@ Group* KeePass2XmlReader::parseGroup() raiseError("No group uuid found"); } - Q_FOREACH (Group* child, children) { + for (Group* child : asConst(children)) { child->setParent(group); } - Q_FOREACH (Entry* entry, entries) { + for (Entry* entry : asConst(entries)) { entry->setGroup(group); } @@ -777,7 +778,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history) raiseError("No entry uuid found"); } - Q_FOREACH (Entry* historyItem, historyItems) { + for (Entry* historyItem : asConst(historyItems)) { if (historyItem->uuid() != entry->uuid()) { if (m_strictMode) { raiseError("History element with different uuid"); @@ -788,7 +789,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history) entry->addHistoryItem(historyItem); } - Q_FOREACH (const StringPair& ref, binaryRefs) { + for (const StringPair& ref : asConst(binaryRefs)) { m_binaryMap.insertMulti(ref.first, qMakePair(entry, ref.second)); } diff --git a/src/format/KeePass2XmlWriter.cpp b/src/format/KeePass2XmlWriter.cpp index 7fd03cc076..6c92c4b39f 100644 --- a/src/format/KeePass2XmlWriter.cpp +++ b/src/format/KeePass2XmlWriter.cpp @@ -82,11 +82,12 @@ QString KeePass2XmlWriter::errorString() void KeePass2XmlWriter::generateIdMap() { - QList allEntries = m_db->rootGroup()->entriesRecursive(true); + const QList allEntries = m_db->rootGroup()->entriesRecursive(true); int nextId = 0; - Q_FOREACH (Entry* entry, allEntries) { - Q_FOREACH (const QString& key, entry->attachments()->keys()) { + for (Entry* entry : allEntries) { + const QList attachmentKeys = entry->attachments()->keys(); + for (const QString& key : attachmentKeys) { QByteArray data = entry->attachments()->value(key); if (!m_idMap.contains(data)) { m_idMap.insert(data, nextId++); @@ -149,7 +150,8 @@ void KeePass2XmlWriter::writeCustomIcons() { m_xml.writeStartElement("CustomIcons"); - Q_FOREACH (const Uuid& uuid, m_meta->customIconsOrder()) { + const QList customIconsOrder = m_meta->customIconsOrder(); + for (const Uuid& uuid : customIconsOrder) { writeIcon(uuid, m_meta->customIcon(uuid)); } @@ -220,7 +222,8 @@ void KeePass2XmlWriter::writeCustomData() m_xml.writeStartElement("CustomData"); QHash customFields = m_meta->customFields(); - Q_FOREACH (const QString& key, customFields.keys()) { + const QList keyList = customFields.keys(); + for (const QString& key : keyList) { writeCustomDataItem(key, customFields.value(key)); } @@ -273,11 +276,13 @@ void KeePass2XmlWriter::writeGroup(const Group* group) writeUuid("LastTopVisibleEntry", group->lastTopVisibleEntry()); - Q_FOREACH (const Entry* entry, group->entries()) { + const QList entryList = group->entries(); + for (const Entry* entry : entryList) { writeEntry(entry); } - Q_FOREACH (const Group* child, group->children()) { + const QList children = group->children(); + for (const Group* child : children) { writeGroup(child); } @@ -303,7 +308,8 @@ void KeePass2XmlWriter::writeDeletedObjects() { m_xml.writeStartElement("DeletedObjects"); - Q_FOREACH (const DeletedObject& delObj, m_db->deletedObjects()) { + const QList delObjList = m_db->deletedObjects(); + for (const DeletedObject& delObj : delObjList) { writeDeletedObject(delObj); } @@ -337,7 +343,8 @@ void KeePass2XmlWriter::writeEntry(const Entry* entry) writeString("Tags", entry->tags()); writeTimes(entry->timeInfo()); - Q_FOREACH (const QString& key, entry->attributes()->keys()) { + const QList attributesKeyList = entry->attributes()->keys(); + for (const QString& key : attributesKeyList) { m_xml.writeStartElement("String"); bool protect = ( ((key == "Title") && m_meta->protectTitle()) || @@ -379,7 +386,8 @@ void KeePass2XmlWriter::writeEntry(const Entry* entry) m_xml.writeEndElement(); } - Q_FOREACH (const QString& key, entry->attachments()->keys()) { + const QList attachmentsKeyList = entry->attachments()->keys(); + for (const QString& key : attachmentsKeyList) { m_xml.writeStartElement("Binary"); writeString("Key", key); @@ -408,7 +416,8 @@ void KeePass2XmlWriter::writeAutoType(const Entry* entry) writeNumber("DataTransferObfuscation", entry->autoTypeObfuscation()); writeString("DefaultSequence", entry->defaultAutoTypeSequence()); - Q_FOREACH (const AutoTypeAssociations::Association& assoc, entry->autoTypeAssociations()->getAll()) { + const QList autoTypeAssociations = entry->autoTypeAssociations()->getAll(); + for (const AutoTypeAssociations::Association& assoc : autoTypeAssociations) { writeAutoTypeAssoc(assoc); } @@ -430,7 +439,7 @@ void KeePass2XmlWriter::writeEntryHistory(const Entry* entry) m_xml.writeStartElement("History"); const QList& historyItems = entry->historyItems(); - Q_FOREACH (const Entry* item, historyItems) { + for (const Entry* item : historyItems) { writeEntry(item); } diff --git a/src/gui/DatabaseSettingsWidget.cpp b/src/gui/DatabaseSettingsWidget.cpp index d4ca8ddba2..b0759bf3a0 100644 --- a/src/gui/DatabaseSettingsWidget.cpp +++ b/src/gui/DatabaseSettingsWidget.cpp @@ -139,8 +139,8 @@ void DatabaseSettingsWidget::transformRoundsBenchmark() void DatabaseSettingsWidget::truncateHistories() { - QList allEntries = m_db->rootGroup()->entriesRecursive(false); - Q_FOREACH (Entry* entry, allEntries) { + const QList allEntries = m_db->rootGroup()->entriesRecursive(false); + for (Entry* entry : allEntries) { entry->truncateHistory(); } } diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 77d16447ee..1203791719 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -323,7 +323,7 @@ void DatabaseWidget::deleteEntries() // get all entry pointers as the indexes change when removing multiple entries QList selectedEntries; - Q_FOREACH (const QModelIndex& index, selected) { + for (const QModelIndex& index : selected) { selectedEntries.append(m_entryView->entryFromIndex(index)); } @@ -347,7 +347,7 @@ void DatabaseWidget::deleteEntries() } if (result == QMessageBox::Yes) { - Q_FOREACH (Entry* entry, selectedEntries) { + for (Entry* entry : asConst(selectedEntries)) { delete entry; } } @@ -373,7 +373,7 @@ void DatabaseWidget::deleteEntries() return; } - Q_FOREACH (Entry* entry, selectedEntries) { + for (Entry* entry : asConst(selectedEntries)) { m_db->recycleEntry(entry); } } @@ -683,8 +683,8 @@ void DatabaseWidget::unlockDatabase(bool accepted) replaceDatabase(static_cast(sender())->database()); - QList groups = m_db->rootGroup()->groupsRecursive(true); - Q_FOREACH (Group* group, groups) { + const QList groups = m_db->rootGroup()->groupsRecursive(true); + for (Group* group : groups) { if (group->uuid() == m_groupBeforeLock) { m_groupView->setCurrentGroup(group); break; diff --git a/src/gui/DatabaseWidgetStateSync.cpp b/src/gui/DatabaseWidgetStateSync.cpp index 430380c5a3..f2359fe03b 100644 --- a/src/gui/DatabaseWidgetStateSync.cpp +++ b/src/gui/DatabaseWidgetStateSync.cpp @@ -124,10 +124,10 @@ void DatabaseWidgetStateSync::updateColumnSizes() QList DatabaseWidgetStateSync::variantToIntList(const QVariant& variant) { - QVariantList list = variant.toList(); + const QVariantList list = variant.toList(); QList result; - Q_FOREACH (const QVariant& var, list) { + for (const QVariant& var : list) { bool ok; int size = var.toInt(&ok); if (ok) { @@ -146,7 +146,7 @@ QVariant DatabaseWidgetStateSync::intListToVariant(const QList& list) { QVariantList result; - Q_FOREACH (int value, list) { + for (int value : list) { result.append(value); } diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 832defd049..ba1d9b2311 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -159,10 +159,10 @@ void EditWidgetIcons::removeCustomIcon() Uuid iconUuid = m_customIconModel->uuidFromIndex(index); int iconUsedCount = 0; - QList allEntries = m_database->rootGroup()->entriesRecursive(true); + const QList allEntries = m_database->rootGroup()->entriesRecursive(true); QList historyEntriesWithSameIcon; - Q_FOREACH (Entry* entry, allEntries) { + for (Entry* entry : allEntries) { bool isHistoryEntry = !entry->group(); if (iconUuid == entry->iconUuid()) { if (isHistoryEntry) { @@ -174,15 +174,15 @@ void EditWidgetIcons::removeCustomIcon() } } - QList allGroups = m_database->rootGroup()->groupsRecursive(true); - Q_FOREACH (const Group* group, allGroups) { + const QList allGroups = m_database->rootGroup()->groupsRecursive(true); + for (const Group* group : allGroups) { if (iconUuid == group->iconUuid() && m_currentUuid != group->uuid()) { iconUsedCount++; } } if (iconUsedCount == 0) { - Q_FOREACH (Entry* entry, historyEntriesWithSameIcon) { + for (Entry* entry : asConst(historyEntriesWithSameIcon)) { entry->setUpdateTimeinfo(false); entry->setIcon(0); entry->setUpdateTimeinfo(true); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 6245dc79a2..c2701c2d30 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -224,8 +224,8 @@ void MainWindow::updateLastDatabasesMenu() { m_ui->menuRecentDatabases->clear(); - QStringList lastDatabases = config()->get("LastDatabases", QVariant()).toStringList(); - Q_FOREACH (const QString& database, lastDatabases) { + const QStringList lastDatabases = config()->get("LastDatabases", QVariant()).toStringList(); + for (const QString& database : lastDatabases) { QAction* action = m_ui->menuRecentDatabases->addAction(database); action->setData(database); m_lastDatabasesActions->addAction(action); @@ -250,7 +250,8 @@ void MainWindow::updateCopyAttributesMenu() delete actions[i]; } - Q_FOREACH (const QString& key, dbWidget->customEntryAttributes()) { + const QStringList customEntryAttributes = dbWidget->customEntryAttributes(); + for (const QString& key : customEntryAttributes) { QAction* action = m_ui->menuEntryCopyAttribute->addAction(key); m_copyAdditionalAttributeActions->addAction(action); } @@ -316,12 +317,14 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode) break; } case DatabaseWidget::EditMode: - case DatabaseWidget::LockedMode: - Q_FOREACH (QAction* action, m_ui->menuEntries->actions()) { + case DatabaseWidget::LockedMode: { + const QList entryActions = m_ui->menuEntries->actions(); + for (QAction* action : entryActions) { action->setEnabled(false); } - Q_FOREACH (QAction* action, m_ui->menuGroups->actions()) { + const QList groupActions = m_ui->menuGroups->actions(); + for (QAction* action : groupActions) { action->setEnabled(false); } m_ui->actionEntryCopyTitle->setEnabled(false); @@ -338,17 +341,20 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode) m_ui->actionDatabaseSaveAs->setEnabled(false); m_ui->actionExportCsv->setEnabled(false); break; + } default: Q_ASSERT(false); } m_ui->actionDatabaseClose->setEnabled(true); } else { - Q_FOREACH (QAction* action, m_ui->menuEntries->actions()) { + const QList entryActions = m_ui->menuEntries->actions(); + for (QAction* action : entryActions) { action->setEnabled(false); } - Q_FOREACH (QAction* action, m_ui->menuGroups->actions()) { + const QList groupActions = m_ui->menuGroups->actions(); + for (QAction* action : groupActions) { action->setEnabled(false); } m_ui->actionEntryCopyTitle->setEnabled(false); diff --git a/src/gui/entry/EntryAttributesModel.cpp b/src/gui/entry/EntryAttributesModel.cpp index 297740c3cb..b22380ae8a 100644 --- a/src/gui/entry/EntryAttributesModel.cpp +++ b/src/gui/entry/EntryAttributesModel.cpp @@ -232,7 +232,8 @@ void EntryAttributesModel::updateAttributes() { m_attributes.clear(); - Q_FOREACH (const QString& key, m_entryAttributes->keys()) { + const QList attributesKeyList = m_entryAttributes->keys(); + for (const QString& key : attributesKeyList) { if (!EntryAttributes::isDefaultAttribute(key)) { m_attributes.append(key); } diff --git a/src/gui/entry/EntryHistoryModel.cpp b/src/gui/entry/EntryHistoryModel.cpp index 58aa49a697..ca21055c6a 100644 --- a/src/gui/entry/EntryHistoryModel.cpp +++ b/src/gui/entry/EntryHistoryModel.cpp @@ -18,6 +18,7 @@ #include "EntryHistoryModel.h" #include "core/Entry.h" +#include "core/Global.h" EntryHistoryModel::EntryHistoryModel(QObject* parent) : QAbstractTableModel(parent) @@ -136,7 +137,7 @@ void EntryHistoryModel::deleteAll() beginRemoveRows(QModelIndex(), 0, m_historyEntries.size() - 1); - Q_FOREACH (Entry* entry, m_historyEntries) { + for (Entry* entry : asConst(m_historyEntries)) { m_deletedHistoryEntries << entry; } m_historyEntries.clear(); diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp index efb64deac6..d606a777e1 100644 --- a/src/gui/entry/EntryModel.cpp +++ b/src/gui/entry/EntryModel.cpp @@ -22,6 +22,7 @@ #include "core/DatabaseIcons.h" #include "core/Entry.h" +#include "core/Global.h" #include "core/Group.h" #include "core/Metadata.h" @@ -78,13 +79,14 @@ void EntryModel::setEntryList(const QList& entries) QSet databases; - Q_FOREACH (Entry* entry, m_entries) { + for (Entry* entry : asConst(m_entries)) { databases.insert(entry->group()->database()); } - Q_FOREACH (Database* db, databases) { + for (Database* db : asConst(databases)) { Q_ASSERT(db); - Q_FOREACH (const Group* group, db->rootGroup()->groupsRecursive(true)) { + const QList groupList = db->rootGroup()->groupsRecursive(true); + for (const Group* group : groupList) { m_allGroups.append(group); } @@ -93,7 +95,7 @@ void EntryModel::setEntryList(const QList& entries) } } - Q_FOREACH (const Group* group, m_allGroups) { + for (const Group* group : asConst(m_allGroups)) { makeConnections(group); } @@ -224,7 +226,7 @@ QMimeData* EntryModel::mimeData(const QModelIndexList& indexes) const QSet seenEntries; - Q_FOREACH (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { if (!index.isValid()) { continue; } @@ -301,7 +303,7 @@ void EntryModel::severConnections() disconnect(m_group, nullptr, this, nullptr); } - Q_FOREACH (const Group* group, m_allGroups) { + for (const Group* group : asConst(m_allGroups)) { disconnect(group, nullptr, this, nullptr); } } diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index fc6d83eaee..5aafc1a79a 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -338,7 +338,7 @@ QMimeData* GroupModel::mimeData(const QModelIndexList& indexes) const QSet seenGroups; - Q_FOREACH (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { if (!index.isValid()) { continue; } diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp index 1f94dc0fcb..31f5639fc5 100644 --- a/src/gui/group/GroupView.cpp +++ b/src/gui/group/GroupView.cpp @@ -98,7 +98,8 @@ void GroupView::recInitExpanded(Group* group) expandGroup(group, group->isExpanded()); m_updatingExpanded = false; - Q_FOREACH (Group* child, group->children()) { + const QList children = group->children(); + for (Group* child : children) { recInitExpanded(child); } } diff --git a/src/keys/CompositeKey.cpp b/src/keys/CompositeKey.cpp index d38f466fdd..16b48592ef 100644 --- a/src/keys/CompositeKey.cpp +++ b/src/keys/CompositeKey.cpp @@ -21,6 +21,7 @@ #include #include +#include "core/Global.h" #include "crypto/CryptoHash.h" #include "crypto/SymmetricCipher.h" @@ -63,7 +64,7 @@ CompositeKey& CompositeKey::operator=(const CompositeKey& key) clear(); - Q_FOREACH (const Key* subKey, key.m_keys) { + for (const Key* subKey : asConst(key.m_keys)) { addKey(*subKey); } @@ -74,7 +75,7 @@ QByteArray CompositeKey::rawKey() const { CryptoHash cryptoHash(CryptoHash::Sha256); - Q_FOREACH (const Key* key, m_keys) { + for (const Key* key : m_keys) { cryptoHash.addData(key->rawKey()); } diff --git a/src/main.cpp b/src/main.cpp index 04b70a4657..d6b1b2d97d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -95,8 +95,8 @@ int main(int argc, char** argv) } if (config()->get("OpenPreviousDatabasesOnStartup").toBool()) { - QStringList filenames = config()->get("LastOpenedDatabases").toStringList(); - Q_FOREACH (const QString& filename, filenames) { + const QStringList filenames = config()->get("LastOpenedDatabases").toStringList(); + for (const QString& filename : filenames) { if (!filename.isEmpty() && QFile::exists(filename)) { mainWindow.openDatabase(filename, QString(), QString()); }