diff options
| author | Kevin Smith <git@kismith.co.uk> | 2009-11-26 17:31:53 (GMT) |
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2009-11-26 17:46:21 (GMT) |
| commit | eebdef9a7724ff7fa86a5d1cca37759d37bbb336 (patch) | |
| tree | 7dd76b8e5d364eb1b019b2511a839a9eac8397e4 /Swift/QtUI | |
| parent | 39e58e4593f54a65f810e73728fe2490958fcba2 (diff) | |
| download | swift-eebdef9a7724ff7fa86a5d1cca37759d37bbb336.zip swift-eebdef9a7724ff7fa86a5d1cca37759d37bbb336.tar.bz2 | |
Plumbing to show a dummy XMLConsoleWidget in the chat tabs.
This should all work now, and the XMLConsoleController needs to talk to the QtXMLConsoleWidget through the XMLConsoleWidget interface.
Resolves: #256
Diffstat (limited to 'Swift/QtUI')
| -rw-r--r-- | Swift/QtUI/QtChatWindowFactory.cpp | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtChatWindowFactory.h | 2 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindow.cpp | 16 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindow.h | 8 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindowFactory.cpp | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtLoginWindowFactory.h | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtSwift.cpp | 10 | ||||
| -rw-r--r-- | Swift/QtUI/QtSwift.h | 5 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsole.cpp | 0 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsole.h | 0 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsoleWidget.cpp | 7 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsoleWidget.h | 12 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsoleWidgetFactory.cpp | 22 | ||||
| -rw-r--r-- | Swift/QtUI/QtXMLConsoleWidgetFactory.h | 16 | ||||
| -rw-r--r-- | Swift/QtUI/SConscript | 2 |
15 files changed, 99 insertions, 13 deletions
diff --git a/Swift/QtUI/QtChatWindowFactory.cpp b/Swift/QtUI/QtChatWindowFactory.cpp index c0f1e09..ff927c9 100644 --- a/Swift/QtUI/QtChatWindowFactory.cpp +++ b/Swift/QtUI/QtChatWindowFactory.cpp @@ -1,41 +1,41 @@ #include "QtChatWindowFactory.h" #include <QDesktopWidget> #include "QtChatTabs.h" #include "QtChatWindow.h" #include "QtSwiftUtil.h" #include "Roster/QtTreeWidgetFactory.h" namespace Swift { -QtChatWindowFactory::QtChatWindowFactory(QtTreeWidgetFactory *treeWidgetFactory, QSplitter* splitter, QtSettingsProvider* settings) : treeWidgetFactory_(treeWidgetFactory) { +QtChatWindowFactory::QtChatWindowFactory(QtTreeWidgetFactory *treeWidgetFactory, QSplitter* splitter, QtSettingsProvider* settings, QtChatTabs* tabs) : treeWidgetFactory_(treeWidgetFactory) { settings_ = settings; - tabs_ = new QtChatTabs(); + tabs_ = tabs; if (splitter) { splitter->addWidget(tabs_); } else { QVariant chatTabsGeometryVariant = settings_->getQSettings()->value("chatTabsGeometry"); if (chatTabsGeometryVariant.isValid()) { tabs_->restoreGeometry(chatTabsGeometryVariant.toByteArray()); } connect(tabs_, SIGNAL(geometryChanged()), this, SLOT(handleWindowGeometryChanged())); } } ChatWindow* QtChatWindowFactory::createChatWindow(const JID &contact) { QtChatWindow *chatWindow = new QtChatWindow(P2QSTRING(contact.toString()), treeWidgetFactory_); tabs_->addTab(chatWindow); if (!tabs_->isVisible()) { tabs_->showMinimized(); //tabs_->minimise(); } //chatWindow->show(); return chatWindow; } void QtChatWindowFactory::handleWindowGeometryChanged() { settings_->getQSettings()->setValue("chatTabsGeometry", tabs_->saveGeometry()); } } diff --git a/Swift/QtUI/QtChatWindowFactory.h b/Swift/QtUI/QtChatWindowFactory.h index 4a5a7fb..0c8a092 100644 --- a/Swift/QtUI/QtChatWindowFactory.h +++ b/Swift/QtUI/QtChatWindowFactory.h @@ -1,27 +1,27 @@ #ifndef SWIFT_QtChatWindowFactory_H #define SWIFT_QtChatWindowFactory_H #include "Swift/Controllers/ChatWindowFactory.h" #include "Swiften/JID/JID.h" #include "QtSettingsProvider.h" #include <QObject> #include <QSplitter> namespace Swift { class QtTreeWidgetFactory; class QtChatTabs; class QtChatWindowFactory : public QObject, public ChatWindowFactory { Q_OBJECT public: - QtChatWindowFactory(QtTreeWidgetFactory *treeWidgetFactory, QSplitter* splitter, QtSettingsProvider* settings); + QtChatWindowFactory(QtTreeWidgetFactory *treeWidgetFactory, QSplitter* splitter, QtSettingsProvider* settings, QtChatTabs* tabs); ChatWindow* createChatWindow(const JID &contact); private slots: void handleWindowGeometryChanged(); private: QtTreeWidgetFactory* treeWidgetFactory_; QtSettingsProvider* settings_; QtChatTabs* tabs_; }; } #endif diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp index 6466692..2fd27c6 100644 --- a/Swift/QtUI/QtLoginWindow.cpp +++ b/Swift/QtUI/QtLoginWindow.cpp @@ -1,154 +1,163 @@ #include "QtLoginWindow.h" +#include "Swift/Controllers/UIEvents/UIEventStream.h" +#include "Swift/Controllers/UIEvents/RequestXMLConsoleUIEvent.h" #include "QtAboutWidget.h" #include "QtSwiftUtil.h" #include "QtMainWindow.h" #include <algorithm> #include <QApplication> #include <QBoxLayout> #include <QComboBox> #include <QDesktopWidget> #include <QFileDialog> #include <QStatusBar> #include <QToolButton> #include <QLabel> #include <QMenuBar> #include <cassert> namespace Swift{ -QtLoginWindow::QtLoginWindow() : QMainWindow() { +QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() { + uiEventStream_ = uiEventStream; setWindowTitle("Swift"); resize(200, 500); setContentsMargins(0,0,0,0); QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget); QBoxLayout *topLayout = new QBoxLayout(QBoxLayout::TopToBottom, centralWidget); stack_ = new QStackedWidget(centralWidget); topLayout->addWidget(stack_); topLayout->setMargin(0); QWidget *wrapperWidget = new QWidget(this); wrapperWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); QBoxLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom, wrapperWidget); layout->addStretch(); QLabel* logo = new QLabel(this); logo->setPixmap(QPixmap(":/logo-shaded-text.256.png")); logo->setScaledContents(true); logo->setFixedSize(192,192); layout->addWidget(logo); layout->addStretch(); QLabel* jidLabel = new QLabel(this); jidLabel->setText("<font size='-1'>User address</font>"); layout->addWidget(jidLabel); username_ = new QComboBox(this); username_->setEditable(true); layout->addWidget(username_); QLabel* passwordLabel = new QLabel(); passwordLabel->setText("<font size='-1'>Password</font>"); layout->addWidget(passwordLabel); QWidget* w = new QWidget(this); w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); layout->addWidget(w); QHBoxLayout* credentialsLayout = new QHBoxLayout(w); credentialsLayout->setMargin(0); credentialsLayout->setSpacing(3); password_ = new QLineEdit(this); password_->setEchoMode(QLineEdit::Password); connect(password_, SIGNAL(returnPressed()), this, SLOT(loginClicked())); connect(username_->lineEdit(), SIGNAL(returnPressed()), password_, SLOT(setFocus())); connect(username_, SIGNAL(editTextChanged(const QString&)), this, SLOT(handleUsernameTextChanged())); credentialsLayout->addWidget(password_); certificateButton_ = new QToolButton(this); certificateButton_->setCheckable(true); certificateButton_->setIcon(QIcon(":/icons/certificate.png")); credentialsLayout->addWidget(certificateButton_); connect(certificateButton_, SIGNAL(clicked(bool)), SLOT(handleCertficateChecked(bool))); loginButton_ = new QPushButton(this); loginButton_->setText(tr("Connect")); loginButton_->setAutoDefault(true); loginButton_->setDefault(true); layout->addWidget(loginButton_); message_ = new QLabel(this); message_->setTextFormat(Qt::RichText); message_->setWordWrap(true); layout->addWidget(message_); layout->addStretch(); remember_ = new QCheckBox(tr("Remember Password?"), this); layout->addWidget(remember_); connect(loginButton_, SIGNAL(clicked()), SLOT(loginClicked())); stack_->addWidget(wrapperWidget); #ifdef SWIFTEN_PLATFORM_MACOSX menuBar_ = new QMenuBar(NULL); #else menuBar_ = menuBar(); #endif QApplication::setQuitOnLastWindowClosed(false); swiftMenu_ = new QMenu(tr("Swift"), this); QAction* aboutAction = new QAction("About Swift", this); connect(aboutAction, SIGNAL(activated()), SLOT(handleAbout())); swiftMenu_->addAction(aboutAction); + + toolsMenu_ = new QMenu(tr("Tools"), this); + + QAction* xmlConsoleAction = new QAction(tr("Show Debug Console"), this); + connect(xmlConsoleAction, SIGNAL(activated()), SLOT(handleShowXMLConsole())); + toolsMenu_->addAction(xmlConsoleAction); QAction* quitAction = new QAction("Quit", this); connect(quitAction, SIGNAL(activated()), SLOT(handleQuit())); swiftMenu_->addAction(quitAction); setInitialMenus(); this->show(); } /** * Move and resize the window, but respect minimum sizes. * (Like QWidget::setGeometry, only that will truncate the window * the setGeometry docs say that it shouldn't do this, but I've just seen it * maybe we can remove this method if that's a Qt bug (or I'm misusing it)). */ void QtLoginWindow::setGentleGeometry(const QRect& rect) { resize(rect.size()); move(rect.topLeft()); } QRect QtLoginWindow::defaultPosition() { QDesktopWidget desktop; int windowWidth = 200; int windowHeight = 500; QRect screen = desktop.screenGeometry(-1); //appear on default screen windowWidth = std::min(windowWidth, screen.width()); windowHeight = std::min(windowHeight, screen.height()); int left = (screen.width() - windowWidth) / 2; int height = (screen.height() - windowHeight) / 2; return QRect(left, height, windowWidth, windowHeight); } void QtLoginWindow::addAvailableAccount(const String& defaultJID, const String& defaultPassword, const String& defaultCertificate) { QString username = P2QSTRING(defaultJID); int index = -1; for (int i = 0; i < usernames_.count(); i++) { if (username == usernames_[i]) { index = i; } } if (index == -1) { usernames_.append(username); passwords_.append(P2QSTRING(defaultPassword)); certificateFiles_.append(P2QSTRING(defaultCertificate)); username_->addItem(username); } else { usernames_[index] = username; passwords_[index] = P2QSTRING(defaultPassword); @@ -165,99 +174,104 @@ void QtLoginWindow::handleUsernameTextChanged() { } } if (!certificateFile_.isEmpty()) { certificateButton_->setChecked(true); } remember_->setChecked(password_->text() != ""); } void QtLoginWindow::loggedOut() { if (stack_->count() > 1) { QWidget* current = stack_->currentWidget(); stack_->setCurrentIndex(0); stack_->removeWidget(current); } setInitialMenus(); setEnabled(true); } void QtLoginWindow::loginClicked() { setEnabled(false); message_->setText(""); onLoginRequest(Q2PSTRING(username_->currentText()), Q2PSTRING(password_->text()), Q2PSTRING(certificateFile_), remember_->isChecked()); } void QtLoginWindow::handleCertficateChecked(bool checked) { if (checked) { certificateFile_ = QFileDialog::getOpenFileName(this, "Select an authentication certificate", QString(), QString("*.cert")); if (certificateFile_.isEmpty()) { certificateButton_->setChecked(false); } } else { certificateFile_ = ""; } } void QtLoginWindow::handleAbout() { if (!aboutDialog_) { aboutDialog_ = new QtAboutWidget(); aboutDialog_->show(); } else { aboutDialog_->show(); aboutDialog_->raise(); aboutDialog_->activateWindow(); } } +void QtLoginWindow::handleShowXMLConsole() { + uiEventStream_->send(boost::shared_ptr<RequestXMLConsoleUIEvent>(new RequestXMLConsoleUIEvent())); +} + void QtLoginWindow::handleQuit() { QApplication::quit(); } void QtLoginWindow::setInitialMenus() { menuBar_->clear(); menuBar_->addMenu(swiftMenu_); + menuBar_->addMenu(toolsMenu_); } void QtLoginWindow::morphInto(MainWindow *mainWindow) { QtMainWindow *qtMainWindow = dynamic_cast<QtMainWindow*>(mainWindow); assert(qtMainWindow); stack_->addWidget(qtMainWindow); stack_->setCurrentWidget(qtMainWindow); setEnabled(true); setInitialMenus(); foreach (QMenu* menu, qtMainWindow->getMenus()) { menuBar_->addMenu(menu); } } void QtLoginWindow::setMessage(const String& message) { if (!message.isEmpty()) { message_->setText("<center><font color=\"red\">" + P2QSTRING(message) + "</font></center>"); } else { message_->setText(""); } } void QtLoginWindow::bringToFront() { if (isHidden()) { showNormal(); raise(); activateWindow(); } else { hide(); } } void QtLoginWindow::resizeEvent(QResizeEvent*) { emit geometryChanged(); } void QtLoginWindow::moveEvent(QMoveEvent*) { emit geometryChanged(); } } diff --git a/Swift/QtUI/QtLoginWindow.h b/Swift/QtUI/QtLoginWindow.h index 5abb10a..491521b 100644 --- a/Swift/QtUI/QtLoginWindow.h +++ b/Swift/QtUI/QtLoginWindow.h @@ -1,64 +1,68 @@ #ifndef SWIFT_QtLoginWindow_H #define SWIFT_QtLoginWindow_H #include <QMainWindow> #include <QPointer> #include <QLineEdit> #include <QPushButton> #include <QCheckBox> #include <QStackedWidget> #include <QMenuBar> -#include "Swift/Controllers/LoginWindow.h" +#include "Swift/Controllers/UIInterfaces/LoginWindow.h" #include "Swift/Controllers/MainWindow.h" #include "QtAboutWidget.h" class QLabel; class QToolButton; class QComboBox; namespace Swift { + class UIEventStream; class QtLoginWindow : public QMainWindow, public LoginWindow { Q_OBJECT public: - QtLoginWindow(); + QtLoginWindow(UIEventStream* uiEventStream); void morphInto(MainWindow *mainWindow); virtual void loggedOut(); virtual void setMessage(const String& message); virtual void addAvailableAccount(const String& defaultJID, const String& defaultPassword, const String& defaultCertificate); static QRect defaultPosition(); void setGentleGeometry(const QRect&); signals: void geometryChanged(); private slots: void loginClicked(); void handleCertficateChecked(bool); void handleQuit(); + void handleShowXMLConsole(); void handleAbout(); void bringToFront(); void handleUsernameTextChanged(); void resizeEvent(QResizeEvent* event); void moveEvent(QMoveEvent* event); private: void setInitialMenus(); QStringList usernames_; QStringList passwords_; QStringList certificateFiles_; QComboBox* username_; QLineEdit* password_; QPushButton* loginButton_; QCheckBox* remember_; QStackedWidget* stack_; QLabel* message_; QString certificateFile_; QToolButton* certificateButton_; QMenuBar* menuBar_; QMenu* swiftMenu_; + QMenu* toolsMenu_; + UIEventStream* uiEventStream_; QPointer<QtAboutWidget> aboutDialog_; }; } #endif diff --git a/Swift/QtUI/QtLoginWindowFactory.cpp b/Swift/QtUI/QtLoginWindowFactory.cpp index c395c57..0453d0f 100644 --- a/Swift/QtUI/QtLoginWindowFactory.cpp +++ b/Swift/QtUI/QtLoginWindowFactory.cpp @@ -1,33 +1,33 @@ #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() { - window_ = new QtLoginWindow(); +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 index dd5bc57..5af8b76 100644 --- a/Swift/QtUI/QtLoginWindowFactory.h +++ b/Swift/QtUI/QtLoginWindowFactory.h @@ -1,28 +1,28 @@ #ifndef SWIFT_QtLoginWindowFactory_H #define SWIFT_QtLoginWindowFactory_H -#include "Swift/Controllers/LoginWindowFactory.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(); + LoginWindow* createLoginWindow(UIEventStream* uiEventStream); private slots: void handleWindowGeometryChanged(); private: QSplitter* splitter_; QtSystemTray* systemTray_; QtSettingsProvider* settings_; QtLoginWindow* window_; }; } #endif diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index 2aaa27e..7e204e9 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -1,62 +1,68 @@ #include "QtSwift.h" #include "QtLoginWindowFactory.h" #include "QtChatWindowFactory.h" #include "QtLoginWindow.h" #include "QtChatTabs.h" #include "QtMainWindowFactory.h" #include "Roster/QtTreeWidgetFactory.h" #include "QtSystemTray.h" #include "QtSoundPlayer.h" +#include "QtXMLConsoleWidgetFactory.h" #include <boost/bind.hpp> #include <QSplitter> #include "Swiften/Application/Application.h" #include "Swiften/Application/Platform/PlatformApplication.h" #include "Swiften/Base/String.h" #include "Swiften/Elements/Presence.h" #include "Swiften/Client/Client.h" #include "Swift/Controllers/ChatController.h" #include "Swift/Controllers/MainController.h" #include "Swift/QtUI/BuildVersion.h" namespace Swift{ QtSwift::QtSwift(bool netbookMode) { if (netbookMode) { splitter_ = new QSplitter(); } else { splitter_ = NULL; } QCoreApplication::setApplicationName("Swift"); QCoreApplication::setOrganizationName("Swift"); QCoreApplication::setOrganizationDomain("swift.im"); QCoreApplication::setApplicationVersion(buildVersion); + + tabs_ = new QtChatTabs(); settings_ = new QtSettingsProvider(); application_ = new PlatformApplication("Swift"); treeWidgetFactory_ = new QtTreeWidgetFactory(); systemTray_ = new QtSystemTray(); loginWindowFactory_ = new QtLoginWindowFactory(splitter_, systemTray_, settings_); - chatWindowFactory_ = new QtChatWindowFactory(treeWidgetFactory_, splitter_, settings_); + chatWindowFactory_ = new QtChatWindowFactory(treeWidgetFactory_, splitter_, settings_, tabs_); rosterWindowFactory_ = new QtMainWindowFactory(treeWidgetFactory_); + xmlConsoleWidgetFactory_ = new QtXMLConsoleWidgetFactory(tabs_); soundPlayer_ = new QtSoundPlayer(); if (splitter_) { splitter_->show(); } - mainController_ = new MainController(chatWindowFactory_, rosterWindowFactory_, loginWindowFactory_, treeWidgetFactory_, settings_, application_, systemTray_, soundPlayer_); + mainController_ = new MainController(chatWindowFactory_, rosterWindowFactory_, loginWindowFactory_, treeWidgetFactory_, settings_, application_, systemTray_, soundPlayer_, xmlConsoleWidgetFactory_); } QtSwift::~QtSwift() { delete chatWindowFactory_; delete rosterWindowFactory_; delete loginWindowFactory_; delete treeWidgetFactory_; delete mainController_; delete settings_; delete application_; delete systemTray_; delete splitter_; delete soundPlayer_; + delete tabs_; + delete xmlConsoleWidgetFactory_; } } diff --git a/Swift/QtUI/QtSwift.h b/Swift/QtUI/QtSwift.h index 263dc05..ad113d6 100644 --- a/Swift/QtUI/QtSwift.h +++ b/Swift/QtUI/QtSwift.h @@ -1,43 +1,46 @@ #ifndef SWIFT_QtSwift_H #define SWIFT_QtSwift_H #include "Swiften/Base/String.h" #include "Swiften/EventLoop/Qt/QtEventLoop.h" #include "QtLoginWindowFactory.h" #include "QtMainWindowFactory.h" #include "QtChatWindowFactory.h" #include "QtSettingsProvider.h" class QSplitter; namespace Swift { class Application; class MainController; class QtChatWindowFactory; class QtMainWindowFactory; class QtLoginWindowFactory; class QtTreeWidgetFactory; + class QtXMLConsoleWidgetFactory; class QtSystemTray; class QtSoundPlayer; - + class QtSwift : public QObject { Q_OBJECT public: QtSwift(bool netbookMode); ~QtSwift(); private: MainController *mainController_; QtTreeWidgetFactory *treeWidgetFactory_; QtChatWindowFactory *chatWindowFactory_; QtMainWindowFactory *rosterWindowFactory_; QtLoginWindowFactory *loginWindowFactory_; + QtXMLConsoleWidgetFactory* xmlConsoleWidgetFactory_; QtEventLoop clientMainThreadCaller_; QtSettingsProvider *settings_; QtSystemTray* systemTray_; QSplitter* splitter_; QtSoundPlayer* soundPlayer_; + QtChatTabs* tabs_; Application* application_; }; } #endif diff --git a/Swift/QtUI/QtXMLConsole.cpp b/Swift/QtUI/QtXMLConsole.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Swift/QtUI/QtXMLConsole.cpp diff --git a/Swift/QtUI/QtXMLConsole.h b/Swift/QtUI/QtXMLConsole.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Swift/QtUI/QtXMLConsole.h diff --git a/Swift/QtUI/QtXMLConsoleWidget.cpp b/Swift/QtUI/QtXMLConsoleWidget.cpp new file mode 100644 index 0000000..d2ebb06 --- /dev/null +++ b/Swift/QtUI/QtXMLConsoleWidget.cpp @@ -0,0 +1,7 @@ +#include "QtXMLConsoleWidget.h" + +namespace Swift { +QtXMLConsoleWidget::QtXMLConsoleWidget() { + +} +} diff --git a/Swift/QtUI/QtXMLConsoleWidget.h b/Swift/QtUI/QtXMLConsoleWidget.h new file mode 100644 index 0000000..f545e18 --- /dev/null +++ b/Swift/QtUI/QtXMLConsoleWidget.h @@ -0,0 +1,12 @@ +#pragma once + +#include "Swift/Controllers/UIInterfaces/XMLConsoleWidget.h" +#include "QtTabbable.h" + +namespace Swift { + class QtXMLConsoleWidget : public QtTabbable, public XMLConsoleWidget { + Q_OBJECT + public: + QtXMLConsoleWidget(); + }; +} diff --git a/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp b/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp new file mode 100644 index 0000000..9e32b0a --- /dev/null +++ b/Swift/QtUI/QtXMLConsoleWidgetFactory.cpp @@ -0,0 +1,22 @@ +#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 new file mode 100644 index 0000000..5158949 --- /dev/null +++ b/Swift/QtUI/QtXMLConsoleWidgetFactory.h @@ -0,0 +1,16 @@ +#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 42cf07a..b70832a 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -23,96 +23,98 @@ myenv = env.Clone() myenv.MergeFlags(env["SWIFT_CONTROLLERS_FLAGS"]) myenv.MergeFlags(env["SWIFTOOLS_FLAGS"]) if myenv["HAVE_XSS"] : myenv.MergeFlags(env["XSS_FLAGS"]) myenv.MergeFlags(env["SWIFTEN_FLAGS"]) myenv.MergeFlags(env["CPPUNIT_FLAGS"]) myenv.MergeFlags(env["LIBIDN_FLAGS"]) myenv.MergeFlags(env["BOOST_FLAGS"]) myenv.MergeFlags(env["SQLITE_FLAGS"]) myenv.MergeFlags(env["ZLIB_FLAGS"]) myenv.MergeFlags(env["OPENSSL_FLAGS"]) myenv.MergeFlags(env.get("LIBXML_FLAGS", "")) myenv.MergeFlags(env.get("EXPAT_FLAGS", "")) myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"]) myenv.Tool("nsis", toolpath = ["#/BuildTools/SCons/Tools"]) myenv.EnableQt4Modules(['QtCore', 'QtGui', 'QtWebKit'], debug = False) myenv.Append(CPPPATH = ["/usr/include/phonon"]) myenv.Append(CPPPATH = ["."]) if env["PLATFORM"] == "win32" : #myenv["LINKFLAGS"] = ["/SUBSYSTEM:CONSOLE"] myenv.Append(LINKFLAGS = ["/SUBSYSTEM:WINDOWS"]) myenv.Append(LIBS = "qtmain") myenv.Command("DefaultTheme.qrc", "../resources/themes/Default", Action(generateDefaultTheme, cmdstr = "$GENCOMSTR")) sources = [ "main.cpp", "QtAboutWidget.cpp", "QtAddContactDialog.cpp", "QtChatWindow.cpp", "QtChatWindowFactory.cpp", "QtJoinMUCDialog.cpp", "QtLoginWindow.cpp", "QtLoginWindowFactory.cpp", "QtMainWindow.cpp", "QtMainWindowFactory.cpp", "QtSettingsProvider.cpp", "QtStatusWidget.cpp", "QtSwift.cpp", "QtChatView.cpp", "QtChatTabs.cpp", "QtSoundPlayer.cpp", "QtSystemTray.cpp", "QtTabbable.cpp", "QtTextEdit.cpp", + "QtXMLConsoleWidgetFactory.cpp", + "QtXMLConsoleWidget.cpp", "ChatSnippet.cpp", "MessageSnippet.cpp", "SystemMessageSnippet.cpp", "Roster/RosterModel.cpp", "Roster/QtTreeWidget.cpp", "Roster/QtTreeWidgetItem.cpp", "Roster/RosterDelegate.cpp", "EventViewer/EventView.cpp", "EventViewer/EventModel.cpp", "EventViewer/EventDelegate.cpp", "QtRosterHeader.cpp", "qrc_DefaultTheme.cc", "qrc_Swift.cc", ] myenv.BuildVersion("BuildVersion.h", version = ARGUMENTS.get("swift_version", None)) if env["PLATFORM"] == "win32" : myenv.RES("../resources/Windows/Swift.rc") sources += ["../resources/Windows/Swift.res"] if env["PLATFORM"] == "darwin" or env["PLATFORM"] == "win32" : swiftProgram = myenv.Program("Swift", sources) else : swiftProgram = myenv.Program("swift", sources) myenv.Uic4("QtJoinMUCDialog.ui") myenv.Uic4("QtAddContactDialog.ui") myenv.Qrc("DefaultTheme.qrc") myenv.Qrc("Swift.qrc") buildVersion = Version.getBuildVersion(ARGUMENTS.get("swift_version", None)) if env["PLATFORM"] == "darwin" : myenv.AppBundle("Swift", version = buildVersion, resources = ["../resources/MacOSX/Swift.icns"]) if env.get("SWIFT_INSTALLDIR", "") : env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "bin"), swiftProgram) if env["PLATFORM"] == "win32" : if "dist" in COMMAND_LINE_TARGETS or env.GetOption("clean") : myenv.WindowsBundle("Swift", resources = [ os.path.join(env["OPENSSL_DIR"], "bin", "ssleay32.dll"), os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll"), ], qtimageformats = ["gif", "ico", "jpeg", "mng", "svg", "tiff"], qtlibs = ["QtCore4", "QtGui4", "QtNetwork4", "QtWebKit4", "phonon4"]) |
Swift