diff --git a/src/sidebartreeview.cpp b/src/sidebartreeview.cpp index ccd9084639..52b6d54245 100644 --- a/src/sidebartreeview.cpp +++ b/src/sidebartreeview.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz * - * peter.penz@gmx.at * + * Copyright (C) 2006 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -78,7 +77,7 @@ void SidebarTreeView::dropEvent(QDropEvent* event) } else { event->acceptProposedAction(); - //m_controller->indicateDroppedUrls(urls, event->pos()); + emit urlsDropped(urls, event->pos()); } } diff --git a/src/sidebartreeview.h b/src/sidebartreeview.h index acec076145..8b1f039a01 100644 --- a/src/sidebartreeview.h +++ b/src/sidebartreeview.h @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz * - * peter.penz@gmx.at * + * Copyright (C) 2006 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -21,12 +20,15 @@ #ifndef SIDEBARTREEVIEW_H #define SIDEBARTREEVIEW_H +#include #include class DolphinMainWindow; /** - * @brief + * @brief Tree view widget which is used for the sidebar panel. + * + * @see TreeViewSidebarPage */ class SidebarTreeView : public QTreeView { @@ -36,6 +38,17 @@ public: explicit SidebarTreeView(DolphinMainWindow* mainWindow, QWidget* parent = 0); virtual ~SidebarTreeView(); +signals: + /** + * Is emitted if the URLs \a urls have been dropped. + * @param pos Position relative to the tree view where the + * dropping has been done. It is recommended + * to get the corresponding model index from + * this position to find out the destination. + */ + void urlsDropped(const KUrl::List& urls, + const QPoint& pos); + protected: virtual bool event(QEvent* event); virtual void dragEnterEvent(QDragEnterEvent* event); diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index b1fcc8daa8..d9c2e8800c 100644 --- a/src/treeviewsidebarpage.cpp +++ b/src/treeviewsidebarpage.cpp @@ -78,8 +78,8 @@ TreeViewSidebarPage::TreeViewSidebarPage(DolphinMainWindow* mainWindow, connect(m_treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(updateActiveView(const QModelIndex&))); - connect(m_treeView, SIGNAL(doubleClicked(const QModelIndex&)), - this, SLOT(slotDoubleClicked(const QModelIndex&))); + connect(m_treeView, SIGNAL(urlsDropped(const KUrl::List&, const QPoint&)), + this, SLOT(dropUrls(const KUrl::List&, const QPoint&))); QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(m_treeView); @@ -201,6 +201,24 @@ void TreeViewSidebarPage::updateActiveView(const QModelIndex& index) } } +void TreeViewSidebarPage::dropUrls(const KUrl::List& urls, + const QPoint& pos) +{ + const QModelIndex index = m_treeView->indexAt(pos); + if (index.isValid()) { +#if defined(USE_PROXY_MODEL) + const QModelIndex& dirIndex = m_proxyModel->mapToSource(index); + KFileItem* item = m_dirModel->itemForIndex(dirIndex); +#else + KFileItem* item = m_dirModel->itemForIndex(index); +#endif + Q_ASSERT(item != 0); + if (item->isDir()) { + mainWindow()->dropUrls(urls, item->url()); + } + } +} + void TreeViewSidebarPage::connectToActiveView() { const QWidget* parent = parentWidget(); diff --git a/src/treeviewsidebarpage.h b/src/treeviewsidebarpage.h index 9810908558..ca98277eb7 100644 --- a/src/treeviewsidebarpage.h +++ b/src/treeviewsidebarpage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz + * Copyright (C) 2006 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -25,7 +25,6 @@ class KDirLister; class KDirModel; -class KUrl; class DolphinSortFilterProxyModel; class SidebarTreeView; @@ -73,6 +72,12 @@ private slots: */ void updateActiveView(const QModelIndex& index); + /** + * Is emitted if the URLs \a urls have been dropped + * to the position \a pos. */ + void dropUrls(const KUrl::List& urls, + const QPoint& pos); + private: /** * Connects to signals from the currently active Dolphin view to get @@ -88,4 +93,4 @@ private: KUrl m_selectedUrl; }; -#endif // BOOKMARKSSIDEBARPAGE_H +#endif // TREEVIEWSIDEBARPAGE_H