Do not restart settings timer on forced write

This commit is contained in:
Eric Kotato 2019-10-14 05:27:31 +03:00
parent c0e20dacf1
commit e2e7dbb0e5
2 changed files with 7 additions and 33 deletions

View file

@ -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

View file

@ -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