X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fconfluence-userdialog.cpp;fp=src%2Fconfluence-userdialog.cpp;h=f37288d7f724d3b683a048b7370ea4554a2a66e8;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/confluence-userdialog.cpp b/src/confluence-userdialog.cpp new file mode 100644 index 0000000..f37288d --- /dev/null +++ b/src/confluence-userdialog.cpp @@ -0,0 +1,83 @@ +#include "confluence-userdialog.h" + +#include +#include + +#include "confluence-agent.h" +#include "confluence-user.h" + +ConfluenceUserDialog::ConfluenceUserDialog(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + QDialog::setWindowTitle("VYM - " + + tr("Find Confluence user", "dialog window title")); + + connect(ui.lineEdit, SIGNAL(textChanged(const QString &)), this, + SLOT(lineEditChanged())); + + connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + connect(ui.userListWidget, SIGNAL(itemPressed(QListWidgetItem *)), this, + SLOT(itemSelected(QListWidgetItem *))); + + currentRow = -1; +} + +void ConfluenceUserDialog::keyPressEvent(QKeyEvent *e) +{ + if (ui.lineEdit->hasFocus() && e->key() == Qt::Key_Down) + { + ui.userListWidget->setCurrentRow(0, QItemSelectionModel::Select); + ui.userListWidget->setFocus(); + } else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) + accept(); + else + QDialog::keyPressEvent(e); +} + +int ConfluenceUserDialog::exec() +{ + int result = QDialog::exec(); + + if (userList.length() == 0) result = QDialog::Rejected; + + return result; +} + +ConfluenceUser ConfluenceUserDialog::getSelectedUser() +{ + if (ui.userListWidget->count() > 0 && ui.userListWidget->currentRow() < ui.userListWidget->count() && + ui.userListWidget->currentRow() > -1) + return userList.at(ui.userListWidget->currentRow()); + else + return ConfluenceUser(); +} + +void ConfluenceUserDialog::lineEditChanged() +{ + if (ui.lineEdit->text().length() > 3) { + ConfluenceAgent *agent = new ConfluenceAgent; + bool b = connect(agent, &ConfluenceAgent::foundUsers, this, &ConfluenceUserDialog::updateResultsList); + + agent->getUsers(ui.lineEdit->text()); + } +} + +void ConfluenceUserDialog::itemSelected(QListWidgetItem *item) +{ + currentRow = ui.userListWidget->row(item); + accept(); +} + +void ConfluenceUserDialog::updateResultsList(QList results) +{ + ui.userListWidget->clear(); + userList.clear(); + currentRow = -1; + + foreach (ConfluenceUser u, results) { + //qDebug() << u.getTitle() << u.getDisplayName() << u.getUserName(); + userList << u; + new QListWidgetItem(u.getDisplayName() + " (" + u.getUserName() + ")", ui.userListWidget); + } +}