/*************************************************************************** * Copyright 2009 Evgeniy Ivanov * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation; either version 2 of * * the License or (at your option) version 3 or any later version * * accepted by the membership of KDE e.V. (or its successor approved * * by the membership of KDE e.V.), which shall act as a proxy * * defined in Section 14 of version 3 of the license. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * ***************************************************************************/ #ifndef KDEVPLATFORM_MAIN_H #define KDEVPLATFORM_MAIN_H #include #include #include #include #include class AuthForm : public QWidget { Q_OBJECT public: /** Auth types */ enum AuthType { PASSWORD = 1, /**< Password Auth */ PUBKEY = 2, /**< Auth using publick key */ BOTH = 3, /**< Both PASSWORD and PUBKEY */ }; AuthForm(const QString& _username = "", uint _auth_type_mask = PUBKEY, QWidget* parent = 0) : QWidget(parent) { username = new QLineEdit(_username); username_label = new QLabel(i18n("&Username:")); username_label->setBuddy(username); password_or_passphrase = new QLineEdit(); password_or_passphrase->setEchoMode(QLineEdit::Password); password_or_passphrase_label = new QLabel(i18n("&Password or passphrase:")); password_or_passphrase_label->setBuddy(password_or_passphrase); pub_key = new QLineEdit(QDir::homePath() + "/.ssh/id_rsa.pub"); pub_key_label = new QLabel(i18n("Publi&c key:")); pub_key_label->setBuddy(pub_key); private_key = new QLineEdit(QDir::homePath() + "/.ssh/id_rsa"); private_key_label = new QLabel(i18n("P&rivate key:")); private_key_label->setBuddy(private_key); select_auth_type = new QComboBox(); if (_auth_type_mask & PASSWORD) select_auth_type->addItem(i18n("Password auth"), QVariant(PASSWORD)); if (_auth_type_mask & PUBKEY) select_auth_type->addItem(i18n("Public key auth"), QVariant(PUBKEY)); if (_auth_type_mask == 0) select_auth_type->addItem(i18n("No auth type supported by server"), QVariant(0)); mgrid = new QGridLayout(); mgrid->addWidget(username_label, 0,0); mgrid->addWidget(username, 0,1); mgrid->addWidget(password_or_passphrase_label, 1,0); mgrid->addWidget(password_or_passphrase, 1,1); keys_grid = new QGridLayout(); keys_grid->addWidget(pub_key_label, 0,0); keys_grid->addWidget(pub_key, 0,1); keys_grid->addWidget(private_key_label, 1,0); keys_grid->addWidget(private_key, 1,1); fileBox = new QGroupBox(i18n("Select keys")); fileBox->setLayout(keys_grid); mlayout = new QVBoxLayout(); mlayout->addWidget(select_auth_type); mlayout->addLayout(mgrid); mlayout->addWidget(fileBox); setLayout(mlayout); change_visibility(select_auth_type->currentIndex()); password_or_passphrase->setFocus(); QObject::connect(select_auth_type, SIGNAL(currentIndexChanged(int)), SLOT(change_visibility(const int))); } QLineEdit *username; QLineEdit *password_or_passphrase; QLineEdit *pub_key; QLineEdit *private_key; QComboBox *select_auth_type; private slots: void change_visibility(const int index) { kDebug() << "index:" << index; if (select_auth_type->itemData(index) == QVariant(PUBKEY)) fileBox->show(); else fileBox->hide(); } private: QLabel *username_label; QLabel *password_or_passphrase_label; QLabel *pub_key_label; QLabel *private_key_label; QGridLayout *mgrid; QGridLayout *keys_grid; QGroupBox *fileBox; QVBoxLayout *mlayout; }; #endif