]> git.sven.stormbind.net Git - sven/vym.git/blob - src/confluence-userdialog.cpp
New upstream version 2.9.22
[sven/vym.git] / src / confluence-userdialog.cpp
1 #include "confluence-userdialog.h"
2
3 #include <QKeyEvent>
4 #include <QRegExp>
5
6 #include "confluence-agent.h"
7 #include "confluence-user.h"
8
9 ConfluenceUserDialog::ConfluenceUserDialog(QWidget *parent) : QDialog(parent)
10 {
11     ui.setupUi(this);
12     QDialog::setWindowTitle("VYM - " +
13                             tr("Find Confluence user", "dialog window title"));
14
15     connect(ui.lineEdit, SIGNAL(textChanged(const QString &)), this,
16             SLOT(lineEditChanged()));
17
18     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
19     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
20     connect(ui.userListWidget, SIGNAL(itemPressed(QListWidgetItem *)), this,
21             SLOT(itemSelected(QListWidgetItem *)));
22
23     currentRow = -1;
24 }
25
26 void ConfluenceUserDialog::keyPressEvent(QKeyEvent *e)
27 {
28     if (ui.lineEdit->hasFocus() && e->key() == Qt::Key_Down) 
29     {
30         ui.userListWidget->setCurrentRow(0, QItemSelectionModel::Select);
31         ui.userListWidget->setFocus();
32     } else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter)
33         accept();
34     else
35         QDialog::keyPressEvent(e);
36 }
37
38 int ConfluenceUserDialog::exec()
39 {
40     int result = QDialog::exec();
41
42     if (userList.length() == 0) result = QDialog::Rejected;
43
44     return result;
45 }
46
47 ConfluenceUser ConfluenceUserDialog::getSelectedUser()
48 {
49     if (ui.userListWidget->count() > 0 && ui.userListWidget->currentRow() < ui.userListWidget->count() &&
50         ui.userListWidget->currentRow() > -1)
51         return userList.at(ui.userListWidget->currentRow());
52     else
53         return ConfluenceUser();
54 }
55
56 void ConfluenceUserDialog::lineEditChanged()
57 {
58     if (ui.lineEdit->text().length() > 3) {
59         ConfluenceAgent *agent = new ConfluenceAgent;
60         bool b = connect(agent, &ConfluenceAgent::foundUsers, this, &ConfluenceUserDialog::updateResultsList);
61
62         agent->getUsers(ui.lineEdit->text());
63     }
64 }
65
66 void ConfluenceUserDialog::itemSelected(QListWidgetItem *item)
67 {
68     currentRow = ui.userListWidget->row(item);
69     accept();
70 }
71
72 void ConfluenceUserDialog::updateResultsList(QList <ConfluenceUser> results)
73 {
74     ui.userListWidget->clear();
75     userList.clear();
76     currentRow = -1;
77
78     foreach (ConfluenceUser u, results) {
79         //qDebug() << u.getTitle() << u.getDisplayName() << u.getUserName(); 
80         userList << u;
81         new QListWidgetItem(u.getDisplayName() + " (" + u.getUserName() + ")", ui.userListWidget);
82     }
83 }