From b0d5e44235bcc87dee759bd8abc38134b60e3fcb Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 15 Aug 2023 10:43:28 +0200 Subject: [PATCH] Utils: Add Password display to StringAspect Task-number: QTCREATORBUG-29485 Change-Id: I8da46be4c63f97595aa1e93b6ac4905bdbb54799 Reviewed-by: hjk --- src/libs/utils/aspects.cpp | 19 +++++++++++++++++++ src/libs/utils/aspects.h | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 7742edc4d91..7092ded9f40 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -8,6 +8,7 @@ #include "environment.h" #include "fancylineedit.h" #include "layoutbuilder.h" +#include "passworddialog.h" #include "pathchooser.h" #include "qtcassert.h" #include "qtcolorbutton.h" @@ -777,6 +778,7 @@ public: QString m_historyCompleterKey; QPointer m_labelDisplay; QPointer m_lineEditDisplay; + QPointer m_showPasswordButton; QPointer m_textEditDisplay; MacroExpanderProvider m_expanderProvider; StringAspect::ValueAcceptor m_valueAcceptor; @@ -856,6 +858,9 @@ public: \value PathChooserDisplay Based on Utils::PathChooser. + \value PasswordLineEditDisplay + Based on QLineEdit, used for password strings + \sa Utils::PathChooser */ @@ -1047,6 +1052,7 @@ void StringAspect::addToLayout(LayoutItem &parent) const QString displayedString = d->m_displayFilter ? d->m_displayFilter(value()) : value(); switch (d->m_displayStyle) { + case PasswordLineEditDisplay: case LineEditDisplay: d->m_lineEditDisplay = createSubWidget(); d->m_lineEditDisplay->setPlaceholderText(d->m_placeHolderText); @@ -1081,6 +1087,19 @@ void StringAspect::addToLayout(LayoutItem &parent) connect(d->m_lineEditDisplay, &QLineEdit::textEdited, this, &StringAspect::handleGuiChanged); } + if (d->m_displayStyle == PasswordLineEditDisplay) { + d->m_showPasswordButton = createSubWidget(); + d->m_lineEditDisplay->setEchoMode(QLineEdit::PasswordEchoOnEdit); + parent.addItem(d->m_showPasswordButton); + connect(d->m_showPasswordButton, + &ShowPasswordButton::toggled, + d->m_lineEditDisplay, + [this] { + d->m_lineEditDisplay->setEchoMode(d->m_showPasswordButton->isChecked() + ? QLineEdit::Normal + : QLineEdit::PasswordEchoOnEdit); + }); + } break; case TextEditDisplay: d->m_textEditDisplay = createSubWidget(); diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 3d7b3ca84a9..352d0f84f8b 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -545,7 +545,8 @@ public: enum DisplayStyle { LabelDisplay, LineEditDisplay, - TextEditDisplay + TextEditDisplay, + PasswordLineEditDisplay, }; void setDisplayStyle(DisplayStyle style);