diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-12-17 15:47:07 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-17 16:09:00 (GMT) |
commit | b5ad1ec998ec01501866c2ae5ea66c650b79c5cf (patch) | |
tree | 078c087c365dcb36e9591034f2a0aeeb0a46ce7e /Swift/QtUI/QtUIFactory.cpp | |
parent | ce54856995e6efe067276ed2f1a8c67decbc5abf (diff) | |
download | swift-contrib-b5ad1ec998ec01501866c2ae5ea66c650b79c5cf.zip swift-contrib-b5ad1ec998ec01501866c2ae5ea66c650b79c5cf.tar.bz2 |
Collapsed all UI factories into UIFactory.
Diffstat (limited to 'Swift/QtUI/QtUIFactory.cpp')
-rw-r--r-- | Swift/QtUI/QtUIFactory.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
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); +} + +} |