summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/QtUIFactory.cpp')
-rw-r--r--Swift/QtUI/QtUIFactory.cpp79
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);
+}
+
+}