// Context menu request event handler. void qjackctlConnectorView::contextMenuEvent ( QContextMenuEvent *pContextMenuEvent ) { qjackctlConnect *pConnect = m_pConnectView->binding(); if (pConnect == 0) return; QMenu menu(this); QAction *pAction; pAction = menu.addAction(QIcon(":/images/connect1.png"), tr("&Connect"), pConnect, SLOT(connectSelected()), tr("Alt+C", "Connect")); pAction->setEnabled(pConnect->canConnectSelected()); pAction = menu.addAction(QIcon(":/images/disconnect1.png"), tr("&Disconnect"), pConnect, SLOT(disconnectSelected()), tr("Alt+D", "Disconnect")); pAction->setEnabled(pConnect->canDisconnectSelected()); pAction = menu.addAction(QIcon(":/images/disconnectall1.png"), tr("Disconnect &All"), pConnect, SLOT(disconnectAll()), tr("Alt+A", "Disconect All")); pAction->setEnabled(pConnect->canDisconnectAll()); menu.addSeparator(); pAction = menu.addAction(QIcon(":/images/refresh1.png"), tr("&Refresh"), pConnect, SLOT(refresh()), tr("Alt+R", "Refresh")); menu.exec(pContextMenuEvent->globalPos()); }
// Context menu request event handler. void qjackctlClientListView::contextMenuEvent ( QContextMenuEvent *pContextMenuEvent ) { qjackctlConnect *pConnect = m_pConnectView->binding(); if (pConnect == 0) return; QMenu menu(this); QAction *pAction; pAction = menu.addAction(QIcon(":/images/connect1.png"), tr("&Connect"), pConnect, SLOT(connectSelected()), tr("Alt+C", "Connect")); pAction->setEnabled(pConnect->canConnectSelected()); pAction = menu.addAction(QIcon(":/images/disconnect1.png"), tr("&Disconnect"), pConnect, SLOT(disconnectSelected()), tr("Alt+D", "Disconnect")); pAction->setEnabled(pConnect->canDisconnectSelected()); pAction = menu.addAction(QIcon(":/images/disconnectall1.png"), tr("Disconnect &All"), pConnect, SLOT(disconnectAll()), tr("Alt+A", "Disconect All")); pAction->setEnabled(pConnect->canDisconnectAll()); if (m_bRenameEnabled) { menu.addSeparator(); pAction = menu.addAction(QIcon(":/images/edit1.png"), tr("Re&name"), this, SLOT(startRenameSlot()), tr("Alt+N", "Rename")); QTreeWidgetItem *pItem = QTreeWidget::currentItem(); pAction->setEnabled(pItem && (pItem->flags() & Qt::ItemIsEditable)); } menu.addSeparator(); pAction = menu.addAction(QIcon(":/images/refresh1.png"), tr("&Refresh"), pConnect, SLOT(refresh()), tr("Alt+R", "Refresh")); menu.exec(pContextMenuEvent->globalPos()); }
Window::Window(QWidget* parent): QMainWindow(parent) { setObjectName("PlanetScannerWindow"); QToolBar* toolbar = new QToolBar(this); toolbar->setIconSize(QSize(24, 24)); toolbar->setFloatable(false); toolbar->setContextMenuPolicy(Qt::PreventContextMenu); addToolBar(toolbar); QAction* refreshAction = toolbar->addAction(QIcon(":/icons/refresh.png"), "Refresh"); connect(refreshAction, SIGNAL(triggered()), this, SLOT(refreshPlanets())); QAction* settingsAction = toolbar->addAction(QIcon(":/icons/settings.png"), "Settings"); connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettingsDialog())); planetTreeView = new QTreeView(this); planetTreeView->setMinimumHeight(10); planetTreeModel = new PlanetTreeModel(planetTreeView); planetTreeProxyModel = new PlanetTreeSortFilterProxyModel(planetTreeModel); planetTreeProxyModel->setSourceModel(planetTreeModel); planetTreeView->setModel(planetTreeProxyModel); planetTreeModel->setHorizontalHeaderLabels(QStringList() << "Hostname" << "Map" << "Gametype" << "Players" << "Address"); planetTreeView->setSortingEnabled(true); planetTreeView->sortByColumn(0, Qt::AscendingOrder); planetTreeView->setContextMenuPolicy(Qt::CustomContextMenu); planetTreeView->setSelectionMode(QAbstractItemView::SingleSelection); connect(planetTreeView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); QAction* connectAction = new QAction("Connect", planetTreeView); QAction* connectAsSpectatorAction = new QAction("Connect as spectator", planetTreeView); QAction* copyAction = new QAction("Copy", planetTreeView); QAction* openProfileAction = new QAction("Open profile in a browser", planetTreeView); connect(connectAction, SIGNAL(triggered()), this, SLOT(connectSelected())); connect(connectAsSpectatorAction, SIGNAL(triggered()), this, SLOT(connectAsSpectatorSelected())); connect(copyAction, SIGNAL(triggered()), this, SLOT(copySelected())); connect(openProfileAction, &QAction::triggered, this, &Window::openProfileSelected); gameContextMenu = new QMenu(planetTreeView); planetContextMenu = new QMenu(planetTreeView); registeredPlayerContextMenu = new QMenu(planetTreeView); unregisteredPlayerContextMenu = new QMenu(planetTreeView); gameContextMenu->addActions(QList<QAction*>() << connectAction << connectAsSpectatorAction << copyAction); planetContextMenu->addActions(QList<QAction*>() << copyAction); registeredPlayerContextMenu->addActions(QList<QAction*>() << openProfileAction << copyAction); unregisteredPlayerContextMenu->addActions(QList<QAction*>() << copyAction); setCentralWidget(planetTreeView); game = new QProcess(this); statistics = new StatisticsWebSite(this); connect(statistics, &StatisticsWebSite::playersInfoRecieved, this, &Window::processStatisticsPlayers); autoRefreshTimer = new QTimer(this); connect(autoRefreshTimer, SIGNAL(timeout()), this, SLOT(refreshPlanets())); contextMenuShown = false; Settings& settings = Settings::getInstance(); connect(&settings, &Settings::dataChanged, this, &Window::applyChangedSettings); settings.load(); applyChangedSettings(); ::Settings::loadWindow(this); refreshPlanets(); }