##// END OF EJS Templates
Next var request parameter is now based on previous request instead of...
Next var request parameter is now based on previous request instead of initial variable parameter

File last commit:

r468:4682fc2670df
r807:0f020366c50a
Show More
SqpSettingsDialog.cpp
66 lines | 1.9 KiB | text/x-c | CppLexer
/ gui / src / Settings / SqpSettingsDialog.cpp
#include "Settings/SqpSettingsDialog.h"
#include "ui_SqpSettingsDialog.h"
namespace {
/**
* Performs a bind operation on widgets that can be binded to SciQlop settings
* @param widgets
* @param bind the bind operation
* @sa ISqpSettingsBindable
*/
template <typename BindMethod>
void processBind(const QStackedWidget &widgets, BindMethod bind)
{
auto count = widgets.count();
for (auto i = 0; i < count; ++i) {
// Performs operation if widget is an ISqpSettingsBindable
if (auto sqpSettingsWidget = dynamic_cast<ISqpSettingsBindable *>(widgets.widget(i))) {
bind(*sqpSettingsWidget);
}
}
}
} // namespace
SqpSettingsDialog::SqpSettingsDialog(QWidget *parent)
: QDialog{parent}, ui{new Ui::SqpSettingsDialog}
{
ui->setupUi(this);
// Connection to change the current page to the selection of an entry in the list
connect(ui->listWidget, &QListWidget::currentRowChanged, ui->stackedWidget,
&QStackedWidget::setCurrentIndex);
}
SqpSettingsDialog::~SqpSettingsDialog() noexcept
{
delete ui;
}
void SqpSettingsDialog::loadSettings()
{
// Performs load on all widgets that can be binded to SciQlop settings
processBind(*ui->stackedWidget,
[](ISqpSettingsBindable &bindable) { bindable.loadSettings(); });
}
void SqpSettingsDialog::saveSettings() const
{
// Performs save on all widgets that can be binded to SciQlop settings
processBind(*ui->stackedWidget,
[](ISqpSettingsBindable &bindable) { bindable.saveSettings(); });
}
void SqpSettingsDialog::registerWidget(const QString &name, QWidget *widget) noexcept
{
auto newItem = new QListWidgetItem{ui->listWidget};
newItem->setText(name);
ui->stackedWidget->addWidget(widget);
// Selects widget if it's the first in the dialog
if (ui->listWidget->count() == 1) {
ui->listWidget->setCurrentItem(newItem);
}
}