From: John Tapsell Date: Mon, 3 Dec 2007 10:32:27 +0000 (+0000) Subject: The first columns model and selection model should be the same as the view's model... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/e80f07735774cfd8e4debef48cbef7869506e585?ds=sidebyside 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:peter.penz@gmx.at svn path=/trunk/KDE/kdebase/apps/; revision=744386 --- 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(model); + if(m_proxyModel) + m_dolphinModel = dynamic_cast(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;