]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Update for using a proxy model: prevent accessing the model by model() and doing...
authorPeter Penz <peter.penz19@gmail.com>
Fri, 15 Dec 2006 01:56:57 +0000 (01:56 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 15 Dec 2006 01:56:57 +0000 (01:56 +0000)
svn path=/trunk/playground/utils/dolphin/; revision=613768

src/dolphiniconsview.cpp
src/dolphinsortfilterproxymodel.h
src/dolphinview.cpp
src/dolphinview.h

index 98d1a05b12f48aed15925320eb27a4620c9c25fd..eb3dde47f68b5e8c6a879ab22d617be1b04d1996 100644 (file)
@@ -58,6 +58,10 @@ void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event)
 
     const QModelIndex index = indexAt(event->pos());
     if (index.isValid()) {
+        // TODO: assuming that model() returns an instance of the class
+        // KDirModel is dangerous, especially in combination with a proxy model.
+        // As the current test implementation of proxy model does not work, this
+        // will be cleaned up later.
         KDirModel* dirModel = static_cast<KDirModel*>(model());
         item = dirModel->itemForIndex(index);
     }
index fd1005bfdc1b5942b9bc540f74e118e954191ccb..b400400f63a30910fc4c2988fbc8aaaac52fe5e2 100644 (file)
@@ -45,8 +45,8 @@ public:
     Qt::SortOrder sortOrder() const { return m_sortOrder; }
 
 protected:
-     virtual bool lessThan(const QModelIndex& left,
-                           const QModelIndex& right) const;
+    virtual bool lessThan(const QModelIndex& left,
+                          const QModelIndex& right) const;
 
 private:
     DolphinView::Sorting m_sorting;
index c23cb2baa7197e8dbb7269c23876d2d909ede332..1a02ddea08349b131a2f120045006c7dd6e03b38 100644 (file)
@@ -67,6 +67,7 @@ DolphinView::DolphinView(DolphinMainWindow *mainWindow,
     m_iconsView(0),
     m_filterBar(0),
     m_statusBar(0),
+    m_dirModel(0),
     m_dirLister(0),
     m_proxyModel(0)
 {
@@ -102,20 +103,19 @@ DolphinView::DolphinView(DolphinMainWindow *mainWindow,
     m_iconsView = new DolphinIconsView(this);
     applyModeToView();
 
-    KDirModel* model = new KDirModel();
-    model->setDirLister(m_dirLister);
+    m_dirModel = new KDirModel();
+    m_dirModel->setDirLister(m_dirLister);
 
     m_proxyModel = new DolphinSortFilterProxyModel(this);
-    m_proxyModel->setSourceModel(model);
-    m_proxyModel->setDynamicSortFilter(true);
+    m_proxyModel->setSourceModel(m_dirModel);
 
-    m_iconsView->setModel(model);
+    m_iconsView->setModel(m_dirModel);   // TODO: using m_proxyModel crashed when clicking on an item
 
     KFileItemDelegate* delegate = new KFileItemDelegate(this);
     m_iconsView->setItemDelegate(delegate);
 
     m_dirLister->setDelayedMimeTypes(true);
-    new KMimeTypeResolver(m_iconsView, model);
+    new KMimeTypeResolver(m_iconsView, m_dirModel);
 
     m_iconSize = K3Icon::SizeMedium;
 
@@ -476,12 +476,11 @@ KFileItemList DolphinView::selectedItems() const
 
     KFileItemList itemList;
     if (selModel->hasSelection()) {
-       KDirModel* dirModel = static_cast<KDirModel*>(m_iconsView->model());
        const QModelIndexList indexList = selModel->selectedIndexes();
 
         QModelIndexList::const_iterator end = indexList.end();
         for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) {
-           KFileItem* item = dirModel->itemForIndex(*it);
+           KFileItem* item = m_dirModel->itemForIndex(*it);
            if (item != 0) {
                itemList.append(item);
            }
@@ -648,8 +647,7 @@ void DolphinView::triggerIconsViewItem(Q3IconViewItem* item)
 
 void DolphinView::triggerItem(const QModelIndex& index)
 {
-    KDirModel* dirModel = static_cast<KDirModel*>(m_iconsView->model());
-    KFileItem* item = dirModel->itemForIndex(index);
+    KFileItem* item = m_dirModel->itemForIndex(index);
     if (item == 0) {
         return;
     }
index 42e54f802973fed61f217d29482ccaf22b05b979..297dd3bd82d3ac0daef58ad309c4818e4e7eecd8 100644 (file)
@@ -53,6 +53,7 @@ class DolphinDetailsView;
 class DolphinSortFilterProxyModel;
 class ViewProperties;
 class KProgress;
+class KDirModel;
 class FilterBar;
 
 class QModelIndex;
@@ -464,6 +465,7 @@ private:
     FilterBar *m_filterBar;
     DolphinStatusBar* m_statusBar;
 
+    KDirModel* m_dirModel;
     DolphinDirLister* m_dirLister;
     DolphinSortFilterProxyModel* m_proxyModel;