summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI')
-rw-r--r--Swift/QtUI/QtMainWindow.cpp2
-rw-r--r--Swift/QtUI/Roster/QtFilterWidget.cpp55
-rw-r--r--Swift/QtUI/Roster/QtFilterWidget.h6
-rw-r--r--Swift/QtUI/Roster/QtTreeWidget.cpp29
-rw-r--r--Swift/QtUI/Roster/QtTreeWidget.h2
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: