Added logic to allow for advanced key sequence options to be shown/hidden on game pad window.

This commit is contained in:
mjbudd77 2021-03-24 22:21:53 -04:00
parent 41caf1500f
commit b810164759
3 changed files with 61 additions and 2 deletions

View File

@ -115,7 +115,7 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
bool useScroll = false;
int useNativeMenuBar;
QMenuBar *menuBar;
QMenu *fileMenu;
QMenu *fileMenu, *extMenu;
QAction *act;
QTreeWidgetItem *item;
@ -162,6 +162,18 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
fileMenu->addAction(act);
// Extensions
extMenu = menuBar->addMenu(tr("&Extensions"));
// Extensions -> Show Adv Bindings
act = new QAction(tr("&Show Adv Bindings"), this);
//act->setShortcut(QKeySequence::Close);
act->setStatusTip(tr("Show Adv Bindings"));
act->setCheckable(true);
connect(act, SIGNAL(triggered(bool)), this, SLOT(advBindingViewChanged(bool)) );
extMenu->addAction(act);
//-----------------------------------------------------------------------
// Menu End
//-----------------------------------------------------------------------
@ -377,6 +389,16 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
gpView = new GamePadView_t(this);
advOptLayout = new QGroupBox( tr("Advanced Key Bindings") );
advOptLayout->setMaximumWidth(0);
advOptWidthAnimation = new QPropertyAnimation( advOptLayout, "maximumWidth");
advOptWidthAnimation->setDuration(500);
advOptWidthAnimation->setStartValue(0);
advOptWidthAnimation->setEndValue(512);
advOptWidthAnimation->setEasingCurve( QEasingCurve::InOutCirc );
connect( advOptWidthAnimation, SIGNAL(valueChanged(const QVariant &)), this, SLOT(advOptWidthChange(const QVariant &)));
connect( advOptWidthAnimation, SIGNAL(finished(void)), this, SLOT(advOptResizeDone(void)) );
mainLayoutV->addLayout(vbox1);
mainLayoutV->addWidget(gpView);
@ -418,7 +440,8 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
keyBindTree->setHeaderItem(item);
keyBindTree->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
keyBindTree->header()->setSectionResizeMode(QHeaderView::Interactive);
keyBindTree->setMinimumWidth( 256 );
hbox1->addWidget(keyBindTree);
@ -571,6 +594,32 @@ void GamePadConfDialog_t::loadMapList(void)
}
}
//----------------------------------------------------
void GamePadConfDialog_t::advBindingViewChanged(bool state)
{
if ( state )
{
advOptWidthAnimation->setStartValue(0);
advOptWidthAnimation->setEndValue(512);
advOptWidthAnimation->start();
}
else
{
advOptWidthAnimation->setStartValue( advOptLayout->width() );
advOptWidthAnimation->setEndValue(0);
advOptWidthAnimation->start();
}
}
//----------------------------------------------------
void GamePadConfDialog_t::advOptWidthChange(const QVariant &value)
{
resize( minimumSizeHint() );
}
//----------------------------------------------------
void GamePadConfDialog_t::advOptResizeDone(void)
{
resize( minimumSizeHint() );
}
//----------------------------------------------------
void GamePadConfDialog_t::refreshKeyBindTree( bool reset )
{
int i;

View File

@ -17,6 +17,7 @@
#include <QPainter>
#include <QTreeView>
#include <QTreeWidget>
#include <QPropertyAnimation>
#include "Qt/main.h"
#include "Qt/input.h"
@ -138,6 +139,7 @@ protected:
QComboBox *profSel;
QCheckBox *efs_chkbox;
QGroupBox *advOptLayout;
QPropertyAnimation *advOptWidthAnimation;
QLabel *guidLbl;
QLabel *mapMsg;
QLabel *keyName[GAMEPAD_NUM_BUTTONS];
@ -210,6 +212,9 @@ private slots:
void newKeyBindingCallback(void);
void editKeyBindingCallback(void);
void delKeyBindingCallback(void);
void advBindingViewChanged(bool state);
void advOptResizeDone(void);
void advOptWidthChange(const QVariant &value);
};
int openGamePadConfWindow(QWidget *parent);

View File

@ -1450,6 +1450,11 @@ static void updateGamePadKeyMappings(void)
{
std::list <gamepad_function_key_t*>::iterator it;
if ( gpKeySeqList.size() == 0 )
{
return;
}
for (it=gpKeySeqList.begin(); it!=gpKeySeqList.end(); it++)
{
(*it)->updateStatus();