summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-03-29 10:26:19 +0100
committerTannin <devnull@localhost>2013-03-29 10:26:19 +0100
commitd9a6dbb916236531a96b9b84b06e7be666c05d56 (patch)
tree2d143e96ae60a27738a16b310c712145d4a0aa55 /src/pluginlist.cpp
parentf682f82db5d8ba514e927c9d7e88107348d5c32a (diff)
parenta47d9717884953b18b4b29e596d3e5a7d766e56e (diff)
Merge
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index aa7bf4a3..dfac8ccb 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -73,9 +73,11 @@ bool ByDate(const PluginList::ESPInfo& LHS, const PluginList::ESPInfo& RHS) {
}
PluginList::PluginList(QObject *parent)
- : QAbstractTableModel(parent), m_Modified(false),
- m_FontMetrics(QFont())
+ : QAbstractTableModel(parent),
+ m_FontMetrics(QFont()), m_SaveTimer(this)
{
+ m_SaveTimer.setSingleShot(true);
+ connect(&m_SaveTimer, SIGNAL(timeout()), this, SIGNAL(saveTimer()));
}
@@ -192,7 +194,7 @@ void PluginList::enableESP(const QString &name)
if (iter != m_ESPsByName.end()) {
m_ESPs[iter->second].m_Enabled = true;
- m_Modified = true;
+ startSaveTime();
} else {
reportError(tr("esp not found: %1").arg(name));
}
@@ -204,8 +206,7 @@ void PluginList::enableAll()
for (std::vector<ESPInfo>::iterator iter = m_ESPs.begin(); iter != m_ESPs.end(); ++iter) {
iter->m_Enabled = true;
}
- m_Modified = true;
- emit esplist_changed();
+ startSaveTime();
}
@@ -216,8 +217,7 @@ void PluginList::disableAll()
iter->m_Enabled = false;
}
}
- m_Modified = true;
- emit esplist_changed();
+ startSaveTime();
}
@@ -308,7 +308,7 @@ void PluginList::readEnabledFrom(const QString &fileName)
m_ESPs[iter->second].m_Enabled = true;
} else {
qWarning("plugin %s not found", modName.toUtf8().constData());
- m_Modified = true;
+ startSaveTime();
}
}
}
@@ -416,10 +416,6 @@ void PluginList::writeLockedOrder(const QString &fileName) const
void PluginList::saveTo(const QString &pluginFileName, const QString &loadOrderFileName, const QString &lockedOrderFileName, const QString& deleterFileName, bool hideUnchecked) const
{
- if (!m_Modified) {
- return;
- }
-
writePlugins(pluginFileName, false);
writePlugins(loadOrderFileName, true);
writeLockedOrder(lockedOrderFileName);
@@ -441,7 +437,7 @@ void PluginList::saveTo(const QString &pluginFileName, const QString &loadOrderF
qDebug("%s saved", QDir::toNativeSeparators(deleterFileName).toUtf8().constData());
}
- m_Modified = false;
+ m_SaveTimer.stop();
}
@@ -507,8 +503,7 @@ void PluginList::lockESPIndex(int index, bool lock)
m_LockedOrder.erase(iter);
}
}
- m_Modified = true;
- emit esplist_changed();
+ startSaveTime();
}
@@ -542,7 +537,7 @@ void PluginList::refreshLoadOrder()
// locked esp exists
// find the location to insert at
- while ((targetPrio < static_cast<int>(m_ESPs.size())) &&
+ while ((targetPrio < static_cast<int>(m_ESPs.size() - 1)) &&
(m_ESPs[m_ESPsByPriority[targetPrio]].m_LoadOrder < iter->first)) {
if (QString::compare(m_ESPs[m_ESPsByPriority[targetPrio]].m_Name, iter->second) != 0) {
++targetPrio;
@@ -559,7 +554,7 @@ void PluginList::refreshLoadOrder()
setPluginPriority(index, temp);
m_ESPs[index].m_LoadOrder = iter->first;
syncLoadOrder();
- m_Modified = true;
+ startSaveTime();
}
}
}
@@ -657,8 +652,7 @@ bool PluginList::setData(const QModelIndex &index, const QVariant &value, int ro
emit layoutAboutToBeChanged();
refreshLoadOrder();
- m_Modified = true;
- emit esplist_changed();
+ startSaveTime();
emit layoutChanged();
return true;
@@ -772,14 +766,20 @@ void PluginList::changePluginPriority(std::vector<int> rows, int newPriority)
}
refreshLoadOrder();
- emit esplist_changed();
-
- m_Modified = true;
+ startSaveTime();
emit layoutChanged();
}
+void PluginList::startSaveTime()
+{
+ if (!m_SaveTimer.isActive()) {
+ m_SaveTimer.start(2000);
+ }
+}
+
+
bool PluginList::dropMimeData(const QMimeData *mimeData, Qt::DropAction action, int row, int, const QModelIndex &parent)
{
if (action == Qt::IgnoreAction) {