summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2014-07-15 20:45:29 +0200
committerTannin <devnull@localhost>2014-07-15 20:45:29 +0200
commit0a152ceadfc90650359b15dc448751f702e1070c (patch)
tree02e468fb58330d25fd765974e48ab681bf360cab /src/pluginlist.cpp
parentd412060d59b1597ae1d11d793662610e90863fc9 (diff)
parent5718af351034c1936a91a3782651733dfecdc4e5 (diff)
Merge
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 4f363900..9f0924a2 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -469,20 +469,21 @@ void PluginList::saveTo(const QString &pluginFileName
writeLockedOrder(lockedOrderFileName);
if (hideUnchecked) {
- QFile deleterFile(deleterFileName);
- deleterFile.open(QIODevice::WriteOnly);
- deleterFile.resize(0);
- deleterFile.write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8());
+ SafeWriteFile deleterFile(deleterFileName);
+ deleterFile->write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8());
for (size_t i = 0; i < m_ESPs.size(); ++i) {
int priority = m_ESPsByPriority[i];
if (!m_ESPs[priority].m_Enabled) {
- deleterFile.write(m_ESPs[priority].m_Name.toUtf8());
- deleterFile.write("\r\n");
+ deleterFile->write(m_ESPs[priority].m_Name.toUtf8());
+ deleterFile->write("\r\n");
}
}
- deleterFile.close();
- qDebug("%s saved", QDir::toNativeSeparators(deleterFileName).toUtf8().constData());
+ if (deleterFile.commitIfDifferent(m_LastSaveHash[deleterFileName])) {
+ qDebug("%s saved", qPrintable(QDir::toNativeSeparators(deleterFileName)));
+ }
+ } else {
+ shellDelete(QStringList() << deleterFileName);
}
m_SaveTimer.stop();
@@ -744,7 +745,8 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const
{
int index = modelIndex.row();
- if (role == Qt::DisplayRole) {
+ if ((role == Qt::DisplayRole)
+ || (role == Qt::EditRole)) {
switch (modelIndex.column()) {
case COL_NAME: {
return m_ESPs[index].m_Name;
@@ -860,6 +862,7 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const
bool PluginList::setData(const QModelIndex &modIndex, const QVariant &value, int role)
{
+ bool result = false;
if (role == Qt::CheckStateRole) {
m_ESPs[modIndex.row()].m_Enabled = value.toInt() == Qt::Checked;
emit dataChanged(modIndex, modIndex);
@@ -867,10 +870,19 @@ bool PluginList::setData(const QModelIndex &modIndex, const QVariant &value, int
refreshLoadOrder();
startSaveTime();
- return true;
- } else {
- return false;
+ result = true;
+ } else if (role == Qt::EditRole) {
+ if (modIndex.column() == COL_PRIORITY) {
+ bool ok = false;
+ int newPriority = value.toInt(&ok);
+ if (ok) {
+ setPluginPriority(modIndex.row(), newPriority);
+ result = true;
+ }
+ refreshLoadOrder();
+ }
}
+ return result;
}
@@ -902,6 +914,9 @@ Qt::ItemFlags PluginList::flags(const QModelIndex &modelIndex) const
if (!m_ESPs[index].m_ForceEnabled) {
result |= Qt::ItemIsUserCheckable | Qt::ItemIsDragEnabled;
}
+ if (modelIndex.column() == COL_PRIORITY) {
+ result |= Qt::ItemIsEditable;
+ }
} else {
result |= Qt::ItemIsDropEnabled;
}