X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fqtui.cpp;h=14597604a86df829faad242f1b683a09b54c5b48;hb=2ab3040da0e42f4afdd282e34f0d8b089020a73d;hp=7ad2aca7e6b61223c1a99af06df4497d436998b2;hpb=d6b056e936ec441258d291b7a8af7b83f9f53016;p=quassel.git diff --git a/src/qtui/qtui.cpp b/src/qtui/qtui.cpp index 7ad2aca7..14597604 100644 --- a/src/qtui/qtui.cpp +++ b/src/qtui/qtui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,20 +20,39 @@ #include "qtui.h" +#include "actioncollection.h" +#include "chatlinemodel.h" #include "mainwin.h" +#include "abstractnotificationbackend.h" +#include "qtuimessageprocessor.h" +#include "qtuistyle.h" +#include "types.h" +#include "uisettings.h" +#include "util.h" -QtUiStyle *QtUi::_style; +ActionCollection *QtUi::_actionCollection = 0; +QSet QtUi::_notificationBackends; +QtUiStyle *QtUi::_style = 0; QtUi::QtUi() : AbstractUi() { - mainWin = new MainWin(this); + if(_style != 0) { + qWarning() << "QtUi has been instantiated again!"; + return; + } + _actionCollection = new ActionCollection(this); + + UiSettings uiSettings; + loadTranslation(uiSettings.value("Locale", QLocale::system()).value()); + + mainWin = new MainWin(); _style = new QtUiStyle; connect(mainWin, SIGNAL(connectToCore(const QVariantMap &)), this, SIGNAL(connectToCore(const QVariantMap &))); connect(mainWin, SIGNAL(disconnectFromCore()), this, SIGNAL(disconnectFromCore())); - } QtUi::~QtUi() { + unregisterAllNotificationBackends(); delete _style; delete mainWin; } @@ -42,12 +61,12 @@ void QtUi::init() { mainWin->init(); } -QtUiStyle *QtUi::style() { - return _style; +MessageModel *QtUi::createMessageModel(QObject *parent) { + return new ChatLineModel(parent); } -AbstractUiMsg *QtUi::layoutMsg(const Message &msg) { - return mainWin->layoutMsg(msg); +AbstractMessageProcessor *QtUi::createMessageProcessor(QObject *parent) { + return new QtUiMessageProcessor(parent); } void QtUi::connectedToCore() { @@ -57,3 +76,22 @@ void QtUi::connectedToCore() { void QtUi::disconnectedFromCore() { mainWin->disconnectedFromCore(); } + +void QtUi::registerNotificationBackend(AbstractNotificationBackend *backend) { + if(!_notificationBackends.contains(backend)) { + _notificationBackends.insert(backend); + } +} + +void QtUi::unregisterNotificationBackend(AbstractNotificationBackend *backend) { + _notificationBackends.remove(backend); +} + +void QtUi::unregisterAllNotificationBackends() { + _notificationBackends.clear(); +} + +void QtUi::notify(BufferId id, const QString &sender, const QString &text) { + foreach(AbstractNotificationBackend *backend, _notificationBackends) + backend->notify(id, sender, text); +}