| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #include "settingspage.h"
- #include "appevent.h"
- #include "qglobal.h"
- #include "qjsonobject.h"
- #include "qlineedit.h"
- #include "qpainter.h"
- #include "qspinbox.h"
- #include "tmodel.h"
- #include "widgets/examsmodel.h"
- #include "widgets/pagination.h"
- #include <QCheckBox>
- #include <QComboBox>
- #include <QDialog>
- #include <QFileDialog>
- #include <QHeaderView>
- #include <QLabel>
- #include <QLineEdit>
- #include <QStatusBar>
- #include <QStyledItemDelegate>
- #include <QTableView>
- #include <QJsonArray>
- #include <layoutbuilder.h>
- #include "cwf/sqlquery.h"
- #include <cwf/constants.h>
- #include <cwf/cppwebapplication.h>
- #include <cwf/filter.h>
- #include <cwf/sqldatabasestorage.h>
- #include "teachertr.h"
- static CWF::SqlDatabaseStorage storage("QSQLITE", "localhost", "data.db", "", "");
- SettingsPage::SettingsPage(QWidget *parent)
- : QWidget{parent}
- {
- examContentDirLineEdit = new QLineEdit;
- windowXSpinBox = new QSpinBox;
- windowYSpinBox = new QSpinBox;
- windowXSpinBox->setRange(0, 3000);
- windowYSpinBox->setRange(0, 3000);
- examAnswerDirLineEdit = new QLineEdit;
- lockMaxTimeSpinBox = new QSpinBox;
- lockMaxTimeSpinBox->setRange(0, 999999999);
- lockMaxTimeSpinBox->setToolTip(tr("Setting to 0 means unlimited time"));
- // 教师端
- answerDirLineEdit = new QLineEdit;
- using namespace Layouting;
- auto student = Group{title(tr("student configuration")),
- Form{tr("exam content dir:"),
- examContentDirLineEdit,
- PushButton{text(tr("open dir")), onClicked([this]() {
- const QString dir = QFileDialog::getExistingDirectory(
- this,
- QObject::tr("选择目录"),
- "./",
- QFileDialog::ShowDirsOnly
- | QFileDialog::DontResolveSymlinks);
- examContentDirLineEdit->setText(dir);
- })},
- br,
- tr("window x:"),
- windowXSpinBox,
- tr("window y:"),
- windowYSpinBox,
- st,
- br,
- tr("exam answer dir:"),
- examAnswerDirLineEdit,
- PushButton{text(tr("open dir")), onClicked([this]() {
- const QString dir = QFileDialog::getExistingDirectory(
- this,
- QObject::tr("选择目录"),
- "./",
- QFileDialog::ShowDirsOnly
- | QFileDialog::DontResolveSymlinks);
- examAnswerDirLineEdit->setText(dir);
- })},
- br,
- tr("lock max time"),
- lockMaxTimeSpinBox,
- tr("s")}};
- auto teacher = Group{title(tr("teacher configuration")),
- Form{
- tr("answer dir:"),
- answerDirLineEdit,
- PushButton{text(tr("open dir")), onClicked([this]() {
- const QString dir = QFileDialog::getExistingDirectory(
- this,
- QObject::tr("选择目录"),
- "./",
- QFileDialog::ShowDirsOnly
- | QFileDialog::DontResolveSymlinks);
- answerDirLineEdit->setText(dir);
- })},
- }};
- Column{student, teacher}.attachTo(this);
- // init config
- const QVariant examContentDir = AppEvent::instance()->configValue("examContentDir");
- const QVariant windowX = AppEvent::instance()->configValue("windowX");
- const QVariant windowY = AppEvent::instance()->configValue("windowY");
- const QVariant examAnswerDir = AppEvent::instance()->configValue("examAnswerDir");
- const QVariant lockMaxTime = AppEvent::instance()->configValue("lockMaxTime");
- examContentDirLineEdit->setText(examContentDir.toString());
- windowXSpinBox->setValue(windowX.toInt());
- windowYSpinBox->setValue(windowY.toInt());
- examAnswerDirLineEdit->setText(examAnswerDir.toString());
- lockMaxTimeSpinBox->setValue(lockMaxTime.toInt());
- // 教师端
- const QVariant answerDir = AppEvent::instance()->configValue("answerDir");
- answerDirLineEdit->setText(answerDir.toString());
- // 学生端
- connect(examContentDirLineEdit, &QLineEdit::textChanged, [this](const QString &) {
- const QString &test = examContentDirLineEdit->text();
- AppEvent::instance()->setConfigValue("examContentDir", test);
- });
- connect(windowXSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), [](int value) {
- AppEvent::instance()->setConfigValue("windowX", value);
- });
- connect(windowYSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), [](int value) {
- AppEvent::instance()->setConfigValue("windowY", value);
- });
- connect(examAnswerDirLineEdit, &QLineEdit::textChanged, [this](const QString &) {
- const QString &test = examAnswerDirLineEdit->text();
- AppEvent::instance()->setConfigValue("examAnswerDir", test);
- });
- connect(lockMaxTimeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), [](int value) {
- AppEvent::instance()->setConfigValue("lockMaxTime", value);
- });
- // 教师端
- connect(answerDirLineEdit, &QLineEdit::textChanged, [this](const QString &) {
- const QString &test = answerDirLineEdit->text();
- AppEvent::instance()->setConfigValue("answerDir", test);
- });
- }
|