]> cloud.milkyroute.net Git - dolphin.git/blob - src/views/versioncontrol/updateitemstatesthread.cpp
Remove references to KServiceTypeTrader in comments
[dolphin.git] / src / views / versioncontrol / updateitemstatesthread.cpp
1 /*
2 * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "updateitemstatesthread.h"
8
9
10 UpdateItemStatesThread::UpdateItemStatesThread(KVersionControlPlugin* plugin,
11 const QMap<QString, QVector<VersionControlObserver::ItemState> >& itemStates) :
12 QThread(),
13 m_globalPluginMutex(nullptr),
14 m_plugin(plugin),
15 m_itemStates(itemStates)
16 {
17 // Several threads may share one instance of a plugin. A global
18 // mutex is required to serialize the retrieval of version control
19 // states inside run().
20 static QMutex globalMutex;
21 m_globalPluginMutex = &globalMutex;
22 }
23
24 UpdateItemStatesThread::~UpdateItemStatesThread()
25 {
26 }
27
28 void UpdateItemStatesThread::run()
29 {
30 Q_ASSERT(!m_itemStates.isEmpty());
31 Q_ASSERT(m_plugin);
32
33 QMutexLocker pluginLocker(m_globalPluginMutex);
34 QMap<QString, QVector<VersionControlObserver::ItemState> >::iterator it = m_itemStates.begin();
35 for (; it != m_itemStates.end(); ++it) {
36 if (m_plugin->beginRetrieval(it.key())) {
37 QVector<VersionControlObserver::ItemState>& items = it.value();
38 const int count = items.count();
39 for (int i = 0; i < count; ++i) {
40 const KFileItem& item = items.at(i).first;
41 const KVersionControlPlugin::ItemVersion version = m_plugin->itemVersion(item);
42 items[i].second = version;
43 }
44 }
45
46 m_plugin->endRetrieval();
47 }
48 }
49
50 QMap<QString, QVector<VersionControlObserver::ItemState> > UpdateItemStatesThread::itemStates() const
51 {
52 return m_itemStates;
53 }
54