X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7c99bf5f6b6285c47dc4fa90d2bd2425287747d5..5070666ad2cd5fe3e559adca00a52aed5d137153:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d00c5c077..7cb594d8e 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -22,16 +22,19 @@ #include #include +#include #include +#include +#include #include #include -#include #include #include #include #include #include +#include #include #include #include @@ -59,8 +62,10 @@ #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" @@ -88,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); @@ -171,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,QSet)), @@ -178,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); @@ -504,8 +518,16 @@ QString DolphinView::statusBarText() const QList DolphinView::versionControlActions(const KFileItemList& items) const { - Q_UNUSED(items); - return QList(); //m_dolphinViewController->versionControlActions(items); + QList actions; + + if (items.isEmpty()) { + const KFileItem item = fileItemModel()->rootItem(); + actions = m_versionControlObserver->actions(KFileItemList() << item); + } else { + actions = m_versionControlObserver->actions(items); + } + + return actions; } void DolphinView::setUrl(const KUrl& url) @@ -702,18 +724,21 @@ void DolphinView::activate() void DolphinView::slotItemActivated(int index) { - KFileItemList items = selectedItems(); - if (items.isEmpty()) + Q_UNUSED(index); + + const KFileItemList items = selectedItems(); + if (items.isEmpty()) { return; + } + if (items.count() == 1) { emit itemActivated(items.at(0)); // caught by DolphinViewContainer or DolphinPart - } - else { - foreach (const KFileItem& fileItem, items) { - if (fileItem.isDir()) { - emit tabRequested(fileItem.url()); + } else { + foreach (const KFileItem& item, items) { + if (item.isDir()) { + emit tabRequested(item.url()); } else { - emit itemActivated(fileItem); + emit itemActivated(item); } } } @@ -772,6 +797,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(current)); + + KFileItemModel* fileItemModel = static_cast(current); + m_versionControlObserver->setModel(fileItemModel); +} + void DolphinView::slotSelectionChanged(const QSet& current, const QSet& previous) { const int currentCount = current.count(); @@ -862,7 +909,7 @@ bool DolphinView::isTabsForFilesEnabled() const bool DolphinView::itemsExpandable() const { - return false; //m_viewAccessor.itemsExpandable(); + return m_mode == DetailsView; } void DolphinView::restoreState(QDataStream& stream) @@ -1172,18 +1219,17 @@ void DolphinView::updateZoomLevel(int oldZoomLevel) KUrl::List DolphinView::simplifiedSelectedUrls() const { - Q_ASSERT(false); // TODO KUrl::List urls; -/* + const KFileItemList items = selectedItems(); foreach (const KFileItem &item, items) { urls.append(item.url()); } - if (itemsExpandable()) { + // TODO: Check if we still need KDirModel for this in KDE 5.0 urls = KDirModel::simplifiedUrlList(urls); - }*/ + } return urls; }