summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-08-25 13:15:23 +0200
committerTannin <devnull@localhost>2013-08-25 13:15:23 +0200
commitbf0db9c218edde72750426e2fb273359497db5bb (patch)
treeaaf1c7370fcbd8621f6e2e0e637ec5248eda2e3e /src/pluginlist.cpp
parent8fcf21e771487c9457d62b1541bf29b06f268079 (diff)
- position of splitter in main window is now saved and restored
- confirmation dialog before enabling/disabling all plugins - bugfix: GetPrivateProfileString-hook potentially accessed buffer that is allowed to be NULL - bugfix: attempt to extract an archive crashed MO in 0.99.2 - bugfix: archive list wasn't saved correctly in 0.99.2 - bugfix: plugins.txt was incorrectly interpreted as utf-8
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index dc2410ee..95780c18 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -78,6 +78,15 @@ PluginList::PluginList(QObject *parent)
{
m_SaveTimer.setSingleShot(true);
connect(&m_SaveTimer, SIGNAL(timeout()), this, SIGNAL(saveTimer()));
+
+ m_Utf8Codec = QTextCodec::codecForName("utf-8");
+ m_LocalCodec = QTextCodec::codecForName("Windows-1252");
+
+ if (m_LocalCodec == NULL) {
+ qCritical("required 8-bit string-encoding not supported.");
+ m_LocalCodec = m_Utf8Codec;
+ }
+
}
@@ -203,21 +212,27 @@ void PluginList::enableESP(const QString &name)
void PluginList::enableAll()
{
- for (std::vector<ESPInfo>::iterator iter = m_ESPs.begin(); iter != m_ESPs.end(); ++iter) {
- iter->m_Enabled = true;
+ if (QMessageBox::question(NULL, tr("Confirm"), tr("Really enable all plugins?"),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ for (std::vector<ESPInfo>::iterator iter = m_ESPs.begin(); iter != m_ESPs.end(); ++iter) {
+ iter->m_Enabled = true;
+ }
+ startSaveTime();
}
- startSaveTime();
}
void PluginList::disableAll()
{
- for (std::vector<ESPInfo>::iterator iter = m_ESPs.begin(); iter != m_ESPs.end(); ++iter) {
- if (!iter->m_ForceEnabled) {
- iter->m_Enabled = false;
+ if (QMessageBox::question(NULL, tr("Confirm"), tr("Really disable all plugins?"),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ for (std::vector<ESPInfo>::iterator iter = m_ESPs.begin(); iter != m_ESPs.end(); ++iter) {
+ if (!iter->m_ForceEnabled) {
+ iter->m_Enabled = false;
+ }
}
+ startSaveTime();
}
- startSaveTime();
}
@@ -300,7 +315,7 @@ void PluginList::readEnabledFrom(const QString &fileName)
QByteArray line = file.readLine();
QString modName;
if ((line.size() > 0) && (line.at(0) != '#')) {
- modName = QString::fromUtf8(line.trimmed().constData());
+ modName = m_LocalCodec->toUnicode(line.trimmed().constData());
}
if (modName.size() > 0) {
std::map<QString, int>::iterator iter = m_ESPsByName.find(modName.toLower());
@@ -351,22 +366,7 @@ void PluginList::writePlugins(const QString &fileName, bool writeUnchecked) cons
throw MyException(tr("failed to open output file: %1").arg(fileName));
}
- QTextCodec *textCodec = writeUnchecked ? QTextCodec::codecForName("utf-8")
- : QTextCodec::codecForName("Windows-1252");
-
- if (textCodec == NULL) {
- QList<QByteArray> encodingList = QTextCodec::availableCodecs();
- QString encodings;
- QTextStream temp(&encodings);
- foreach (QByteArray encoding, encodingList) {
- temp << encoding << ", ";
- }
- qCritical("required string-encoding not supported. Available codecs: %s",
- encodings.toUtf8().constData());
-
- throw std::runtime_error(QObject::tr("encoding error, please report this as a bug and include the file "
- "mo_interface.log!").toUtf8().constData());
- }
+ QTextCodec *textCodec = writeUnchecked ? m_Utf8Codec : m_LocalCodec;
file.resize(0);