summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnne Jan Brouwer <brouwer@annejan.com>2023-08-31 13:08:42 +0200
committerAnne Jan Brouwer <brouwer@annejan.com>2023-08-31 13:08:42 +0200
commit42cdda0e2acb2a785f7de95918062a61bde9886b (patch)
treeb32d15a36f0bb82d7add8bfea37564039098a536
parent1da3f142b53e33af3862112270cdbf2430fa1453 (diff)
parent98d39228cc42f861accdee6dd5138fe7fd1e0fcb (diff)
Merge branch 'svuorela-svuorela/clazy-and-other-minor-fixes'
-rw-r--r--main/main.cpp7
-rw-r--r--src/configdialog.cpp5
-rw-r--r--src/filecontent.cpp2
-rw-r--r--src/imitatepass.cpp26
-rw-r--r--src/keygendialog.cpp21
-rw-r--r--src/mainwindow.cpp20
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/pass.cpp34
-rw-r--r--src/pass.h7
-rw-r--r--src/passworddialog.cpp4
-rw-r--r--src/qprogressindicator.h14
-rw-r--r--src/qtpass.cpp35
-rw-r--r--src/realpass.cpp9
-rw-r--r--src/storemodel.cpp10
-rw-r--r--src/storemodel.h1
-rw-r--r--src/usersdialog.cpp2
-rw-r--r--src/util.cpp11
-rw-r--r--src/util.h3
18 files changed, 84 insertions, 129 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 3794c6f1..4c9f227d 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 <QClipboard>
#include <QDir>
#include <QFileDialog>
@@ -304,7 +305,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();
}
@@ -319,7 +320,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 307670de..8300cb36 100644
--- a/src/imitatepass.cpp
+++ b/src/imitatepass.cpp
@@ -1,5 +1,6 @@
#include "imitatepass.h"
#include "qtpasssettings.h"
+#include "util.h"
#include <QDirIterator>
#include <QRegularExpression>
#include <utility>
@@ -118,7 +119,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);
@@ -153,12 +154,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();
}
@@ -253,7 +250,7 @@ void ImitatePass::Init(QString path, const QList<UserInfo> &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.");
if (!signingKeys.isEmpty()) {
if (addSigFile)
@@ -371,12 +368,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<QString> itr(key);
while (itr.hasNext()) {
@@ -429,7 +425,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."});
@@ -509,12 +505,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;
@@ -540,7 +536,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/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 960fc62d..59d0a105 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<uint>(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;
@@ -801,8 +795,7 @@ void MainWindow::on_profileBox_currentIndexChanged(QString name) {
QtPassSettings::setProfile(name);
- QtPassSettings::setPassStore(
- QtPassSettings::getProfiles().value(name).value("path"));
+ 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);
@@ -1161,10 +1154,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"(<a href="\1">\1</a>)");
+ trimmedValue.replace(Util::protocolRegex(), R"(<a href="\1">\1</a>)");
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 a8770307..efa665dd 100644
--- a/src/pass.cpp
+++ b/src/pass.cpp
@@ -1,6 +1,8 @@
#include "pass.h"
#include "qtpasssettings.h"
-#include "util.h"
+#include <QDir>
+#include <QRegularExpression>
+#include <QRandomGenerator>
#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<UserInfo> 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<UserInfo> 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;
@@ -353,19 +354,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 fb254fde..acdabd36 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -11,13 +11,6 @@
#include <cassert>
#include <map>
-#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
-#include <QRandomGenerator>
-#else
-#include <fcntl.h>
-#include <unistd.h>
-#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 dff39b71..8071965d 100644
--- a/src/qprogressindicator.h
+++ b/src/qprogressindicator.h
@@ -42,20 +42,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 <QApplication>
#include <QClipboard>
#include <QDialog>
@@ -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("<"), "&lt;");
- error.replace(QRegularExpression(">"), "&gt;");
- error.replace(QRegularExpression(" "), "&nbsp;");
+ QString error = p_error.toHtmlEscaped();
if (exitCode == 0) {
// https://github.com/IJHack/qtpass/issues/111
output = "<span style=\"color: darkgray;\">" + error + "</span><br />";
@@ -277,10 +276,8 @@ void QtPass::processErrorExit(int exitCode, const QString &p_error) {
output = "<span style=\"color: red;\">" + error + "</span><br />";
}
- output.replace(QRegularExpression(
- "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"),
- R"(<a href="\1">\1</a>)");
- output.replace(QRegularExpression("\n"), "<br />");
+ output.replace(Util::protocolRegex(), R"(<a href="\1">\1</a>)");
+ output.replace(QStringLiteral("\n"), "<br />");
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("<"), "&lt;");
- output.replace(QRegularExpression(">"), "&gt;");
- output.replace(QRegularExpression(" "), "&nbsp;");
-
- output.replace(QRegularExpression(
- "((?:https?|ftp|ssh|sftp|ftps|webdav|webdavs)://\\S+)"),
- R"(<a href="\1">\1</a>)");
- output.replace(QRegularExpression("\n"), "<br />");
+ output = output.toHtmlEscaped();
+
+ output.replace(Util::protocolRegex(), R"(<a href="\1">\1</a>)");
+ output.replace(QStringLiteral("\n"), "<br />");
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 <QDir>
#include <QFileInfo>
@@ -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 <QDebug>
+#include <QFileSystemModel>
#include <QMessageBox>
#include <QMimeData>
#include <QRegularExpression>
@@ -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 <QSortFilterProxyModel>
/*!
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 <QFileSystemModel>
#include <QProcessEnvironment>
+#include <QRegularExpression>
#include <QString>
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();