From bd1f363d72c71324232e11b2029000fb3bd5876a Mon Sep 17 00:00:00 2001 From: Sune Vuorela Date: Mon, 21 Aug 2023 15:39:44 +0200 Subject: Clazy cleanup and other minor fixes - Code is now clazy clean with CLAZY_CHECKS="no-connect-by-name,no-overloaded-signal" - Given the minimum Qt version is 5.10, remove ifdef's for older versions - Some more range based for and related cleanups. - Some include cleanups --- main/main.cpp | 7 ++----- src/configdialog.cpp | 5 +++-- src/filecontent.cpp | 2 +- src/imitatepass.cpp | 53 ++++++++++-------------------------------------- src/imitatepass.h | 2 -- src/keygendialog.cpp | 21 +++++++++---------- src/mainwindow.cpp | 19 +++++------------ src/mainwindow.h | 2 -- src/pass.cpp | 34 +++++++++++-------------------- src/pass.h | 7 ------- src/passworddialog.cpp | 4 ++-- src/qprogressindicator.h | 14 ------------- src/qtpass.cpp | 35 +++++++++++++------------------- src/realpass.cpp | 9 ++++---- src/storemodel.cpp | 10 ++++----- src/storemodel.h | 1 - src/usersdialog.cpp | 2 -- src/util.cpp | 11 ++++++++++ src/util.h | 3 +++ 19 files changed, 84 insertions(+), 157 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index ad80a24a..482a69fc 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -41,8 +41,7 @@ * @return */ int main(int argc, char *argv[]) { -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) && \ - QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif @@ -102,12 +101,10 @@ int main(int argc, char *argv[]) { &MainWindow::messageAvailable); #endif -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) QGuiApplication::setDesktopFileName("qtpass.desktop"); -#endif // Center the MainWindow on the screen the mouse pointer is currently on -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) static int cursorScreen = app.desktop()->screenNumber(app.desktop()->cursor().pos()); QPoint cursorScreenCenter = diff --git a/src/configdialog.cpp b/src/configdialog.cpp index 4a711b03..581465b6 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -3,6 +3,7 @@ #include "mainwindow.h" #include "qtpasssettings.h" #include "ui_configdialog.h" +#include "util.h" #include #include #include @@ -303,7 +304,7 @@ QString ConfigDialog::selectExecutable() { dialog.setFileMode(QFileDialog::ExistingFile); dialog.setOption(QFileDialog::ReadOnly); if (dialog.exec()) - return dialog.selectedFiles().first(); + return dialog.selectedFiles().constFirst(); return QString(); } @@ -318,7 +319,7 @@ QString ConfigDialog::selectFolder() { dialog.setFilter(QDir::NoFilter); dialog.setOption(QFileDialog::ShowDirsOnly); if (dialog.exec()) - return dialog.selectedFiles().first(); + return dialog.selectedFiles().constFirst(); return QString(); } diff --git a/src/filecontent.cpp b/src/filecontent.cpp index 65984850..1c29ae5c 100644 --- a/src/filecontent.cpp +++ b/src/filecontent.cpp @@ -11,7 +11,7 @@ FileContent FileContent::parse(const QString &fileContent, QString password = lines.takeFirst(); QStringList remainingData, remainingDataDisplay; NamedValues namedValues; - for (const QString &line : lines) { + for (const QString &line : qAsConst(lines)) { if (line.contains(":")) { int colon = line.indexOf(':'); QString name = line.left(colon); diff --git a/src/imitatepass.cpp b/src/imitatepass.cpp index 1cdb8575..8380e521 100644 --- a/src/imitatepass.cpp +++ b/src/imitatepass.cpp @@ -1,5 +1,6 @@ #include "imitatepass.h" #include "qtpasssettings.h" +#include "util.h" #include #include #include @@ -112,7 +113,7 @@ void ImitatePass::Insert(QString file, QString newValue, bool overwrite) { if (!overwrite) executeGit(GIT_ADD, {"add", pgit(file)}); QString path = QDir(QtPassSettings::getPassStore()).relativeFilePath(file); - path.replace(QRegularExpression("\\.gpg$"), ""); + path.replace(Util::endsWithGpg(), ""); QString msg = QString(overwrite ? "Edit" : "Add") + " for " + path + " using QtPass."; GitCommit(file, msg); @@ -147,12 +148,8 @@ void ImitatePass::Remove(QString file, bool isDir) { GitCommit(file, "Remove for " + file + " using QtPass."); } else { if (isDir) { -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) QDir dir(file); dir.removeRecursively(); -#else - removeDir(QtPassSettings::getPassStore() + file); -#endif } else QFile(file).remove(); } @@ -201,39 +198,12 @@ void ImitatePass::Init(QString path, const QList &users) { if (addFile) executeGit(GIT_ADD, {"add", pgit(gpgIdFile)}); QString commitPath = gpgIdFile; - commitPath.replace(QRegularExpression("\\.gpg$"), ""); + commitPath.replace(Util::endsWithGpg(), ""); GitCommit(gpgIdFile, "Added " + commitPath + " using QtPass."); } reencryptPath(path); } -/** - * @brief ImitatePass::removeDir delete folder recursive. - * @param dirName which folder. - * @return was removal succesful? - */ -bool ImitatePass::removeDir(const QString &dirName) { - bool result = true; - QDir dir(dirName); - - if (dir.exists(dirName)) { - Q_FOREACH (QFileInfo info, - dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | - QDir::Hidden | QDir::AllDirs | QDir::Files, - QDir::DirsFirst)) { - if (info.isDir()) - result = removeDir(info.absoluteFilePath()); - else - result = QFile::remove(info.absoluteFilePath()); - - if (!result) - return result; - } - result = dir.rmdir(dirName); - } - return result; -} - /** * @brief ImitatePass::reencryptPath reencrypt all files under the chosen * directory @@ -267,12 +237,11 @@ void ImitatePass::reencryptPath(const QString &dir) { exec.executeBlocking(QtPassSettings::getGpgExecutable(), args, &keys, &err); QStringList actualKeys; keys += err; + static const QRegularExpression newLines{"[\r\n]"}; #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - QStringList key = - keys.split(QRegularExpression("[\r\n]"), Qt::SkipEmptyParts); + QStringList key = keys.split(newLines, Qt::SkipEmptyParts); #else - QStringList key = - keys.split(QRegularExpression("[\r\n]"), QString::SkipEmptyParts); + QStringList key = keys.split(newLines, QString::SkipEmptyParts); #endif QListIterator itr(key); while (itr.hasNext()) { @@ -325,7 +294,7 @@ void ImitatePass::reencryptPath(const QString &dir) { {"add", pgit(fileName)}); QString path = QDir(QtPassSettings::getPassStore()).relativeFilePath(fileName); - path.replace(QRegularExpression("\\.gpg$"), ""); + path.replace(Util::endsWithGpg(), ""); exec.executeBlocking(QtPassSettings::getGitExecutable(), {"commit", pgit(fileName), "-m", "Edit for " + path + " using QtPass."}); @@ -405,12 +374,12 @@ void ImitatePass::Move(const QString src, const QString dest, executeGit(GIT_MOVE, args); QString relSrc = QDir(QtPassSettings::getPassStore()).relativeFilePath(src); - relSrc.replace(QRegularExpression("\\.gpg$"), ""); + relSrc.replace(Util::endsWithGpg(), ""); QString relDest = QDir(QtPassSettings::getPassStore()).relativeFilePath(destFile); - relDest.replace(QRegularExpression("\\.gpg$"), ""); + relDest.replace(Util::endsWithGpg(), ""); QString message = QString("Moved for %1 to %2 using QtPass."); - message = message.arg(relSrc).arg(relDest); + message = message.arg(relSrc, relDest); GitCommit("", message); } else { QDir qDir; @@ -436,7 +405,7 @@ void ImitatePass::Copy(const QString src, const QString dest, executeGit(GIT_COPY, args); QString message = QString("copied from %1 to %2 using QTPass."); - message = message.arg(src).arg(dest); + message = message.arg(src, dest); GitCommit("", message); } else { QDir qDir; diff --git a/src/imitatepass.h b/src/imitatepass.h index 4bfd3a94..a3fd133a 100644 --- a/src/imitatepass.h +++ b/src/imitatepass.h @@ -11,8 +11,6 @@ class ImitatePass : public Pass, private simpleTransaction { Q_OBJECT - bool removeDir(const QString &dirName); - void GitCommit(const QString &file, const QString &msg); void executeGit(PROCESS id, const QStringList &args, diff --git a/src/keygendialog.cpp b/src/keygendialog.cpp index f0df77b3..ef50f434 100644 --- a/src/keygendialog.cpp +++ b/src/keygendialog.cpp @@ -84,14 +84,14 @@ void KeygenDialog::on_name_textChanged(const QString &arg1) { void KeygenDialog::replace(const QString &key, const QString &value) { QStringList clear; QString expert = ui->plainTextEdit->toPlainText(); + static const QRegularExpression newLines{"[\r\n]"}; #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - QStringList lines = - expert.split(QRegularExpression("[\r\n]"), Qt::SkipEmptyParts); + const QStringList lines = expert.split(newLines, Qt::SkipEmptyParts); #else - QStringList lines = - expert.split(QRegularExpression("[\r\n]"), QString::SkipEmptyParts); + const QStringList lines = + expert.split(newLines, QString::SkipEmptyParts); #endif - foreach (QString line, lines) { + for (QString line : lines) { line.replace(QRegularExpression(key + ":.*"), key + ": " + value); if (key == "Passphrase") line.replace("%no-protection", "Passphrase: " + value); @@ -108,14 +108,13 @@ void KeygenDialog::replace(const QString &key, const QString &value) { void KeygenDialog::no_protection(bool enable) { QStringList clear; QString expert = ui->plainTextEdit->toPlainText(); + static const QRegularExpression newLines{"[\r\n]"}; #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - QStringList lines = - expert.split(QRegularExpression("[\r\n]"), Qt::SkipEmptyParts); + const QStringList lines = expert.split(newLines, Qt::SkipEmptyParts); #else - QStringList lines = - expert.split(QRegularExpression("[\r\n]"), QString::SkipEmptyParts); + const QStringList lines = expert.split(newLines, QString::SkipEmptyParts); #endif - foreach (QString line, lines) { + for (QString line : lines) { bool remove = false; if (!enable) { if (line.indexOf("%no-protection") == 0) @@ -145,7 +144,7 @@ void KeygenDialog::done(int r) { } // check email - QRegularExpression mailre( + static const QRegularExpression mailre( QRegularExpression::anchoredPattern( R"(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)"), QRegularExpression::CaseInsensitiveOption); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 60b3d0ca..2ea6da79 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -6,14 +6,12 @@ #include "configdialog.h" #include "filecontent.h" -#include "keygendialog.h" #include "passworddialog.h" #include "qpushbuttonasqrcode.h" #include "qpushbuttonshowpassword.h" #include "qpushbuttonwithclipboard.h" #include "qtpass.h" #include "qtpasssettings.h" -#include "settingsconstants.h" #include "trayicon.h" #include "ui_mainwindow.h" #include "usersdialog.h" @@ -114,13 +112,10 @@ MainWindow::MainWindow(const QString &searchText, QWidget *parent) initToolBarButtons(); initStatusBar(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0) ui->lineEdit->setClearButtonEnabled(true); -#endif setUiElementsEnabled(true); - QRandomGenerator(static_cast(QTime::currentTime().msec())); QTimer::singleShot(10, this, SLOT(focusInput())); ui->lineEdit->setText(searchText); @@ -325,7 +320,7 @@ QString MainWindow::getFile(const QModelIndex &index, bool forPass) { QString filePath = model.filePath(proxyModel.mapToSource(index)); if (forPass) { filePath = QDir(QtPassSettings::getPassStore()).relativeFilePath(filePath); - filePath.replace(QRegularExpression("\\.gpg$"), ""); + filePath.replace(Util::endsWithGpg(), ""); } return filePath; } @@ -542,7 +537,7 @@ void MainWindow::onTimeoutSearch() { deselect(); } - query.replace(QRegularExpression(" "), ".*"); + query.replace(QStringLiteral(" "), ".*"); QRegularExpression regExp(query, QRegularExpression::CaseInsensitiveOption); proxyModel.setFilterRegularExpression(regExp); ui->treeView->setRootIndex(proxyModel.mapFromSource( @@ -681,8 +676,7 @@ void MainWindow::onDelete() { if (QMessageBox::question( this, isDir ? tr("Delete folder?") : tr("Delete password?"), tr("Are you sure you want to delete %1%2?") - .arg(QDir::separator() + file) - .arg(isDir ? dirMessage : "?"), + .arg(QDir::separator() + file, isDir ? dirMessage : "?"), QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) return; @@ -800,7 +794,7 @@ void MainWindow::on_profileBox_currentIndexChanged(QString name) { QtPassSettings::setProfile(name); - QtPassSettings::setPassStore(QtPassSettings::getProfiles()[name]); + QtPassSettings::setPassStore(QtPassSettings::getProfiles().value(name)); ui->statusBar->showMessage(tr("Profile changed to %1").arg(name), 2000); QtPassSettings::getPass()->updateEnv(); @@ -1157,10 +1151,7 @@ void MainWindow::addToGridLayout(int position, const QString &field, line->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); line->setObjectName(trimmedField); - trimmedValue.replace( - QRegularExpression( - "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"), - R"(\1)"); + trimmedValue.replace(Util::protocolRegex(), R"(\1)"); line->setText(trimmedValue); line->setReadOnly(true); line->setStyleSheet(lineStyle); diff --git a/src/mainwindow.h b/src/mainwindow.h index 10f07df7..172e326f 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -16,11 +16,9 @@ class SingleApplication; #endif #ifdef __APPLE__ -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // http://doc.qt.io/qt-5/qkeysequence.html#qt_set_sequence_auto_mnemonic void qt_set_sequence_auto_mnemonic(bool b); #endif -#endif namespace Ui { class MainWindow; diff --git a/src/pass.cpp b/src/pass.cpp index f01e71f1..1e5db45d 100644 --- a/src/pass.cpp +++ b/src/pass.cpp @@ -1,6 +1,8 @@ #include "pass.h" #include "qtpasssettings.h" -#include "util.h" +#include +#include +#include #ifdef QT_DEBUG #include "debughelper.h" @@ -81,12 +83,12 @@ QString Pass::Generate_b(unsigned int length, const QString &charset) { if (QtPassSettings::isUseSymbols()) args.append("--symbols"); args.append(QString::number(length)); - QString p_out; // TODO(bezet): try-catch here(2 statuses to merge o_O) if (exec.executeBlocking(QtPassSettings::getPwgenExecutable(), args, - &passwd) == 0) - passwd.remove(QRegularExpression("[\\n\\r]")); - else { + &passwd) == 0) { + static const QRegularExpression literalNewLines{"[\\n\\r]"}; + passwd.remove(literalNewLines); + } else { passwd.clear(); #ifdef QT_DEBUG qDebug() << __FILE__ << ":" << __LINE__ << "\t" @@ -130,7 +132,7 @@ QList Pass::listKeys(QStringList keystrings, bool secret) { QStringList args = {"--no-tty", "--with-colons", "--with-fingerprint"}; args.append(secret ? "--list-secret-keys" : "--list-keys"); - foreach (QString keystring, keystrings) { + for (const QString &keystring : qAsConst(keystrings)) { if (!keystring.isEmpty()) { args.append(keystring); } @@ -139,15 +141,14 @@ QList Pass::listKeys(QStringList keystrings, bool secret) { if (exec.executeBlocking(QtPassSettings::getGpgExecutable(), args, &p_out) != 0) return users; + static const QRegularExpression newLines{"[\r\n]"}; #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - QStringList keys = - p_out.split(QRegularExpression("[\r\n]"), Qt::SkipEmptyParts); + const QStringList keys = p_out.split(newLines, Qt::SkipEmptyParts); #else - QStringList keys = - p_out.split(QRegularExpression("[\r\n]"), QString::SkipEmptyParts); + const QStringList keys = p_out.split(newLines, QString::SkipEmptyParts); #endif UserInfo current_user; - foreach (QString key, keys) { + for (const QString &key : keys) { QStringList props = key.split(':'); if (props.size() < 10) continue; @@ -319,19 +320,8 @@ quint32 Pass::boundedRandom(quint32 bound) { quint32 randval; const quint32 max_mod_bound = (1 + ~bound) % bound; -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - static int fd = -1; - if (fd == -1) { - assert((fd = open("/dev/urandom", O_RDONLY)) >= 0); - } -#endif - do { -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - assert(read(fd, &randval, sizeof(randval)) == sizeof(randval)); -#else randval = QRandomGenerator::system()->generate(); -#endif } while (randval < max_mod_bound); return randval % bound; diff --git a/src/pass.h b/src/pass.h index 3ef3c7db..c7b9bfdc 100644 --- a/src/pass.h +++ b/src/pass.h @@ -11,13 +11,6 @@ #include #include -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) -#include -#else -#include -#include -#endif - /*! \class Pass \brief Acts as an abstraction for pass or pass imitation diff --git a/src/passworddialog.cpp b/src/passworddialog.cpp index 747d2787..4de5e659 100644 --- a/src/passworddialog.cpp +++ b/src/passworddialog.cpp @@ -129,13 +129,13 @@ void PasswordDialog::setPassword(QString password) { QWidget *previous = ui->checkBoxShow; // first set templated values NamedValues namedValues = fileContent.getNamedValues(); - for (QLineEdit *line : templateLines) { + for (QLineEdit *line : qAsConst(templateLines)) { line->setText(namedValues.takeValue(line->objectName())); previous = line; } // show remaining values (if there are) otherLines.clear(); - for (const NamedValue &nv : namedValues) { + for (const NamedValue &nv : qAsConst(namedValues)) { auto *line = new QLineEdit(); line->setObjectName(nv.name); line->setText(nv.value); diff --git a/src/qprogressindicator.h b/src/qprogressindicator.h index f3f61e66..f5a59af4 100644 --- a/src/qprogressindicator.h +++ b/src/qprogressindicator.h @@ -15,20 +15,6 @@ */ class QProgressIndicator : public QWidget { Q_OBJECT - /** - * @brief QProgressIndicator::delay in miliseconds. - */ - Q_PROPERTY(int delay READ animationDelay WRITE setAnimationDelay) - /** - * @brief QProgressIndicator::displayedWhenStopped render when not spinning. - */ - Q_PROPERTY(bool displayedWhenStopped READ isDisplayedWhenStopped WRITE - setDisplayedWhenStopped) - /** - * @brief QProgressIndicator::color of the component.. - */ - Q_PROPERTY(QColor color READ color WRITE setColor) - public: explicit QProgressIndicator(QWidget *parent = 0); diff --git a/src/qtpass.cpp b/src/qtpass.cpp index a18bd090..f9991e55 100644 --- a/src/qtpass.cpp +++ b/src/qtpass.cpp @@ -1,6 +1,7 @@ #include "qtpass.h" #include "mainwindow.h" #include "qtpasssettings.h" +#include "util.h" #include #include #include @@ -135,11 +136,12 @@ void QtPass::setMainWindow(void) { QtPassSettings::getPass()->GitInit(); }); - connect( - m_mainWindow, &MainWindow::generateGPGKeyPair, [=](const QString &batch) { - QtPassSettings::getPass()->GenerateGPGKeys(batch); - m_mainWindow->showStatusMessage(tr("Generating GPG key pair"), 60000); - }); + connect(m_mainWindow, &MainWindow::generateGPGKeyPair, m_mainWindow, + [=](const QString &batch) { + QtPassSettings::getPass()->GenerateGPGKeys(batch); + m_mainWindow->showStatusMessage(tr("Generating GPG key pair"), + 60000); + }); } void QtPass::connectPassSignalHandlers(Pass *pass) { @@ -266,10 +268,7 @@ void QtPass::processError(QProcess::ProcessError error) { void QtPass::processErrorExit(int exitCode, const QString &p_error) { if (!p_error.isEmpty()) { QString output; - QString error = p_error; - error.replace(QRegularExpression("<"), "<"); - error.replace(QRegularExpression(">"), ">"); - error.replace(QRegularExpression(" "), " "); + QString error = p_error.toHtmlEscaped(); if (exitCode == 0) { // https://github.com/IJHack/qtpass/issues/111 output = "" + error + "
"; @@ -277,10 +276,8 @@ void QtPass::processErrorExit(int exitCode, const QString &p_error) { output = "" + error + "
"; } - output.replace(QRegularExpression( - "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"), - R"(\1)"); - output.replace(QRegularExpression("\n"), "
"); + output.replace(Util::protocolRegex(), R"(\1)"); + output.replace(QStringLiteral("\n"), "
"); m_mainWindow->flashText(output, false, true); } @@ -335,14 +332,10 @@ void QtPass::passShowHandlerFinished(QString output) { void QtPass::showInTextBrowser(QString output, QString prefix, QString postfix) { - output.replace(QRegularExpression("<"), "<"); - output.replace(QRegularExpression(">"), ">"); - output.replace(QRegularExpression(" "), " "); - - output.replace(QRegularExpression( - "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"), - R"(\1)"); - output.replace(QRegularExpression("\n"), "
"); + output = output.toHtmlEscaped(); + + output.replace(Util::protocolRegex(), R"(\1)"); + output.replace(QStringLiteral("\n"), "
"); output = prefix + output + postfix; m_mainWindow->flashText(output, false, true); diff --git a/src/realpass.cpp b/src/realpass.cpp index 321cd3a3..a9af0b6e 100644 --- a/src/realpass.cpp +++ b/src/realpass.cpp @@ -1,5 +1,6 @@ #include "realpass.h" #include "qtpasssettings.h" +#include "util.h" #include #include @@ -117,10 +118,10 @@ void RealPass::Move(const QString src, const QString dest, const bool force) { // remove the .gpg because pass will not work if (srcFileInfo.isFile() && srcFileInfo.suffix() == "gpg") { - passSrc.replace(QRegularExpression("\\.gpg$"), ""); + passSrc.replace(Util::endsWithGpg(), ""); } if (destFileInfo.isFile() && destFileInfo.suffix() == "gpg") { - passDest.replace(QRegularExpression("\\.gpg$"), ""); + passDest.replace(Util::endsWithGpg(), ""); } QStringList args; @@ -157,10 +158,10 @@ void RealPass::Copy(const QString src, const QString dest, const bool force) { // remove the .gpg because pass will not work if (srcFileInfo.isFile() && srcFileInfo.suffix() == "gpg") { - passSrc.replace(QRegularExpression("\\.gpg$"), ""); + passSrc.replace(Util::endsWithGpg(), ""); } if (destFileInfo.isFile() && destFileInfo.suffix() == "gpg") { - passDest.replace(QRegularExpression("\\.gpg$"), ""); + passDest.replace(Util::endsWithGpg(), ""); } QStringList args; args << "cp"; diff --git a/src/storemodel.cpp b/src/storemodel.cpp index 5b37f8e9..1b82387e 100644 --- a/src/storemodel.cpp +++ b/src/storemodel.cpp @@ -1,7 +1,9 @@ #include "storemodel.h" #include "qtpasssettings.h" +#include "util.h" #include +#include #include #include #include @@ -68,7 +70,7 @@ bool StoreModel::ShowThis(const QModelIndex index) const { QModelIndex useIndex = sourceModel()->index(index.row(), 0, index.parent()); QString path = fs->filePath(useIndex); path = QDir(store).relativeFilePath(path); - path.replace(QRegularExpression("\\.gpg$"), ""); + path.replace(Util::endsWithGpg(), ""); retVal = path.contains(filterRegularExpression()); } return retVal; @@ -101,7 +103,7 @@ QVariant StoreModel::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole) { QString name = initial_value.toString(); - name.replace(QRegularExpression("\\.gpg$"), ""); + name.replace(Util::endsWithGpg(), ""); initial_value.setValue(name); } @@ -251,11 +253,9 @@ bool StoreModel::dropMimeData(const QMimeData *data, Qt::DropAction action, this->index(parent.row(), parent.column(), parent.parent()); QFileInfo destFileinfo = fs->fileInfo(mapToSource(destIndex)); QFileInfo srcFileInfo = QFileInfo(info.path); - QDir qdir; QString cleanedSrc = QDir::cleanPath(srcFileInfo.absoluteFilePath()); QString cleanedDest = QDir::cleanPath(destFileinfo.absoluteFilePath()); if (info.isDir) { - QDir srcDir = QDir(info.path); // dropped dir onto dir if (destFileinfo.isDir()) { QDir destDir = QDir(cleanedDest).filePath(srcFileInfo.fileName()); @@ -278,7 +278,7 @@ bool StoreModel::dropMimeData(const QMimeData *data, Qt::DropAction action, // dropped file onto a file int answer = QMessageBox::question( nullptr, tr("force overwrite?"), - tr("overwrite %1 with %2?").arg(cleanedDest).arg(cleanedSrc), + tr("overwrite %1 with %2?").arg(cleanedDest, cleanedSrc), QMessageBox::Yes | QMessageBox::No); bool force = answer == QMessageBox::Yes; if (action == Qt::MoveAction) { diff --git a/src/storemodel.h b/src/storemodel.h index b2f0c3b7..18ef28fc 100644 --- a/src/storemodel.h +++ b/src/storemodel.h @@ -1,7 +1,6 @@ #ifndef STOREMODEL_H_ #define STOREMODEL_H_ -#include "util.h" #include /*! diff --git a/src/usersdialog.cpp b/src/usersdialog.cpp index 517b6dc8..db115fd6 100644 --- a/src/usersdialog.cpp +++ b/src/usersdialog.cpp @@ -71,9 +71,7 @@ UsersDialog::UsersDialog(QString dir, QWidget *parent) connect(ui->listWidget, &QListWidget::itemChanged, this, &UsersDialog::itemChange); -#if QT_VERSION >= 0x050200 ui->lineEdit->setClearButtonEnabled(true); -#endif } /** diff --git a/src/util.cpp b/src/util.cpp index 2d17df3f..5046e37b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -194,3 +194,14 @@ void Util::copyDir(const QString &src, const QString &dest) { dest + QDir::separator() + file); } } + +const QRegularExpression &Util::endsWithGpg() { + static const QRegularExpression expr{"\\.gpg$"}; + return expr; +} + +const QRegularExpression &Util::protocolRegex() { + static const QRegularExpression regex{ + "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"}; + return regex; +} diff --git a/src/util.h b/src/util.h index f0dca51f..71165fdf 100644 --- a/src/util.h +++ b/src/util.h @@ -4,6 +4,7 @@ #include "storemodel.h" #include #include +#include #include class StoreModel; @@ -22,6 +23,8 @@ public: const QFileSystemModel &model, const StoreModel &storeModel); static void copyDir(const QString &src, const QString &dest); + static const QRegularExpression &endsWithGpg(); + static const QRegularExpression &protocolRegex(); private: static void initialiseEnvironment(); -- cgit v1.2.3 From 98d39228cc42f861accdee6dd5138fe7fd1e0fcb Mon Sep 17 00:00:00 2001 From: Anne Jan Brouwer Date: Thu, 31 Aug 2023 13:07:40 +0200 Subject: Fixed my mergo --- src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b2ad8b92..59d0a105 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -795,7 +795,7 @@ void MainWindow::on_profileBox_currentIndexChanged(QString name) { QtPassSettings::setProfile(name); - QtPassSettings::setPassStore(QtPassSettings::getProfiles().value(name)); + QtPassSettings::setPassStore(QtPassSettings::getProfiles().value(name).value("path")); QtPassSettings::setPassSigningKey( QtPassSettings::getProfiles().value(name).value("signingKey")); ui->statusBar->showMessage(tr("Profile changed to %1").arg(name), 2000); -- cgit v1.2.3