diff options
Diffstat (limited to 'Swift/QtUI/UserSearch')
| -rw-r--r-- | Swift/QtUI/UserSearch/QtContactListWidget.cpp | 4 | ||||
| -rw-r--r-- | Swift/QtUI/UserSearch/QtContactListWidget.h | 1 | ||||
| -rw-r--r-- | Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp | 4 | ||||
| -rw-r--r-- | Swift/QtUI/UserSearch/QtUserSearchWindow.cpp | 16 |
4 files changed, 17 insertions, 8 deletions
diff --git a/Swift/QtUI/UserSearch/QtContactListWidget.cpp b/Swift/QtUI/UserSearch/QtContactListWidget.cpp index 4adc929..6504f3e 100644 --- a/Swift/QtUI/UserSearch/QtContactListWidget.cpp +++ b/Swift/QtUI/UserSearch/QtContactListWidget.cpp @@ -71,18 +71,22 @@ std::vector<Contact::ref> QtContactListWidget::getList() const { Contact::ref QtContactListWidget::getContact(const size_t i) { return contactListModel_->getContact(i); } void QtContactListWidget::setMaximumNoOfContactsToOne(bool limited) { limited_ = limited; } +bool QtContactListWidget::isFull() const { + return limited_ && (getList().size() == 1); +} + 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) { contacts[n] = contactUpdate; break; } } diff --git a/Swift/QtUI/UserSearch/QtContactListWidget.h b/Swift/QtUI/UserSearch/QtContactListWidget.h index 601d320..112f3ee 100644 --- a/Swift/QtUI/UserSearch/QtContactListWidget.h +++ b/Swift/QtUI/UserSearch/QtContactListWidget.h @@ -34,18 +34,19 @@ class QtContactListWidget : public QTreeView { Q_OBJECT public: QtContactListWidget(QWidget* parent, SettingsProvider* settings); virtual ~QtContactListWidget(); void setList(const std::vector<Contact::ref>& list); std::vector<Contact::ref> getList() const; Contact::ref getContact(const size_t i); void setMaximumNoOfContactsToOne(bool limited); + bool isFull() const; public slots: void updateContacts(const std::vector<Contact::ref>& contactUpdates); signals: void onListChanged(std::vector<Contact::ref> list); void onJIDsAdded(const std::vector<JID>& jids); private: diff --git a/Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp b/Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp index 597c88b..8ea49c4 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp +++ b/Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp @@ -66,19 +66,21 @@ void QtUserSearchFirstMultiJIDPage::emitCompletenessCheck() { } void QtUserSearchFirstMultiJIDPage::handleEditingDone() { addContactButton_->setFocus(); } void QtUserSearchFirstMultiJIDPage::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat("application/vnd.swift.contact-jid-list") || event->mimeData()->hasFormat("application/vnd.swift.contact-jid-muc")) { - event->acceptProposedAction(); + if (!contactList_->isFull()) { + event->acceptProposedAction(); + } } } void QtUserSearchFirstMultiJIDPage::dropEvent(QDropEvent *event) { if (event->mimeData()->hasFormat("application/vnd.swift.contact-jid-list")) { QByteArray dataBytes = event->mimeData()->data("application/vnd.swift.contact-jid-list"); QDataStream dataStream(&dataBytes, QIODevice::ReadOnly); std::vector<JID> jids; while (!dataStream.atEnd()) { diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp index 40b4e28..260ccfe 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp +++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp @@ -264,25 +264,21 @@ JID QtUserSearchWindow::getContactJID() const { } } else { jid = JID(Q2PSTRING(firstPage_->jid_->text().trimmed())); } return jid; } void QtUserSearchWindow::addSearchedJIDToList(const JID& jid) { - Contact::ref contact = boost::make_shared<Contact>(jid, jid.toString(), StatusShow::None, ""); - contactVector_.push_back(contact); - firstMultiJIDPage_->contactList_->setList(contactVector_); - firstMultiJIDPage_->emitCompletenessCheck(); - if (type_ == ChatToContact) { - firstMultiJIDPage_->groupBox->setEnabled(supportsImpromptu_ ? 1 : (contactVector_.size() < 1)); - } + std::vector<JID> jids; + jids.push_back(jid); + handleJIDsAdded(jids); } void QtUserSearchWindow::show() { clear(); QWidget::show(); } void QtUserSearchWindow::addSavedServices(const std::vector<JID>& services) { if (type_ == AddContact) { @@ -388,20 +384,26 @@ void QtUserSearchWindow::addContacts(const std::vector<Contact::ref>& contacts) if (newContact->jid == oldContact->jid) { found = true; break; } } if (!found) { contactVector_.push_back(newContact); } } + if (!supportsImpromptu_ && contactVector_.size() > 1) { + contactVector_.resize(1); /* can't chat with more than one user */ + } firstMultiJIDPage_->contactList_->setList(contactVector_); firstMultiJIDPage_->emitCompletenessCheck(); + if (type_ == ChatToContact) { + firstMultiJIDPage_->groupBox->setEnabled(supportsImpromptu_ ? true : (contactVector_.size() < 1)); + } } } void QtUserSearchWindow::setCanSupplyDescription(bool allowed) { firstMultiJIDPage_->label->setVisible(allowed); firstMultiJIDPage_->reason_->setVisible(allowed); } void QtUserSearchWindow::handleAddViaSearch() { |
Swift