summaryrefslogtreecommitdiffstats
path: root/depends/settings/src
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-08-25 22:48:41 +0200
committerPetr Mrázek <peterix@gmail.com>2013-08-25 22:48:41 +0200
commitf0990fae4bc6e54837764c0ded1461b9f1770401 (patch)
tree619dd1c5007d902e2d349bb42e3f66454596713a /depends/settings/src
parentd884f849d60db44f05a6a6b22f4ffcf520900389 (diff)
downloadMultiMC-f0990fae4bc6e54837764c0ded1461b9f1770401.tar
MultiMC-f0990fae4bc6e54837764c0ded1461b9f1770401.tar.gz
MultiMC-f0990fae4bc6e54837764c0ded1461b9f1770401.tar.lz
MultiMC-f0990fae4bc6e54837764c0ded1461b9f1770401.tar.xz
MultiMC-f0990fae4bc6e54837764c0ded1461b9f1770401.zip
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.
Diffstat (limited to 'depends/settings/src')
-rw-r--r--depends/settings/src/inifile.cpp30
1 files changed, 23 insertions, 7 deletions
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 <QTextStream>
#include <QStringList>
+
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;
}