void SingleWindow::changeEvent(QEvent *event) { QWidget::changeEvent(event); if (event->type() == QEvent::ActivationChange) { ChatWidget *chatWidget = static_cast<ChatWidget *>(m_tabs->currentWidget()); if (chatWidget && _isActiveWindow(this)) emit chatWidgetActivated(chatWidget); } }
void TabsManager::insertTab(ChatWidget *chatWidget) { kdebugf(); Title->addChatWidget(chatWidget); bool restoreChatGeometry = true; // jeśli jest otwarty chatwindow przypisany do chat to zostanie on zamknięty if (chatWidget->parentWidget()) { chatWidget->parentWidget()->deleteLater(); restoreChatGeometry = false; } ContactSet contacts = chatWidget->chat().contacts(); DetachedChats.removeAll(chatWidget->chat()); for (Action *action : m_attachTabAction->actions()) { if (action->context()->contacts() == contacts) action->setChecked(true); } // Ustawiam tytul karty w zaleznosci od tego czy mamy do czynienia z rozmowa czy z konferencja TabDialog->insertTab(TargetTabs, chatWidget, chatWidget->title()->blinkingIcon(), QString()); if (restoreChatGeometry) chatWidget->kaduRestoreGeometry(); updateTabTitle(chatWidget); TargetTabs = -1; connect(chatWidget->edit(), SIGNAL(keyPressed(QKeyEvent*, CustomInput*, bool&)), TabDialog, SLOT(chatKeyPressed(QKeyEvent*, CustomInput*, bool&))); connect(chatWidget->title(), SIGNAL(titleChanged(ChatWidget*)), this, SLOT(onTitleChanged(ChatWidget*))); CloseOtherTabsMenuAction->setEnabled(TabDialog->count() > 1); // unreadMessagesCountChanged(chatWidget); if (_isActiveWindow(TabDialog) && TabDialog->currentWidget() == chatWidget) emit chatWidgetActivated(chatWidget); kdebugf2(); }
void ChatWindow::windowActivationChange(bool b) { kdebugf(); if (_isActiveWindow(this)) { currentChatWidget->markAllMessagesRead(); setWindowTitle(currentChatWidget->chat()->title()); if (title_timer->isActive()) title_timer->stop(); if (!b) emit chatWidgetActivated(currentChatWidget); } kdebugf2(); }
void ChatWindow::alertNewMessage() { if (!_isActiveWindow(this)) { if (activateWithNewMessages && qApp->activeWindow() && !isMinimized()) { _activateWindow(this); } else if (blinkChatTitle) { if (!title_timer->isActive()) blinkTitle(); // blinking is able to show new messages also... } else if (showNewMessagesNum) // ... so we check this condition as 'else' showNewMessagesNumInTitle(); qApp->alert(this); // TODO: make notifier from this } else currentChatWidget->markAllMessagesRead(); }
void ChatWindow::blinkTitle() { if (!_isActiveWindow(this)) { if (!windowTitle().contains(currentChatWidget->chat()->title()) || !blinkChatTitle) { if (!showNewMessagesNum) // if we don't show number od new messages waiting setWindowTitle(currentChatWidget->chat()->title()); else showNewMessagesNumInTitle(); } else setWindowTitle(QString().fill(' ', (currentChatWidget->chat()->title().length() + 5))); if (blinkChatTitle) // timer will not be started, if configuration option was changed { title_timer->setSingleShot(true); title_timer->start(500); } } }
void ChatWindow::changeEvent(QEvent *event) { QWidget::changeEvent(event); if (event->type() == QEvent::ActivationChange && _isActiveWindow(this)) emit activated(this); }
void ChatWindow::showNewMessagesNumInTitle() { if (!_isActiveWindow(this)) setWindowTitle("[" + QString().setNum(currentChatWidget->newMessagesCount()) + "] " + currentChatWidget->chat()->title()); }