diff options
Diffstat (limited to 'Swift/QtUI')
| -rw-r--r-- | Swift/QtUI/Roster/QtFilterWidget.cpp | 22 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/QtFilterWidget.h | 3 | 
2 files changed, 24 insertions, 1 deletions
| diff --git a/Swift/QtUI/Roster/QtFilterWidget.cpp b/Swift/QtUI/Roster/QtFilterWidget.cpp index a4c9449..64eb312 100644 --- a/Swift/QtUI/Roster/QtFilterWidget.cpp +++ b/Swift/QtUI/Roster/QtFilterWidget.cpp @@ -87,5 +87,4 @@ bool QtFilterWidget::eventFilter(QObject*, QEvent* event) {  		filterLineEdit_->event(event); -		filterLineEdit_->setVisible(!filterLineEdit_->text().isEmpty());  		if (event->type() == QEvent::KeyRelease) { @@ -103,7 +102,11 @@ void QtFilterWidget::popAllFilters() {  		treeView_->getRoster()->removeFilter(filter);  	} +	treeView_->getRoster()->onFilterAdded.connect(boost::bind(&QtFilterWidget::handleFilterAdded, this, _1)); +	treeView_->getRoster()->onFilterRemoved.connect(boost::bind(&QtFilterWidget::handleFilterRemoved, this, _1));  }  void QtFilterWidget::pushAllFilters() { +	treeView_->getRoster()->onFilterAdded.disconnect(boost::bind(&QtFilterWidget::handleFilterAdded, this, _1)); +	treeView_->getRoster()->onFilterRemoved.disconnect(boost::bind(&QtFilterWidget::handleFilterRemoved, this, _1));  	foreach(RosterFilter* filter, filters_) {  		treeView_->getRoster()->addFilter(filter); @@ -131,4 +134,5 @@ void QtFilterWidget::updateRosterFilters() {  		}  	} +	filterLineEdit_->setVisible(!filterLineEdit_->text().isEmpty());  } @@ -144,3 +148,19 @@ void QtFilterWidget::updateSearchFilter() {  } +void QtFilterWidget::handleFilterAdded(RosterFilter* filter) { +	if (filter != fuzzyRosterFilter_) { +		filterLineEdit_->setText(""); +		updateRosterFilters(); +	} +} + +void QtFilterWidget::handleFilterRemoved(RosterFilter* filter) { +	/* make sure we don't end up adding this one back in later */ +	filters_.erase(std::remove(filters_.begin(), filters_.end(), filter), filters_.end()); +	if (filter != fuzzyRosterFilter_) { +		filterLineEdit_->setText(""); +		updateRosterFilters(); +	} +} +  } diff --git a/Swift/QtUI/Roster/QtFilterWidget.h b/Swift/QtUI/Roster/QtFilterWidget.h index 3e17566..d0307ea 100644 --- a/Swift/QtUI/Roster/QtFilterWidget.h +++ b/Swift/QtUI/Roster/QtFilterWidget.h @@ -36,4 +36,7 @@ class QtFilterWidget : public QWidget {  		void updateSearchFilter(); +		void handleFilterAdded(RosterFilter* filter); +		void handleFilterRemoved(RosterFilter* filter); +  	private:  		QtClosableLineEdit* filterLineEdit_; | 
 Swift
 Swift