]> cloud.milkyroute.net Git - dolphin.git/blob - src/kfileplacesview.cpp
No need to call rowCount() all the time.
[dolphin.git] / src / kfileplacesview.cpp
1 /* This file is part of the KDE project
2 Copyright (C) 2007 Kevin Ottens <ervin@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License version 2 as published by the Free Software Foundation.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
12
13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 Boston, MA 02110-1301, USA.
17
18 */
19
20 #include "kfileplacesview.h"
21
22 #include <kdebug.h>
23
24 #include "kfileplacesmodel.h"
25
26 class KFilePlacesView::Private
27 {
28 public:
29 Private(KFilePlacesView *parent) : q(parent) { }
30
31 KFilePlacesView * const q;
32
33 void _k_placeClicked(const QModelIndex &index);
34 };
35
36 KFilePlacesView::KFilePlacesView(QWidget *parent)
37 : QListView(parent), d(new Private(this))
38 {
39 connect(this, SIGNAL(clicked(const QModelIndex&)),
40 this, SLOT(_k_placeClicked(const QModelIndex&)));
41 }
42
43 KFilePlacesView::~KFilePlacesView()
44 {
45 delete d;
46 }
47
48 void KFilePlacesView::setUrl(const KUrl &url)
49 {
50 kDebug() << k_funcinfo << endl;
51 KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(model());
52
53 if (placesModel==0) return;
54
55 QModelIndex index = placesModel->closestItem(url);
56
57 if (index.isValid()) {
58 selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
59 } else {
60 selectionModel()->clear();
61 }
62 }
63
64 void KFilePlacesView::Private::_k_placeClicked(const QModelIndex &index)
65 {
66 kDebug() << k_funcinfo << endl;
67 KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(q->model());
68
69 if (placesModel==0) return;
70
71 emit q->urlChanged(placesModel->url(index));
72 }
73
74 #include "kfileplacesview.moc"