From ce54856995e6efe067276ed2f1a8c67decbc5abf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Fri, 17 Dec 2010 11:33:48 +0100
Subject: Fixed IPv6 network test.


diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp
index 6bd7597..814d87d 100644
--- a/Swift/Controllers/Chat/ChatsManager.cpp
+++ b/Swift/Controllers/Chat/ChatsManager.cpp
@@ -42,7 +42,7 @@ ChatsManager::ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRo
 	mucBookmarkManager_ = NULL;
 	presenceOracle_->onPresenceChange.connect(boost::bind(&ChatsManager::handlePresenceChange, this, _1));
 	uiEventConnection_ = uiEventStream_->onUIEvent.connect(boost::bind(&ChatsManager::handleUIEvent, this, _1));
-	chatListWindow_ = chatListWindowFactory->createWindow(uiEventStream_);
+	chatListWindow_ = chatListWindowFactory->createChatListWindow(uiEventStream_);
 	setupBookmarks();
 }
 
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index de7009c..c965c1c 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -4,13 +4,14 @@
  * See Documentation/Licenses/GPLv3.txt for more information.
  */
 
-#include "Swift/Controllers/MainController.h"
+#include <Swift/Controllers/MainController.h>
 
 #include <boost/bind.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/shared_ptr.hpp>
 #include <stdlib.h>
 
+#include <Swift/Controllers/UIInterfaces/UIFactory.h>
 #include "Swiften/Network/TimerFactory.h"
 #include "Swift/Controllers/BuildVersion.h"
 #include "Swift/Controllers/StoragesFactory.h"
