┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-07-10 20:33:17 +0000
committerPeter Penz <[email protected]>2007-07-10 20:33:17 +0000
commit7243879a634d10a563f0568b31fb2a470876db89 (patch)
tree6797f26c04244ad2298ea0d6e420ed2201e91902 /src
parent62d81f9a9b652771ca9aa07bea12fa6ae1cb79d7 (diff)
let the column-widgets of the Column View be aware about their URL, as this simplifies the activation/deactivation handling of columns
svn path=/trunk/KDE/kdebase/apps/; revision=686217
Diffstat (limited to 'src')
-rw-r--r--src/dolphincolumnview.cpp56
-rw-r--r--src/dolphincolumnview.h7
2 files changed, 38 insertions, 25 deletions
diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp
index 0ba861871..96ff728a2 100644
--- a/src/dolphincolumnview.cpp
+++ b/src/dolphincolumnview.cpp
@@ -39,7 +39,9 @@
class ColumnWidget : public QListView
{
public:
- ColumnWidget(QWidget* parent, DolphinColumnView* columnView);
+ ColumnWidget(QWidget* parent,
+ DolphinColumnView* columnView,
+ const KUrl& url);
virtual ~ColumnWidget();
/** Sets the size of the icons. */
@@ -52,6 +54,8 @@ public:
*/
void setActive(bool active);
+ inline const KUrl& url() const;
+
protected:
virtual QStyleOptionViewItem viewOptions() const;
virtual void dragEnterEvent(QDragEnterEvent* event);
@@ -72,6 +76,7 @@ private:
private:
bool m_active;
DolphinColumnView* m_view;
+ KUrl m_url;
QStyleOptionViewItem m_viewOptions;
bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
@@ -79,10 +84,12 @@ private:
};
ColumnWidget::ColumnWidget(QWidget* parent,
- DolphinColumnView* columnView) :
+ DolphinColumnView* columnView,
+ const KUrl& url) :
QListView(parent),
m_active(true),
m_view(columnView),
+ m_url(url),
m_dragging(false),
m_dropRect()
{
@@ -135,6 +142,11 @@ void ColumnWidget::setActive(bool active)
}
}
+const KUrl& ColumnWidget::url() const
+{
+ return m_url;
+}
+
QStyleOptionViewItem ColumnWidget::viewOptions() const
{
return m_viewOptions;
@@ -222,6 +234,7 @@ void ColumnWidget::activate()
viewport()->setPalette(palette);
setSelectionMode(MultiSelection);
+ update();
}
void ColumnWidget::deactivate()
@@ -235,6 +248,7 @@ void ColumnWidget::deactivate()
viewport()->setPalette(palette);
setSelectionMode(SingleSelection);
+ update();
}
// ---
@@ -277,7 +291,24 @@ DolphinColumnView::~DolphinColumnView()
QAbstractItemView* DolphinColumnView::createColumn(const QModelIndex& index)
{
- ColumnWidget* view = new ColumnWidget(viewport(), this);
+ // let the column widget be aware about its URL...
+ KUrl columnUrl;
+ if (viewport()->children().count() == 0) {
+ // For the first column widget the directory lister has not been started
+ // yet, hence use the URL from the controller instead.
+ columnUrl = m_controller->url();
+ } else {
+ const QAbstractProxyModel* proxyModel = static_cast<const QAbstractProxyModel*>(model());
+ const KDirModel* dirModel = static_cast<const KDirModel*>(proxyModel->sourceModel());
+
+ const QModelIndex dirModelIndex = proxyModel->mapToSource(index);
+ KFileItem* fileItem = dirModel->itemForIndex(dirModelIndex);
+ if (fileItem != 0) {
+ columnUrl = fileItem->url();
+ }
+ }
+
+ ColumnWidget* view = new ColumnWidget(viewport(), this, columnUrl);
// The following code has been copied 1:1 from QColumnView::createColumn().
// Copyright (C) 1992-2007 Trolltech ASA. In Qt 4.4 the new method
@@ -381,15 +412,10 @@ void DolphinColumnView::triggerItem(const QModelIndex& index)
void DolphinColumnView::updateColumnsState(const KUrl& url)
{
- const KUrl baseUrl = dirLister()->url();
- const int activeIndex = url.path().count('/') - baseUrl.path().count('/');
-
- int index = 0;
foreach (QObject* object, viewport()->children()) {
if (object->inherits("QListView")) {
ColumnWidget* widget = static_cast<ColumnWidget*>(object);
- widget->setActive(index == activeIndex);
- ++index;
+ widget->setActive(widget->url() == url);
}
}
}
@@ -408,17 +434,14 @@ bool DolphinColumnView::isZoomOutPossible() const
void DolphinColumnView::requestActivation(QWidget* column)
{
- KUrl::List dirs = dirLister()->directories();
- KUrl::List::const_iterator it = dirs.constBegin();
foreach (QObject* object, viewport()->children()) {
if (object->inherits("QListView")) {
ColumnWidget* widget = static_cast<ColumnWidget*>(object);
const bool isActive = (widget == column);
widget->setActive(isActive);
if (isActive) {
- m_controller->setUrl(*it);
+ m_controller->setUrl(widget->url());
}
- ++it;
}
}
}
@@ -441,11 +464,4 @@ void DolphinColumnView::updateDecorationSize()
doItemsLayout();
}
-KDirLister* DolphinColumnView::dirLister() const
-{
- const QAbstractProxyModel* proxyModel = static_cast<const QAbstractProxyModel*>(model());
- const KDirModel* dirModel = static_cast<const KDirModel*>(proxyModel->sourceModel());
- return dirModel->dirLister();
-}
-
#include "dolphincolumnview.moc"
diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h
index eb5d33342..5417d8e9e 100644
--- a/src/dolphincolumnview.h
+++ b/src/dolphincolumnview.h
@@ -20,8 +20,8 @@
#ifndef DOLPHINCOLUMNVIEW_H
#define DOLPHINCOLUMNVIEW_H
-#include <QtGui/QColumnView>
-#include <QtGui/QStyleOption>
+#include <QColumnView>
+#include <QStyleOption>
class DolphinController;
class KDirLister;
@@ -77,9 +77,6 @@ private:
*/
void updateDecorationSize();
- /** Returns the directory lister used by the view. */
- KDirLister* dirLister() const;
-
private:
DolphinController* m_controller;