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::trayMenuChangeJoyConfig(QAction *action) { // Obtaining the selected config QHash<QString, QVariant> tempmap = action->data().toHash(); QHashIterator<QString, QVariant> iter(tempmap); while (iter.hasNext()) { iter.next(); // Fetching indicies and tab associated with the current joypad int joyindex = iter.key().toInt(); int configindex = iter.value().toInt(); JoyTabWidget *widget = (JoyTabWidget*)ui->tabWidget->widget(joyindex); // Checking if the selected config has been disabled by the change (action->isChecked() represents the state of the checkbox AFTER the click) if (!action->isChecked()) { // It has - disabling - the 0th config is the new/'null' config widget->setCurrentConfig(0); } else { // It hasn't - enabling - note that setting this causes the menu to be updated widget->setCurrentConfig(configindex); } } }
void MainWindow::loadAppConfig(bool forceRefresh) { QSettings settings(PadderCommon::configFilePath, QSettings::IniFormat); for (int i=0; i < ui->tabWidget->count(); i++) { JoyTabWidget *tabwidget = (JoyTabWidget*)ui->tabWidget->widget(i); tabwidget->loadSettings(&settings, forceRefresh); } }
void MainWindow::saveAppConfig() { if (joysticks->count() > 0) { QSettings settings(PadderCommon::configFilePath, QSettings::IniFormat); settings.clear(); settings.beginGroup("Controllers"); for (int i=0; i < ui->tabWidget->count(); i++) { JoyTabWidget *tabwidget = (JoyTabWidget*)ui->tabWidget->widget(i); tabwidget->saveSettings(&settings); } settings.endGroup(); } }
void MainWindow::loadConfigFile(QString fileLocation, int joystickIndex) { if (joystickIndex > 0 && joysticks->contains(joystickIndex-1)) { JoyTabWidget *widget = static_cast<JoyTabWidget*> (ui->tabWidget->widget(joystickIndex-1)); if (widget) { widget->loadConfigFile(fileLocation); } } else if (joystickIndex <= 0) { for (int i=0; i < ui->tabWidget->count(); i++) { JoyTabWidget *widget = static_cast<JoyTabWidget*> (ui->tabWidget->widget(i)); if (widget) { widget->loadConfigFile(fileLocation); } } } }
void MainWindow::trayMenuChangeJoyConfig(QAction *action) { QMenu *tempmenu = (QMenu*)action->parent(); QList<QAction*> menuactions = tempmenu->actions(); QListIterator<QAction*> listiter (menuactions); while (listiter.hasNext()) { QAction *tempaction = listiter.next(); tempaction->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); widget->setCurrentConfig(configindex); action->setChecked(true); } }
void MainWindow::fillButtons(QHash<int, Joystick *> *joysticks) { ui->stackedWidget->setCurrentIndex(0); removeJoyTabs(); for (int i=0; i < joysticks->count(); i++) { Joystick *joystick = joysticks->value(i); JoyTabWidget *tabwidget = new JoyTabWidget(joystick, this); tabwidget->fillButtons(); ui->tabWidget->addTab(tabwidget, QString(tr("Joystick %1")).arg(joystick->getRealJoyNumber())); //connect(tabwidget, SIGNAL(joystickRefreshRequested(Joystick*)), this, SLOT(joystickRefreshPropogate(Joystick*))); if (showTrayIcon) { connect(tabwidget, SIGNAL(joystickConfigChanged(int)), this, SLOT(populateTrayIcon())); } } if (joysticks->count() > 0) { loadAppConfig(); ui->tabWidget->setCurrentIndex(0); ui->stackedWidget->setCurrentIndex(1); } if (showTrayIcon) { populateTrayIcon(); trayIcon->show(); } ui->actionUpdate_Joysticks->setEnabled(true); ui->actionHide->setEnabled(true); ui->actionQuit->setEnabled(true); }
void MainWindow::fillButtons(Joystick *joystick) { int joyindex = joystick->getJoyNumber(); JoyTabWidget *tabwidget = (JoyTabWidget*)ui->tabWidget->widget(joyindex); tabwidget->fillButtons(); }
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); }