/***************************************************************************
- * 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 *
#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<AbstractNotificationBackend *> 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<QLocale>());
+
+ 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;
}
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() {
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);
+}