diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2012-06-17 21:15:12 +0000 |
|---|---|---|
| committer | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2012-06-17 21:15:12 +0000 |
| commit | 8df9466ada46e4b07990b9cb7e8b1cd61b96844a (patch) | |
| tree | 2cb652e5839bed672133ffa90e7ad477f55cfb6b /pica-client/askpassword.cpp | |
| download | pica-pica-8df9466ada46e4b07990b9cb7e8b1cd61b96844a.tar.gz pica-pica-8df9466ada46e4b07990b9cb7e8b1cd61b96844a.zip | |
todo list update
git-svn-id: svn://localhost/project_picapica/trunk@128 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'pica-client/askpassword.cpp')
| -rw-r--r-- | pica-client/askpassword.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/pica-client/askpassword.cpp b/pica-client/askpassword.cpp new file mode 100644 index 0000000..0629502 --- /dev/null +++ b/pica-client/askpassword.cpp @@ -0,0 +1,52 @@ +#include "askpassword.h" +#include "globals.h" +#include <string.h> +#include <QInputDialog> + +QMutex AskPassword::passwd_mutex; +QMap<quint32,QString> AskPassword::idpasswd; + +AskPassword::AskPassword(QObject *parent) : + QObject(parent) +{ + connect(this,SIGNAL(password_requested()),this,SLOT(password_dialog()),Qt::BlockingQueuedConnection); +} + +int AskPassword::ask_password_cb(char *buf, int size, int rwflag, void *userdata) +{ + QString pswd; + quint32 id = *((quint32*)userdata); + + passwd_mutex.lock(); + + if (idpasswd.contains(id)) + { + pswd = idpasswd[id]; + } + else + { + askpassword->emit_sig(); + pswd = idpasswd[id]; + } + passwd_mutex.unlock(); + + strncpy(buf, pswd.toUtf8().constData(), size); + buf[size - 1] = 0; + return(strlen(buf)); +} + +void AskPassword::emit_sig() +{ + emit password_requested(); +} + +void AskPassword::password_dialog() +{ + bool ok; + QString title = QObject::tr("Enter private key passphrase"); + QString text = QObject::tr(QString("Passphrase for (%1)").arg(account_id).toUtf8().constData()); + QString psw = QInputDialog::getText((QWidget*)mainwindow,title,text,QLineEdit::Password,QString(),&ok); + if (ok) + idpasswd[account_id] = psw; +} + |
