Added enable/disable button for Qt family keyboard dialog. Added button mapping save, recall and reset to default functions for Qt FKB.

This commit is contained in:
mjbudd77 2022-03-06 21:47:36 -05:00
parent bef4e80e08
commit 3e7dc3474a
2 changed files with 111 additions and 0 deletions

View File

@ -637,10 +637,12 @@ FKBConfigDialog::FKBConfigDialog(QWidget *parent)
mainVbox->addLayout( hbox );
statLbl = new QLabel();
fkbEnaBtn = new QPushButton( tr("Enable") );
closeButton = new QPushButton( tr("Close") );
closeButton->setIcon(style()->standardIcon(QStyle::SP_DialogCloseButton));
closeButton->setAutoDefault(false);
hbox->addWidget(fkbEnaBtn, 1);
hbox->addWidget(statLbl, 3);
hbox->addStretch(5);
hbox->addWidget( closeButton, 1);
@ -660,6 +662,7 @@ FKBConfigDialog::FKBConfigDialog(QWidget *parent)
connect( keyTreeHgtAnimation, SIGNAL(finished(void)), this, SLOT(keyTreeResizeDone(void)) );
connect(closeButton , SIGNAL(clicked(void)), this, SLOT(closeWindow(void)));
connect(fkbEnaBtn , SIGNAL(clicked(void)), this, SLOT(toggleFamilyKeyboardEnable(void)) );
updateTimer = new QTimer(this);
@ -683,6 +686,60 @@ FKBConfigDialog::~FKBConfigDialog(void)
// Save Window Geometry
settings.setValue("familyKeyboard/geometry", saveGeometry());
SaveCurrentMapping();
}
//----------------------------------------------------------------------------
void FKBConfigDialog::SaveCurrentMapping(void)
{
std::string prefix;
// FamilyKeyBoard
prefix = "SDL.Input.FamilyKeyBoard.";
g_config->setOption(prefix + "DeviceType", DefaultFamilyKeyBoardDevice);
g_config->setOption(prefix + "DeviceNum", 0);
for(unsigned int j = 0; j < FAMILYKEYBOARD_NUM_BUTTONS; j++)
{
g_config->setOption(prefix + FamilyKeyBoardNames[j], fkbmap[j].ButtonNum );
}
g_config->save();
}
//----------------------------------------------------------------------------
void FKBConfigDialog::resetDefaultMapping(void)
{
std::string prefix, device;
int type = 0, devnum = 0;
// FamilyKeyBoard
prefix = "SDL.Input.FamilyKeyBoard.";
g_config->setOption(prefix + "DeviceType", DefaultFamilyKeyBoardDevice);
g_config->setOption(prefix + "DeviceNum", 0);
g_config->getOption(prefix + "DeviceType", &device);
if (device.find("Keyboard") != std::string::npos)
{
type = BUTTC_KEYBOARD;
}
else if (device.find("Joystick") != std::string::npos)
{
type = BUTTC_JOYSTICK;
}
else
{
type = 0;
}
g_config->getOption(prefix + "DeviceNum", &devnum);
for(unsigned int j = 0; j < FAMILYKEYBOARD_NUM_BUTTONS; j++)
{
g_config->setOption(prefix + FamilyKeyBoardNames[j], DefaultFamilyKeyBoard[j] );
fkbmap[j].ButtType = type;
fkbmap[j].DeviceNum = devnum;
fkbmap[j].ButtonNum = DefaultFamilyKeyBoard[j];
}
g_config->save();
}
//----------------------------------------------------------------------------
QMenuBar *FKBConfigDialog::buildMenuBar(void)
@ -750,6 +807,16 @@ QMenuBar *FKBConfigDialog::buildMenuBar(void)
confMenu->addAction(act);
confMenu->addSeparator();
// Config -> Reset to Defaults
act = new QAction(tr("Reset to Defaults"), this);
//act->setShortcut(QKeySequence::Close);
act->setStatusTip(tr("Reset to Defaults Mappings"));
connect(act, SIGNAL(triggered()), this, SLOT(resetDefaultMapping(void)) );
confMenu->addAction(act);
// View
viewMenu = menuBar->addMenu(tr("View"));
@ -861,13 +928,53 @@ void FKBConfigDialog::updateStatusLabel(void)
if ( fkbActv )
{
statLbl->setText( tr("Family Keyboard is Enabled") );
fkbEnaBtn->setText( tr("Disable") );
}
else
{
statLbl->setText( tr("Family Keyboard is Disabled") );
fkbEnaBtn->setText( tr("Enable") );
}
}
//----------------------------------------------------------------------------
void FKBConfigDialog::toggleFamilyKeyboardEnable(void)
{
int curNesInput[3], usrNesInput[3];
getInputSelection(0, &curNesInput[0], &usrNesInput[0]);
getInputSelection(1, &curNesInput[1], &usrNesInput[1]);
getInputSelection(2, &curNesInput[2], &usrNesInput[2]);
if ( curNesInput[2] != SIFC_FKB )
{
ESI port[2];
ESIFC fcexp;
int fourscore = false, microphone = false;
curNesInput[2] = SIFC_FKB;
g_config->getOption("SDL.FourScore", &fourscore);
microphone = replaceP2StartWithMicrophone;
port[0] = (ESI)curNesInput[0];
port[1] = (ESI)curNesInput[1];
fcexp = (ESIFC)curNesInput[2];
FCEUD_SetInput(fourscore, microphone, port[0], port[1], fcexp);
if ( !isFamilyKeyboardActv() )
{
toggleFamilyKeyboardFunc();
}
}
else
{
toggleFamilyKeyboardFunc();
}
updateStatusLabel();
}
//----------------------------------------------------------------------------
void FKBConfigDialog::closeEvent(QCloseEvent *event)
{
printf("FKB Config Close Window Event\n");

View File

@ -149,6 +149,7 @@ protected:
QTreeWidget *keyTree;
QLabel *statLbl;
QPushButton *fkbEnaBtn;
QTimer *updateTimer;
@ -172,6 +173,9 @@ private slots:
void mappingSave(void);
void mappingSaveAs(void);
void toggleTreeView(bool);
void SaveCurrentMapping(void);
void resetDefaultMapping(void);
void toggleFamilyKeyboardEnable(void);
void keyTreeResizeDone(void);
void keyTreeHeightChange(const QVariant &);
void keyTreeItemActivated(QTreeWidgetItem *item, int column);