#include "dolphinstatusbar.h"
#include "dolphinmainwindow.h"
#include "dolphindirlister.h"
+#include "dolphinsortfilterproxymodel.h"
#include "viewproperties.h"
#include "dolphindetailsview.h"
#include "dolphiniconsview.h"
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);
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;
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);
}
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)
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);
}
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()
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);
}
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;
}