summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI')
-rw-r--r--Swift/QtUI/UserSearch/QtContactListWidget.cpp4
-rw-r--r--Swift/QtUI/UserSearch/QtContactListWidget.h1
-rw-r--r--Swift/QtUI/UserSearch/QtUserSearchFirstMultiJIDPage.cpp4
-rw-r--r--Swift/QtUI/UserSearch/QtUserSearchWindow.cpp16
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() {