]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
make it compile
[dolphin.git] / src / dolphinview.cpp
index 1dba37ad511cf562d689a2135b620348cb21491b..1a02ddea08349b131a2f120045006c7dd6e03b38 100644 (file)
@@ -39,6 +39,7 @@
 #include "dolphinstatusbar.h"
 #include "dolphinmainwindow.h"
 #include "dolphindirlister.h"
+#include "dolphinsortfilterproxymodel.h"
 #include "viewproperties.h"
 #include "dolphindetailsview.h"
 #include "dolphiniconsview.h"
@@ -57,12 +58,18 @@ DolphinView::DolphinView(DolphinMainWindow *mainWindow,
     m_refreshing(false),
     m_showProgress(false),
     m_mode(mode),
-    m_mainWindow(mainWindow),
-    m_statusBar(0),
     m_iconSize(0),
     m_folderCount(0),
     m_fileCount(0),
-    m_filterBar(0)
+    m_mainWindow(mainWindow),
+    m_topLayout(0),
+    m_urlNavigator(0),
+    m_iconsView(0),
+    m_filterBar(0),
+    m_statusBar(0),
+    m_dirModel(0),
+    m_dirLister(0),
+    m_proxyModel(0)
 {
     hide();
     setFocusPolicy(Qt::StrongFocus);
@@ -96,15 +103,19 @@ DolphinView::DolphinView(DolphinMainWindow *mainWindow,
     m_iconsView = new DolphinIconsView(this);
     applyModeToView();
 
-    KDirModel* model = new KDirModel();
-    model->setDirLister(m_dirLister);
-    m_iconsView->setModel(model);
+    m_dirModel = new KDirModel();
+    m_dirModel->setDirLister(m_dirLister);
+
+    m_proxyModel = new DolphinSortFilterProxyModel(this);
+    m_proxyModel->setSourceModel(m_dirModel);
+
+    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;
 
@@ -395,8 +406,7 @@ void DolphinView::setSorting(Sorting sorting)
         ViewProperties props(url());
         props.setSorting(sorting);
 
-        KDirModel* dirModel = static_cast<KDirModel*>(m_iconsView->model());
-        dirModel->sort(columnIndex(sorting), props.sortOrder());
+        m_proxyModel->setSorting(sorting);
 
         emit sortingChanged(sorting);
     }
@@ -404,10 +414,7 @@ void DolphinView::setSorting(Sorting sorting)
 
 DolphinView::Sorting DolphinView::sorting() const
 {
-    // TODO: instead of getting the sorting from the properties just fetch
-    // them from KDirModel, if such an interface will be offered (David?)
-    ViewProperties props(url());
-    return props.sorting();
+    return m_proxyModel->sorting();
 }
 
 void DolphinView::setSortOrder(Qt::SortOrder order)
@@ -416,8 +423,7 @@ void DolphinView::setSortOrder(Qt::SortOrder order)
         ViewProperties props(url());
         props.setSortOrder(order);
 
-        KDirModel* dirModel = static_cast<KDirModel*>(m_iconsView->model());
-        dirModel->sort(columnIndex(props.sorting()), order);
+        m_proxyModel->setSortOrder(order);
 
         emit sortOrderChanged(order);
     }
@@ -425,10 +431,7 @@ void DolphinView::setSortOrder(Qt::SortOrder order)
 
 Qt::SortOrder DolphinView::sortOrder() const
 {
-    // TODO: instead of getting the order from the properties just fetch
-    // them from KDirModel, if such an interface will be offered (David?)
-    ViewProperties props(url());
-    return props.sortOrder();
+    return m_proxyModel->sortOrder();
 }
 
 void DolphinView::goBack()
@@ -473,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);
            }
@@ -645,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;
     }