Skip to content

Commit 7cddccd

Browse files
committed
Support loadConfig & saveConfig API functions.
1 parent 607b575 commit 7cddccd

File tree

6 files changed

+32
-4
lines changed

6 files changed

+32
-4
lines changed

config-window.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ void LibMain::cb_connections_changed(int) {
4040
s["XN"]["port"] = form.ui.cb_serial_port->currentText();
4141
s["XN"]["baudrate"] = form.ui.cb_serial_speed->currentText().toInt();
4242
s["XN"]["flowcontrol"] = form.ui.cb_serial_flowcontrol->currentIndex();
43-
44-
s.save(_CONFIG_FILENAME);
4543
}
4644

4745
void LibMain::fillConnectionsCbs() {

lib-api.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,27 @@ unsigned int features() {
3131
return 0; // no features yet
3232
}
3333

34+
///////////////////////////////////////////////////////////////////////////////
35+
// Config
36+
37+
int loadConfig(char16_t *filename) {
38+
if (lib.xn.connected())
39+
return TRK_FILE_DEVICE_OPENED;
40+
try {
41+
lib.config_filename = QString::fromUtf16(filename);
42+
lib.s.load(lib.config_filename);
43+
lib.fillConnectionsCbs();
44+
} catch (...) { return TRK_FILE_CANNOT_ACCESS; }
45+
return 0;
46+
}
47+
48+
int saveConfig(char16_t *filename) {
49+
try {
50+
lib.s.save(QString::fromUtf16(filename));
51+
} catch (...) { return TRK_FILE_CANNOT_ACCESS; }
52+
return 0;
53+
}
54+
3455
///////////////////////////////////////////////////////////////////////////////
3556
// Connect / disconnect
3657

lib-api.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ XN_SHARED_EXPORT bool CALL_CONV apiSupportsVersion(unsigned int version);
3535
XN_SHARED_EXPORT int CALL_CONV apiSetVersion(unsigned int version);
3636
XN_SHARED_EXPORT unsigned int CALL_CONV features();
3737

38+
XN_SHARED_EXPORT int CALL_CONV loadConfig(char16_t *filename);
39+
XN_SHARED_EXPORT int CALL_CONV saveConfig(char16_t *filename);
40+
3841
XN_SHARED_EXPORT int CALL_CONV connect();
3942
XN_SHARED_EXPORT int CALL_CONV disconnect();
4043
XN_SHARED_EXPORT bool CALL_CONV connected();

lib-errors.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef LIB_ERRORS_H
22
#define LIB_ERRORS_H
33

4+
constexpr int TRK_FILE_CANNOT_ACCESS = 1010;
5+
constexpr int TRK_FILE_DEVICE_OPENED = 1011;
46
constexpr int TRK_ALREADY_OPENNED = 2001;
57
constexpr int TRK_CANNOT_OPEN_PORT = 2002;
68
constexpr int TRK_NOT_OPENED = 2011;

lib-main.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ LibMain::LibMain() {
1919
QObject::connect(&xn, SIGNAL(onTrkStatusChanged(Xn::TrkStatus)), this,
2020
SLOT(xnOnTrkStatusChanged(Xn::TrkStatus)));
2121

22-
s.load(_CONFIG_FILENAME);
22+
this->config_filename = _DEFAULT_CONFIG_FILENAME;
23+
s.load(this->config_filename);
2324
this->guiInit();
2425
log("Library loaded.", LogLevel::Info);
2526
}
@@ -28,6 +29,8 @@ LibMain::~LibMain() {
2829
try {
2930
if (xn.connected())
3031
xn.disconnect();
32+
if (this->config_filename != "")
33+
this->s.save(this->config_filename);
3134
} catch (...) {
3235
// No exceptions in destructor!
3336
}

lib-main.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Xn {
1414

1515
///////////////////////////////////////////////////////////////////////////////
1616

17-
const QString _CONFIG_FILENAME = "trakce-xn.ini";
17+
const QString _DEFAULT_CONFIG_FILENAME = "trakce-xn.ini";
1818

1919
class ConfigWindow : public QMainWindow {
2020
Q_OBJECT
@@ -30,6 +30,7 @@ class LibMain : public QObject {
3030
ConfigWindow form;
3131
XnEvents events;
3232
Settings s;
33+
QString config_filename = "";
3334
unsigned int api_version = 0x0001;
3435
bool gui_config_changing = false;
3536
bool opening = false;

0 commit comments

Comments
 (0)