#include "updateitemstatesthread.h"
+#include <kversioncontrolplugin2.h>
+
#include <QMutexLocker>
UpdateItemStatesThread::UpdateItemStatesThread() :
Q_ASSERT(!m_itemStates.isEmpty());
Q_ASSERT(m_plugin);
- // The items from m_itemStates may be located in different directory levels. The version
- // plugin requires the root directory for KVersionControlPlugin::beginRetrieval(). Instead
- // of doing an expensive search, we utilize the knowledge of the implementation of
- // VersionControlObserver::addDirectory() to be sure that the last item contains the root.
QMutexLocker itemLocker(&m_itemMutex);
- const QString directory = m_itemStates.last().item.url().directory(KUrl::AppendTrailingSlash);
+ const QString directory = m_itemStates.first().item.url().directory(KUrl::AppendTrailingSlash);
itemLocker.unlock();
QMutexLocker pluginLocker(m_globalPluginMutex);
if (m_plugin->beginRetrieval(directory)) {
itemLocker.relock();
const int count = m_itemStates.count();
- for (int i = 0; i < count; ++i) {
- m_itemStates[i].version = m_plugin->versionState(m_itemStates[i].item);
+
+ KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
+ if (pluginV2) {
+ for (int i = 0; i < count; ++i) {
+ m_itemStates[i].version = pluginV2->itemVersion(m_itemStates[i].item);
+ }
+ } else {
+ for (int i = 0; i < count; ++i) {
+ const KVersionControlPlugin::VersionState state = m_plugin->versionState(m_itemStates[i].item);
+ m_itemStates[i].version = static_cast<KVersionControlPlugin2::ItemVersion>(state);
+ }
}
+
m_plugin->endRetrieval();
m_retrievedItems = true;
}