summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp')
-rw-r--r--Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp35
1 files changed, 21 insertions, 14 deletions
diff --git a/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp b/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp
index de935d9..a4a4610 100644
--- a/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp
+++ b/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp
@@ -5,4 +5,10 @@
*/
+/*
+ * Copyright (c) 2014 Kevin Smith and Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
#include <Swift/QtUI/UserSearch/QtSuggestingJIDInput.h>
#include <Swift/QtUI/UserSearch/ContactListDelegate.h>
@@ -24,5 +30,5 @@
namespace Swift {
-QtSuggestingJIDInput::QtSuggestingJIDInput(QWidget* parent, SettingsProvider* settings) : QLineEdit(parent), settings_(settings), currentContact_(NULL) {
+QtSuggestingJIDInput::QtSuggestingJIDInput(QWidget* parent, SettingsProvider* settings) : QLineEdit(parent), settings_(settings) {
treeViewPopup_ = new QTreeView();
treeViewPopup_->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
@@ -58,21 +64,22 @@ QtSuggestingJIDInput::~QtSuggestingJIDInput() {
}
-const Contact* QtSuggestingJIDInput::getContact() {
- if (currentContact_ != NULL) {
+Contact::ref QtSuggestingJIDInput::getContact() {
+ if (!!currentContact_) {
return currentContact_;
- } else {
+ }
+
if (!text().isEmpty()) {
JID jid(Q2PSTRING(text()));
if (jid.isValid()) {
- manualContact_.name = jid.toString();
- manualContact_.jid = jid;
- return &manualContact_;
- }
+ Contact::ref manualContact = boost::make_shared<Contact>();
+ manualContact->name = jid.toString();
+ manualContact->jid = jid;
+ return manualContact;
}
- return NULL;
}
+ return boost::shared_ptr<Contact>();
}
-void QtSuggestingJIDInput::setSuggestions(const std::vector<Contact>& suggestions) {
+void QtSuggestingJIDInput::setSuggestions(const std::vector<Contact::ref>& suggestions) {
contactListModel_->setList(suggestions);
positionPopup();
@@ -81,5 +88,5 @@ void QtSuggestingJIDInput::setSuggestions(const std::vector<Contact>& suggestion
showPopup();
} else {
- currentContact_ = NULL;
+ currentContact_.reset();
}
}
@@ -101,10 +108,10 @@ void QtSuggestingJIDInput::keyPressEvent(QKeyEvent* event) {
QModelIndex index = treeViewPopup_->currentIndex();
if (!contactListModel_->getList().empty() && index.isValid()) {
- currentContact_ = &contactListModel_->getList()[index.row()];
+ currentContact_ = contactListModel_->getContact(index.row());
setText(P2QSTRING(currentContact_->jid.toString()));
hidePopup();
clearFocus();
} else {
- currentContact_ = NULL;
+ currentContact_.reset();
}
editingDone();
@@ -131,5 +138,5 @@ void QtSuggestingJIDInput::handleSettingsChanged(const std::string& setting) {
void QtSuggestingJIDInput::handleClicked(const QModelIndex& index) {
if (index.isValid()) {
- currentContact_ = &contactListModel_->getList()[index.row()];
+ currentContact_ = contactListModel_->getContact(index.row());
setText("");
onUserSelected(currentContact_->jid);