Esempio n. 1
0
// filter for the input widget to switch back to normal mode
bool TopicWidget::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::FocusOut && !_mouseEntered) {
        switchPlain();
        return true;
    }

    if (event->type() == QEvent::Enter) {
        _mouseEntered = true;
    }

    if (event->type() == QEvent::Leave) {
        _mouseEntered = false;
    }

    if (event->type() != QEvent::KeyRelease)
        return QObject::eventFilter(obj, event);

    QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);

    if (keyEvent->key() == Qt::Key_Escape) {
        switchPlain();
        return true;
    }

    return false;
}
Esempio n. 2
0
void TopicWidget::setTopic(const QModelIndex &index) {
  QString newtopic;
  bool readonly = true;

  BufferId id = index.data(NetworkModel::BufferIdRole).value<BufferId>();
  if(id.isValid()) {
    QModelIndex index0 = index.sibling(index.row(), 0);
    const Network *network = Client::network(Client::networkModel()->networkId(id));

    switch(Client::networkModel()->bufferType(id)) {
    case BufferInfo::StatusBuffer:
      if(network) {
        newtopic = QString("%1 (%2) | %3 | %4")
          .arg(Qt::escape(network->networkName()))
          .arg(Qt::escape(network->currentServer()))
          .arg(tr("Users: %1").arg(network->ircUsers().count()))
          .arg(tr("Lag: %1 msecs").arg(network->latency()));
      } else {
        newtopic = index0.data(Qt::DisplayRole).toString();
      }
      break;

    case BufferInfo::ChannelBuffer:
      newtopic = index.sibling(index.row(), 1).data().toString();
      readonly = false;
      break;

    case BufferInfo::QueryBuffer:
      {
        QString nickname = index0.data(Qt::DisplayRole).toString();
        if(network) {
          const IrcUser *user = network->ircUser(nickname);
          if(user) {
            newtopic = QString("%1%2%3 | %4@%5").arg(nickname)
              .arg(user->userModes().isEmpty() ? QString() : QString(" (+%1)").arg(user->userModes()))
              .arg(user->realName().isEmpty() ? QString() : QString(" | %1").arg(user->realName()))
              .arg(user->user())
            .arg(user->host());
          } else { // no such user
            newtopic = nickname;
          }
        } else { // no valid Network-Obj.
          newtopic = nickname;
        }
        break;
      }
    default:
      newtopic = index0.data(Qt::DisplayRole).toString();
    }
  }

  _topic = newtopic;
  _readonly = readonly;

  ui.topicEditButton->setVisible(!_readonly);
  ui.topicLabel->setText(newtopic);
  ui.topicLineEdit->setPlainText(newtopic);
  switchPlain();
}
Esempio n. 3
0
void TopicWidget::on_topicLineEdit_textEntered() {
  QModelIndex currentIdx = currentIndex();
  if(currentIdx.isValid() && currentIdx.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer) {
    BufferInfo bufferInfo = currentIdx.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
    if(ui.topicLineEdit->text().isEmpty())
      Client::userInput(bufferInfo, QString("/quote TOPIC %1 :").arg(bufferInfo.bufferName()));
    else
      Client::userInput(bufferInfo, QString("/topic %1").arg(ui.topicLineEdit->text()));
  }
  switchPlain();
}