void MainWindow::joystickTrayShow() { QMenu *tempmenu = (QMenu*) sender(); QList<QAction*> menuactions = tempmenu->actions(); QListIterator<QAction*> listiter (menuactions); while (listiter.hasNext()) { QAction *action = listiter.next(); action->setChecked(false); QHash<QString, QVariant> tempmap = action->data().toHash(); QHashIterator<QString, QVariant> iter(tempmap); while (iter.hasNext()) { iter.next(); int joyindex = iter.key().toInt(); int configindex = iter.value().toInt(); JoyTabWidget *widget = (JoyTabWidget*)ui->tabWidget->widget(joyindex); if (configindex == widget->getCurrentConfigIndex()) { action->setChecked(true); } } } }
void MainWindow::populateTrayIcon() { trayIconMenu->clear(); if (joysticks->count() > 0) { for (int i=0; i < joysticks->count(); i++) { QMenu *joysticksub = trayIconMenu->addMenu(joysticks->value(i)->getName()); JoyTabWidget *widget = (JoyTabWidget*)ui->tabWidget->widget(i); QHash<int, QString> *configs = widget->recentConfigs(); QHashIterator<int, QString> iter(*configs); while (iter.hasNext()) { iter.next(); QAction *newaction = new QAction(iter.value(), joysticksub); newaction->setCheckable(true); newaction->setChecked(false); if (iter.key() == widget->getCurrentConfigIndex()) { newaction->setChecked(true); } QHash<QString, QVariant> *tempmap = new QHash<QString, QVariant> (); tempmap->insert(QString::number(i), QVariant (iter.key())); QVariant tempvar (*tempmap); newaction->setData(tempvar); joysticksub->addAction(newaction); } QAction *newaction = new QAction(tr("Open File"), joysticksub); newaction->setIcon(QIcon::fromTheme("document-open")); connect(newaction, SIGNAL(triggered()), widget, SLOT(openConfigFileDialog())); joysticksub->addAction(newaction); connect(joysticksub, SIGNAL(triggered(QAction*)), this, SLOT(trayMenuChangeJoyConfig(QAction*))); connect(joysticksub, SIGNAL(aboutToShow()), this, SLOT(joystickTrayShow())); } trayIconMenu->addSeparator(); } hideAction = new QAction(tr("&Hide"), trayIconMenu); hideAction->setIcon(QIcon::fromTheme("view-restore")); connect(hideAction, SIGNAL(triggered()), this, SLOT(hide())); //connect(hideAction, SIGNAL(triggered()), this, SLOT(disableFlashActions())); restoreAction = new QAction(tr("&Restore"), trayIconMenu); restoreAction->setIcon(QIcon::fromTheme("view-fullscreen")); //connect(restoreAction, SIGNAL(triggered()), this, SLOT(enableFlashActions())); connect(restoreAction, SIGNAL(triggered()), this, SLOT(show())); closeAction = new QAction(tr("&Quit"), trayIconMenu); closeAction->setIcon(QIcon::fromTheme("application-exit")); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); updateJoy = new QAction(tr("&Update Joysticks"), trayIconMenu); updateJoy->setIcon(QIcon::fromTheme("view-refresh")); connect(updateJoy, SIGNAL(triggered()), this, SLOT(startJoystickRefresh())); trayIconMenu->addAction(hideAction); trayIconMenu->addAction(restoreAction); trayIconMenu->addAction(updateJoy); trayIconMenu->addAction(closeAction); QIcon icon = QIcon(":/images/antimicro_trayicon.png"); //trayIcon = new QSystemTrayIcon(this); trayIcon->setIcon(icon); trayIcon->setContextMenu(trayIconMenu); }