diff --git a/CodingStyle.md b/CodingStyle.md index cb27c4b1d..9be434470 100644 --- a/CodingStyle.md +++ b/CodingStyle.md @@ -156,6 +156,16 @@ other editors that implement this coding style, please add them here. ``` QLowEnergyService *service = qobject_cast(sender()); ``` + - If the variable is a container that is only assigned to a local variable to + be able to use it in a range-based for loop + ``` + const auto l = device.serviceUuids(); + for (QBluetoothUuid id: serviceUuids) { + ``` + The variable has also to be const to avoid that Qt containers will do a + deep copy when the range bases for loop will call the begin() method + internally. + * text strings The default language of subsurface is US English so please use US English spelling and terminology. @@ -173,7 +183,7 @@ other editors that implement this coding style, please add them here. This works by default in classes (indirectly) derived from QObject. Each string to be translated is associated with a context, which corresponds to the class name. Classes that are not derived from QObject can generate - the tr() functions by using the `Q_DECLARE_FUNCTIONS` macro: + the tr() functions by using the `Q_DECLARE_TR_FUNCTIONS` macro: ``` #include diff --git a/core/btdiscovery.cpp b/core/btdiscovery.cpp index 3ef0273fe..7e75994da 100644 --- a/core/btdiscovery.cpp +++ b/core/btdiscovery.cpp @@ -198,8 +198,8 @@ void BTDiscovery::btDeviceDiscovered(const QBluetoothDeviceInfo &device) this_d.name = device.name(); btPairedDevices.append(this_d); - QList serviceUuids = device.serviceUuids(); - foreach (QBluetoothUuid id, serviceUuids) { + const auto serviceUuids = device.serviceUuids(); + for (QBluetoothUuid id: serviceUuids) { addBtUuid(id); qDebug() << id.toByteArray(); } diff --git a/core/checkcloudconnection.cpp b/core/checkcloudconnection.cpp index ffe2094f6..b912160c1 100644 --- a/core/checkcloudconnection.cpp +++ b/core/checkcloudconnection.cpp @@ -76,11 +76,11 @@ bool CheckCloudConnection::checkServer() return false; } -void CheckCloudConnection::sslErrors(QList errorList) +void CheckCloudConnection::sslErrors(const QList &errorList) { if (verbose) { qDebug() << "Received error response trying to set up https connection with cloud storage backend:"; - Q_FOREACH (QSslError err, errorList) { + for (QSslError err: errorList) { qDebug() << err.errorString(); } } diff --git a/core/checkcloudconnection.h b/core/checkcloudconnection.h index 69f8a2964..312a1e78c 100644 --- a/core/checkcloudconnection.h +++ b/core/checkcloudconnection.h @@ -15,7 +15,7 @@ private: QNetworkReply *reply; private slots: - void sslErrors(QList errorList); + void sslErrors(const QList &errorList); }; #endif // CHECKCLOUDCONNECTION_H diff --git a/core/cloudstorage.cpp b/core/cloudstorage.cpp index 39d9a4d66..77d9153e9 100644 --- a/core/cloudstorage.cpp +++ b/core/cloudstorage.cpp @@ -81,11 +81,11 @@ void CloudStorageAuthenticate::uploadError(QNetworkReply::NetworkError) qDebug() << "Received error response from cloud storage backend:" << reply->errorString(); } -void CloudStorageAuthenticate::sslErrors(QList errorList) +void CloudStorageAuthenticate::sslErrors(const QList &errorList) { if (verbose) { qDebug() << "Received error response trying to set up https connection with cloud storage backend:"; - Q_FOREACH (QSslError err, errorList) { + for (QSslError err: errorList) { qDebug() << err.errorString(); } } diff --git a/core/cloudstorage.h b/core/cloudstorage.h index 681b2b290..b19b3292c 100644 --- a/core/cloudstorage.h +++ b/core/cloudstorage.h @@ -16,7 +16,7 @@ signals: private slots: void uploadError(QNetworkReply::NetworkError error); - void sslErrors(QList errorList); + void sslErrors(const QList &errorList); void uploadFinished(); private: QNetworkReply *reply; diff --git a/core/qt-ble.cpp b/core/qt-ble.cpp index 9626042b5..9ee5def51 100644 --- a/core/qt-ble.cpp +++ b/core/qt-ble.cpp @@ -341,7 +341,7 @@ dc_status_t BLEObject::setHwCredit(unsigned int c) return DC_STATUS_SUCCESS; } -dc_status_t BLEObject::setupHwTerminalIo(QList allC) +dc_status_t BLEObject::setupHwTerminalIo(const QList &allC) { /* This initalizes the Terminal I/O client as described in * http://www.telit.com/fileadmin/user_upload/products/Downloads/sr-rf/BlueMod/TIO_Implementation_Guide_r04.pdf * Referenced section numbers below are from that document. @@ -479,16 +479,16 @@ dc_status_t qt_ble_open(void **io, dc_context_t *, const char *devaddr, dc_user_ return r; } } else { - foreach (const QLowEnergyCharacteristic &c, list) { + for (const QLowEnergyCharacteristic &c: list) { if (!is_read_characteristic(c)) continue; qDebug() << "Using read characteristic" << c.uuid(); - QList l = c.descriptors(); + const QList l = c.descriptors(); QLowEnergyDescriptor d = l.first(); - foreach (const QLowEnergyDescriptor &tmp, l) { + for (const QLowEnergyDescriptor &tmp: l) { if (tmp.type() == QBluetoothUuid::ClientCharacteristicConfiguration) { d = tmp; break; diff --git a/core/qt-ble.h b/core/qt-ble.h index 65e23964a..2b011163f 100644 --- a/core/qt-ble.h +++ b/core/qt-ble.h @@ -35,7 +35,7 @@ public slots: void characteristcStateChanged(const QLowEnergyCharacteristic &c, const QByteArray &value); void characteristicWritten(const QLowEnergyCharacteristic &c, const QByteArray &value); void writeCompleted(const QLowEnergyDescriptor &d, const QByteArray &value); - dc_status_t setupHwTerminalIo(QList); + dc_status_t setupHwTerminalIo(const QList &allC); dc_status_t setHwCredit(unsigned int c); private: QVector services; diff --git a/core/qthelper.cpp b/core/qthelper.cpp index 1a85d35a7..3738e56f2 100644 --- a/core/qthelper.cpp +++ b/core/qthelper.cpp @@ -1144,7 +1144,7 @@ QStringList imageExtensionFilters() QStringList videoExtensionFilters() { QStringList filters; - foreach (const QString &format, videoExtensionsList) + for (const QString &format: videoExtensionsList) filters.append("*" + format); return filters; } @@ -1506,9 +1506,9 @@ int parse_seabear_header(const char *filename, char **params, int pnr) parseLine = f.readLine().trimmed(); - QStringList currColumns = parseLine.split(';'); + const QStringList currColumns = parseLine.split(';'); unsigned short index = 0; - Q_FOREACH (QString columnText, currColumns) { + for (const QString &columnText: currColumns) { if (columnText == "Time") { params[pnr++] = strdup("timeField"); params[pnr++] = intdup(index++); diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index af3fa513f..24f45058a 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -75,11 +75,11 @@ void LocationInformationWidget::mergeSelectedDiveSites() QMessageBox::Ok, QMessageBox::Cancel) != QMessageBox::Ok) return; - QModelIndexList selection = ui.diveSiteListView->selectionModel()->selectedIndexes(); + const QModelIndexList selection = ui.diveSiteListView->selectionModel()->selectedIndexes(); // std::vector guarantees contiguous storage and can therefore be passed to C-code std::vector selected_dive_sites; selected_dive_sites.reserve(selection.count()); - Q_FOREACH (const QModelIndex &idx, selection) { + for (const QModelIndex &idx: selection) { dive_site *ds = idx.data(LocationInformationModel::DIVESITE_ROLE).value(); if (ds) selected_dive_sites.push_back(ds); diff --git a/desktop-widgets/printer.cpp b/desktop-widgets/printer.cpp index fa0cd1010..4b7123adb 100644 --- a/desktop-widgets/printer.cpp +++ b/desktop-widgets/printer.cpp @@ -77,8 +77,8 @@ void Printer::flowRender() // get all references to dontbreak divs int start = 0, end = 0; int fullPageResolution = webView->page()->mainFrame()->contentsSize().height(); - QWebElementCollection dontbreak = webView->page()->mainFrame()->findAllElements(".dontbreak"); - foreach (QWebElement dontbreakElement, dontbreak) { + const QWebElementCollection dontbreak = webView->page()->mainFrame()->findAllElements(".dontbreak"); + for (QWebElement dontbreakElement: dontbreak) { if ((dontbreakElement.geometry().y() + dontbreakElement.geometry().height()) - start < pageSize.height()) { // One more element can be placed end = dontbreakElement.geometry().y() + dontbreakElement.geometry().height(); diff --git a/desktop-widgets/tab-widgets/TabDiveStatistics.cpp b/desktop-widgets/tab-widgets/TabDiveStatistics.cpp index 1b3fe9522..dacb01721 100644 --- a/desktop-widgets/tab-widgets/TabDiveStatistics.cpp +++ b/desktop-widgets/tab-widgets/TabDiveStatistics.cpp @@ -21,9 +21,9 @@ TabDiveStatistics::TabDiveStatistics(QWidget *parent) : TabBase(parent), ui(new ui->timeLimits->overrideMinToolTipText(tr("Shortest dive")); ui->timeLimits->overrideAvgToolTipText(tr("Average length of all selected dives")); - Q_FOREACH (QObject *obj, children()) { - if (QLabel *label = qobject_cast(obj)) - label->setAlignment(Qt::AlignHCenter); + const auto l = findChildren(QString(), Qt::FindDirectChildrenOnly); + for (QLabel *label: l) { + label->setAlignment(Qt::AlignHCenter); } } diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp index 98b8904c2..c934cdb16 100644 --- a/desktop-widgets/tab-widgets/maintab.cpp +++ b/desktop-widgets/tab-widgets/maintab.cpp @@ -1271,14 +1271,13 @@ void MainTab::saveTaggedStrings(const QVector &selectedDives) int MainTab::diffTaggedStrings(QString currentString, QString displayedString, QStringList &addedList, QStringList &removedList) { - QStringList displayedList, currentList; - currentList = currentString.split(',', QString::SkipEmptyParts); - displayedList = displayedString.split(',', QString::SkipEmptyParts); - Q_FOREACH ( const QString tag, currentList) { + const QStringList currentList = currentString.split(',', QString::SkipEmptyParts); + const QStringList displayedList = displayedString.split(',', QString::SkipEmptyParts); + for (const QString &tag: currentList) { if (!displayedList.contains(tag, Qt::CaseInsensitive)) removedList << tag.trimmed(); } - Q_FOREACH (const QString tag, displayedList) { + for (const QString &tag: displayedList) { if (!currentList.contains(tag, Qt::CaseInsensitive)) addedList << tag.trimmed(); } diff --git a/desktop-widgets/tagwidget.cpp b/desktop-widgets/tagwidget.cpp index c8d017aad..6673b23ac 100644 --- a/desktop-widgets/tagwidget.cpp +++ b/desktop-widgets/tagwidget.cpp @@ -70,7 +70,8 @@ void TagWidget::highlight() { removeAllBlocks(); int lastPos = 0; - Q_FOREACH (const QString& s, text().split(QChar(','), QString::SkipEmptyParts)) { + const auto l = text().split(QChar(','), QString::SkipEmptyParts); + for (const QString &s: l) { QString trimmed = s.trimmed(); if (trimmed.isEmpty()) continue; diff --git a/desktop-widgets/templatelayout.cpp b/desktop-widgets/templatelayout.cpp index f451250d6..b28c78741 100644 --- a/desktop-widgets/templatelayout.cpp +++ b/desktop-widgets/templatelayout.cpp @@ -19,20 +19,20 @@ int getTotalWork(print_options *printOptions) void find_all_templates() { - const QString ext(".html"); + const QLatin1String ext(".html"); grantlee_templates.clear(); grantlee_statistics_templates.clear(); QDir dir(getPrintingTemplatePathUser()); - QStringList list = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); - foreach (const QString& filename, list) { + const QStringList list = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); + for (const QString &filename: list) { if (filename.at(filename.size() - 1) != '~' && filename.endsWith(ext)) grantlee_templates.append(filename); } // find statistics templates dir.setPath(getPrintingTemplatePathUser() + QDir::separator() + "statistics"); - list = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); - foreach (const QString& filename, list) { + const QStringList stat = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); + for (const QString &filename: stat) { if (filename.at(filename.size() - 1) != '~' && filename.endsWith(ext)) grantlee_statistics_templates.append(filename); } @@ -66,12 +66,14 @@ void copy_bundled_templates(QString src, QString dst, QStringList *templateBacku QDir dir(src); if (!dir.exists()) return; - foreach (QString d, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { + const auto dirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); + for (const QString &d: dirs) { QString dst_path = dst + QDir::separator() + d; dir.mkpath(dst_path); copy_bundled_templates(src + QDir::separator() + d, dst_path, templateBackupList); } - foreach (QString f, dir.entryList(QDir::Files)) { + const auto files = dir.entryList(QDir::Files); + for (const QString &f: files) { QFile fileSrc(src + QDir::separator() + f); QFile fileDest(dst + QDir::separator() + f); if (fileDest.exists()) { diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 1e2b6e132..196554654 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -599,7 +599,7 @@ void QMLManager::handleSslErrors(const QList &errors) { auto *reply = qobject_cast(sender()); setStartPageText(RED_FONT + tr("Cannot open cloud storage: Error creating https connection") + END_FONT); - Q_FOREACH (QSslError e, errors) { + for (QSslError e: errors) { appendTextToLog(e.errorString()); } reply->abort(); @@ -1761,8 +1761,8 @@ void QMLManager::setStatusbarColor(QColor) void QMLManager::retrieveBluetoothName() { QString name = DC_devName(); - QList btDCs = BTDiscovery::instance()->getBtDcs(); - foreach (BTDiscovery::btVendorProduct btDC, btDCs) { + const QList btDCs = BTDiscovery::instance()->getBtDcs(); + for (BTDiscovery::btVendorProduct btDC: btDCs) { qDebug() << "compare" <setPixmap(tissues); - Q_FOREACH (QGraphicsItem *item, scene()->items(pos, Qt::IntersectsItemBoundingRect - ,Qt::DescendingOrder, scene()->views().first()->transform())) { + const auto l = scene()->items(pos, Qt::IntersectsItemBoundingRect, Qt::DescendingOrder, + scene()->views().first()->transform()); + for (QGraphicsItem *item: l) { if (!item->toolTip().isEmpty()) addToolTip(item->toolTip()); } diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 157ab9fcd..236afb850 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1101,9 +1101,9 @@ bool ProfileWidget2::eventFilter(QObject *object, QEvent *event) #endif template -static void hideAll(T &container) +static void hideAll(const T &container) { - Q_FOREACH (auto *item, container) + for (auto *item: container) item->setVisible(false); } diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index 6edb69705..4d66c5406 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -144,12 +144,12 @@ DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) m_instance = this; } -void DiveListModel::addDive(QListlistOfDives) +void DiveListModel::addDive(const QList &listOfDives) { if (listOfDives.isEmpty()) return; beginInsertRows(QModelIndex(), rowCount(), rowCount() + listOfDives.count() - 1); - foreach (dive *d, listOfDives) { + for (dive *d: listOfDives) { m_dives.append(new DiveObjectHelper(d)); } endInsertRows(); diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h index 50b45caa9..37d3513bf 100644 --- a/qt-models/divelistmodel.h +++ b/qt-models/divelistmodel.h @@ -44,7 +44,7 @@ public: static DiveListModel *instance(); DiveListModel(QObject *parent = 0); - void addDive(QList listOfDives); + void addDive(const QList &listOfDives); void addAllDives(); void insertDive(int i, DiveObjectHelper *newDive); void removeDive(int i); diff --git a/subsurface-helper.cpp b/subsurface-helper.cpp index 786c2ab03..291a3e3bf 100644 --- a/subsurface-helper.cpp +++ b/subsurface-helper.cpp @@ -76,8 +76,8 @@ void run_ui() // same directory the executable was started from /Contents/MacOS/ // To work around this we need to manually copy the components at install time // to Contents/Frameworks/qml and make sure that we add the correct import path - QStringList importPathList = engine.importPathList(); - Q_FOREACH (QString importPath, importPathList) { + const QStringList importPathList = engine.importPathList(); + for (QString importPath: importPathList) { if (importPath.contains("MacOS")) engine.addImportPath(importPath.replace("MacOS", "Frameworks")); }