diff options
Diffstat (limited to 'Swift/QtUI/QtMainWindow.cpp')
| -rw-r--r-- | Swift/QtUI/QtMainWindow.cpp | 29 | 
1 files changed, 23 insertions, 6 deletions
| diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp index f737e30..710ef61 100644 --- a/Swift/QtUI/QtMainWindow.cpp +++ b/Swift/QtUI/QtMainWindow.cpp @@ -7,6 +7,7 @@  #include "QtMainWindow.h"  #include <boost/optional.hpp> +#include <boost/bind.hpp>  #include <QBoxLayout>  #include <QComboBox> @@ -26,6 +27,7 @@  #include "Swift/Controllers/UIEvents/AddContactUIEvent.h"  #include "Swift/Controllers/UIEvents/RequestMUCSearchUIEvent.h"  #include "Swift/Controllers/UIEvents/JoinMUCUIEvent.h" +#include "Swift/Controllers/UIEvents/ToggleShowOfflineUIEvent.h"  namespace Swift { @@ -71,11 +73,11 @@ QtMainWindow::QtMainWindow(UIEventStream* uiEventStream) : QWidget(), MainWindow  	QMenu* viewMenu = new QMenu(tr("View"), this);  	menus_.push_back(viewMenu); -	QAction* showOfflineAction = new QAction("Show offline contacts", this); -	showOfflineAction->setCheckable(true); -	showOfflineAction->setChecked(false); -	connect(showOfflineAction, SIGNAL(toggled(bool)), SLOT(handleShowOfflineToggled(bool))); -	viewMenu->addAction(showOfflineAction); +	showOfflineAction_ = new QAction("Show offline contacts", this); +	showOfflineAction_->setCheckable(true); +	showOfflineAction_->setChecked(false); +	connect(showOfflineAction_, SIGNAL(toggled(bool)), SLOT(handleShowOfflineToggled(bool))); +	viewMenu->addAction(showOfflineAction_);  	QMenu* actionsMenu = new QMenu(tr("Actions"), this);  	menus_.push_back(actionsMenu); @@ -88,9 +90,13 @@ QtMainWindow::QtMainWindow(UIEventStream* uiEventStream) : QWidget(), MainWindow  	QAction* signOutAction = new QAction("Sign Out", this);  	connect(signOutAction, SIGNAL(triggered()), SLOT(handleSignOutAction()));  	actionsMenu->addAction(signOutAction); + +	lastOfflineState_ = false; +	uiEventStream_->onUIEvent.connect(boost::bind(&QtMainWindow::handleUIEvent, this, _1));  }  QtMainWindow::~QtMainWindow() { +	uiEventStream_->onUIEvent.disconnect(boost::bind(&QtMainWindow::handleUIEvent, this, _1));  	delete contextMenu_;  } @@ -141,8 +147,19 @@ void QtMainWindow::handleStatusChanged(StatusShow::Type showType, const QString  	onChangeStatusRequest(showType, Q2PSTRING(statusMessage));  } +void QtMainWindow::handleUIEvent(boost::shared_ptr<UIEvent> event) { +	boost::shared_ptr<ToggleShowOfflineUIEvent> toggleEvent = boost::dynamic_pointer_cast<ToggleShowOfflineUIEvent>(event); +	if (toggleEvent) { +		handleShowOfflineToggled(toggleEvent->getShow()); +	} +} +  void QtMainWindow::handleShowOfflineToggled(bool state) { -	onShowOfflineToggled(state); +	if (state != lastOfflineState_) { +		lastOfflineState_ = state; +		showOfflineAction_->setChecked(state); +		uiEventStream_->onUIEvent(boost::shared_ptr<UIEvent>(new ToggleShowOfflineUIEvent(state))); +	}  }  void QtMainWindow::setMyName(const String& name) { | 
 Swift
 Swift