diff options
| -rw-r--r-- | Swift/QtUI/QtMainWindow.cpp | 2 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/QtFilterWidget.cpp | 55 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/QtFilterWidget.h | 6 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.cpp | 29 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.h | 2 | 
5 files changed, 60 insertions, 34 deletions
diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp index 7af9728..1acc519 100644 --- a/Swift/QtUI/QtMainWindow.cpp +++ b/Swift/QtUI/QtMainWindow.cpp @@ -81,3 +81,3 @@ QtMainWindow::QtMainWindow(SettingsProvider* settings, UIEventStream* uiEventStr  	contactTabLayout->addWidget(treeWidget_); -	new QtFilterWidget(this, treeWidget_, contactTabLayout); +	new QtFilterWidget(this, treeWidget_, uiEventStream_, contactTabLayout); diff --git a/Swift/QtUI/Roster/QtFilterWidget.cpp b/Swift/QtUI/Roster/QtFilterWidget.cpp index 5bd4669..2f08981 100644 --- a/Swift/QtUI/Roster/QtFilterWidget.cpp +++ b/Swift/QtUI/Roster/QtFilterWidget.cpp @@ -6,4 +6,2 @@ -#include <Swift/QtUI/Roster/QtFilterWidget.h> -  #include <QLayout> @@ -14,4 +12,6 @@  #include <QEvent> - +#include <Swift/Controllers/UIEvents/RequestChatUIEvent.h> +#include <Swift/Controllers/UIEvents/UIEventStream.h>  #include <Swift/QtUI/QtSwiftUtil.h> +#include <Swift/QtUI/Roster/QtFilterWidget.h> @@ -19,3 +19,3 @@ namespace Swift { -QtFilterWidget::QtFilterWidget(QWidget* parent, QtTreeWidget* treeView, QBoxLayout* layout) : QWidget(parent), treeView_(treeView), fuzzyRosterFilter_(0), isModifierSinglePressed_(false) { +QtFilterWidget::QtFilterWidget(QWidget* parent, QtTreeWidget* treeView, UIEventStream* eventStream, QBoxLayout* layout) : QWidget(parent), treeView_(treeView), eventStream_(eventStream), fuzzyRosterFilter_(0), isModifierSinglePressed_(false) {  	int targetIndex = layout->indexOf(treeView); @@ -67,4 +67,8 @@ bool QtFilterWidget::eventFilter(QObject*, QEvent* event) {  			} else if (keyEvent->key() == Qt::Key_Return) { +				JID target = treeView_->selectedJID(); +				if (target.isValid()) { +					eventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(target))); +				}  				filterLineEdit_->setText(""); -				return false; +				updateRosterFilters();  			} else if (keyEvent->key() == Qt::Key_Escape) { @@ -79,22 +83,4 @@ bool QtFilterWidget::eventFilter(QObject*, QEvent* event) { -		// update roster filters  		if (event->type() == QEvent::KeyRelease) { -			if (fuzzyRosterFilter_) { -				if (filterLineEdit_->text().isEmpty()) { -					// remove currently installed search filter and put old filters back -					treeView_->getRoster()->removeFilter(fuzzyRosterFilter_); -					delete fuzzyRosterFilter_; -					fuzzyRosterFilter_ = NULL; -					pushAllFilters(); -				} else { -					// remove currently intsalled search filter and put new search filter in place -					updateSearchFilter(); -				} -			} else { -				if (!filterLineEdit_->text().isEmpty()) { -					// remove currently installed filters and put a search filter in place -					popAllFilters(); -					updateSearchFilter(); -				} -			} +			updateRosterFilters();  		} @@ -120,2 +106,23 @@ void QtFilterWidget::pushAllFilters() { +void QtFilterWidget::updateRosterFilters() { +	if (fuzzyRosterFilter_) { +		if (filterLineEdit_->text().isEmpty()) { +			// remove currently installed search filter and put old filters back +			treeView_->getRoster()->removeFilter(fuzzyRosterFilter_); +			delete fuzzyRosterFilter_; +			fuzzyRosterFilter_ = NULL; +			pushAllFilters(); +		} else { +			// remove currently intsalled search filter and put new search filter in place +			updateSearchFilter(); +		} +	} else { +		if (!filterLineEdit_->text().isEmpty()) { +			// remove currently installed filters and put a search filter in place +			popAllFilters(); +			updateSearchFilter(); +		} +	} +} +  void QtFilterWidget::updateSearchFilter() { diff --git a/Swift/QtUI/Roster/QtFilterWidget.h b/Swift/QtUI/Roster/QtFilterWidget.h index e33616b..94ebc2a 100644 --- a/Swift/QtUI/Roster/QtFilterWidget.h +++ b/Swift/QtUI/Roster/QtFilterWidget.h @@ -21,2 +21,4 @@ namespace Swift { +class UIEventStream; +  class QtFilterWidget : public QWidget { @@ -24,3 +26,3 @@ class QtFilterWidget : public QWidget {  	public: -		QtFilterWidget(QWidget* parent, QtTreeWidget* treeView, QBoxLayout* layout = 0); +		QtFilterWidget(QWidget* parent, QtTreeWidget* treeView, UIEventStream* eventStream, QBoxLayout* layout = 0);  		virtual ~QtFilterWidget(); @@ -34,2 +36,3 @@ class QtFilterWidget : public QWidget { +		void updateRosterFilters();  		void updateSearchFilter(); @@ -39,2 +42,3 @@ class QtFilterWidget : public QWidget {  		QtTreeWidget* treeView_; +		UIEventStream* eventStream_;  		std::vector<RosterFilter*> filters_; diff --git a/Swift/QtUI/Roster/QtTreeWidget.cpp b/Swift/QtUI/Roster/QtTreeWidget.cpp index fbe85de..5333260 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.cpp +++ b/Swift/QtUI/Roster/QtTreeWidget.cpp @@ -140,10 +140,3 @@ void QtTreeWidget::currentChanged(const QModelIndex& current, const QModelIndex&  void QtTreeWidget::handleItemActivated(const QModelIndex& index) { -	JID target; -	if (messageTarget_ == MessageDisplayJID) { -		target = JID(Q2PSTRING(index.data(DisplayJIDRole).toString())); -		target = target.toBare(); -	} -	if (!target.isValid()) { -		target = JID(Q2PSTRING(index.data(JIDRole).toString())); -	} +	JID target = jidFromIndex(index);  	if (target.isValid()) { @@ -241,2 +234,22 @@ void QtTreeWidget::setMessageTarget(MessageTarget messageTarget) { +JID QtTreeWidget::jidFromIndex(const QModelIndex& index) const { +	JID target; +	if (messageTarget_ == MessageDisplayJID) { +		target = JID(Q2PSTRING(index.data(DisplayJIDRole).toString())); +		target = target.toBare(); +	} +	if (!target.isValid()) { +		target = JID(Q2PSTRING(index.data(JIDRole).toString())); +	} +	return target; +} + +JID QtTreeWidget::selectedJID() const { +	QModelIndexList list = selectedIndexes(); +	if (list.size() != 1) { +		return JID(); +	} +	return jidFromIndex(list[0]); +} +  } diff --git a/Swift/QtUI/Roster/QtTreeWidget.h b/Swift/QtUI/Roster/QtTreeWidget.h index 29e985d..cf2f73e 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.h +++ b/Swift/QtUI/Roster/QtTreeWidget.h @@ -36,2 +36,4 @@ class QtTreeWidget : public QTreeView {  		void setMessageTarget(MessageTarget messageTarget); +		JID jidFromIndex(const QModelIndex& index) const; +		JID selectedJID() const;  	public:  | 
 Swift