mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
support drag & drop for the treeview sidebar page
svn path=/trunk/KDE/kdebase/apps/; revision=641405
This commit is contained in:
parent
632dd03be7
commit
277e385fd8
4 changed files with 46 additions and 11 deletions
|
@ -1,6 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2006 by Peter Penz *
|
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||||
* peter.penz@gmx.at *
|
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* 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 *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
@ -78,7 +77,7 @@ void SidebarTreeView::dropEvent(QDropEvent* event)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
event->acceptProposedAction();
|
event->acceptProposedAction();
|
||||||
//m_controller->indicateDroppedUrls(urls, event->pos());
|
emit urlsDropped(urls, event->pos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2006 by Peter Penz *
|
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||||
* peter.penz@gmx.at *
|
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* 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 *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
@ -21,12 +20,15 @@
|
||||||
#ifndef SIDEBARTREEVIEW_H
|
#ifndef SIDEBARTREEVIEW_H
|
||||||
#define SIDEBARTREEVIEW_H
|
#define SIDEBARTREEVIEW_H
|
||||||
|
|
||||||
|
#include <kurl.h>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
|
|
||||||
class DolphinMainWindow;
|
class DolphinMainWindow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief Tree view widget which is used for the sidebar panel.
|
||||||
|
*
|
||||||
|
* @see TreeViewSidebarPage
|
||||||
*/
|
*/
|
||||||
class SidebarTreeView : public QTreeView
|
class SidebarTreeView : public QTreeView
|
||||||
{
|
{
|
||||||
|
@ -36,6 +38,17 @@ public:
|
||||||
explicit SidebarTreeView(DolphinMainWindow* mainWindow, QWidget* parent = 0);
|
explicit SidebarTreeView(DolphinMainWindow* mainWindow, QWidget* parent = 0);
|
||||||
virtual ~SidebarTreeView();
|
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:
|
protected:
|
||||||
virtual bool event(QEvent* event);
|
virtual bool event(QEvent* event);
|
||||||
virtual void dragEnterEvent(QDragEnterEvent* event);
|
virtual void dragEnterEvent(QDragEnterEvent* event);
|
||||||
|
|
|
@ -78,8 +78,8 @@ TreeViewSidebarPage::TreeViewSidebarPage(DolphinMainWindow* mainWindow,
|
||||||
|
|
||||||
connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
|
connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
|
||||||
this, SLOT(updateActiveView(const QModelIndex&)));
|
this, SLOT(updateActiveView(const QModelIndex&)));
|
||||||
connect(m_treeView, SIGNAL(doubleClicked(const QModelIndex&)),
|
connect(m_treeView, SIGNAL(urlsDropped(const KUrl::List&, const QPoint&)),
|
||||||
this, SLOT(slotDoubleClicked(const QModelIndex&)));
|
this, SLOT(dropUrls(const KUrl::List&, const QPoint&)));
|
||||||
|
|
||||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||||
layout->addWidget(m_treeView);
|
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()
|
void TreeViewSidebarPage::connectToActiveView()
|
||||||
{
|
{
|
||||||
const QWidget* parent = parentWidget();
|
const QWidget* parent = parentWidget();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>
|
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* 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 *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
class KDirLister;
|
class KDirLister;
|
||||||
class KDirModel;
|
class KDirModel;
|
||||||
class KUrl;
|
|
||||||
|
|
||||||
class DolphinSortFilterProxyModel;
|
class DolphinSortFilterProxyModel;
|
||||||
class SidebarTreeView;
|
class SidebarTreeView;
|
||||||
|
@ -73,6 +72,12 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void updateActiveView(const QModelIndex& index);
|
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:
|
private:
|
||||||
/**
|
/**
|
||||||
* Connects to signals from the currently active Dolphin view to get
|
* Connects to signals from the currently active Dolphin view to get
|
||||||
|
@ -88,4 +93,4 @@ private:
|
||||||
KUrl m_selectedUrl;
|
KUrl m_selectedUrl;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BOOKMARKSSIDEBARPAGE_H
|
#endif // TREEVIEWSIDEBARPAGE_H
|
||||||
|
|
Loading…
Reference in a new issue