┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/dolphinmainwindow.cpp7
-rw-r--r--src/kfileplacesview.cpp74
-rw-r--r--src/kfileplacesview.h54
4 files changed, 135 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 015c71ee5..15fc3e5b5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -39,6 +39,7 @@ set(dolphin_SRCS
applyviewpropsjob.cpp
kfileplacesmodel.cpp
kfileplacesitem.cpp
+ kfileplacesview.cpp
bookmarkselector.cpp
bookmarkssettingspage.cpp
bookmarkssidebarpage.cpp
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 7485aa42d..d5f50c653 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -36,6 +36,7 @@
#include "viewpropertiesdialog.h"
#include "viewproperties.h"
#include "kfileplacesmodel.h"
+#include "kfileplacesview.h"
#include "dolphin_generalsettings.h"
@@ -1338,10 +1339,14 @@ void DolphinMainWindow::setupDockWidgets()
QDockWidget *placesDock = new QDockWidget(i18n("Places"));
placesDock->setObjectName("placesDock");
placesDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
- QListView *listView = new QListView(placesDock);
+ KFilePlacesView *listView = new KFilePlacesView(placesDock);
placesDock->setWidget(listView);
listView->setModel(new KFilePlacesModel(listView));
addDockWidget(Qt::LeftDockWidgetArea, placesDock);
+ connect(listView, SIGNAL(urlChanged(KUrl)),
+ this, SLOT(changeUrl(KUrl)));
+ connect(this, SIGNAL(urlChanged(KUrl)),
+ listView, SLOT(setUrl(KUrl)));
}
void DolphinMainWindow::updateHistory()
diff --git a/src/kfileplacesview.cpp b/src/kfileplacesview.cpp
new file mode 100644
index 000000000..91cbd6daa
--- /dev/null
+++ b/src/kfileplacesview.cpp
@@ -0,0 +1,74 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Kevin Ottens <[email protected]>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+*/
+
+#include "kfileplacesview.h"
+
+#include <kdebug.h>
+
+#include "kfileplacesmodel.h"
+
+class KFilePlacesView::Private
+{
+public:
+ Private(KFilePlacesView *parent) : q(parent) { }
+
+ KFilePlacesView * const q;
+
+ void _k_placeClicked(const QModelIndex &index);
+};
+
+KFilePlacesView::KFilePlacesView(QWidget *parent)
+ : QListView(parent), d(new Private(this))
+{
+ connect(this, SIGNAL(clicked(const QModelIndex&)),
+ this, SLOT(_k_placeClicked(const QModelIndex&)));
+}
+
+KFilePlacesView::~KFilePlacesView()
+{
+ delete d;
+}
+
+void KFilePlacesView::setUrl(const KUrl &url)
+{
+ kDebug() << k_funcinfo << endl;
+ KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(model());
+
+ if (placesModel==0) return;
+
+ QModelIndex index = placesModel->closestItem(url);
+
+ if (index.isValid()) {
+ selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
+ } else {
+ selectionModel()->clear();
+ }
+}
+
+void KFilePlacesView::Private::_k_placeClicked(const QModelIndex &index)
+{
+ kDebug() << k_funcinfo << endl;
+ KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(q->model());
+
+ if (placesModel==0) return;
+
+ emit q->urlChanged(placesModel->url(index));
+}
+
+#include "kfileplacesview.moc"
diff --git a/src/kfileplacesview.h b/src/kfileplacesview.h
new file mode 100644
index 000000000..80ed4f620
--- /dev/null
+++ b/src/kfileplacesview.h
@@ -0,0 +1,54 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Kevin Ottens <[email protected]>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+*/
+#ifndef KFILEPLACESVIEW_H
+#define KFILEPLACESVIEW_H
+
+#include <kdelibs_export.h>
+
+#include <QListView>
+
+#include <kurl.h>
+
+class QAbstractItemModel;
+
+/**
+ * This class allows to display a KFilePlacesModel.
+ */
+class KIO_EXPORT KFilePlacesView : public QListView
+{
+ Q_OBJECT
+public:
+ KFilePlacesView(QWidget *parent = 0);
+ ~KFilePlacesView();
+
+public Q_SLOTS:
+ void setUrl(const KUrl &url);
+
+Q_SIGNALS:
+ void urlChanged(const KUrl &url);
+
+private:
+ Q_PRIVATE_SLOT(d, void _k_placeClicked(const QModelIndex &))
+
+ class Private;
+ Private * const d;
+ friend class Private;
+};
+
+#endif