mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-22 00:26:21 +00:00
settings
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include <cstdio>
|
||||
#include <ctime>
|
||||
#include <format>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
@@ -10,6 +11,7 @@
|
||||
#include <qmainwindow.h>
|
||||
#include <qnamespace.h>
|
||||
#include <qobjectdefs.h>
|
||||
#include <qsettings.h>
|
||||
#include <qsizepolicy.h>
|
||||
#include <qtoolbutton.h>
|
||||
#include <qwidget.h>
|
||||
@@ -45,9 +47,18 @@
|
||||
#include <QMenu>
|
||||
#include <QFileDialog>
|
||||
#include <qabstractitemmodel.h>
|
||||
#include <QFormLayout>
|
||||
#include <QSettings>
|
||||
#include <QLineEdit>
|
||||
#include <QComboBox>
|
||||
#include <QSpinBox>
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include "api.h"
|
||||
#include "parser.h"
|
||||
#include "qscilexer.h"
|
||||
#include "trainWindow.h"
|
||||
|
||||
#define TEXT_LG = 20
|
||||
@@ -125,6 +136,8 @@ QToolButton *practice;
|
||||
QsciScintilla *editor;
|
||||
QMainWindow* editorWindow;
|
||||
|
||||
QSettings *settings;
|
||||
|
||||
const std::regex lastPathElementExp = std::regex("(.+\\/)*(.+)");
|
||||
|
||||
void showBacklabels(Mdem *mdem) {
|
||||
@@ -719,6 +732,81 @@ int main(int argc, char *argv[]) {
|
||||
pickDirectory
|
||||
);
|
||||
});
|
||||
|
||||
auto* settingsWindow = new QWidget;
|
||||
QString configDir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
|
||||
QDir().mkpath(configDir); // Ensure the directory exists
|
||||
QString settingsFile = configDir + "/mdem.ini";
|
||||
settings = new QSettings(settingsFile, QSettings::IniFormat);
|
||||
{ // Settings window.
|
||||
settingsWindow->setWindowTitle("Settings");
|
||||
|
||||
auto formLayout = new QFormLayout;
|
||||
|
||||
/*auto notificationsCheckBox = new QCheckBox("Enable notifications");*/
|
||||
/*formLayout->addRow(notificationsCheckBox);*/
|
||||
|
||||
auto characterWrap = new QSpinBox;
|
||||
characterWrap->setRange(50, 150);
|
||||
formLayout->addRow("Character wrap in code gen:", characterWrap);
|
||||
|
||||
auto* timezone = new QSpinBox;
|
||||
timezone->setRange(-12, 12);
|
||||
formLayout->addRow("Timezone as number (e.g. +2 as 2):", timezone);
|
||||
|
||||
auto* notRemembered = new QSpinBox;
|
||||
notRemembered->setRange(0, 100);
|
||||
formLayout->addRow("Not remembered:", notRemembered);
|
||||
|
||||
auto* hard = new QSpinBox;
|
||||
hard->setRange(0, 100);
|
||||
formLayout->addRow("Hard:", hard);
|
||||
|
||||
auto* medium = new QSpinBox;
|
||||
medium->setRange(0, 100);
|
||||
formLayout->addRow("Medium:", medium);
|
||||
|
||||
auto* easy = new QSpinBox;
|
||||
easy->setRange(0, 100);
|
||||
formLayout->addRow("Easy:", easy);
|
||||
|
||||
auto* saveButton = new QPushButton("Save");
|
||||
auto* mainLayout = new QVBoxLayout;
|
||||
|
||||
// TODO: make defaults and validate settings values
|
||||
characterWrap->setValue(settings->value("characterWrap").toInt());
|
||||
timezone->setValue(settings->value("timezone").toInt());
|
||||
notRemembered->setValue(settings->value("notRemembered").toInt());
|
||||
hard->setValue(settings->value("hard").toInt());
|
||||
medium->setValue(settings->value("medium").toInt());
|
||||
easy->setValue(settings->value("easy").toInt());
|
||||
|
||||
QObject::connect(
|
||||
saveButton,
|
||||
&QPushButton::clicked,
|
||||
[characterWrap, timezone, notRemembered, hard, medium, easy]() {
|
||||
settings->setValue("characterWrap", characterWrap->value());
|
||||
settings->setValue("timezone", timezone->value());
|
||||
settings->setValue("notRemembered", notRemembered->value());
|
||||
settings->setValue("hard", hard->value());
|
||||
settings->setValue("medium", medium->value());
|
||||
settings->setValue("easy", easy->value());
|
||||
});
|
||||
|
||||
mainLayout->addLayout(formLayout);
|
||||
mainLayout->addWidget(saveButton);
|
||||
|
||||
settingsWindow->setLayout(mainLayout);
|
||||
}
|
||||
|
||||
QAction *openSettings = menu->addAction("Settings");
|
||||
QObject::connect(
|
||||
openSettings,
|
||||
&QAction::triggered,
|
||||
[settingsWindow]() {
|
||||
settingsWindow->show();
|
||||
});
|
||||
|
||||
menuBar->addMenu(menu);
|
||||
|
||||
window.setMenuBar(menuBar);
|
||||
|
||||
Reference in New Issue
Block a user