+ 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 *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);
+ 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);
+ }
+ }