Do not restart settings timer on forced write
This commit is contained in:
parent
c0e20dacf1
commit
e2e7dbb0e5
2 changed files with 7 additions and 33 deletions
|
|
@ -85,34 +85,20 @@ void Manager::fill() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::write(bool force) {
|
void Manager::write(bool force) {
|
||||||
if (!_jsonWriteTimer.isActive()) {
|
if (force) {
|
||||||
_jsonWriteTimer.start(kWriteJsonTimeout);
|
_jsonWriteTimer.stop();
|
||||||
} else if (_jsonWriteTimer.remainingTime() <= 0 || (force && _jsonWriteTimer.isActive())) {
|
|
||||||
writeTimeout();
|
writeTimeout();
|
||||||
|
} else if (!_jsonWriteTimer.isActive()) {
|
||||||
|
_jsonWriteTimer.start(kWriteJsonTimeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::clear() {
|
|
||||||
_errors.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
const QStringList &Manager::errors() const {
|
|
||||||
return _errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Manager::readCustomFile() {
|
bool Manager::readCustomFile() {
|
||||||
QFile file(CustomFilePath());
|
QFile file(CustomFilePath());
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const auto guard = gsl::finally([&] {
|
|
||||||
if (!_errors.isEmpty()) {
|
|
||||||
_errors.push_front(qsl("While reading file '%1'..."
|
|
||||||
).arg(file.fileName()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!file.open(QIODevice::ReadOnly)) {
|
if (!file.open(QIODevice::ReadOnly)) {
|
||||||
_errors.push_back(qsl("Could not read the file!"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
auto error = QJsonParseError{ 0, QJsonParseError::NoError };
|
auto error = QJsonParseError{ 0, QJsonParseError::NoError };
|
||||||
|
|
@ -122,11 +108,8 @@ bool Manager::readCustomFile() {
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
if (error.error != QJsonParseError::NoError) {
|
if (error.error != QJsonParseError::NoError) {
|
||||||
_errors.push_back(qsl("Failed to parse! Error: %2"
|
|
||||||
).arg(error.errorString()));
|
|
||||||
return true;
|
return true;
|
||||||
} else if (!document.isObject()) {
|
} else if (!document.isObject()) {
|
||||||
_errors.push_back(qsl("Failed to parse! Error: object expected"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const auto settings = document.object();
|
const auto settings = document.object();
|
||||||
|
|
@ -271,7 +254,9 @@ void Manager::writeCurrentSettings() {
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
if (!file.open(QIODevice::WriteOnly)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (_jsonWriteTimer.isActive()) {
|
||||||
writing();
|
writing();
|
||||||
|
}
|
||||||
const char *customHeader = R"HEADER(
|
const char *customHeader = R"HEADER(
|
||||||
// This file was automatically generated from current settings
|
// This file was automatically generated from current settings
|
||||||
// It's better to edit it with app closed, so there will be no rewrites
|
// It's better to edit it with app closed, so there will be no rewrites
|
||||||
|
|
@ -337,13 +322,8 @@ void Write() {
|
||||||
Data.write();
|
Data.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
const QStringList &Errors() {
|
|
||||||
return Data.errors();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Finish() {
|
void Finish() {
|
||||||
Data.write(true);
|
Data.write(true);
|
||||||
Data.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace KotatoSettings
|
} // namespace KotatoSettings
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,8 @@ class Manager : public QObject {
|
||||||
public:
|
public:
|
||||||
Manager();
|
Manager();
|
||||||
void fill();
|
void fill();
|
||||||
void clear();
|
|
||||||
void write(bool force = false);
|
void write(bool force = false);
|
||||||
|
|
||||||
const QStringList &errors() const;
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void writeTimeout();
|
void writeTimeout();
|
||||||
|
|
||||||
|
|
@ -31,7 +28,6 @@ private:
|
||||||
bool readCustomFile();
|
bool readCustomFile();
|
||||||
void writing();
|
void writing();
|
||||||
|
|
||||||
QStringList _errors;
|
|
||||||
QTimer _jsonWriteTimer;
|
QTimer _jsonWriteTimer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -40,6 +36,4 @@ void Start();
|
||||||
void Write();
|
void Write();
|
||||||
void Finish();
|
void Finish();
|
||||||
|
|
||||||
const QStringList &Errors();
|
|
||||||
|
|
||||||
} // namespace KotatoSettings
|
} // namespace KotatoSettings
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue