]> cloud.milkyroute.net Git - dolphin.git/commitdiff
The first columns model and selection model should be the same as the view's model...
authorJohn Tapsell <john.tapsell@kdemail.net>
Mon, 3 Dec 2007 10:32:27 +0000 (10:32 +0000)
committerJohn Tapsell <john.tapsell@kdemail.net>
Mon, 3 Dec 2007 10:32:27 +0000 (10:32 +0000)
This means
1) We don't leak memory switching to and from column view
2) Selection is preserved when switching views
3) We don't have 2 models running for the root directory

CCMAIL:peter.penz@gmx.at

svn path=/trunk/KDE/kdebase/apps/; revision=744386

src/dolphincolumnview.cpp
src/dolphincolumnview.h
src/dolphincolumnwidget.cpp
src/dolphincolumnwidget.h

index a6fda66d0ed4c94218fcae9e160f11b4443a9bd1..d6bd08a422f027059753d8aa42ccf53fba3149fd 100644 (file)
@@ -554,4 +554,19 @@ void DolphinColumnView::removeAllColumns()
     assureVisibleActiveColumn();
 }
 
     assureVisibleActiveColumn();
 }
 
+void DolphinColumnView::setModel ( QAbstractItemModel * model )
+{
+    QAbstractItemView::setModel(model);
+    if(m_columns[0]) {
+       m_columns[0]->setModel(model);
+        m_columns[0]->setSelectionModel(selectionModel());
+    }
+}
+void DolphinColumnView::setSelectionModel ( QItemSelectionModel * selectionModel )
+{
+    if(m_columns[0])
+        m_columns[0]->setSelectionModel(selectionModel);
+    QAbstractItemView::setSelectionModel(selectionModel);
+}
+
 #include "dolphincolumnview.moc"
 #include "dolphincolumnview.moc"
index 30ac7ae710d8fda6b40514d04fea8764971ad594..0030c69ce01ba4c6ed8436de7dd785cf60d38c6a 100644 (file)
@@ -103,6 +103,8 @@ protected:
 
     virtual void mousePressEvent(QMouseEvent* event);
     virtual void resizeEvent(QResizeEvent* event);
 
     virtual void mousePressEvent(QMouseEvent* event);
     virtual void resizeEvent(QResizeEvent* event);
+    virtual void setSelectionModel ( QItemSelectionModel * selectionModel );
+    virtual void setModel ( QAbstractItemModel * model );
 
 private slots:
     void zoomIn();
 
 private slots:
     void zoomIn();
index 677215972d2b35aa027a6810c538a5e6edbdb72b..abd236c7ddb59edc3478c4d6eb417adbc66055d5 100644 (file)
@@ -115,18 +115,16 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_dirLister->setShowingDotFiles(showHiddenFiles);
     connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
             this, SLOT(generatePreviews(const KFileItemList&)));
     m_dirLister->setShowingDotFiles(showHiddenFiles);
     connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
             this, SLOT(generatePreviews(const KFileItemList&)));
+}
 
 
-    m_dolphinModel = new DolphinModel(this);
-    m_dolphinModel->setDirLister(m_dirLister);
-    m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
-
-    m_proxyModel = new DolphinSortFilterProxyModel(this);
-    m_proxyModel->setSourceModel(m_dolphinModel);
-
-    setModel(m_proxyModel);
+void DolphinColumnWidget::setModel ( QAbstractItemModel * model )
+{
+    m_proxyModel = dynamic_cast<DolphinSortFilterProxyModel *>(model);
+    if(m_proxyModel)
+        m_dolphinModel = dynamic_cast<DolphinModel *>(m_proxyModel->sourceModel());
     new KMimeTypeResolver(this, m_dolphinModel);
     new KMimeTypeResolver(this, m_dolphinModel);
-
-    m_dirLister->openUrl(url, KDirLister::NoFlags);
+    m_dirLister->openUrl(m_url, KDirLister::NoFlags);
+    QListView::setModel(m_proxyModel);
 }
 
 DolphinColumnWidget::~DolphinColumnWidget()
 }
 
 DolphinColumnWidget::~DolphinColumnWidget()
index e8fea3bf595afb1f1587eb878e3b423e50fd094b..14b4c875179812d40fa532b6b406a338951fcca4 100644 (file)
@@ -89,6 +89,7 @@ public:
      * which contain the given filter string will be shown.
      */
     void setNameFilter(const QString& nameFilter);
      * which contain the given filter string will be shown.
      */
     void setNameFilter(const QString& nameFilter);
+    virtual void setModel ( QAbstractItemModel * model );
 
 protected:
     virtual QStyleOptionViewItem viewOptions() const;
 
 protected:
     virtual QStyleOptionViewItem viewOptions() const;