File indexing completed on 2024-05-12 16:44:05
0001 /* 0002 SPDX-FileCopyrightText: 2019 Thomas Baumgart <tbaumgart@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "passwordtoggle.h" 0007 0008 // ---------------------------------------------------------------------------- 0009 // QT Includes 0010 0011 #include <QLineEdit> 0012 #include <QAction> 0013 0014 // ---------------------------------------------------------------------------- 0015 // KDE Includes 0016 0017 #include <KLocalizedString> 0018 0019 0020 // ---------------------------------------------------------------------------- 0021 // Project Includes 0022 0023 #include "icons/icons.h" 0024 0025 using namespace Icons; 0026 0027 PasswordToggle::PasswordToggle(QLineEdit* parent) 0028 : QObject(parent) 0029 , m_lineEdit(parent) 0030 { 0031 m_toggleAction = m_lineEdit->addAction(Icons::get(Icon::Visibility), QLineEdit::TrailingPosition); 0032 m_toggleAction->setVisible(false); 0033 m_toggleAction->setToolTip(i18n("Change the visibility of the password")); 0034 connect(m_lineEdit, &QLineEdit::textChanged, this, &PasswordToggle::toggleEchoModeAction); 0035 connect(m_toggleAction, &QAction::triggered, this, &PasswordToggle::toggleEchoMode); 0036 } 0037 0038 void PasswordToggle::toggleEchoModeAction(const QString& text) 0039 { 0040 m_toggleAction->setVisible(!text.isEmpty()); 0041 } 0042 0043 void PasswordToggle::toggleEchoMode() 0044 { 0045 if (m_lineEdit->echoMode() == QLineEdit::Password) { 0046 m_lineEdit->setEchoMode(QLineEdit::Normal); 0047 m_toggleAction->setIcon(Icons::get(Icon::NoVisibility)); 0048 } else if (m_lineEdit->echoMode() == QLineEdit::Normal) { 0049 m_lineEdit->setEchoMode(QLineEdit::Password); 0050 m_toggleAction->setIcon(Icons::get(Icon::Visibility)); 0051 } 0052 } 0053