QMenu* ColorCalibrationWidget::createUserMenu() const { QMenu* menu = new QMenu(tr("&Color Calibration")); QAction* saveColorCalibration = new QAction(QIcon(":/Icons/kick_save.png"), tr("&Save Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->undoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->undoAction, QIcon(":/Icons/edit_undo.png"), tr("&Undo Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->redoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->redoAction, QIcon(":/Icons/edit_redo.png"), tr("&Redo Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->currentCalibrationChanged(); connect(saveColorCalibration, SIGNAL(triggered()), this, SLOT(saveColorCalibration())); connect(undoAction, SIGNAL(triggered()), this, SLOT(undoColorCalibration())); connect(redoAction, SIGNAL(triggered()), this, SLOT(redoColorCalibration())); menu->addAction(saveColorCalibration); menu->addAction(undoAction); menu->addAction(redoAction); menu->addSeparator(); QAction* colorButtons[FieldColors::numOfColors - FieldColors::numOfNonColors + 1] = { new QAction(QIcon(":/Icons/orange.png"), tr("Calibrate &Saturation"), menu), new QAction(QIcon(":/Icons/ownColor.png"), tr("Calibrate &Own Color"), menu), new QAction(QIcon(":/Icons/opponentColor.png"), tr("Calibrate &Opponent Color"), menu) }; QActionGroup* colorGroup = new QActionGroup(menu); QSignalMapper* signalMapper = new QSignalMapper(const_cast<ColorCalibrationWidget*>(this)); connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(colorAct(int))); for(int i = 0; i < FieldColors::numOfColors - FieldColors::numOfNonColors + 1; ++i) { signalMapper->setMapping(colorButtons[i], i); connect(colorButtons[i], SIGNAL(triggered()), signalMapper, SLOT(map())); colorGroup->addAction(colorButtons[i]); colorButtons[i]->setCheckable(true); colorButtons[i]->setChecked(currentColor == i + FieldColors::numOfNonColors - 1); colorButtons[i]->setEnabled(true); menu->addAction(colorButtons[i]); } return menu; }
QMenu* ColorCalibrationWidget::createUserMenu() const { QMenu* menu = new QMenu(tr("&Color Calibration")); QAction* saveColorCalibration = new QAction(QIcon(":/Icons/kick_save.png"), tr("&Save Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->undoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->undoAction, QIcon(":/Icons/edit_undo.png"), tr("&Undo Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->redoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->redoAction, QIcon(":/Icons/edit_redo.png"), tr("&Redo Color Calibration"), menu); const_cast<ColorCalibrationWidget*>(this)->currentCalibrationChanged(); connect(saveColorCalibration, SIGNAL(triggered()), this, SLOT(saveColorCalibration())); connect(undoAction, SIGNAL(triggered()), this, SLOT(undoColorCalibration())); connect(redoAction, SIGNAL(triggered()), this, SLOT(redoColorCalibration())); menu->addAction(saveColorCalibration); menu->addAction(undoAction); menu->addAction(redoAction); menu->addSeparator(); return menu; }