summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-04-09 07:53:12 (GMT)
committerSwift Review <review@swift.im>2014-04-22 21:12:21 (GMT)
commita7fb55381ab4a5c470bf891b31ac6e201611a2c1 (patch)
tree475b3b7fc0142946863580506b00aa250ef8ca14 /Swift/QtUI/UserSearch/QtContactListWidget.cpp
parent4444aeb255f8d1712b794c31166f362bb3ec335a (diff)
downloadswift-a7fb55381ab4a5c470bf891b31ac6e201611a2c1.zip
swift-a7fb55381ab4a5c470bf891b31ac6e201611a2c1.tar.bz2
Fix crash in QtUserSearchWindow.
Avoid storing pointers to items in vectors. Using shared_ptr for Contact items. Change-Id: I3baa05fc058011b2beca14dc620ab794988a2b37
Diffstat (limited to 'Swift/QtUI/UserSearch/QtContactListWidget.cpp')
-rw-r--r--Swift/QtUI/UserSearch/QtContactListWidget.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/Swift/QtUI/UserSearch/QtContactListWidget.cpp b/Swift/QtUI/UserSearch/QtContactListWidget.cpp
index 6ad1169..4adc929 100644
--- a/Swift/QtUI/UserSearch/QtContactListWidget.cpp
+++ b/Swift/QtUI/UserSearch/QtContactListWidget.cpp
@@ -26,7 +26,7 @@ QtContactListWidget::QtContactListWidget(QWidget* parent, SettingsProvider* sett
contactListModel_ = new ContactListModel(true);
setModel(contactListModel_);
- connect(contactListModel_, SIGNAL(onListChanged(std::vector<Contact>)), this, SIGNAL(onListChanged(std::vector<Contact>)));
+ connect(contactListModel_, SIGNAL(onListChanged(std::vector<Contact::ref>)), this, SIGNAL(onListChanged(std::vector<Contact::ref>)));
connect(contactListModel_, SIGNAL(onJIDsDropped(std::vector<JID>)), this, SIGNAL(onJIDsAdded(std::vector<JID>)));
setSelectionMode(QAbstractItemView::SingleSelection);
@@ -61,23 +61,27 @@ QtContactListWidget::~QtContactListWidget() {
delete removableItemDelegate_;
}
-void QtContactListWidget::setList(const std::vector<Contact>& list) {
+void QtContactListWidget::setList(const std::vector<Contact::ref>& list) {
contactListModel_->setList(list);
}
-std::vector<Contact> QtContactListWidget::getList() const {
+std::vector<Contact::ref> QtContactListWidget::getList() const {
return contactListModel_->getList();
}
+Contact::ref QtContactListWidget::getContact(const size_t i) {
+ return contactListModel_->getContact(i);
+}
+
void QtContactListWidget::setMaximumNoOfContactsToOne(bool limited) {
limited_ = limited;
}
-void QtContactListWidget::updateContacts(const std::vector<Contact>& contactUpdates) {
- std::vector<Contact> contacts = contactListModel_->getList();
- foreach(const Contact& contactUpdate, contactUpdates) {
+void QtContactListWidget::updateContacts(const std::vector<Contact::ref>& contactUpdates) {
+ std::vector<Contact::ref> contacts = contactListModel_->getList();
+ foreach(const Contact::ref& contactUpdate, contactUpdates) {
for(size_t n = 0; n < contacts.size(); n++) {
- if (contactUpdate.jid == contacts[n].jid) {
+ if (contactUpdate->jid == contacts[n]->jid) {
contacts[n] = contactUpdate;
break;
}