- }
-}
-
-
-void BufferView::toggleHeader(bool checked) {
- QAction *action = qobject_cast<QAction *>(sender());
- header()->setSectionHidden((action->property("column")).toInt(), !checked);
-}
-
-void BufferView::showContextMenu(const QPoint &pos) {
- QModelIndex index = indexAt(pos);
- if(!index.isValid()) return;
- QMenu contextMenu(this);
- QAction *connectNetAction = new QAction(tr("Connect"), this);
- QAction *disconnectNetAction = new QAction(tr("Disconnect"), this);
- QAction *joinChannelAction = new QAction(tr("Join Channel"), this);
-
- QAction *joinBufferAction = new QAction(tr("Join"), this);
- QAction *partBufferAction = new QAction(tr("Part"), this);
- QAction *hideBufferAction = new QAction(tr("Remove buffers"), this);
- hideBufferAction->setToolTip(tr("Removes the selected buffers from a custom view but leaves the buffer itself untouched"));
- QAction *removeBufferAction = new QAction(tr("Delete buffer"), this);
-
- QMenu *hideEventsMenu = new QMenu(tr("Hide Events"), this);
- QAction *hideJoinAction = hideEventsMenu->addAction(tr("Join Events"));
- QAction *hidePartAction = hideEventsMenu->addAction(tr("Part Events"));
- QAction *hideKillAction = hideEventsMenu->addAction(tr("Kill Events"));
- QAction *hideQuitAction = hideEventsMenu->addAction(tr("Quit Events"));
- QAction *hideModeAction = hideEventsMenu->addAction(tr("Mode Events"));
- hideJoinAction->setCheckable(true);
- hidePartAction->setCheckable(true);
- hideKillAction->setCheckable(true);
- hideQuitAction->setCheckable(true);
- hideModeAction->setCheckable(true);
- hideJoinAction->setEnabled(false);
- hidePartAction->setEnabled(false);
- hideKillAction->setEnabled(false);
- hideQuitAction->setEnabled(false);
- hideModeAction->setEnabled(false);
-
- QAction *ignoreListAction = new QAction(tr("Ignore list"), this);
- ignoreListAction->setEnabled(false);
- QAction *whoBufferAction = new QAction(tr("WHO"), this);
-
- if(index.data(NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType) {
- if(index.data(NetworkModel::ItemActiveRole).toBool()) {
- contextMenu.addAction(disconnectNetAction);
- contextMenu.addSeparator();
- contextMenu.addAction(joinChannelAction);
- } else {
- contextMenu.addAction(connectNetAction);
- }
- }
-
- BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
- QString channelname = index.sibling(index.row(), 0).data().toString();
-
- if(index.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType) {
- if(bufferInfo.type() != BufferInfo::ChannelBuffer && bufferInfo.type() != BufferInfo::QueryBuffer) return;
- contextMenu.addAction(joinBufferAction);
- contextMenu.addAction(partBufferAction);
- if(config())
- contextMenu.addAction(hideBufferAction);
- contextMenu.addAction(removeBufferAction);
- contextMenu.addMenu(hideEventsMenu);
- contextMenu.addAction(ignoreListAction);
- contextMenu.addAction(whoBufferAction);
-
- if(bufferInfo.type() == BufferInfo::ChannelBuffer) {
- if(index.data(NetworkModel::ItemActiveRole).toBool()) {
- removeBufferAction->setEnabled(false);
- removeBufferAction->setToolTip("To delete the buffer, part the channel first.");
- joinBufferAction->setVisible(false);
- whoBufferAction->setVisible(false);
- } else {
- partBufferAction->setVisible(false);
- }
- } else {
- joinBufferAction->setVisible(false);
- partBufferAction->setVisible(false);
- }
- }
-
- QAction *result = contextMenu.exec(QCursor::pos());
- if(result == connectNetAction || result == disconnectNetAction) {
- const Network *network = Client::network(index.data(NetworkModel::NetworkIdRole).value<NetworkId>());
- if(!network) return;
- if(network->connectionState() == Network::Disconnected)
- network->requestConnect();
- else
- network->requestDisconnect();
- } else
- if(result == joinChannelAction) {
- // FIXME no QInputDialog in Qtopia
-#ifndef Q_WS_QWS
- bool ok;
- QString channelName = QInputDialog::getText(this, tr("Join Channel"),
- tr("Input channel name:"),QLineEdit::Normal,
- QDir::home().dirName(), &ok);
-
- if (ok && !channelName.isEmpty()) {
- BufferInfo bufferInfo = index.child(0,0).data(NetworkModel::BufferInfoRole).value<BufferInfo>();
- if(bufferInfo.isValid()) {
- Client::instance()->userInput(bufferInfo, QString("/J %1").arg(channelName));
- }