]> cloud.milkyroute.net Git - dolphin.git/commitdiff
let the column-widgets of the Column View be aware about their URL, as this simplifie...
authorPeter Penz <peter.penz19@gmail.com>
Tue, 10 Jul 2007 20:33:17 +0000 (20:33 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 10 Jul 2007 20:33:17 +0000 (20:33 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=686217

src/dolphincolumnview.cpp
src/dolphincolumnview.h

index 0ba8618713e8cf14f1cb45f75351cb1faf19f1f4..96ff728a2a1597627ed85fff083a3c6922bf61ea 100644 (file)
@@ -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"
index eb5d33342c84ed2fb022cf78cc77c39ac1a932c8..5417d8e9eccd9d896f7e51a5fd45df9cbb632afd 100644 (file)
@@ -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;