#include "mainwin.h"
#include "abstractnotificationbackend.h"
#include "qtuimessageprocessor.h"
+#include "qtuisettings.h"
#include "qtuistyle.h"
#include "types.h"
-#include "uisettings.h"
#include "util.h"
-ActionCollection *QtUi::_actionCollection = 0;
+QHash<QString, ActionCollection *> QtUi::_actionCollections;
MainWin *QtUi::_mainWin = 0;
-QSet<AbstractNotificationBackend *> QtUi::_notificationBackends;
+QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
QtUiStyle *QtUi::_style = 0;
qWarning() << "QtUi has been instantiated again!";
return;
}
- _actionCollection = new ActionCollection(this);
- UiSettings uiSettings;
+ QtUiSettings uiSettings;
loadTranslation(uiSettings.value("Locale", QLocale::system()).value<QLocale>());
_mainWin = new MainWin();
_mainWin->init();
}
+ActionCollection *QtUi::actionCollection(const QString &category) {
+ if(_actionCollections.contains(category))
+ return _actionCollections.value(category);
+ ActionCollection *coll = new ActionCollection(mainWindow());
+ coll->addAssociatedWidget(mainWindow());
+ _actionCollections.insert(category, coll);
+ return coll;
+}
+
MessageModel *QtUi::createMessageModel(QObject *parent) {
return new ChatLineModel(parent);
}
void QtUi::registerNotificationBackend(AbstractNotificationBackend *backend) {
if(!_notificationBackends.contains(backend)) {
- _notificationBackends.insert(backend);
+ _notificationBackends.append(backend);
}
}
void QtUi::unregisterNotificationBackend(AbstractNotificationBackend *backend) {
- _notificationBackends.remove(backend);
+ _notificationBackends.removeAll(backend);
}
void QtUi::unregisterAllNotificationBackends() {
_notificationBackends.clear();
}
-const QSet<AbstractNotificationBackend *> &QtUi::notificationBackends() {
+const QList<AbstractNotificationBackend *> &QtUi::notificationBackends() {
return _notificationBackends;
}
void QtUi::closeNotifications(BufferId bufferId) {
QList<AbstractNotificationBackend::Notification>::iterator i = _notifications.begin();
while(i != _notifications.end()) {
- if((*i).bufferId == bufferId) {
+ if(!bufferId.isValid() || (*i).bufferId == bufferId) {
foreach(AbstractNotificationBackend *backend, _notificationBackends)
backend->close((*i).notificationId);
_notifications.erase(i);