diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-06-30 12:30:28 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2014-07-09 13:04:52 (GMT) | 
| commit | 16b1f85c1a7a0310b0a722c853e5fc8dd799570b (patch) | |
| tree | a52e93753da58e6b9f3c039c6ae4b886ee30f83e /Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp | |
| parent | 1edfc36235cc67d303ceb2bcf0630affc509f2f7 (diff) | |
| download | swift-contrib-16b1f85c1a7a0310b0a722c853e5fc8dd799570b.zip swift-contrib-16b1f85c1a7a0310b0a722c853e5fc8dd799570b.tar.bz2 | |
Reset QtSuggestingJIDInput when a contact has been selected.
Test-Information:
Verified that the selected contact is added to the contact list when selecting from the drop-down list or by pressing the 'Add' button and that the JID field is reset after this happens.
Change-Id: I7ef047ec9dbacf1af8635849320371f082bb3d0d
Diffstat (limited to 'Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp')
| -rw-r--r-- | Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp b/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp index a4a4610..9b96627 100644 --- a/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp +++ b/Swift/QtUI/UserSearch/QtSuggestingJIDInput.cpp @@ -59,118 +59,122 @@ QtSuggestingJIDInput::QtSuggestingJIDInput(QWidget* parent, SettingsProvider* se  }  QtSuggestingJIDInput::~QtSuggestingJIDInput() {  	settings_->onSettingChanged.disconnect(boost::bind(&QtSuggestingJIDInput::handleSettingsChanged, this, _1));  	delete treeViewPopup_;  }  Contact::ref QtSuggestingJIDInput::getContact() {  	if (!!currentContact_) {  		return currentContact_;  	}  	if (!text().isEmpty()) {  		JID jid(Q2PSTRING(text()));  		if (jid.isValid()) {  			Contact::ref manualContact = boost::make_shared<Contact>();  			manualContact->name = jid.toString();  			manualContact->jid = jid;  			return manualContact;  		}  	}  	return boost::shared_ptr<Contact>();  }  void QtSuggestingJIDInput::setSuggestions(const std::vector<Contact::ref>& suggestions) {  	contactListModel_->setList(suggestions);  	positionPopup();  	if (!suggestions.empty()) {  		treeViewPopup_->setCurrentIndex(contactListModel_->index(0, 0));  		showPopup();  	} else {  		currentContact_.reset();  	}  } +void QtSuggestingJIDInput::clear() { +	setText(""); +	currentContact_.reset(); +} +  void QtSuggestingJIDInput::keyPressEvent(QKeyEvent* event) {  	if (event->key() == Qt::Key_Up) {  		if (contactListModel_->rowCount() > 0) {  			int row = treeViewPopup_->currentIndex().row();  			row = (row + contactListModel_->rowCount() - 1) % contactListModel_->rowCount();  			treeViewPopup_->setCurrentIndex(contactListModel_->index(row, 0));  		}  	} else if (event->key() == Qt::Key_Down) {  		if (contactListModel_->rowCount() > 0) {  			int row = treeViewPopup_->currentIndex().row();  			row = (row + contactListModel_->rowCount() + 1) % contactListModel_->rowCount();  			treeViewPopup_->setCurrentIndex(contactListModel_->index(row, 0));  		}  	} else if (event->key() == Qt::Key_Return && treeViewPopup_->isVisible()) {  		QModelIndex index = treeViewPopup_->currentIndex();  		if (!contactListModel_->getList().empty() && index.isValid()) {  			currentContact_ = contactListModel_->getContact(index.row());  			setText(P2QSTRING(currentContact_->jid.toString()));  			hidePopup();  			clearFocus();  		} else {  			currentContact_.reset();  		}  		editingDone();  	} else {  		QLineEdit::keyPressEvent(event);  	}  }  void QtSuggestingJIDInput::handleApplicationFocusChanged(QWidget* /*old*/, QWidget* /*now*/) {  	/* Using the now argument gives use the wrong widget. This is part of the code needed  	   to prevent stealing of focus when opening a the suggestion window. */  	QWidget* now = qApp->focusWidget();  	if (!now || (now != treeViewPopup_ && now != this && !now->isAncestorOf(this) && !now->isAncestorOf(treeViewPopup_) && !this->isAncestorOf(now) && !treeViewPopup_->isAncestorOf(now))) {  		hidePopup();  	}  }  void QtSuggestingJIDInput::handleSettingsChanged(const std::string& setting) {  	if (setting == QtUISettingConstants::COMPACT_ROSTER.getKey()) {  		contactListDelegate_->setCompact(settings_->getSetting(QtUISettingConstants::COMPACT_ROSTER));  	}  }  void QtSuggestingJIDInput::handleClicked(const QModelIndex& index) {  	if (index.isValid()) {  		currentContact_ = contactListModel_->getContact(index.row()); -		setText("");  		onUserSelected(currentContact_->jid);  		hidePopup();  	}  }  void QtSuggestingJIDInput::positionPopup() {  	QDesktopWidget* desktop = QApplication::desktop();  	int screen = desktop->screenNumber(this);  	QPoint point = mapToGlobal(QPoint(0, height()));  	QRect geometry = desktop->availableGeometry(screen);  	int x = point.x();  	int y = point.y();  	int width = this->width();  	int height = 80;  	int screenWidth = geometry.x() + geometry.width();  	if (x + width > screenWidth) {  		x = screenWidth - width;  	}  	height = treeViewPopup_->sizeHintForRow(0) * contactListModel_->rowCount();  	height = height > 200 ? 200 : height;  	int marginLeft;  	int marginTop;  	int marginRight;  	int marginBottom;  	treeViewPopup_->getContentsMargins(&marginLeft, &marginTop, &marginRight, &marginBottom);  	height += marginTop + marginBottom;  	width += marginLeft + marginRight;  	treeViewPopup_->setGeometry(x, y, width, height);  	treeViewPopup_->move(x, y);  	treeViewPopup_->setMaximumWidth(width);  } | 
 Swift
 Swift