┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Tapsell <[email protected]>2007-12-03 10:32:27 +0000
committerJohn Tapsell <[email protected]>2007-12-03 10:32:27 +0000
commite80f07735774cfd8e4debef48cbef7869506e585 (patch)
treef3da24f85c408335ca17c7190aab466e766146b6
parent0f4ecd1c61631bcd8fb050f4d8af5c49e78bbeee (diff)
The first columns model and selection model should be the same as the view's model and selection model.
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:[email protected] svn path=/trunk/KDE/kdebase/apps/; revision=744386
-rw-r--r--src/dolphincolumnview.cpp15
-rw-r--r--src/dolphincolumnview.h2
-rw-r--r--src/dolphincolumnwidget.cpp18
-rw-r--r--src/dolphincolumnwidget.h1
4 files changed, 26 insertions, 10 deletions
diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp
index a6fda66d0..d6bd08a42 100644
--- a/src/dolphincolumnview.cpp
+++ b/src/dolphincolumnview.cpp
@@ -554,4 +554,19 @@ void DolphinColumnView::removeAllColumns()
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"
diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h
index 30ac7ae71..0030c69ce 100644
--- a/src/dolphincolumnview.h
+++ b/src/dolphincolumnview.h
@@ -103,6 +103,8 @@ protected:
virtual void mousePressEvent(QMouseEvent* event);
virtual void resizeEvent(QResizeEvent* event);
+ virtual void setSelectionModel ( QItemSelectionModel * selectionModel );
+ virtual void setModel ( QAbstractItemModel * model );
private slots:
void zoomIn();
diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp
index 677215972..abd236c7d 100644
--- a/src/dolphincolumnwidget.cpp
+++ b/src/dolphincolumnwidget.cpp
@@ -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_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);
-
- m_dirLister->openUrl(url, KDirLister::NoFlags);
+ m_dirLister->openUrl(m_url, KDirLister::NoFlags);
+ QListView::setModel(m_proxyModel);
}
DolphinColumnWidget::~DolphinColumnWidget()
diff --git a/src/dolphincolumnwidget.h b/src/dolphincolumnwidget.h
index e8fea3bf5..14b4c8751 100644
--- a/src/dolphincolumnwidget.h
+++ b/src/dolphincolumnwidget.h
@@ -89,6 +89,7 @@ public:
* which contain the given filter string will be shown.
*/
void setNameFilter(const QString& nameFilter);
+ virtual void setModel ( QAbstractItemModel * model );
protected:
virtual QStyleOptionViewItem viewOptions() const;