summaryrefslogtreecommitdiffstats
path: root/pica-client/askpassword.cpp
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-17 21:15:12 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-17 21:15:12 +0000
commit8df9466ada46e4b07990b9cb7e8b1cd61b96844a (patch)
tree2cb652e5839bed672133ffa90e7ad477f55cfb6b /pica-client/askpassword.cpp
downloadpica-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.cpp52
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;
+}
+