diff options
Diffstat (limited to 'kcontrol/hwmanager/cryptpassworddlg.cpp')
-rw-r--r-- | kcontrol/hwmanager/cryptpassworddlg.cpp | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/kcontrol/hwmanager/cryptpassworddlg.cpp b/kcontrol/hwmanager/cryptpassworddlg.cpp new file mode 100644 index 000000000..1d66d89c1 --- /dev/null +++ b/kcontrol/hwmanager/cryptpassworddlg.cpp @@ -0,0 +1,140 @@ +/* This file is part of TDE + Copyright (C) 2015 Timothy Pearson <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#include <config.h> + +#include <tqradiobutton.h> +#include <tqpushbutton.h> +#include <tqvalidator.h> +#include <tqlineedit.h> +#include <tqiconset.h> +#include <tqlabel.h> +#include <tqtabwidget.h> +#include <tqgroupbox.h> +#include <tqlayout.h> +#include <tqslider.h> +#include <tqpainter.h> +#include <tqstyle.h> +#include <tqfile.h> +#include <tqinternal_p.h> +#undef Unsorted // Required for --enable-final (tqdir.h) +#include <tqfiledialog.h> + +#include <kpassdlg.h> +#include <kbuttonbox.h> +#include <kcombobox.h> +#include <tdelocale.h> +#include <kiconloader.h> +#include <kurlrequester.h> +#include <tdeapplication.h> +#include <klineedit.h> +#include <kpushbutton.h> +#include <kstdguiitem.h> +#include <tdemessagebox.h> +#include <ksslcertificate.h> + +#include "cryptpassworddlg.h" + +CryptPasswordDialog::CryptPasswordDialog(TQWidget *parent, TQString passwordPrompt, TQString caption, bool allow_card, KSSLCertificate* card_cert, bool* use_card) + : KDialogBase(Plain, ((caption == "")?i18n("Enter Password"):caption), Ok|Cancel, Ok, parent, 0L, true, true), + m_useCard(use_card) +{ + m_base = new CryptPasswordDialogBase(plainPage()); + + TQGridLayout *mainGrid = new TQGridLayout(plainPage(), 1, 1, 0, spacingHint()); + mainGrid->setRowStretch(1, 1); + mainGrid->addWidget(m_base, 0, 0); + + m_base->passwordPrompt->setText(passwordPrompt); + m_base->passwordIcon->setPixmap(SmallIcon("password.png")); + + if (!allow_card) { + m_base->cardKeyButton->hide(); + m_base->cardKeyInfo->hide(); + } + else { + if (card_cert) { + m_base->cardKeyInfo->setText(card_cert->getSubject()); + } + } + + connect(m_base->textPasswordButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->filePasswordButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->cardKeyButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->textPasswordEntry, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts())); + connect(m_base->filePasswordURL, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts())); + + m_base->textPasswordEntry->setFocus(); + + processLockouts(); +} + +CryptPasswordDialog::~CryptPasswordDialog() +{ +} + +TQByteArray CryptPasswordDialog::password() { + if (m_base->textPasswordButton->isOn() == true) { + m_password.duplicate(m_base->textPasswordEntry->password(), strlen(m_base->textPasswordEntry->password())); + if (m_useCard) *m_useCard = false; + } + else if (m_base->filePasswordButton->isOn() == true) { + m_password = TQFile(m_base->filePasswordURL->url()).readAll(); + if (m_useCard) *m_useCard = false; + } + else { + if (m_useCard) *m_useCard = true; + } + + return m_password; +} + +void CryptPasswordDialog::processLockouts() { + if (m_base->textPasswordButton->isOn() == true) { + m_base->textPasswordEntry->setEnabled(true); + m_base->filePasswordURL->setEnabled(false); + m_base->textPasswordEntry->setFocus(); + if (strlen(m_base->textPasswordEntry->password()) > 0) { + enableButtonOK(true); + } + else { + enableButtonOK(false); + } + } + else if (m_base->filePasswordButton->isOn() == true) { + m_base->textPasswordEntry->setEnabled(false); + m_base->filePasswordURL->setEnabled(true); + m_base->filePasswordURL->setFocus(); + if (TQFile(m_base->filePasswordURL->url()).exists()) { + enableButtonOK(true); + } + else { + enableButtonOK(false); + } + } + else { + m_base->textPasswordEntry->setEnabled(false); + m_base->filePasswordURL->setEnabled(false); + enableButtonOK(true); + } +} + +void CryptPasswordDialog::virtual_hook( int id, void* data ) +{ KDialogBase::virtual_hook( id, data ); } + +#include "cryptpassworddlg.moc" |