Esempio n. 1
0
void Bb10Ui::onChannelListTriggered(const QVariantList index)
{
    // Headers are not clickable
    if (index.length() < 2)
        return;
    QModelIndex modelIndex = qobject_cast<DataModelAdapter*>(m_channelListView->dataModel())->getQModelIndex(index);
    BufferInfo bufferInfo = modelIndex.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
    BufferId id = bufferInfo.bufferId();
    if (!id.isValid())
        return;

    QString bufferName = bufferInfo.bufferName();
    
    qDebug() << "xxxxx Bb10Ui::onChannelListTriggered bufferInfo = " << bufferInfo << " index = " << index << " modelIndex = " << modelIndex;
    ChatView *view = qobject_cast<ChatView *>(m_chatViews.value(id));
    if (!view) {
        view = new ChatView(id, bufferName);
        m_chatViews[id] = view;
    }
    m_currentBufferId = id;
    Client::bufferModel()->switchToBuffer(id);
    Client::networkModel()->clearBufferActivity(id);
    Client::setBufferLastSeenMsg(id, view->getLastMsgId());
    Client::backlogManager()->checkForBacklog(id);
    navPanePush(view->getPage());

    // ask channelListView to update the appearance
    qobject_cast<DataModelAdapter*>(m_channelListView->dataModel())->handleBufferModelDataChanged(modelIndex, modelIndex);
}
void ContextMenuActionProvider::addBufferItemActions(QMenu *menu, const QModelIndex &index, bool isCustomBufferView)
{
    BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();

    menu->addSeparator();
    switch (bufferInfo.type()) {
    case BufferInfo::ChannelBuffer:
        addAction(BufferJoin, menu, index, InactiveState);
        addAction(BufferPart, menu, index, ActiveState);
        menu->addSeparator();
        addHideEventsMenu(menu, bufferInfo.bufferId());
        menu->addSeparator();
        addAction(HideBufferTemporarily, menu, isCustomBufferView);
        addAction(HideBufferPermanently, menu, isCustomBufferView);
        addAction(BufferRemove, menu, index, InactiveState);
        break;

    case BufferInfo::QueryBuffer:
    {
        //IrcUser *ircUser = qobject_cast<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
        //if(ircUser) {
        addIrcUserActions(menu, index);
        menu->addSeparator();
        //}
        addHideEventsMenu(menu, bufferInfo.bufferId());
        menu->addSeparator();
        addAction(HideBufferTemporarily, menu, isCustomBufferView);
        addAction(HideBufferPermanently, menu, isCustomBufferView);
        addAction(BufferRemove, menu, index);
        break;
    }

    default:
        addAction(HideBufferTemporarily, menu, isCustomBufferView);
        addAction(HideBufferPermanently, menu, isCustomBufferView);
    }
}
// this would be the place for a client-side hook
void ClientUserInputHandler::handleUserInput(const BufferInfo &bufferInfo, const QString &msg)
{
    if (msg.isEmpty())
        return;

    if (!msg.startsWith('/')) {
        if (_nickRx.indexIn(msg) == 0) {
            const Network *net = Client::network(bufferInfo.networkId());
            IrcUser *user = net ? net->ircUser(_nickRx.cap(1)) : 0;
            if (user)
                user->setLastSpokenTo(bufferInfo.bufferId(), QDateTime::currentDateTime().toUTC());
        }
    }

    AliasManager::CommandList clist = Client::aliasManager()->processInput(bufferInfo, msg);

    for (int i = 0; i < clist.count(); i++) {
        QString cmd = clist.at(i).second.section(' ', 0, 0).remove(0, 1).toUpper();
        QString payload = clist.at(i).second.section(' ', 1);
        handle(cmd, Q_ARG(BufferInfo, clist.at(i).first), Q_ARG(QString, payload));
    }
}
Esempio n. 4
0
QDebug operator<<(QDebug dbg, const BufferInfo &b)
{
    dbg.nospace() << "(bufId: " << b.bufferId() << ", netId: " << b.networkId() << ", groupId: " << b.groupId() << ", buf: " << b.bufferName() << ")";
    return dbg.space();
}