From f0990fae4bc6e54837764c0ded1461b9f1770401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 25 Aug 2013 22:48:41 +0200 Subject: Many improvements PermGen can be tweaked from the settings menu Groups are saved on change/exit Install target is no longer completely broken All the deplibs are now static Added notes dialog Fixed ini file format support (can save strings with newlines, tabs. UTF-8 is explicitly used!) Rename button now uses line breaks so it doesn't grow ever wider (Added a custom tool button subclass) There is now a CAT button. Meow. --- depends/settings/CMakeLists.txt | 2 +- depends/settings/include/inifile.h | 10 ++++------ depends/settings/src/inifile.cpp | 30 +++++++++++++++++++++++------- 3 files changed, 28 insertions(+), 14 deletions(-) (limited to 'depends/settings') diff --git a/depends/settings/CMakeLists.txt b/depends/settings/CMakeLists.txt index e5aae0b7..911b604b 100644 --- a/depends/settings/CMakeLists.txt +++ b/depends/settings/CMakeLists.txt @@ -46,6 +46,6 @@ include_directories(${LIBSETTINGS_INCLUDE_DIR}) add_definitions(-DLIBSETTINGS_LIBRARY) -add_library(libSettings SHARED ${LIBSETTINGS_SOURCES} ${LIBSETTINGS_HEADERS} ${LIBSETTINGS_HEADERS_PRIVATE}) +add_library(libSettings STATIC ${LIBSETTINGS_SOURCES} ${LIBSETTINGS_HEADERS} ${LIBSETTINGS_HEADERS_PRIVATE}) qt5_use_modules(libSettings Core) target_link_libraries(libSettings) diff --git a/depends/settings/include/inifile.h b/depends/settings/include/inifile.h index 94467832..e3ff6b64 100644 --- a/depends/settings/include/inifile.h +++ b/depends/settings/include/inifile.h @@ -13,13 +13,11 @@ * limitations under the License. */ -#ifndef INIFILE_H -#define INIFILE_H - -#include +#pragma once #include #include + #include "libsettings_config.h" // Sectionless INI parser (for instance config files) @@ -33,6 +31,6 @@ public: QVariant get(QString key, QVariant def) const; void set(QString key, QVariant val); + QString unescape(QString orig); + QString escape(QString orig); }; - -#endif // INIFILE_H diff --git a/depends/settings/src/inifile.cpp b/depends/settings/src/inifile.cpp index 43545a4a..b3ee3a90 100644 --- a/depends/settings/src/inifile.cpp +++ b/depends/settings/src/inifile.cpp @@ -19,21 +19,40 @@ #include #include + INIFile::INIFile() { } +QString INIFile::unescape(QString orig) +{ + orig.replace("\\n", "\n"); + orig.replace("\\t", "\t"); + orig.replace("\\\\", "\\"); + return orig; +} +QString INIFile::escape(QString orig) +{ + orig.replace("\\", "\\\\"); + orig.replace("\n", "\\n"); + orig.replace("\t", "\\t"); + return orig; +} + bool INIFile::saveFile(QString fileName) { // TODO Handle errors. QFile file(fileName); file.open(QIODevice::WriteOnly); QTextStream out(&file); + out.setCodec("UTF-8"); for (Iterator iter = begin(); iter != end(); iter++) { - out << iter.key() << "=" << iter.value().toString() << "\n"; + QString value = iter.value().toString(); + value = escape(value); + out << iter.key() << "=" << value << "\n"; } return true; @@ -45,6 +64,7 @@ bool INIFile::loadFile(QString fileName) QFile file(fileName); file.open(QIODevice::ReadOnly); QTextStream in(&file); + in.setCodec("UTF-8"); QStringList lines = in.readAll().split('\n'); for (int i = 0; i < lines.count(); i++) @@ -59,13 +79,9 @@ bool INIFile::loadFile(QString fileName) QString key = line.left(eqPos).trimmed(); QString valueStr = line.right(line.length() - eqPos - 1).trimmed(); + valueStr = unescape(valueStr); + QVariant value(valueStr); - /* - QString dbg = key; - dbg += " = "; - dbg += valueStr; - qDebug(dbg.toLocal8Bit()); - */ this->operator [](key) = value; } -- cgit v1.2.3