From 9166e37c39a59c308ffd7f92f672ff7a0e6b2db7 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Fri, 26 Mar 2021 17:08:09 +0100 Subject: [PATCH] [settings] projectSettings dialog --- projectsettings.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++++ projectsettings.h | 39 +++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 projectsettings.cpp create mode 100644 projectsettings.h diff --git a/projectsettings.cpp b/projectsettings.cpp new file mode 100644 index 0000000..debc79d --- /dev/null +++ b/projectsettings.cpp @@ -0,0 +1,75 @@ +#include "projectsettings.h" +#include +#include +#include +#include + +ProjectSettings::ProjectSettings(QWidget *parent) : QDialog(parent) { + QDialogButtonBox* bb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + + QPushButton* okBtn = bb->button(QDialogButtonBox::Ok); + okBtn->setAutoDefault(true); + okBtn->setDefault(true); + connect(okBtn, SIGNAL(clicked()), this, SLOT(accept())); + + QPushButton* cancelBtn = bb->button(QDialogButtonBox::Cancel); + cancelBtn->setAutoDefault(false); + cancelBtn->setDefault(false); + connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject())); + + projectEdit = new QLineEdit(); + subjectEdit = new QLineEdit(); + experimentEdit = new QLineEdit(); + experimenterEdit = new QLineEdit(); + conditionEdit = new QLineEdit(); + commentEdit = new QLineEdit(); + subjectEdit = new QLineEdit(); + setupEdit = new QLineEdit(); + + QFormLayout *l = new QFormLayout(); + l->addRow(tr("Project name:"), projectEdit); + l->addRow(tr("Experimenter:"), experimenterEdit); + l->addRow(tr("Experiment name:"), experimentEdit); + l->addRow(tr("Experimental condition:"), conditionEdit); + l->addRow(tr("Subject id:"),subjectEdit); + l->addRow(tr("Setup:"), setupEdit); + l->addRow(tr("Comment:"), commentEdit); + + projectEdit->setText(settings.value("project/name", "None").toString()); + experimentEdit->setText(settings.value("project/experiment", "None").toString()); + experimenterEdit->setText(settings.value("project/experimenter", "None").toString()); + conditionEdit->setText(settings.value("project/condition", "None").toString()); + setupEdit->setText(settings.value("project/setup", "None").toString()); + commentEdit->setText(settings.value("project/comment", "None").toString()); + subjectEdit->setText(settings.value("project/subject", "None").toString()); + + QVBoxLayout *vbox = new QVBoxLayout(); + vbox->addLayout(l); + vbox->addWidget(bb); + this->setLayout(vbox); +} + +ProjectSettings::~ProjectSettings(){} + +void ProjectSettings::accept() { + this->metadata.projectName = projectEdit->text(); + this->metadata.experiment = experimentEdit->text(); + this->metadata.condition = conditionEdit->text(); + this->metadata.experimenter = experimenterEdit->text(); + this->metadata.subject = subjectEdit->text(); + this->metadata.comment = commentEdit->text(); + this->metadata.setupName = setupEdit->text(); + + settings.setValue("project/name", projectEdit->text()); + settings.setValue("project/experiment", experimentEdit->text()); + settings.setValue("project/condition", conditionEdit->text()); + settings.setValue("project/experimenter", experimenterEdit->text()); + settings.setValue("project/subject", subjectEdit->text()); + settings.setValue("project/setup", setupEdit->text()); + settings.setValue("project/comment", commentEdit->text()); + QDialog::accept(); +} + +ProjectMetadata ProjectSettings::getMetadata() { + return metadata; +} \ No newline at end of file diff --git a/projectsettings.h b/projectsettings.h new file mode 100644 index 0000000..7ed5120 --- /dev/null +++ b/projectsettings.h @@ -0,0 +1,39 @@ +#ifndef PROJECTSETTINGS_H +#define PROJECTSETTINGS_H + +#include +#include +#include + +struct ProjectMetadata +{ + QString projectName; + QString experimenter; + QString experiment; + QString condition; + QString subject; + QString setupName; + QString comment; +}; + + +//! [0] +class ProjectSettings : public QDialog +{ + Q_OBJECT + public: + ProjectSettings(QWidget *parent = nullptr); + ~ProjectSettings(); + + ProjectMetadata getMetadata(); + + private: + ProjectMetadata metadata; + QSettings settings; + QLineEdit *projectEdit, *experimentEdit, *experimenterEdit, *subjectEdit, *setupEdit, *conditionEdit, *commentEdit; + + void accept(); + +}; + +#endif \ No newline at end of file