diff --git a/src/AddRecordDialog.cpp b/src/AddRecordDialog.cpp index 406e745d..5a6a5f19 100644 --- a/src/AddRecordDialog.cpp +++ b/src/AddRecordDialog.cpp @@ -17,7 +17,7 @@ private: bool m_isNull; public: - NullLineEdit(QWidget* parent=nullptr): QLineEdit(parent), m_isNull (true) {} + explicit NullLineEdit(QWidget* parent=nullptr): QLineEdit(parent), m_isNull (true) {} bool isNull() {return m_isNull;} void setNull(bool value) { @@ -65,7 +65,7 @@ protected: // Styled Item Delegate for non-editable columns (all except Value) class NoEditDelegate: public QStyledItemDelegate { public: - NoEditDelegate(QObject* parent=nullptr): QStyledItemDelegate(parent) {} + explicit NoEditDelegate(QObject* parent=nullptr): QStyledItemDelegate(parent) {} QWidget* createEditor(QWidget* /* parent */, const QStyleOptionViewItem& /* option */, const QModelIndex& /* index */) const override { return nullptr; } @@ -75,7 +75,7 @@ public: class EditDelegate: public QStyledItemDelegate { public: - EditDelegate(QObject* parent=nullptr): QStyledItemDelegate(parent) {} + explicit EditDelegate(QObject* parent=nullptr): QStyledItemDelegate(parent) {} QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem& /* option */, const QModelIndex& /* index */) const override { return new NullLineEdit(parent); } @@ -180,7 +180,7 @@ void AddRecordDialog::populateFields() ui->treeWidget->setItemDelegateForColumn(kValue, new EditDelegate(this)); sqlb::FieldVector fields; - QVector fks; + std::vector fks; QStringList pk; // Initialize fields, fks and pk differently depending on whether it's a table or a view. @@ -190,12 +190,12 @@ void AddRecordDialog::populateFields() sqlb::TablePtr m_table = pdb.getObjectByName(curTable); fields = m_table->fields; for(const sqlb::Field& f : fields) - fks.append(m_table->constraint({f.name()}, sqlb::Constraint::ForeignKeyConstraintType)); + fks.push_back(m_table->constraint({f.name()}, sqlb::Constraint::ForeignKeyConstraintType)); pk = m_table->primaryKey(); } else { sqlb::ViewPtr m_view = pdb.getObjectByName(curTable); fields = m_view->fields; - fks.fill(sqlb::ConstraintPtr(nullptr), fields.size()); + fks.resize(fields.size(), sqlb::ConstraintPtr(nullptr)); for(const auto& col : pseudo_pk) pk << QString::fromStdString(col); } diff --git a/src/CipherSettings.cpp b/src/CipherSettings.cpp index 3fe58b95..fa1acfeb 100644 --- a/src/CipherSettings.cpp +++ b/src/CipherSettings.cpp @@ -1,5 +1,12 @@ #include "CipherSettings.h" +CipherSettings::CipherSettings() + : keyFormat(Passphrase), + pageSize(0), + kdfIterations(0) +{ +} + CipherSettings::KeyFormats CipherSettings::getKeyFormat() const { return keyFormat; diff --git a/src/CipherSettings.h b/src/CipherSettings.h index 7fe992fd..139b043a 100644 --- a/src/CipherSettings.h +++ b/src/CipherSettings.h @@ -6,6 +6,8 @@ class CipherSettings { public: + CipherSettings(); + enum KeyFormats { Passphrase, diff --git a/src/CondFormat.cpp b/src/CondFormat.cpp index 9d87c3ca..3b76bf80 100644 --- a/src/CondFormat.cpp +++ b/src/CondFormat.cpp @@ -4,8 +4,8 @@ CondFormat::CondFormat(const QString& filter, const QColor& foreground, const QColor& background, const QString& encoding) : m_filter(filter), - m_fgColor(foreground), - m_bgColor(background) + m_bgColor(background), + m_fgColor(foreground) { if (!filter.isEmpty()) m_sqlCondition = filterToSqlCondition(filter, encoding); diff --git a/src/CondFormat.h b/src/CondFormat.h index 9e1d69b4..20a81346 100644 --- a/src/CondFormat.h +++ b/src/CondFormat.h @@ -8,7 +8,7 @@ class CondFormat { public: - CondFormat() {}; + CondFormat() {} explicit CondFormat(const QString& filter, const QColor& foreground, const QColor& background, const QString& encoding = QString()); static QString filterToSqlCondition(const QString& value, const QString& encoding = QString()); @@ -20,10 +20,10 @@ private: QColor m_fgColor; public: - QString sqlCondition() const { return m_sqlCondition; }; - QString filter() const { return m_filter; }; - QColor backgroundColor() const { return m_bgColor; }; - QColor foregroundColor() const { return m_fgColor; }; + QString sqlCondition() const { return m_sqlCondition; } + QString filter() const { return m_filter; } + QColor backgroundColor() const { return m_bgColor; } + QColor foregroundColor() const { return m_fgColor; } }; diff --git a/src/Data.cpp b/src/Data.cpp index f123cdda..e34152e4 100644 --- a/src/Data.cpp +++ b/src/Data.cpp @@ -73,7 +73,7 @@ QByteArray removeBom(QByteArray& data) } } -QStringList toStringList(const QList list) { +QStringList toStringList(const QList& list) { QStringList strings; for (const QByteArray &item : list) { strings.append(QString::fromUtf8(item)); diff --git a/src/Data.h b/src/Data.h index c9881e7c..df6a708f 100644 --- a/src/Data.h +++ b/src/Data.h @@ -18,7 +18,7 @@ bool startsWithBom(const QByteArray& data); // with a BOM an empty byte array is returned and the original data is not modified. QByteArray removeBom(QByteArray& data); -QStringList toStringList(const QList list); +QStringList toStringList(const QList& list); QByteArray encodeString(const QByteArray& str, const QString& encoding); diff --git a/src/EditIndexDialog.cpp b/src/EditIndexDialog.cpp index d24aa464..dca0a2cd 100644 --- a/src/EditIndexDialog.cpp +++ b/src/EditIndexDialog.cpp @@ -117,7 +117,7 @@ void EditIndexDialog::updateColumnLists() if(!table) return; sqlb::FieldInfoList tableFields = table->fieldInformation(); - ui->tableTableColumns->setRowCount(tableFields.size()); + ui->tableTableColumns->setRowCount(static_cast(tableFields.size())); int tableRows = 0; for(size_t i=0;itableIndexColumns->blockSignals(true); - ui->tableIndexColumns->setRowCount(indexFields.size()); + ui->tableIndexColumns->setRowCount(static_cast(indexFields.size())); for(size_t i=0;itableConstraints->blockSignals(true); - ui->tableConstraints->setRowCount(constraints.size()); + ui->tableConstraints->setRowCount(static_cast(constraints.size())); int row = 0; for(const auto& pair : constraints) { @@ -609,7 +609,7 @@ void EditTableDialog::addField() // Find an unused name for the field by starting with 'Fieldx' where x is the number of fields + 1. // If this name happens to exist already, increase x by one until we find an unused name. { - unsigned int field_number = ui->treeWidget->topLevelItemCount(); + int field_number = ui->treeWidget->topLevelItemCount(); QString field_name; do { diff --git a/src/ExportDataDialog.cpp b/src/ExportDataDialog.cpp index ead29b0f..bc08ede2 100644 --- a/src/ExportDataDialog.cpp +++ b/src/ExportDataDialog.cpp @@ -91,9 +91,9 @@ bool ExportDataDialog::exportQuery(const QString& sQuery, const QString& sFilena return exportQueryCsv(sQuery, sFilename); case ExportFormatJson: return exportQueryJson(sQuery, sFilename); - default: - return false; } + + return false; } bool ExportDataDialog::exportQueryCsv(const QString& sQuery, const QString& sFilename) diff --git a/src/FileDialog.h b/src/FileDialog.h index 8310bc31..c2877824 100644 --- a/src/FileDialog.h +++ b/src/FileDialog.h @@ -31,15 +31,15 @@ class FileDialog : public QFileDialog public: static QString getOpenFileName(const FileDialogTypes dialogType, QWidget* parent = nullptr, const QString& caption = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, - Options options = 0); + Options options = Options()); static QStringList getOpenFileNames(const FileDialogTypes dialogType, QWidget* parent = nullptr, const QString& caption = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, - Options options = 0); + Options options = Options()); static QString getSaveFileName(const FileDialogTypes dialogType, QWidget* parent = nullptr, const QString& caption = QString(), const QString& filter = QString(), const QString& defaultFileName = QString(), QString* selectedFilter = nullptr, - Options options = 0); + Options options = Options()); static QString getExistingDirectory(const FileDialogTypes dialogType, QWidget* parent = nullptr, const QString& caption = QString(), - Options options = 0); + Options options = Options()); static QString getSqlDatabaseFileFilter(); diff --git a/src/ForeignKeyEditorDelegate.cpp b/src/ForeignKeyEditorDelegate.cpp index 0b8c3520..d226d73d 100644 --- a/src/ForeignKeyEditorDelegate.cpp +++ b/src/ForeignKeyEditorDelegate.cpp @@ -122,7 +122,7 @@ void ForeignKeyEditorDelegate::setEditorData(QWidget* editor, const QModelIndex& { ForeignKeyEditor* fkEditor = static_cast(editor); - int column = index.row(); // weird? I know right + size_t column = static_cast(index.row()); // weird? I know right const sqlb::Field& field = m_table.fields.at(column); auto fk = std::dynamic_pointer_cast(m_table.constraint({field.name()}, sqlb::Constraint::ForeignKeyConstraintType)); if (fk) { @@ -140,7 +140,7 @@ void ForeignKeyEditorDelegate::setModelData(QWidget* editor, QAbstractItemModel* ForeignKeyEditor* fkEditor = static_cast(editor); QString sql = fkEditor->getSql(); - int column = index.row(); + size_t column = static_cast(index.row()); const sqlb::Field& field = m_table.fields.at(column); if (sql.isEmpty()) { // Remove the foreign key diff --git a/src/ImportCsvDialog.cpp b/src/ImportCsvDialog.cpp index e61f7115..4262d68d 100644 --- a/src/ImportCsvDialog.cpp +++ b/src/ImportCsvDialog.cpp @@ -43,7 +43,7 @@ ImportCsvDialog::ImportCsvDialog(const QStringList &filenames, DBBrowserDB* db, // Create a list of all available encodings and create an auto completion list from them QStringList encodingList; - for(const QString& enc : QTextCodec::availableCodecs()) + for(const QByteArray& enc : QTextCodec::availableCodecs()) encodingList.push_back(enc); encodingCompleter = new QCompleter(encodingList, this); encodingCompleter->setCaseSensitivity(Qt::CaseInsensitive); @@ -136,17 +136,17 @@ public: m_pProgressDlg->setWindowModality(Qt::ApplicationModal); } - ~CSVImportProgress() + ~CSVImportProgress() override { delete m_pProgressDlg; } - void start() + void start() override { m_pProgressDlg->show(); } - bool update(unsigned long long pos) + bool update(unsigned long long pos) override { m_pProgressDlg->setValue(static_cast((static_cast(pos) / static_cast(totalFileSize)) * 10000.0f)); qApp->processEvents(); @@ -154,7 +154,7 @@ public: return !m_pProgressDlg->wasCanceled(); } - void end() + void end() override { m_pProgressDlg->hide(); } @@ -236,7 +236,7 @@ void ImportCsvDialog::updatePreview() // Reset preview widget ui->tablePreview->clear(); - ui->tablePreview->setColumnCount(fieldList.size()); + ui->tablePreview->setColumnCount(static_cast(fieldList.size())); // Exit if there are no lines to preview at all if(fieldList.size() == 0) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index ea8bb9af..9765f450 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -103,8 +103,8 @@ MainWindow::MainWindow(QWidget* parent) remoteDock(new RemoteDock(this)), findReplaceDialog(new FindReplaceDialog(this)), gotoValidator(new QIntValidator(0, 0, this)), - isProjectModified(false), - execute_sql_worker(nullptr) + execute_sql_worker(nullptr), + isProjectModified(false) { ui->setupUi(this); init(); @@ -1504,10 +1504,10 @@ void MainWindow::executeQuery() // Log the query and the result message. // The query takes the last placeholder as it may itself contain the sequence '%' + number. QString query = editor->text(from_position, to_position); - QString log_message = QString("-- " + tr("At line %1:") + "\n%3\n-- " + tr("Result: %2")).arg(execute_from_line+1).arg(status_message).arg(query.trimmed()); + QString log_message = "-- " + tr("At line %1:").arg(execute_from_line+1) + "\n" + query.trimmed() + "\n-- " + tr("Result: %1").arg(status_message); db.logSQL(log_message, kLogMsg_User); - log_message = QString(tr("Result: %2") + "\n" + tr("At line %1:") + "\n%3").arg(execute_from_line+1).arg(status_message).arg(query.trimmed()); + log_message = tr("Result: %2").arg(status_message) + "\n" + tr("At line %1:").arg(execute_from_line+1) + "\n" + query.trimmed(); // Update the execution area sqlWidget->finishExecution(log_message, ok); }; @@ -2918,7 +2918,7 @@ bool MainWindow::loadProject(QString filename, bool readOnly) if(xml.name() == "sql") { // SQL editor tab - unsigned int index = openSqlTab(); + int index = openSqlTab(); ui->tabSqlAreas->setTabText(index, xml.attributes().value("name").toString()); SqlTextEdit* sqlEditor = qobject_cast(ui->tabSqlAreas->widget(index))->getEditor(); sqlEditor->setText(xml.readElementText()); @@ -3456,9 +3456,9 @@ void MainWindow::editDataColumnDisplayFormat() int field_number = sender()->property("clicked_column").toInt(); QString field_name; if (db.getObjectByName(current_table)->type() == sqlb::Object::Table) - field_name = db.getObjectByName(current_table)->fields.at(field_number-1).name(); + field_name = db.getObjectByName(current_table)->fields.at(field_number-1).name(); else - field_name = db.getObjectByName(current_table)->fieldNames().at(field_number-1); + field_name = db.getObjectByName(current_table)->fieldNames().at(field_number-1); // Get the current display format of the field QString current_displayformat = browseTableSettings[current_table].displayFormats[field_number]; @@ -3862,7 +3862,7 @@ void MainWindow::runSqlNewTab(const QString& query, const QString& title) if (ui->mainTab->indexOf(ui->query) == -1) ui->mainTab->addTab(ui->query, ui->query->accessibleName()); ui->mainTab->setCurrentWidget(ui->query); - unsigned int index = openSqlTab(); + int index = openSqlTab(); ui->tabSqlAreas->setTabText(index, title); qobject_cast(ui->tabSqlAreas->widget(index))->getEditor()->setText(query); executeQuery(); diff --git a/src/PlotDock.cpp b/src/PlotDock.cpp index 256a9dc2..7878436e 100644 --- a/src/PlotDock.cpp +++ b/src/PlotDock.cpp @@ -7,6 +7,7 @@ #include #include +#include PlotDock::PlotDock(QWidget* parent) : QDialog(parent), @@ -524,7 +525,7 @@ void PlotDock::on_treePlotColumns_itemDoubleClicked(QTreeWidgetItem* item, int c // On double click open the colordialog QColorDialog colordialog(this); QColor curbkcolor = item->backgroundColor(column); - QColor precolor = !curbkcolor.isValid() ? static_cast(qrand() % 13 + 5) : curbkcolor; + QColor precolor = !curbkcolor.isValid() ? static_cast(QRandomGenerator::global()->bounded(5, 13)) : curbkcolor; QColor color = colordialog.getColor(precolor, this, tr("Choose an axis color")); if(color.isValid()) { diff --git a/src/RowLoader.cpp b/src/RowLoader.cpp index 3046567e..1b12cc03 100644 --- a/src/RowLoader.cpp +++ b/src/RowLoader.cpp @@ -35,7 +35,7 @@ RowLoader::RowLoader ( { } -void RowLoader::setQuery (QString new_query, QString newCountQuery) +void RowLoader::setQuery (const QString& new_query, const QString& newCountQuery) { std::lock_guard lk(m); query = new_query; diff --git a/src/RowLoader.h b/src/RowLoader.h index 5fb11808..3a7ae295 100644 --- a/src/RowLoader.h +++ b/src/RowLoader.h @@ -34,7 +34,7 @@ public: Cache & cache_data ); - void setQuery (QString new_query, QString newCountQuery = QString()); + void setQuery (const QString& new_query, const QString& newCountQuery = QString()); void triggerRowCountDetermination (int token); diff --git a/src/RunSql.cpp b/src/RunSql.cpp index b090a397..1b848a37 100644 --- a/src/RunSql.cpp +++ b/src/RunSql.cpp @@ -147,7 +147,7 @@ bool RunSql::executeNextStatement() acquireDbAccess(); sqlite3_stmt* vm; int sql3status = sqlite3_prepare_v2(pDb.get(), tail, tail_length, &vm, &tail); - QString queryPart = QString::fromUtf8(qbegin, tail - qbegin); + QString queryPart = QString::fromUtf8(qbegin, static_cast(tail - qbegin)); int tail_length_before = tail_length; tail_length -= (tail - qbegin); int end_of_current_statement_position = execute_current_position + tail_length_before - tail_length; diff --git a/src/Settings.cpp b/src/Settings.cpp index b881b1cb..087543c6 100644 --- a/src/Settings.cpp +++ b/src/Settings.cpp @@ -364,6 +364,7 @@ QColor Settings::getDefaultColorValue(const QString& group, const QString& name, return QColor(Qt::lightGray).name(); if(name == "bin_bg_colour") return QPalette().color(QPalette::Active, QPalette::Base).name(); + break; case DarkStyle : if(name == "null_fg_colour") return QColor("#787878"); @@ -377,6 +378,7 @@ QColor Settings::getDefaultColorValue(const QString& group, const QString& name, return QColor("#787878"); if(name == "bin_bg_colour") return QColor("#19232D"); + break; } } diff --git a/src/sql/Query.cpp b/src/sql/Query.cpp index 4472ae21..73fbed3a 100644 --- a/src/sql/Query.cpp +++ b/src/sql/Query.cpp @@ -5,10 +5,6 @@ namespace sqlb { -Query::Query() -{ -} - void Query::clear() { m_table.clear(); @@ -81,7 +77,7 @@ std::string Query::buildQuery(bool withRowid) const std::string order_by; for(const auto& sorted_column : m_sort) { - if(sorted_column.column < static_cast(m_column_names.size())) + if(sorted_column.column < m_column_names.size()) order_by += sqlb::escapeIdentifier(m_column_names.at(sorted_column.column)) + " " + (sorted_column.direction == sqlb::Ascending ? "ASC" : "DESC") + ","; } diff --git a/src/sql/Query.h b/src/sql/Query.h index 2e7fdc94..b166b921 100644 --- a/src/sql/Query.h +++ b/src/sql/Query.h @@ -18,7 +18,7 @@ enum SortDirection struct SortedColumn { - SortedColumn(int column_, SortDirection direction_) : + SortedColumn(size_t column_, SortDirection direction_) : column(column_), direction(direction_) {} @@ -28,7 +28,7 @@ struct SortedColumn return column == rhs.column && direction == rhs.direction; } - int column; + size_t column; SortDirection direction; }; @@ -46,8 +46,8 @@ struct SelectedColumn class Query { public: - Query(); - Query(const sqlb::ObjectIdentifier& table) : + Query() {} + explicit Query(const sqlb::ObjectIdentifier& table) : m_table(table) {} @@ -69,8 +69,8 @@ public: const std::vector& selectedColumns() const { return m_selected_columns; } std::vector& selectedColumns() { return m_selected_columns; } - const std::unordered_map& where() const { return m_where; } - std::unordered_map& where() { return m_where; } + const std::unordered_map& where() const { return m_where; } + std::unordered_map& where() { return m_where; } const std::vector& orderBy() const { return m_sort; } std::vector& orderBy() { return m_sort; } @@ -81,7 +81,7 @@ private: sqlb::ObjectIdentifier m_table; std::vector m_rowid_columns; std::vector m_selected_columns; - std::unordered_map m_where; + std::unordered_map m_where; std::vector m_sort; std::vector::iterator findSelectedColumnByName(const std::string& name); diff --git a/src/sql/sqlitetypes.cpp b/src/sql/sqlitetypes.cpp index d1028a89..560713ab 100644 --- a/src/sql/sqlitetypes.cpp +++ b/src/sql/sqlitetypes.cpp @@ -39,12 +39,12 @@ std::string escapeIdentifier(std::string id) return escapeIdentifier(QString::fromStdString(id)).toStdString(); } -QStringList escapeIdentifier(const QStringList& ids) +QStringList escapeIdentifier(QStringList ids) { - QStringList ret; - for(const QString& id : ids) - ret.push_back(escapeIdentifier(id)); - return ret; + std::transform(ids.begin(), ids.end(), ids.begin(), [](const QString& id) { + return escapeIdentifier(id); + }); + return ids; } /** @@ -59,10 +59,8 @@ class SetLocaleToC { public: SetLocaleToC() + : oldLocale(std::setlocale(LC_CTYPE, nullptr)) // Query current locale and save it { - // Query current locale and save it - oldLocale = std::setlocale(LC_CTYPE, nullptr); - // Set locale for standard library functions std::setlocale(LC_CTYPE, "C.UTF-8"); } @@ -342,8 +340,7 @@ Table& Table::operator=(const Table& rhs) // Make copies of the fields and the constraints. This is necessary in order to avoid any unwanted changes to the application's main database // schema representation just by modifying a reference to the fields or constraints and thinking it operates on a copy. - for(const Field& f : rhs.fields) - fields.push_back(f); + std::copy(rhs.fields.begin(), rhs.fields.end(), std::back_inserter(fields)); m_constraints = rhs.m_constraints; return *this; @@ -428,11 +425,7 @@ FieldInfoList Table::fieldInformation() const bool Table::hasAutoIncrement() const { - for(const Field& f : fields) { - if(f.autoIncrement()) - return true; - } - return false; + return std::any_of(fields.begin(), fields.end(), [](const Field& f) {return f.autoIncrement(); }); } TablePtr Table::parseSQL(const QString& sSQL) @@ -510,12 +503,12 @@ QString Table::sql(const QString& schema, bool ifNotExists) const return sql + ";"; } -void Table::addConstraint(QStringList fields, ConstraintPtr constraint) +void Table::addConstraint(const QStringList& fields, ConstraintPtr constraint) { m_constraints.insert({fields, constraint}); } -void Table::setConstraint(QStringList fields, ConstraintPtr constraint) +void Table::setConstraint(const QStringList& fields, ConstraintPtr constraint) { // Delete any old constraints of this type for these fields removeConstraints(fields, constraint->type()); @@ -524,7 +517,7 @@ void Table::setConstraint(QStringList fields, ConstraintPtr constraint) addConstraint(fields, constraint); } -void Table::removeConstraints(QStringList fields, Constraint::ConstraintTypes type) +void Table::removeConstraints(const QStringList& fields, Constraint::ConstraintTypes type) { for(auto it = m_constraints.begin();it!=m_constraints.end();) { @@ -535,7 +528,7 @@ void Table::removeConstraints(QStringList fields, Constraint::ConstraintTypes ty } } -ConstraintPtr Table::constraint(QStringList fields, Constraint::ConstraintTypes type) const +ConstraintPtr Table::constraint(const QStringList& fields, Constraint::ConstraintTypes type) const { auto list = constraints(fields, type); if(list.size()) @@ -544,7 +537,7 @@ ConstraintPtr Table::constraint(QStringList fields, Constraint::ConstraintTypes return ConstraintPtr(nullptr); } -std::vector Table::constraints(QStringList fields, Constraint::ConstraintTypes type) const +std::vector Table::constraints(const QStringList& fields, Constraint::ConstraintTypes type) const { ConstraintMap::const_iterator begin, end; if(fields.empty()) @@ -1251,8 +1244,7 @@ Index& Index::operator=(const Index& rhs) m_whereExpr = rhs.m_whereExpr; // Make copies of the column - for(const IndexedColumn& c : rhs.fields) - fields.push_back(c); + std::copy(rhs.fields.begin(), rhs.fields.end(), std::back_inserter(fields)); return *this; } diff --git a/src/sql/sqlitetypes.h b/src/sql/sqlitetypes.h index 16c688ea..0ccd9809 100644 --- a/src/sql/sqlitetypes.h +++ b/src/sql/sqlitetypes.h @@ -54,7 +54,7 @@ void setIdentifierQuoting(escapeQuoting toQuoting); QString escapeIdentifier(QString id); std::string escapeIdentifier(std::string id); -QStringList escapeIdentifier(const QStringList& ids); +QStringList escapeIdentifier(QStringList ids); class ObjectIdentifier { @@ -430,11 +430,11 @@ public: FieldInfoList fieldInformation() const override; - void addConstraint(QStringList fields, ConstraintPtr constraint); - void setConstraint(QStringList fields, ConstraintPtr constraint); - void removeConstraints(QStringList fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType); //! Only removes the first constraint, if any - ConstraintPtr constraint(QStringList fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType) const; //! Only returns the first constraint, if any - std::vector constraints(QStringList fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType) const; + void addConstraint(const QStringList& fields, ConstraintPtr constraint); + void setConstraint(const QStringList& fields, ConstraintPtr constraint); + void removeConstraints(const QStringList& fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType); //! Only removes the first constraint, if any + ConstraintPtr constraint(const QStringList& fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType) const; //! Only returns the first constraint, if any + std::vector constraints(const QStringList& fields = QStringList(), Constraint::ConstraintTypes type = Constraint::NoType) const; ConstraintMap allConstraints() const { return m_constraints; } void setConstraints(const ConstraintMap& constraints); QStringList& primaryKeyRef(); diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index a1e1179d..a8a3a4e3 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -43,7 +43,7 @@ std::function Callback::func; int collCompare(void* /*pArg*/, int sizeA, const void* sA, int sizeB, const void* sB) { if(sizeA == sizeB) - return memcmp(sA, sB, sizeA); + return memcmp(sA, sB, static_cast(sizeA)); return sizeA - sizeB; } @@ -687,7 +687,7 @@ bool DBBrowserDB::close() return true; } -DBBrowserDB::db_pointer_type DBBrowserDB::get(QString user, bool force_wait) +DBBrowserDB::db_pointer_type DBBrowserDB::get(const QString& user, bool force_wait) { if(!_db) return nullptr; @@ -753,7 +753,7 @@ bool DBBrowserDB::dump(const QString& filePath, QApplication::setOverrideCursor(Qt::WaitCursor); // Count the total number of all records in all tables for the progress dialog - size_t numRecordsTotal = 0, numRecordsCurrent = 0; + size_t numRecordsTotal = 0; objectMap objMap = schemata["main"]; // We only always export the main database, not the attached databases QList tables = objMap.values("table"); for(QMutableListIterator it(tables);it.hasNext();) @@ -772,7 +772,7 @@ bool DBBrowserDB::dump(const QString& filePath, } QProgressDialog progress(tr("Exporting database to SQL file..."), - tr("Cancel"), 0, numRecordsTotal); + tr("Cancel"), 0, static_cast(numRecordsTotal)); progress.setWindowModality(Qt::ApplicationModal); progress.show(); qApp->processEvents(); @@ -818,6 +818,7 @@ bool DBBrowserDB::dump(const QString& filePath, { int columns = sqlite3_column_count(stmt); size_t counter = 0; + size_t numRecordsCurrent = 0; qApp->processEvents(); while(sqlite3_step(stmt) == SQLITE_ROW) { @@ -872,7 +873,7 @@ bool DBBrowserDB::dump(const QString& filePath, stream << ','; } - progress.setValue(++numRecordsCurrent); + progress.setValue(static_cast(++numRecordsCurrent)); if(counter % 5000 == 0) qApp->processEvents(); counter++; @@ -1080,7 +1081,7 @@ bool DBBrowserDB::executeMultiSQL(QByteArray query, bool dirty, bool log) } // Execute next statement - res = sqlite3_prepare_v2(_db, tail, tail_end - tail + 1, &vm, &tail); + res = sqlite3_prepare_v2(_db, tail, static_cast(tail_end - tail + 1), &vm, &tail); if(res == SQLITE_OK) { switch(sqlite3_step(vm)) diff --git a/src/sqlitedb.h b/src/sqlitedb.h index 418400c6..902efee5 100644 --- a/src/sqlitedb.h +++ b/src/sqlitedb.h @@ -38,7 +38,7 @@ private: /// custom unique_ptr deleter releases database for further use by others struct DatabaseReleaser { - DatabaseReleaser(DBBrowserDB * pParent_ = nullptr) : pParent(pParent_) {} + explicit DatabaseReleaser(DBBrowserDB * pParent_ = nullptr) : pParent(pParent_) {} DBBrowserDB * pParent; @@ -91,7 +91,7 @@ public: \returns a unique_ptr containing the SQLite database handle, or nullptr in case no database is open. **/ - db_pointer_type get (QString user, bool force_wait = false); + db_pointer_type get (const QString& user, bool force_wait = false); bool setSavepoint(const QString& pointname = "RESTOREPOINT"); bool releaseSavepoint(const QString& pointname = "RESTOREPOINT"); diff --git a/src/sqlitetablemodel.cpp b/src/sqlitetablemodel.cpp index 7811b478..0b83f6e8 100644 --- a/src/sqlitetablemodel.cpp +++ b/src/sqlitetablemodel.cpp @@ -207,7 +207,7 @@ void SqliteTableModel::setQuery(const QString& sQuery, const QString& sCountQuer int SqliteTableModel::rowCount(const QModelIndex&) const { - return m_currentRowCount; + return static_cast(m_currentRowCount); } int SqliteTableModel::columnCount(const QModelIndex&) const @@ -215,7 +215,7 @@ int SqliteTableModel::columnCount(const QModelIndex&) const return m_headers.size(); } -int SqliteTableModel::filterCount() const +size_t SqliteTableModel::filterCount() const { return m_query.where().size(); } diff --git a/src/sqlitetablemodel.h b/src/sqlitetablemodel.h index 8cdadf33..e891e0ff 100644 --- a/src/sqlitetablemodel.h +++ b/src/sqlitetablemodel.h @@ -34,7 +34,7 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; - int filterCount() const; + size_t filterCount() const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; @@ -86,7 +86,7 @@ public: void setQuery(const sqlb::Query& query); void setChunkSize(size_t chunksize); - size_t chunkSize() { return m_chunkSize; }; + size_t chunkSize() { return m_chunkSize; } void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; void sort(const std::vector& columns); sqlb::ObjectIdentifier currentTableName() const { return m_query.table(); } @@ -116,7 +116,7 @@ public: void addCondFormat(int column, const CondFormat& condFormat); void setCondFormats(int column, const QVector& condFormats); - DBBrowserDB& db() { return m_db; }; + DBBrowserDB& db() { return m_db; } public slots: void updateFilter(int column, const QString& value); diff --git a/src/tests/TestImport.cpp b/src/tests/TestImport.cpp index 30e09b4f..f9e5d5a8 100644 --- a/src/tests/TestImport.cpp +++ b/src/tests/TestImport.cpp @@ -83,13 +83,13 @@ void TestImport::csvImport_data() result.append(QVector() << "g" << "h" << "i"); QTest::newRow("commas_noquotes") << "a,b,c\nd,e,f\ng,h,i\n" << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; QTest::newRow("semicolons_noquotes") << "a;b;c\nd;e;f\ng;h;i\n" << ';' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; @@ -107,13 +107,13 @@ void TestImport::csvImport_data() << result; QTest::newRow("windowslinebreaks") << "a,b,c\r\nd,e,f\r\ng,h,i\r\n" << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; QTest::newRow("oldmaclinebreaks") << "a,b,c\rd,e,f\rg,h,i\r" << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; @@ -126,7 +126,7 @@ void TestImport::csvImport_data() result.append(QVector() << "" << "" << "f"); QTest::newRow("emptyvalues") << "a,b,\nc,\nd,,e\n\n,,f" << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; @@ -135,7 +135,7 @@ void TestImport::csvImport_data() result.append(QVector() << "a" << "b" << "c"); QTest::newRow("oneline") << "a,b,c" << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; @@ -155,7 +155,7 @@ void TestImport::csvImport_data() QString csv = QString::fromUtf8("\xC2\xAE") + "," + QString::fromUtf8("\xC9\x85") + "," + QString::fromUtf8("\xC6\x89") + "\n"; QTest::newRow("utf8chars") << csv << ',' - << (char)0 + << static_cast(0) << "UTF-8" << 3 << result; @@ -165,7 +165,7 @@ void TestImport::csvImport_data() QString csv2 = QString::fromUtf8("\u4E18") + "," + QString::fromUtf8("\u4E26") + "," + QString::fromUtf8("\u4E4B") + "\n"; QTest::newRow("utf16chars") << csv2 << ',' - << (char)0 + << static_cast(0) << "UTF-16" << 3 << result;