diff options
-rw-r--r-- | src/filecontent.cpp | 21 | ||||
-rw-r--r-- | src/filecontent.h | 14 | ||||
-rw-r--r-- | src/mainwindow.cpp | 3 |
3 files changed, 29 insertions, 9 deletions
diff --git a/src/filecontent.cpp b/src/filecontent.cpp index d77983c2..0dc25756 100644 --- a/src/filecontent.cpp +++ b/src/filecontent.cpp @@ -1,11 +1,15 @@ #include "filecontent.h" +static bool isLineHidden(const QString &line) { + return line.startsWith("otpauth://", Qt::CaseInsensitive); +} + FileContent FileContent::parse(const QString &fileContent, const QStringList &templateFields, bool allFields) { QStringList lines = fileContent.split("\n"); QString password = lines.takeFirst(); - QStringList remainingData; + QStringList remainingData, remainingDataDisplay; NamedValues namedValues; for (const QString &line : lines) { if (line.contains(":")) { @@ -20,9 +24,13 @@ FileContent FileContent::parse(const QString &fileContent, continue; } } + remainingData.append(line); + if (!isLineHidden(line)) + remainingDataDisplay.append(line); } - return FileContent(password, namedValues, remainingData.join("\n")); + return FileContent(password, namedValues, remainingData.join("\n"), + remainingDataDisplay.join("\n")); } QString FileContent::getPassword() const { return this->password; } @@ -31,11 +39,16 @@ NamedValues FileContent::getNamedValues() const { return this->namedValues; } QString FileContent::getRemainingData() const { return this->remainingData; } +QString FileContent::getRemainingDataForDisplay() const { + return this->remainingDataDisplay; +} + FileContent::FileContent(const QString &password, const NamedValues &namedValues, - const QString &remainingData) + const QString &remainingData, + const QString &remainingDataDisplay) : password(password), namedValues(namedValues), - remainingData(remainingData) {} + remainingData(remainingData), remainingDataDisplay(remainingDataDisplay) {} NamedValues::NamedValues() : QList() {} diff --git a/src/filecontent.h b/src/filecontent.h index 94e48aa0..845648f7 100644 --- a/src/filecontent.h +++ b/src/filecontent.h @@ -28,8 +28,8 @@ public: * @brief parse parses the given fileContent in a FileContent object. * The password is accessible through getPassword. * The named value pairs (name: value) are parsed and depeding on the - * templateFields and allFields parameters accessible through getNamedValues - * or getRemainingData. + * templateFields and allFields parameters accessible through getNamedValues, + * getRemainingData or getRemainingDataForDisplay. * * @param fileContent the file content to parse. * @@ -61,13 +61,19 @@ public: */ QString getRemainingData() const; + /** + * @like getRemainingData but without data that should not be displayed + * (like a TOTP secret). + */ + QString getRemainingDataForDisplay() const; + private: FileContent(const QString &password, const NamedValues &namedValues, - const QString &remainingData); + const QString &remainingData, const QString &remainingDataDisplay); QString password; NamedValues namedValues; - QString remainingData; + QString remainingData, remainingDataDisplay; }; #endif // FILECONTENT_H diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 1360b6be..5a0afb0c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -399,7 +399,8 @@ void MainWindow::passShowHandler(const QString &p_output) { ui->verticalLayoutPassword->setSpacing(0); else ui->verticalLayoutPassword->setSpacing(6); - output = fileContent.getRemainingData(); + + output = fileContent.getRemainingDataForDisplay(); } if (QtPassSettings::isUseAutoclearPanel()) { |