diff options
| author | Tannin <devnull@localhost> | 2013-03-29 10:26:19 +0100 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-03-29 10:26:19 +0100 |
| commit | d9a6dbb916236531a96b9b84b06e7be666c05d56 (patch) | |
| tree | 2d143e96ae60a27738a16b310c712145d4a0aa55 /src/pluginlist.cpp | |
| parent | f682f82db5d8ba514e927c9d7e88107348d5c32a (diff) | |
| parent | a47d9717884953b18b4b29e596d3e5a7d766e56e (diff) | |
Merge
Diffstat (limited to 'src/pluginlist.cpp')
| -rw-r--r-- | src/pluginlist.cpp | 44 |
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) { |
