logic. Suitable to interface it in Dolphin or the KFileDialog.
svn path=/trunk/KDE/kdebase/apps/; revision=649204
applyviewpropsjob.cpp
kfileplacesmodel.cpp
kfileplacesitem.cpp
+ kfileplacesview.cpp
bookmarkselector.cpp
bookmarkssettingspage.cpp
bookmarkssidebarpage.cpp
#include "viewpropertiesdialog.h"
#include "viewproperties.h"
#include "kfileplacesmodel.h"
+#include "kfileplacesview.h"
#include "dolphin_generalsettings.h"
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()
--- /dev/null
+/* This file is part of the KDE project
+ Copyright (C) 2007 Kevin Ottens <ervin@kde.org>
+
+ 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"
--- /dev/null
+/* This file is part of the KDE project
+ Copyright (C) 2007 Kevin Ottens <ervin@kde.org>
+
+ 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