@@ -69,16 +70,10 @@ static const String SHOW_NOTIFICATIONS = "showNotifications";
 MainController::MainController(
 		EventLoop* eventLoop,
 		NetworkFactories* networkFactories,
-		ChatWindowFactory* chatWindowFactory,
-		MainWindowFactory *mainWindowFactory,
-		LoginWindowFactory *loginWindowFactory,
-		EventWindowFactory* eventWindowFactory,
+		UIFactory* uiFactories,
 		SettingsProvider *settings,
 		SystemTray* systemTray,
 		SoundPlayer* soundPlayer,
-		XMLConsoleWidgetFactory* xmlConsoleWidgetFactory,
-		ChatListWindowFactory* chatListWindowFactory,
-		MUCSearchWindowFactory* mucSearchWindowFactory,
 		StoragesFactory* storagesFactory,
 		CertificateStorageFactory* certificateStorageFactory,
 		Dock* dock,
@@ -86,12 +81,10 @@ MainController::MainController(
 		bool useDelayForLatency) :
 			eventLoop_(eventLoop),
 			networkFactories_(networkFactories),
+			uiFactory_(uiFactories),
 			idleDetector_(&idleQuerier_, networkFactories_->getTimerFactory(), 100),
 			storagesFactory_(storagesFactory),
 			certificateStorageFactory_(certificateStorageFactory),
-			chatWindowFactory_(chatWindowFactory),
-			mainWindowFactory_(mainWindowFactory),
-			loginWindowFactory_(loginWindowFactory),
 			settings_(settings),
 			loginWindow_(NULL) ,
 			useDelayForLatency_(useDelayForLatency) {
@@ -108,10 +101,7 @@ MainController::MainController(
 	quitRequested_ = false;
 
 	timeBeforeNextReconnect_ = -1;
-	mucSearchWindowFactory_ = mucSearchWindowFactory;
-	eventWindowFactory_ = eventWindowFactory;
 	dock_ = dock;
-	chatListWindowFactory_ = chatListWindowFactory;
 	uiEventStream_ = new UIEventStream();
 
 	notifier_ = new TogglableNotifier(notifier);
@@ -119,7 +109,7 @@ MainController::MainController(
 	eventController_->onEventQueueLengthChange.connect(boost::bind(&MainController::handleEventQueueLengthChange, this, _1));
 
 	systemTrayController_ = new SystemTrayController(eventController_, systemTray);
-	loginWindow_ = loginWindowFactory_->createLoginWindow(uiEventStream_);
+	loginWindow_ = uiFactory_->createLoginWindow(uiEventStream_);
 	soundEventController_ = new SoundEventController(eventController_, soundPlayer, settings, uiEventStream_);
 
 	String selectedLoginJID = settings_->getStringSetting("lastLoginJID");
@@ -147,7 +137,7 @@ MainController::MainController(
 	idleDetector_.setIdleTimeSeconds(600);
 	idleDetector_.onIdleChanged.connect(boost::bind(&MainController::handleInputIdleChanged, this, _1));
 
-	xmlConsoleController_ = new XMLConsoleController(uiEventStream_, xmlConsoleWidgetFactory);
+	xmlConsoleController_ = new XMLConsoleController(uiEventStream_, uiFactory_);
 
 	uiEventStream_->onUIEvent.connect(boost::bind(&MainController::handleUIEvent, this, _1));
 	bool enabled = settings_->getBoolSetting(SHOW_NOTIFICATIONS, true);
@@ -232,15 +222,15 @@ void MainController::handleConnected() {
 	bool freshLogin = rosterController_ == NULL;
 	myStatusLooksOnline_ = true;
 	if (freshLogin) {
-		rosterController_ = new RosterController(jid_, client_->getRoster(), client_->getAvatarManager(), mainWindowFactory_, client_->getNickManager(), client_->getNickResolver(), client_->getPresenceOracle(), client_->getSubscriptionManager(), eventController_, uiEventStream_, client_->getIQRouter(), settings_);
+		rosterController_ = new RosterController(jid_, client_->getRoster(), client_->getAvatarManager(), uiFactory_, client_->getNickManager(), client_->getNickResolver(), client_->getPresenceOracle(), client_->getSubscriptionManager(), eventController_, uiEventStream_, client_->getIQRouter(), settings_);
 		rosterController_->onChangeStatusRequest.connect(boost::bind(&MainController::handleChangeStatusRequest, this, _1, _2));
 		rosterController_->onSignOutRequest.connect(boost::bind(&MainController::signOut, this));
 
-		chatsManager_ = new ChatsManager(jid_, client_->getStanzaChannel(), client_->getIQRouter(), eventController_, chatWindowFactory_, client_->getNickResolver(), client_->getPresenceOracle(), client_->getPresenceSender(), uiEventStream_, chatListWindowFactory_, useDelayForLatency_, networkFactories_->getTimerFactory(), client_->getMUCRegistry(), client_->getEntityCapsProvider(), client_->getMUCManager());
+		chatsManager_ = new ChatsManager(jid_, client_->getStanzaChannel(), client_->getIQRouter(), eventController_, uiFactory_, client_->getNickResolver(), client_->getPresenceOracle(), client_->getPresenceSender(), uiEventStream_, uiFactory_, useDelayForLatency_, networkFactories_->getTimerFactory(), client_->getMUCRegistry(), client_->getEntityCapsProvider(), client_->getMUCManager());
 		client_->onMessageReceived.connect(boost::bind(&ChatsManager::handleIncomingMessage, chatsManager_, _1));
 		chatsManager_->setAvatarManager(client_->getAvatarManager());
 
-		eventWindowController_ = new EventWindowController(eventController_, eventWindowFactory_);
+		eventWindowController_ = new EventWindowController(eventController_, uiFactory_);
 
 		loginWindow_->morphInto(rosterController_->getWindow());
 
@@ -251,7 +241,7 @@ void MainController::handleConnected() {
 		client_->getDiscoManager()->setCapsNode(CLIENT_NODE);
 		client_->getDiscoManager()->setDiscoInfo(discoInfo);
 
-		mucSearchController_ = new MUCSearchController(jid_, uiEventStream_, mucSearchWindowFactory_, client_->getIQRouter(), settings_);
+		mucSearchController_ = new MUCSearchController(jid_, uiEventStream_, uiFactory_, client_->getIQRouter(), settings_);
 	}
 	
 	client_->requestRoster();
diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h
index 0427307..2f101a5 100644
--- a/Swift/Controllers/MainController.h
+++ b/Swift/Controllers/MainController.h
@@ -6,7 +6,7 @@
 
 #pragma once
 
-#include "Swiften/Base/boost_bsignals.h"
+#include <Swiften/Base/boost_bsignals.h>
 #include <boost/shared_ptr.hpp>
 #include <vector>
 
@@ -27,22 +27,19 @@
 #include "Swift/Controllers/UIEvents/UIEvent.h"
 
 namespace Swift {
+	class UIFactory;
 	class EventLoop;
 	class Client;
-	class ChatWindowFactory;
 	class ChatController;
 	class ChatsManager;
 	class CertificateStorageFactory;
 	class CertificateStorage;
 	class CertificateStorageTrustChecker;
-	class ChatListWindowFactory;
 	class EventController;
-	class MainWindowFactory;
 	class MainWindow;
 	class RosterController;
 	class LoginWindow;
 	class EventLoop;
-	class LoginWindowFactory;
 	class MUCController;
 	class Notifier;
 	class TogglableNotifier;
@@ -54,11 +51,9 @@ namespace Swift {
 	class SoundPlayer;
 	class XMLConsoleController;
 	class UIEventStream;
-	class XMLConsoleWidgetFactory;
 	class EventWindowFactory;
 	class EventWindowController;
 	class MUCSearchController;
-	class MUCSearchWindowFactory;
 	class StatusTracker;
 	class Dock;
 	class Storages;
@@ -70,16 +65,10 @@ namespace Swift {
 			MainController(
 					EventLoop* eventLoop,
 					NetworkFactories* networkFactories,
-					ChatWindowFactory* chatWindowFactory,
-					MainWindowFactory *mainWindowFactory,
-					LoginWindowFactory *loginWindowFactory,
-					EventWindowFactory* eventWindowFactory,
+					UIFactory* uiFactories,
 					SettingsProvider *settings,
 					SystemTray* systemTray,
 					SoundPlayer* soundPlayer,
-					XMLConsoleWidgetFactory* xmlConsoleWidgetFactory,
-					ChatListWindowFactory* chatListWindowFactory_,
-					MUCSearchWindowFactory* mucSearchWindowFactory,
 					StoragesFactory* storagesFactory,
 					CertificateStorageFactory* certificateStorageFactory,
 					Dock* dock,
@@ -116,6 +105,7 @@ namespace Swift {
 		private:
 			EventLoop* eventLoop_;
 			NetworkFactories* networkFactories_;
+			UIFactory* uiFactory_;
 			PlatformIdleQuerier idleQuerier_;
 			ActualIdleDetector idleDetector_;
 			StoragesFactory* storagesFactory_;
@@ -124,10 +114,6 @@ namespace Swift {
 			CertificateStorage* certificateStorage_;
 			CertificateStorageTrustChecker* certificateTrustChecker_;
 			Client* client_;
-			ChatWindowFactory* chatWindowFactory_;
-			MainWindowFactory* mainWindowFactory_;
-			LoginWindowFactory* loginWindowFactory_;
-			EventWindowFactory* eventWindowFactory_;
 			SettingsProvider *settings_;
 			ProfileSettingsProvider* profileSettings_;
 			Dock* dock_;
@@ -148,11 +134,9 @@ namespace Swift {
 			String vCardPhotoHash_;
 			String password_;
 			String certificateFile_;
-			ChatListWindowFactory* chatListWindowFactory_;
 			boost::shared_ptr<ErrorEvent> lastDisconnectError_;
 			bool useDelayForLatency_;
 			MUCSearchController* mucSearchController_;
-			MUCSearchWindowFactory* mucSearchWindowFactory_;
 			int timeBeforeNextReconnect_;
 			Timer::ref reconnectTimer_;
 			StatusTracker* statusTracker_;
diff --git a/Swift/Controllers/UIInterfaces/ChatListWindowFactory.h b/Swift/Controllers/UIInterfaces/ChatListWindowFactory.h
index b920e43..cf8409e 100644
--- a/Swift/Controllers/UIInterfaces/ChatListWindowFactory.h
+++ b/Swift/Controllers/UIInterfaces/ChatListWindowFactory.h
@@ -13,6 +13,6 @@ namespace Swift {
 	class ChatListWindowFactory {
 		public:
 			virtual ~ChatListWindowFactory() {}
-			virtual ChatListWindow* createWindow(UIEventStream* uiEventStream) = 0;	
+			virtual ChatListWindow* createChatListWindow(UIEventStream* uiEventStream) = 0;
 	};
 }
diff --git a/Swift/QtUI/ChatList/QtChatListWindowFactory.cpp b/Swift/QtUI/ChatList/QtChatListWindowFactory.cpp
deleted file mode 100644
index 0e9d324..0000000
--- a/Swift/QtUI/ChatList/QtChatListWindowFactory.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include "Swift/QtUI/ChatList/QtChatListWindowFactory.h"
-
-#include "Swift/QtUI/QtMainWindowFactory.h"
-#include "Swift/QtUI/QtMainWindow.h"
-
-namespace Swift {
-
-QtChatListWindowFactory::QtChatListWindowFactory(QtMainWindowFactory* mainWindowFactory) {
-	mainWindowFactory_ = mainWindowFactory;
-}
-
-ChatListWindow* QtChatListWindowFactory::createWindow(UIEventStream* /*uiEventStream*/) {
-	return static_cast<QtMainWindow*>(mainWindowFactory_->getLastCreatedWindow())->getChatListWindow();
-}
-
-}
diff --git a/Swift/QtUI/ChatList/QtChatListWindowFactory.h b/Swift/QtUI/ChatList/QtChatListWindowFactory.h
deleted file mode 100644
index 604ce2e..0000000
--- a/Swift/QtUI/ChatList/QtChatListWindowFactory.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#pragma once
-
-#include "Swift/Controllers/UIInterfaces/ChatListWindowFactory.h"
-
-namespace Swift {
-	class QtMainWindowFactory;
-	class QtChatListWindowFactory : public ChatListWindowFactory{
-		public:
-			QtChatListWindowFactory(QtMainWindowFactory* mainWindowFactory);
-			ChatListWindow* createWindow(UIEventStream* uiEventStream);
-		private:
-			QtMainWindowFactory* mainWindowFactory_;
-	};
-}
diff --git a/Swift/QtUI/EventViewer/QtEventWindowFactory.cpp b/Swift/QtUI/EventViewer/QtEventWindowFactory.cpp
deleted file mode 100644
index 45f6da0..0000000
--- a/Swift/QtUI/EventViewer/QtEventWindowFactory.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include "Swift/QtUI/EventViewer/QtEventWindowFactory.h"
-
-#include "Swift/QtUI/QtMainWindowFactory.h"
-#include "Swift/QtUI/QtMainWindow.h"
-
-namespace Swift {
-
-QtEventWindowFactory::QtEventWindowFactory(QtMainWindowFactory* mainWindowFactory) {
-	mainWindowFactory_ = mainWindowFactory;
-}
-
-EventWindow* QtEventWindowFactory::createEventWindow() {
-	return static_cast<QtMainWindow*>(mainWindowFactory_->getLastCreatedWindow())->getEventWindow();
-}
-
-}
diff --git a/Swift/QtUI/EventViewer/QtEventWindowFactory.h b/Swift/QtUI/EventViewer/QtEventWindowFactory.h
deleted file mode 100644
index af64a58..0000000
--- a/Swift/QtUI/EventViewer/QtEventWindowFactory.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#pragma once
-
-#include "Swift/Controllers/UIInterfaces/EventWindowFactory.h"
-
-namespace Swift {
-	class QtMainWindowFactory;
-	class QtEventWindowFactory : public EventWindowFactory {
-		public:
-			QtEventWindowFactory(QtMainWindowFactory* mainWindowFactory);
-			virtual EventWindow* createEventWindow();
-		private:
-			QtMainWindowFactory* mainWindowFactory_;
-	};
-}
-
-	
diff --git a/Swift/QtUI/MUCSearch/QtMUCSearchWindowFactory.h b/Swift/QtUI/MUCSearch/QtMUCSearchWindowFactory.h
deleted file mode 100644
index 9bcb53f..0000000
--- a/Swift/QtUI/MUCSearch/QtMUCSearchWindowFactory.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#pragma once
-
-#include "Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h"
-#include "Swift/QtUI/MUCSearch/QtMUCSearchWindow.h"
-
-namespace Swift {
-	class UIEventStream;
-	class QtMUCSearchWindowFactory : public MUCSearchWindowFactory {
-		public:
-			virtual ~QtMUCSearchWindowFactory() {};
-
-			MUCSearchWindow* createMUCSearchWindow(UIEventStream* eventStream) {
-				return new QtMUCSearchWindow(eventStream);
-			};
-	};
-}
diff --git a/Swift/QtUI/QtLoginWindowFactory.cpp b/Swift/QtUI/QtLoginWindowFactory.cpp
deleted file mode 100644
index 2ac3dec..0000000
--- a/Swift/QtUI/QtLoginWindowFactory.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include "QtLoginWindowFactory.h"
-#include "QtLoginWindow.h"
-
-#include <QDesktopWidget>
-
-namespace Swift {
-
-QtLoginWindowFactory::QtLoginWindowFactory(QSplitter* splitter, QtSystemTray* systemTray, QtSettingsProvider* settings) : QObject() {
-	settings_ = settings;
-	splitter_ = splitter;
-	systemTray_ = systemTray;
-}
-
-LoginWindow* QtLoginWindowFactory::createLoginWindow(UIEventStream* uiEventStream) {
-	window_ = new QtLoginWindow(uiEventStream);
-	if (splitter_) {
-		splitter_->insertWidget(0, window_);
-		//return window_;
-	}
-	connect(systemTray_, SIGNAL(clicked()), window_, SLOT(bringToFront()));
-	QVariant loginWindowGeometryVariant = settings_->getQSettings()->value("loginWindowGeometry");
-	if (loginWindowGeometryVariant.isValid()) {
-		window_->restoreGeometry(loginWindowGeometryVariant.toByteArray());
-	}
-	connect(window_, SIGNAL(geometryChanged()), this, SLOT(handleWindowGeometryChanged()));
-	return window_;
-}
-
-void QtLoginWindowFactory::handleWindowGeometryChanged() {
-	settings_->getQSettings()->setValue("loginWindowGeometry", window_->saveGeometry());
-}
-
-}
diff --git a/Swift/QtUI/QtLoginWindowFactory.h b/Swift/QtUI/QtLoginWindowFactory.h
deleted file mode 100644
index 0a90e05..0000000
--- a/Swift/QtUI/QtLoginWindowFactory.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#ifndef SWIFT_QtLoginWindowFactory_H
-#define SWIFT_QtLoginWindowFactory_H
-
-#include "Swift/Controllers/UIInterfaces/LoginWindowFactory.h"
-#include "Swift/QtUI/QtSystemTray.h"
-
-#include <QSplitter>
-
-#include "QtSettingsProvider.h"
-
-namespace Swift {
-	class QtLoginWindow;
-	class QtLoginWindowFactory : public QObject, public LoginWindowFactory {
-		Q_OBJECT
-		public:
-			QtLoginWindowFactory(QSplitter* splitter, QtSystemTray* systemTray, QtSettingsProvider* settings);
-			LoginWindow* createLoginWindow(UIEventStream* uiEventStream);
-		private slots:
-			void handleWindowGeometryChanged();
-		private:
-			QSplitter* splitter_;
-			QtSystemTray* systemTray_;
-			QtSettingsProvider* settings_;
-			QtLoginWindow* window_;
-	};
-}
-
-#endif
diff --git a/Swift/QtUI/QtMainWindowFactory.cpp b/Swift/QtUI/QtMainWindowFactory.cpp
deleted file mode 100644
index 8833e03..0000000
--- a/Swift/QtUI/QtMainWindowFactory.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include "QtMainWindowFactory.h"
-#include "QtMainWindow.h"
-
-namespace Swift {
-
-QtMainWindowFactory::QtMainWindowFactory(QtSettingsProvider* settings) {
-	settings_ = settings;
-	lastWindow_ = NULL;
-}
-
-MainWindow* QtMainWindowFactory::createMainWindow(UIEventStream* eventStream) {
-	lastWindow_  = new QtMainWindow(settings_, eventStream);
-	return lastWindow_;
-}
-
-MainWindow* QtMainWindowFactory::getLastCreatedWindow() {
-	assert(lastWindow_);
-	return lastWindow_;;
-}
-
-}
diff --git a/Swift/QtUI/QtMainWindowFactory.h b/Swift/QtUI/QtMainWindowFactory.h
deleted file mode 100644
index c6658a9..0000000
--- a/Swift/QtUI/QtMainWindowFactory.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2010 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#pragma once
-
-#include "Swift/Controllers/UIInterfaces/MainWindowFactory.h"
-
-namespace Swift {
-	class QtTreeWidgetFactory;
-	class QtSettingsProvider;
-
-	class QtMainWindowFactory : public MainWindowFactory{
-		public:
-			QtMainWindowFactory(QtSettingsProvider* settings);
-			MainWindow* createMainWindow(UIEventStream* eventStream);
-			MainWindow* getLastCreatedWindow();
-		private:
-			QtSettingsProvider* settings_;
-			MainWindow* lastWindow_;
-	};
-}
diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp
index 65eb534..9a1788f 100644
--- a/Swift/QtUI/QtSwift.cpp
+++ b/Swift/QtUI/QtSwift.cpp
@@ -7,22 +7,16 @@
 #include "QtSwift.h"
 
 #include <string>
+#include <QSplitter>
+#include <boost/bind.hpp>
 
-#include "QtLoginWindowFactory.h"
-#include "QtChatWindowFactory.h"
 #include "QtLoginWindow.h"
 #include "QtChatTabs.h"
-#include "QtMainWindowFactory.h"
 #include "QtSystemTray.h"
 #include "QtSoundPlayer.h"
 #include "QtSwiftUtil.h"
-#include "QtXMLConsoleWidgetFactory.h"
-#include "ChatList/QtChatListWindowFactory.h"
-#include "EventViewer/QtEventWindowFactory.h"
-#include "MUCSearch/QtMUCSearchWindowFactory.h"
-#include <boost/bind.hpp>
-#include <QSplitter>
-
+#include "QtUIFactory.h"
+#include "QtChatWindowFactory.h"
 #include <Swiften/Base/Log.h>
 #include <Swift/Controllers/CertificateFileStorageFactory.h>
 #include "SwifTools/Application/PlatformApplicationPathProvider.h"
@@ -129,31 +123,15 @@ QtSwift::QtSwift(po::variables_map options) : networkFactories_(&clientMainThrea
 	for (int i = 0; i < numberOfAccounts; i++) {
 		QtSystemTray* systemTray = new QtSystemTray();
 		systemTrays_.push_back(systemTray);
-		QtLoginWindowFactory* loginWindowFactory = new QtLoginWindowFactory(splitter_, systemTray, settings_);
-		loginWindowFactories_.push_back(loginWindowFactory);
-		QtMainWindowFactory* rosterWindowFactory = new QtMainWindowFactory(settings_);
-		rosterWindowFactories_.push_back(rosterWindowFactory);
-		QtEventWindowFactory* eventWindowFactory = new QtEventWindowFactory(rosterWindowFactory);
-		eventWindowFactories_.push_back(eventWindowFactory);
-		QtXMLConsoleWidgetFactory* xmlConsoleWidgetFactory = new QtXMLConsoleWidgetFactory(tabs_);
-		xmlConsoleWidgetFactories_.push_back(xmlConsoleWidgetFactory);
-		QtChatListWindowFactory* chatListWindowFactory = new QtChatListWindowFactory(rosterWindowFactory);
-		chatListWindowFactories_.push_back(chatListWindowFactory);
-		QtMUCSearchWindowFactory* mucSearchWindowFactory = new QtMUCSearchWindowFactory();
-		mucSearchWindowFactories_.push_back(mucSearchWindowFactory);
+		QtUIFactory* uiFactory = new QtUIFactory(settings_, tabs_, splitter_, systemTray, chatWindowFactory_);
+		uiFactories_.push_back(uiFactory);
 		MainController* mainController = new MainController(
 				&clientMainThreadCaller_,
 				&networkFactories_,
-				chatWindowFactory_,
-				rosterWindowFactory,
-				loginWindowFactory,
-				eventWindowFactory,
+				uiFactory,
 				settings_,
 				systemTray,
 				soundPlayer_,
-				xmlConsoleWidgetFactory,
-				chatListWindowFactory,
-				mucSearchWindowFactory,
 				storagesFactory_,
 				certificateStorageFactory_,
 				dock_,
@@ -173,14 +151,7 @@ QtSwift::QtSwift(po::variables_map options) : networkFactories_(&clientMainThrea
 QtSwift::~QtSwift() {
 	delete notifier_;
 	delete autoUpdater_;
-	delete chatWindowFactory_;
-	foreach (QtMainWindowFactory* factory, rosterWindowFactories_) {
-		delete factory;
-	}
-	foreach (QtLoginWindowFactory* factory, loginWindowFactories_) {
-		delete factory;
-	}
-	foreach (MUCSearchWindowFactory* factory, mucSearchWindowFactories_) {
+	foreach (QtUIFactory* factory, uiFactories_) {
 		delete factory;
 	}
 	foreach (MainController* controller, mainControllers_) {
@@ -194,15 +165,7 @@ QtSwift::~QtSwift() {
 	delete splitter_;
 	delete dock_;
 	delete soundPlayer_;
-	foreach (QtXMLConsoleWidgetFactory* factory, xmlConsoleWidgetFactories_) {
-		delete factory;
-	}
-	foreach (QtEventWindowFactory* factory, eventWindowFactories_) {
-		delete factory;
-	}
-	foreach (QtChatListWindowFactory* factory, chatListWindowFactories_) {
-		delete factory;
-	}
+	delete chatWindowFactory_;
 	delete certificateStorageFactory_;
 	delete storagesFactory_;
 }
diff --git a/Swift/QtUI/QtSwift.h b/Swift/QtUI/QtSwift.h
index 68933dd..f241fd0 100644
--- a/Swift/QtUI/QtSwift.h
+++ b/Swift/QtUI/QtSwift.h
@@ -14,9 +14,6 @@
 #include "Swiften/Base/String.h"
 #include "Swiften/Base/Platform.h"
 #include "Swiften/EventLoop/Qt/QtEventLoop.h"
-#include "QtLoginWindowFactory.h"
-#include "QtMainWindowFactory.h"
-#include "QtChatWindowFactory.h"
 #include "QtSettingsProvider.h"
 #if defined(SWIFTEN_PLATFORM_MACOSX)
 #include "SwifTools/Application/CocoaApplication.h"
@@ -30,6 +27,7 @@ namespace po = boost::program_options;
 class QSplitter;
 
 namespace Swift {
+	class QtUIFactory;
 	class CertificateStorageFactory;
 	class Dock;
 	class Notifier;
@@ -39,14 +37,10 @@ namespace Swift {
 	class AvatarStorage;
 	class CapsStorage;
 	class MainController;
-	class QtChatWindowFactory;
-	class QtMainWindowFactory;
-	class QtLoginWindowFactory;
-	class QtXMLConsoleWidgetFactory;
 	class QtSystemTray;
+	class QtChatTabs;
+	class QtChatWindowFactory;
 	class QtSoundPlayer;
-	class QtEventWindowFactory;
-	class QtChatListWindowFactory;
 	class QtMUCSearchWindowFactory;
 	class EventLoop;
 		
@@ -60,15 +54,10 @@ namespace Swift {
 			QtEventLoop clientMainThreadCaller_;
 			PlatformTLSFactories tlsFactories_;
 			BoostNetworkFactories networkFactories_;
+			QtChatWindowFactory* chatWindowFactory_;
 			std::vector<MainController*> mainControllers_;
-			QtChatWindowFactory *chatWindowFactory_;
-			std::vector<QtMainWindowFactory*> rosterWindowFactories_;
-			std::vector<QtLoginWindowFactory*> loginWindowFactories_;
-			std::vector<QtXMLConsoleWidgetFactory*> xmlConsoleWidgetFactories_;
-			std::vector<QtEventWindowFactory*> eventWindowFactories_;
 			std::vector<QtSystemTray*> systemTrays_;
-			std::vector<QtChatListWindowFactory*> chatListWindowFactories_;
-			std::vector<QtMUCSearchWindowFactory*> mucSearchWindowFactories_;
+			std::vector<QtUIFactory*> uiFactories_;
 			QtSettingsProvider *settings_;
 			QSplitter* splitter_;
 			QtSoundPlayer* soundPlayer_;
diff --git a/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp b/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp
deleted file mode 100644
index e3f9e0a..0000000
--- a/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2010 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include "QtXMLConsoleWidgetFactory.h"
-
-#include "QtXMLConsoleWidget.h"
-#include "QtChatTabs.h"
-
-namespace Swift {
-
-QtXMLConsoleWidgetFactory::QtXMLConsoleWidgetFactory(QtChatTabs* tabs) {
-	tabs_ = tabs;
-}
-
-XMLConsoleWidget* QtXMLConsoleWidgetFactory::createXMLConsoleWidget() {
-	QtXMLConsoleWidget* widget = new QtXMLConsoleWidget();
-	tabs_->addTab(widget);
-	if (!tabs_->isVisible()) {
-		tabs_->show();
-	}
-	widget->show();
-	return widget;
-}
-
-}
diff --git a/Swift/QtUI/QtXMLConsoleWidgetFactory.h b/Swift/QtUI/QtXMLConsoleWidgetFactory.h
deleted file mode 100644
index b54c4b2..0000000
--- a/Swift/QtUI/QtXMLConsoleWidgetFactory.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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/XMLConsoleWidgetFactory.h"
-
-#include "QtXMLConsoleWidget.h"
-
-namespace Swift {
-	class QtChatTabs;
-	class QtXMLConsoleWidgetFactory : public XMLConsoleWidgetFactory {
-		public:
-			QtXMLConsoleWidgetFactory(QtChatTabs* tabs);
-			XMLConsoleWidget* createXMLConsoleWidget();
-		private:
-			QtChatTabs* tabs_;
-	};
-}
diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript
index 864fdb5..377b949 100644
--- a/Swift/QtUI/SConscript
+++ b/Swift/QtUI/SConscript
@@ -63,12 +63,11 @@ sources = [
     "main.cpp",
     "QtAboutWidget.cpp",
     "QtAddContactDialog.cpp",
-    "QtChatWindow.cpp",
+    "QtUIFactory.cpp",
     "QtChatWindowFactory.cpp",
+    "QtChatWindow.cpp",
     "QtLoginWindow.cpp",
-    "QtLoginWindowFactory.cpp",
     "QtMainWindow.cpp",
-    "QtMainWindowFactory.cpp",
     "QtNameWidget.cpp",
     "QtSettingsProvider.cpp",
     "QtStatusWidget.cpp",
@@ -82,7 +81,6 @@ sources = [
     "QtTabbable.cpp",
     "QtTabWidget.cpp",
     "QtTextEdit.cpp",
-    "QtXMLConsoleWidgetFactory.cpp",
     "QtXMLConsoleWidget.cpp",
     "QtUtilities.cpp",
     "QtBookmarkDetailWindow.cpp",
@@ -103,11 +101,9 @@ sources = [
     "EventViewer/EventModel.cpp",
     "EventViewer/EventDelegate.cpp",
     "EventViewer/TwoLineDelegate.cpp",
-    "EventViewer/QtEventWindowFactory.cpp",
     "EventViewer/QtEventWindow.cpp",
     "EventViewer/QtEvent.cpp",
     "ChatList/QtChatListWindow.cpp",
-    "ChatList/QtChatListWindowFactory.cpp",
     "ChatList/ChatListModel.cpp",
     "ChatList/ChatListDelegate.cpp",
     "ChatList/ChatListMUCItem.cpp",
-- 
cgit v0.10.2-6-g49f6