diff options
| -rw-r--r-- | Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp | 2 | ||||
| -rw-r--r-- | Swift/Controllers/UIInterfaces/UIFactory.h | 22 | ||||
| -rw-r--r-- | Swift/QtUI/QtUIFactory.cpp | 79 | ||||
| -rw-r--r-- | Swift/QtUI/QtUIFactory.h | 49 | 
4 files changed, 151 insertions, 1 deletions
| diff --git a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp index c180062..9c1cc36 100644 --- a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp +++ b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp @@ -79,7 +79,7 @@ public:  		uiEventStream_ = new UIEventStream();  		entityCapsManager_ = new EntityCapsManager(capsProvider_, stanzaChannel_);  		chatListWindowFactory_ = mocks_->InterfaceMock<ChatListWindowFactory>(); -		mocks_->ExpectCall(chatListWindowFactory_, ChatListWindowFactory::createWindow).With(uiEventStream_).Return(NULL); +		mocks_->ExpectCall(chatListWindowFactory_, ChatListWindowFactory::createChatListWindow).With(uiEventStream_).Return(NULL);  		manager_ = new ChatsManager(jid_, stanzaChannel_, iqRouter_, eventController_, chatWindowFactory_, nickResolver_, presenceOracle_, directedPresenceSender_, uiEventStream_, chatListWindowFactory_, true, NULL, mucRegistry_, entityCapsManager_, mucManager_);  		avatarManager_ = new NullAvatarManager(); diff --git a/Swift/Controllers/UIInterfaces/UIFactory.h b/Swift/Controllers/UIInterfaces/UIFactory.h new file mode 100644 index 0000000..4e15b27 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/UIFactory.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <Swift/Controllers/UIInterfaces/ChatListWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/ChatWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/EventWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/LoginWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/MainWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/XMLConsoleWidgetFactory.h> + +namespace Swift { +	class UIFactory : public ChatListWindowFactory, public ChatWindowFactory, public EventWindowFactory, public LoginWindowFactory, public MainWindowFactory, public MUCSearchWindowFactory, public XMLConsoleWidgetFactory { +		public: +			virtual ~UIFactory() {} +	}; +} diff --git a/Swift/QtUI/QtUIFactory.cpp b/Swift/QtUI/QtUIFactory.cpp new file mode 100644 index 0000000..60a7a6a --- /dev/null +++ b/Swift/QtUI/QtUIFactory.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "QtUIFactory.h" + +#include <QSplitter> + +#include "QtXMLConsoleWidget.h" +#include "QtChatTabs.h" +#include "QtMainWindow.h" +#include "QtLoginWindow.h" +#include "QtSystemTray.h" +#include "QtSettingsProvider.h" +#include "QtMainWindow.h" +#include "QtChatWindow.h" +#include "QtChatWindowFactory.h" +#include "QtSwiftUtil.h" +#include "MUCSearch/QtMUCSearchWindow.h" + +namespace Swift { + +QtUIFactory::QtUIFactory(QtSettingsProvider* settings, QtChatTabs* tabs, QSplitter* netbookSplitter, QtSystemTray* systemTray, QtChatWindowFactory* chatWindowFactory) : settings(settings), tabs(tabs), netbookSplitter(netbookSplitter), systemTray(systemTray), chatWindowFactory(chatWindowFactory), lastMainWindow(NULL), loginWindow(NULL)  { +} + +XMLConsoleWidget* QtUIFactory::createXMLConsoleWidget() { +	QtXMLConsoleWidget* widget = new QtXMLConsoleWidget(); +	tabs->addTab(widget); +	if (!tabs->isVisible()) { +		tabs->show(); +	} +	widget->show(); +	return widget; +} + + +MainWindow* QtUIFactory::createMainWindow(UIEventStream* eventStream) { +	lastMainWindow  = new QtMainWindow(settings, eventStream); +	return lastMainWindow; +} + +LoginWindow* QtUIFactory::createLoginWindow(UIEventStream* eventStream) { +	loginWindow = new QtLoginWindow(eventStream); +	if (netbookSplitter) { +		netbookSplitter->insertWidget(0, loginWindow); +	} +	connect(systemTray, SIGNAL(clicked()), loginWindow, SLOT(bringToFront())); + +	QVariant loginWindowGeometryVariant = settings->getQSettings()->value("loginWindowGeometry"); +	if (loginWindowGeometryVariant.isValid()) { +		loginWindow->restoreGeometry(loginWindowGeometryVariant.toByteArray()); +	} +	connect(loginWindow, SIGNAL(geometryChanged()), this, SLOT(handleLoginWindowGeometryChanged())); +	return loginWindow; +} + +void QtUIFactory::handleLoginWindowGeometryChanged() { +	settings->getQSettings()->setValue("loginWindowGeometry", loginWindow->saveGeometry()); +} + +EventWindow* QtUIFactory::createEventWindow() { +	return lastMainWindow->getEventWindow(); +} + +ChatListWindow* QtUIFactory::createChatListWindow(UIEventStream*) { +	return lastMainWindow->getChatListWindow(); +} + +MUCSearchWindow* QtUIFactory::createMUCSearchWindow(UIEventStream* eventStream) { +		return new QtMUCSearchWindow(eventStream); +} + +ChatWindow* QtUIFactory::createChatWindow(const JID& contact, UIEventStream* eventStream) { +	return chatWindowFactory->createChatWindow(contact, eventStream); +} + +} diff --git a/Swift/QtUI/QtUIFactory.h b/Swift/QtUI/QtUIFactory.h new file mode 100644 index 0000000..e06b411 --- /dev/null +++ b/Swift/QtUI/QtUIFactory.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <QObject> + +#include <Swift/Controllers/UIInterfaces/UIFactory.h> + +class QSplitter; + +namespace Swift { +	class QtSettingsProvider; +	class QtChatTabs; +	class QtSystemTray; +	class QtLoginWindow; +	class QtMainWindow; +	class QtChatTheme; +	class QtChatWindowFactory; + +	class QtUIFactory : public QObject, public UIFactory { +			Q_OBJECT +		public: +			QtUIFactory(QtSettingsProvider* settings, QtChatTabs* tabs, QSplitter* netbookSplitter, QtSystemTray* systemTray, QtChatWindowFactory* chatWindowFactory); + +			virtual XMLConsoleWidget* createXMLConsoleWidget(); +			virtual MainWindow* createMainWindow(UIEventStream* eventStream); +			virtual LoginWindow* createLoginWindow(UIEventStream* eventStream); +			virtual EventWindow* createEventWindow(); +			virtual ChatListWindow* createChatListWindow(UIEventStream*); +			virtual MUCSearchWindow* createMUCSearchWindow(UIEventStream* eventStream); +			virtual ChatWindow* createChatWindow(const JID &contact, UIEventStream* eventStream); + +		private slots: +			void handleLoginWindowGeometryChanged(); + +		private: +			QtSettingsProvider* settings; +			QtChatTabs* tabs; +			QSplitter* netbookSplitter; +			QtSystemTray* systemTray; +			QtChatWindowFactory* chatWindowFactory; +			QtMainWindow* lastMainWindow; +			QtLoginWindow* loginWindow; +	}; +} | 
 Swift
 Swift