+void MainWin::receiveMessage(const Message &msg) {
+ if(QApplication::activeWindow() != 0)
+ return;
+
+ if(msg.flags() & Message::Highlight || msg.bufferInfo().type() == BufferInfo::QueryBuffer) {
+ QString title = msg.bufferInfo().bufferName();;
+ if(msg.bufferInfo().type() != BufferInfo::QueryBuffer) {
+ QString sender = msg.sender();
+ int i = sender.indexOf("!");
+ if(i != -1)
+ sender = sender.left(i);
+ title += QString(" - %1").arg(sender);
+ }
+
+ UiSettings uiSettings;
+
+ if(uiSettings.value("DisplayPopupMessages", QVariant(true)).toBool()) {
+ // FIXME don't invoke style engine for this!
+ QString text = QtUi::style()->styleString(Message::mircToInternal(msg.text())).text;
+ displayTrayIconMessage(title, text);
+ }
+
+ if(uiSettings.value("AnimateTrayIcon", QVariant(true)).toBool()) {
+ QApplication::alert(this);
+ setTrayIconActivity(true);
+ }
+ }
+}
+
+bool MainWin::event(QEvent *event) {
+ if(event->type() == QEvent::WindowActivate)
+ setTrayIconActivity(false);
+ return QMainWindow::event(event);
+}
+
+void MainWin::displayTrayIconMessage(const QString &title, const QString &message) {
+ systray->showMessage(title, message);
+}
+
+void MainWin::setTrayIconActivity(bool active) {
+ if(active) {
+ if(!timer->isActive())
+ timer->start(500);
+ } else {
+ timer->stop();
+ systray->setIcon(onlineTrayIcon);
+ }
+}
+
+void MainWin::makeTrayIconBlink() {
+ if(trayIconActive) {
+ systray->setIcon(onlineTrayIcon);
+ trayIconActive = false;
+ } else {
+ systray->setIcon(activeTrayIcon);
+ trayIconActive = true;
+ }