]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Version control: Apply text-color if an item is versioned
[dolphin.git] / src / views / dolphinview.cpp
index 53171966c89f7f8e75a0de2d8bad4b56ed8101f0..bb9b523653e94527500db94a9e42a53b3d979d52 100644 (file)
 
 #include <QAbstractItemView>
 #include <QApplication>
+#include <QBoxLayout>
 #include <QClipboard>
+#include <QDropEvent>
+#include <QGraphicsSceneDragDropEvent>
 #include <QKeyEvent>
 #include <QItemSelection>
-#include <QBoxLayout>
 #include <QTimer>
 #include <QScrollBar>
 
 #include "dolphin_detailsmodesettings.h"
 #include "dolphin_generalsettings.h"
 #include "dolphinitemlistcontainer.h"
+#include "draganddrophelper.h"
 #include "renamedialog.h"
 #include "settings/dolphinsettings.h"
+#include "versioncontrol/versioncontrolobserver.h"
 #include "viewmodecontroller.h"
 #include "viewproperties.h"
 #include "views/tooltips/tooltipmanager.h"
@@ -89,7 +93,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     m_currentItemIndex(-1),
     m_restoredContentsPosition(),
     m_createdItemUrl(),
-    m_selectedItems()
+    m_selectedItems(),
+    m_versionControlObserver(0)
 {
     m_topLayout = new QVBoxLayout(this);
     m_topLayout->setSpacing(0);
@@ -172,6 +177,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     connect(controller, SIGNAL(itemExpansionToggleClicked(int)), this, SLOT(slotItemExpansionToggleClicked(int)));
     connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int)));
     connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int)));
+    connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*)));
+    connect(controller, SIGNAL(modelChanged(KItemModelBase*,KItemModelBase*)), this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*)));
 
     KItemListSelectionManager* selectionManager = controller->selectionManager();
     connect(selectionManager, SIGNAL(selectionChanged(QSet<int>,QSet<int>)),
@@ -179,6 +186,12 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
 
     m_toolTipManager = new ToolTipManager(this);
 
+    m_versionControlObserver = new VersionControlObserver(this);
+    m_versionControlObserver->setModel(fileItemModel());
+    connect(m_versionControlObserver, SIGNAL(infoMessage(QString)), this, SIGNAL(infoMessage(QString)));
+    connect(m_versionControlObserver, SIGNAL(errorMessage(QString)), this, SIGNAL(errorMessage(QString)));
+    connect(m_versionControlObserver, SIGNAL(operationCompletedMessage(QString)), this, SIGNAL(operationCompletedMessage(QString)));
+
     applyViewProperties();
     m_topLayout->addWidget(m_container);
 
@@ -776,6 +789,28 @@ void DolphinView::slotItemUnhovered(int index)
     emit requestItemInfo(KFileItem());
 }
 
+void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event)
+{
+    const KFileItem destItem = fileItemModel()->fileItem(index);
+
+    QDropEvent dropEvent(event->pos().toPoint(),
+                         event->possibleActions(),
+                         event->mimeData(),
+                         event->buttons(),
+                         event->modifiers());
+
+    DragAndDropHelper::dropUrls(destItem, url(), &dropEvent, this);
+}
+
+void DolphinView::slotModelChanged(KItemModelBase* current, KItemModelBase* previous)
+{
+    Q_UNUSED(previous);
+    Q_ASSERT(qobject_cast<KFileItemModel*>(current));
+
+    KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(current);
+    m_versionControlObserver->setModel(fileItemModel);
+}
+
 void DolphinView::slotSelectionChanged(const QSet<int>& current, const QSet<int>& previous)
 {
     const int currentCount = current.count();