forked from len0rd/rockbox
rbutil: Remove use of deprecated QSignalMapper.
With Qt5 we can now use lambdas instead. Change-Id: I00fe9c355d72ef9987c61c7a36a810d6eca311bc
This commit is contained in:
parent
fcffe5fb81
commit
e21f80f397
2 changed files with 91 additions and 175 deletions
|
@ -35,11 +35,10 @@
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
EncTtsCfgGui::EncTtsCfgGui(QDialog* parent, EncTtsSettingInterface* iface, QString name)
|
EncTtsCfgGui::EncTtsCfgGui(QDialog* parent, EncTtsSettingInterface* iface, QString name)
|
||||||
: QDialog(parent)
|
: QDialog(parent),
|
||||||
|
m_settingInterface(iface),
|
||||||
|
m_busyCnt(0)
|
||||||
{
|
{
|
||||||
m_settingInterface = iface;
|
|
||||||
|
|
||||||
m_busyCnt=0;
|
|
||||||
// create a busy Dialog
|
// create a busy Dialog
|
||||||
m_busyDlg= new QProgressDialog("", "", 0, 0,this);
|
m_busyDlg= new QProgressDialog("", "", 0, 0,this);
|
||||||
m_busyDlg->setWindowTitle(tr("Waiting for engine..."));
|
m_busyDlg->setWindowTitle(tr("Waiting for engine..."));
|
||||||
|
@ -88,17 +87,14 @@ void EncTtsCfgGui::setUpWindow()
|
||||||
groupBox->setLayout(gridLayout);
|
groupBox->setLayout(gridLayout);
|
||||||
mainLayout->addWidget(groupBox);
|
mainLayout->addWidget(groupBox);
|
||||||
|
|
||||||
// connect browse btn
|
|
||||||
connect(&m_browseBtnMap,SIGNAL(mapped(QObject*)),this,SLOT(browse(QObject*)));
|
|
||||||
|
|
||||||
// ok - cancel buttons
|
// ok - cancel buttons
|
||||||
QPushButton* okBtn = new QPushButton(tr("Ok"),this);
|
QPushButton* okBtn = new QPushButton(tr("Ok"),this);
|
||||||
okBtn->setDefault(true);
|
okBtn->setDefault(true);
|
||||||
okBtn->setIcon(QIcon(":icons/go-next.svg"));
|
okBtn->setIcon(QIcon(":icons/go-next.svg"));
|
||||||
QPushButton* cancelBtn = new QPushButton(tr("Cancel"),this);
|
QPushButton* cancelBtn = new QPushButton(tr("Cancel"),this);
|
||||||
cancelBtn->setIcon(QIcon(":icons/process-stop.svg"));
|
cancelBtn->setIcon(QIcon(":icons/process-stop.svg"));
|
||||||
connect(okBtn,SIGNAL(clicked()),this,SLOT(accept()));
|
connect(okBtn, &QPushButton::clicked, this, &EncTtsCfgGui::accept);
|
||||||
connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject()));
|
connect(cancelBtn, &QPushButton::clicked, this, &EncTtsCfgGui::reject);
|
||||||
|
|
||||||
QHBoxLayout *btnbox = new QHBoxLayout;
|
QHBoxLayout *btnbox = new QHBoxLayout;
|
||||||
btnbox->addWidget(okBtn);
|
btnbox->addWidget(okBtn);
|
||||||
|
@ -124,8 +120,21 @@ QWidget* EncTtsCfgGui::createWidgets(EncTtsSetting* setting)
|
||||||
spinBox->setMaximum(setting->max().toDouble());
|
spinBox->setMaximum(setting->max().toDouble());
|
||||||
spinBox->setSingleStep(0.01);
|
spinBox->setSingleStep(0.01);
|
||||||
spinBox->setValue(setting->current().toDouble());
|
spinBox->setValue(setting->current().toDouble());
|
||||||
connect(spinBox,SIGNAL(valueChanged(double)),this,SLOT(updateSetting()));
|
|
||||||
value = spinBox;
|
value = spinBox;
|
||||||
|
|
||||||
|
connect(spinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||||
|
this, [=](double value) {
|
||||||
|
this->m_settingsWidgetsMap.key(spinBox)->setCurrent(value, false);
|
||||||
|
});
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[spinBox, setting]() {
|
||||||
|
spinBox->setMinimum(setting->min().toDouble());
|
||||||
|
spinBox->setMaximum(setting->max().toDouble());
|
||||||
|
spinBox->blockSignals(true);
|
||||||
|
spinBox->setValue(setting->current().toDouble());
|
||||||
|
spinBox->blockSignals(false);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EncTtsSetting::eINT:
|
case EncTtsSetting::eINT:
|
||||||
|
@ -135,8 +144,19 @@ QWidget* EncTtsCfgGui::createWidgets(EncTtsSetting* setting)
|
||||||
spinBox->setMinimum(setting->min().toInt());
|
spinBox->setMinimum(setting->min().toInt());
|
||||||
spinBox->setMaximum(setting->max().toInt());
|
spinBox->setMaximum(setting->max().toInt());
|
||||||
spinBox->setValue(setting->current().toInt());
|
spinBox->setValue(setting->current().toInt());
|
||||||
connect(spinBox,SIGNAL(valueChanged(int)),this,SLOT(updateSetting()));
|
|
||||||
value = spinBox;
|
value = spinBox;
|
||||||
|
connect(spinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||||
|
this, [=](int value) {
|
||||||
|
this->m_settingsWidgetsMap.key(spinBox)->setCurrent(value, false);
|
||||||
|
});
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[spinBox, setting]() {
|
||||||
|
spinBox->setMinimum(setting->min().toInt());
|
||||||
|
spinBox->setMaximum(setting->max().toInt());
|
||||||
|
spinBox->blockSignals(true);
|
||||||
|
spinBox->setValue(setting->current().toInt());
|
||||||
|
spinBox->blockSignals(false);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EncTtsSetting::eSTRING:
|
case EncTtsSetting::eSTRING:
|
||||||
|
@ -144,13 +164,31 @@ QWidget* EncTtsCfgGui::createWidgets(EncTtsSetting* setting)
|
||||||
QLineEdit *lineEdit = new QLineEdit(this);
|
QLineEdit *lineEdit = new QLineEdit(this);
|
||||||
lineEdit->setAccessibleName(setting->name());
|
lineEdit->setAccessibleName(setting->name());
|
||||||
lineEdit->setText(setting->current().toString());
|
lineEdit->setText(setting->current().toString());
|
||||||
connect(lineEdit,&QLineEdit::textChanged,this,&EncTtsCfgGui::updateSetting);
|
|
||||||
value = lineEdit;
|
value = lineEdit;
|
||||||
|
|
||||||
|
connect(lineEdit, &QLineEdit::textChanged,
|
||||||
|
this, [=](QString value) {
|
||||||
|
this->m_settingsWidgetsMap.key(lineEdit)->setCurrent(value, false);
|
||||||
|
});
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[lineEdit, setting]() {
|
||||||
|
lineEdit->blockSignals(true);
|
||||||
|
lineEdit->setText(setting->current().toString());
|
||||||
|
lineEdit->blockSignals(false);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EncTtsSetting::eREADONLYSTRING:
|
case EncTtsSetting::eREADONLYSTRING:
|
||||||
{
|
{
|
||||||
value = new QLabel(setting->current().toString(),this);
|
QLabel *label = new QLabel(setting->current().toString(), this);
|
||||||
|
label->setWordWrap(true);
|
||||||
|
value = label;
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[label, setting]() {
|
||||||
|
label->blockSignals(true);
|
||||||
|
label->setText(setting->current().toString());
|
||||||
|
label->blockSignals(false);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EncTtsSetting::eSTRINGLIST:
|
case EncTtsSetting::eSTRINGLIST:
|
||||||
|
@ -160,17 +198,40 @@ QWidget* EncTtsCfgGui::createWidgets(EncTtsSetting* setting)
|
||||||
comboBox->addItems(setting->list());
|
comboBox->addItems(setting->list());
|
||||||
int index = comboBox->findText(setting->current().toString());
|
int index = comboBox->findText(setting->current().toString());
|
||||||
comboBox->setCurrentIndex(index);
|
comboBox->setCurrentIndex(index);
|
||||||
connect(comboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateSetting()));
|
connect(comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||||
|
this, [=](int) {
|
||||||
|
this->m_settingsWidgetsMap.key(comboBox)->setCurrent(comboBox->currentText(), false);
|
||||||
|
});
|
||||||
value = comboBox;
|
value = comboBox;
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[comboBox, setting]() {
|
||||||
|
comboBox->blockSignals(true);
|
||||||
|
comboBox->clear();
|
||||||
|
comboBox->addItems(setting->list());
|
||||||
|
comboBox->setCurrentIndex(comboBox->findText(setting->current().toString()));
|
||||||
|
comboBox->blockSignals(false);
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EncTtsSetting::eBOOL:
|
case EncTtsSetting::eBOOL:
|
||||||
{
|
{
|
||||||
QCheckBox *checkbox = new QCheckBox(this);
|
QCheckBox *checkbox = new QCheckBox(this);
|
||||||
checkbox->setAccessibleName(setting->name());
|
checkbox->setAccessibleName(setting->name());
|
||||||
checkbox->setCheckState(setting->current().toBool() == true ? Qt::Checked : Qt::Unchecked);
|
checkbox->setCheckState(setting->current().toBool() == true
|
||||||
connect(checkbox,&QCheckBox::stateChanged,this,&EncTtsCfgGui::updateSetting);
|
? Qt::Checked : Qt::Unchecked);
|
||||||
|
connect(checkbox, &QCheckBox::stateChanged,
|
||||||
|
this, [=](int value) {
|
||||||
|
this->m_settingsWidgetsMap.key(checkbox)->setCurrent(value, false);
|
||||||
|
});
|
||||||
value = checkbox;
|
value = checkbox;
|
||||||
|
connect(setting, &EncTtsSetting::updateGui, this,
|
||||||
|
[checkbox, setting]() {
|
||||||
|
checkbox->blockSignals(true);
|
||||||
|
checkbox->setCheckState(setting->current().toBool() == true
|
||||||
|
? Qt::Checked : Qt::Unchecked);
|
||||||
|
checkbox->blockSignals(false);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -184,7 +245,6 @@ QWidget* EncTtsCfgGui::createWidgets(EncTtsSetting* setting)
|
||||||
if(value != nullptr)
|
if(value != nullptr)
|
||||||
{
|
{
|
||||||
m_settingsWidgetsMap.insert(setting, value);
|
m_settingsWidgetsMap.insert(setting, value);
|
||||||
connect(setting,&EncTtsSetting::updateGui,this,&EncTtsCfgGui::updateWidget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
@ -196,8 +256,15 @@ QWidget* EncTtsCfgGui::createButton(EncTtsSetting* setting)
|
||||||
{
|
{
|
||||||
QPushButton* browsebtn = new QPushButton(tr("Browse"),this);
|
QPushButton* browsebtn = new QPushButton(tr("Browse"),this);
|
||||||
browsebtn->setIcon(QIcon(":/icons/system-search.svg"));
|
browsebtn->setIcon(QIcon(":/icons/system-search.svg"));
|
||||||
m_browseBtnMap.setMapping(browsebtn,setting);
|
|
||||||
connect(browsebtn,SIGNAL(clicked()),&m_browseBtnMap,SLOT(map()));
|
connect(browsebtn, &QPushButton::clicked, this,
|
||||||
|
[this, setting]()
|
||||||
|
{
|
||||||
|
QString exe = QFileDialog::getOpenFileName(this, tr("Select executable"),
|
||||||
|
setting->current().toString(), "*");
|
||||||
|
if(QFileInfo(exe).isExecutable())
|
||||||
|
setting->setCurrent(exe);
|
||||||
|
});
|
||||||
return browsebtn;
|
return browsebtn;
|
||||||
}
|
}
|
||||||
else if(setting->button() == EncTtsSetting::eREFRESHBTN)
|
else if(setting->button() == EncTtsSetting::eREFRESHBTN)
|
||||||
|
@ -211,133 +278,6 @@ QWidget* EncTtsCfgGui::createButton(EncTtsSetting* setting)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EncTtsCfgGui::updateSetting()
|
|
||||||
{
|
|
||||||
//cast and get the sender widget
|
|
||||||
QWidget* widget = qobject_cast<QWidget*>(QObject::sender());
|
|
||||||
if(widget == nullptr) return;
|
|
||||||
// get the corresponding setting
|
|
||||||
EncTtsSetting* setting = m_settingsWidgetsMap.key(widget);
|
|
||||||
|
|
||||||
// update widget based on setting type
|
|
||||||
switch(setting->type())
|
|
||||||
{
|
|
||||||
case EncTtsSetting::eDOUBLE:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QDoubleSpinBox*)widget)->value(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eINT:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QSpinBox*)widget)->value(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eSTRING:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QLineEdit*)widget)->text(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eREADONLYSTRING:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QLabel*)widget)->text(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eSTRINGLIST:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QComboBox*)widget)->currentText(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eBOOL:
|
|
||||||
{
|
|
||||||
setting->setCurrent(((QCheckBox*)widget)->isChecked(),false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
LOG_WARNING() << "unknown setting type!";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EncTtsCfgGui::updateWidget()
|
|
||||||
{
|
|
||||||
// get sender setting
|
|
||||||
EncTtsSetting* setting = qobject_cast<EncTtsSetting*>(QObject::sender());
|
|
||||||
if(setting == nullptr) return;
|
|
||||||
// get corresponding widget
|
|
||||||
QWidget* widget = m_settingsWidgetsMap.value(setting);
|
|
||||||
|
|
||||||
// update Widget based on setting type
|
|
||||||
switch(setting->type())
|
|
||||||
{
|
|
||||||
case EncTtsSetting::eDOUBLE:
|
|
||||||
{
|
|
||||||
QDoubleSpinBox* spinbox = (QDoubleSpinBox*) widget;
|
|
||||||
spinbox->setMinimum(setting->min().toDouble());
|
|
||||||
spinbox->setMaximum(setting->max().toDouble());
|
|
||||||
spinbox->blockSignals(true);
|
|
||||||
spinbox->setValue(setting->current().toDouble());
|
|
||||||
spinbox->blockSignals(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eINT:
|
|
||||||
{
|
|
||||||
QSpinBox* spinbox = (QSpinBox*) widget;
|
|
||||||
spinbox->setMinimum(setting->min().toInt());
|
|
||||||
spinbox->setMaximum(setting->max().toInt());
|
|
||||||
spinbox->blockSignals(true);
|
|
||||||
spinbox->setValue(setting->current().toInt());
|
|
||||||
spinbox->blockSignals(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eSTRING:
|
|
||||||
{
|
|
||||||
QLineEdit* lineedit = (QLineEdit*) widget;
|
|
||||||
|
|
||||||
lineedit->blockSignals(true);
|
|
||||||
lineedit->setText(setting->current().toString());
|
|
||||||
lineedit->blockSignals(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eREADONLYSTRING:
|
|
||||||
{
|
|
||||||
QLabel* label = (QLabel*) widget;
|
|
||||||
|
|
||||||
label->blockSignals(true);
|
|
||||||
label->setText(setting->current().toString());
|
|
||||||
label->blockSignals(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eSTRINGLIST:
|
|
||||||
{
|
|
||||||
QComboBox* combobox = (QComboBox*) widget;
|
|
||||||
|
|
||||||
combobox->blockSignals(true);
|
|
||||||
combobox->clear();
|
|
||||||
combobox->addItems(setting->list());
|
|
||||||
int index = combobox->findText(setting->current().toString());
|
|
||||||
combobox->setCurrentIndex(index);
|
|
||||||
combobox->blockSignals(false);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EncTtsSetting::eBOOL:
|
|
||||||
{
|
|
||||||
QCheckBox* checkbox = (QCheckBox*) widget;
|
|
||||||
|
|
||||||
checkbox->blockSignals(true);
|
|
||||||
checkbox->setCheckState(setting->current().toBool() == true ? Qt::Checked : Qt::Unchecked);
|
|
||||||
checkbox->blockSignals(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
LOG_WARNING() << "unknown EncTTsSetting";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EncTtsCfgGui::showBusy()
|
void EncTtsCfgGui::showBusy()
|
||||||
{
|
{
|
||||||
|
@ -365,20 +305,4 @@ void EncTtsCfgGui::reject(void)
|
||||||
this->done(0);
|
this->done(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! takes a QObject because of QsignalMapper
|
|
||||||
void EncTtsCfgGui::browse(QObject* settingObj)
|
|
||||||
{
|
|
||||||
// cast top setting
|
|
||||||
EncTtsSetting* setting= qobject_cast<EncTtsSetting*>(settingObj);
|
|
||||||
if(setting == nullptr) return;
|
|
||||||
|
|
||||||
//current path
|
|
||||||
QString curPath = setting->current().toString();
|
|
||||||
// show file dialog
|
|
||||||
QString exe = QFileDialog::getOpenFileName(this, tr("Select executable"), curPath, "*");
|
|
||||||
if(!QFileInfo(exe).isExecutable())
|
|
||||||
return;
|
|
||||||
// set new value, gui will update automatically
|
|
||||||
setting->setCurrent(exe);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -40,16 +40,10 @@ private slots:
|
||||||
void accept(void);
|
void accept(void);
|
||||||
//! close window and dont save configuration
|
//! close window and dont save configuration
|
||||||
void reject(void);
|
void reject(void);
|
||||||
//! updates the corresponding setting from the sending Widget
|
|
||||||
void updateSetting();
|
|
||||||
//! updates corresponding Widget from the sending Setting.
|
|
||||||
void updateWidget();
|
|
||||||
//! shows a busy dialog. counts calls.
|
//! shows a busy dialog. counts calls.
|
||||||
void showBusy();
|
void showBusy();
|
||||||
//! hides the busy dialog, counts calls
|
//! hides the busy dialog, counts calls
|
||||||
void hideBusy();
|
void hideBusy();
|
||||||
//! used via the SignalMapper for all Browse buttons
|
|
||||||
void browse(QObject*);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! creates all dynamic window content
|
//! creates all dynamic window content
|
||||||
|
@ -68,8 +62,6 @@ private:
|
||||||
QList<EncTtsSetting*> m_settingsList;
|
QList<EncTtsSetting*> m_settingsList;
|
||||||
//! Maps settings and the correspondig Widget
|
//! Maps settings and the correspondig Widget
|
||||||
QMap<EncTtsSetting*, QWidget*> m_settingsWidgetsMap;
|
QMap<EncTtsSetting*, QWidget*> m_settingsWidgetsMap;
|
||||||
//! Maps all browse buttons to the corresponding Setting
|
|
||||||
QSignalMapper m_browseBtnMap;
|
|
||||||
//! counter how often busyShow() is called,
|
//! counter how often busyShow() is called,
|
||||||
int m_busyCnt;
|
int m_busyCnt;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue