Example #1
0
// properties.at(0): Login
// properties.at(1): Id
// properties.at(2): Ip
// properties.at(3): Promo
// properties.at(4): State
// properties.at(5): Location
// properties.at(6): Comment
void    QNetsoul::showConversation(const QStringList& properties,
                                   const QString& message)
{
  bool ok;
  const int id = properties.at(1).toInt(&ok);
  if (ok == false)
    qFatal("[QNetsoul::showConversation] Invalid id (%d)", id);

  Chat* window = getChat(id);
  const bool userEvent = message.isEmpty();

  if (NULL == window)
    {
      // DEBUG focus
      //qDebug() << "CASE 1";
      window = createWindowChat(id, properties.at(0), properties.at(5));
      window->show();
    }
  if (false == window->isVisible())
    {
      // DEBUG focus
      //qDebug() << "CASE 2";
      //window->outputTextBrowser->clear();
      //window->inputTextEdit->clear();
      if (userEvent)
        {
          window->show();
          window->activateWindow();
          QApplication::setActiveWindow(window);
          window->inputTextEdit->setFocus();
        }
      else window->showMinimized();
    }
  else
    {
      // DEBUG focus
      //qDebug() << "CASE 3";
      if (userEvent)
        {
          window->showNormal();
          window->activateWindow();
          QApplication::setActiveWindow(window);
          window->inputTextEdit->setFocus();
        }
    }
  if (message.isEmpty() == false)
    {
      if (window)
        {
          window->insertMessage(properties.at(0), message, QColor(204, 0, 0));
          window->autoReply(statusComboBox->currentIndex());
          QApplication::alert(window);
        }
      if (this->_trayIcon && this->_options->chatWidget->notifyMsg())
        this->_trayIcon->showMessage(properties.at(0), tr(" is talking to you."));
    }
}