X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/95f0ba76ae26e45a6ff9f1ec51db7d270ca278c0..136e2ae3d75677ec008e7b5973b8e73bc38e9530:/src/viewextensionsfactory.cpp diff --git a/src/viewextensionsfactory.cpp b/src/viewextensionsfactory.cpp index b4b37983b..833ccda15 100644 --- a/src/viewextensionsfactory.cpp +++ b/src/viewextensionsfactory.cpp @@ -20,6 +20,7 @@ #include "viewextensionsfactory.h" #include "dolphincontroller.h" +#include "dolphinfileitemdelegate.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" #include "dolphinviewautoscroller.h" @@ -29,17 +30,21 @@ #include "dolphin_generalsettings.h" +#include +#include #include #include ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, DolphinController* controller) : QObject(view), + m_view(view), m_controller(controller), m_toolTipManager(0), m_previewGenerator(0), m_selectionManager(0), - m_autoScroller(0) + m_autoScroller(0), + m_fileItemDelegate(0) { GeneralSettings* settings = DolphinSettings::instance().generalSettings(); @@ -73,8 +78,25 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, // initialize auto scroller m_autoScroller = new DolphinViewAutoScroller(view); - connect(controller, SIGNAL(currentIndexChanged(QModelIndex, QModelIndex)), - m_autoScroller, SLOT(handleCurrentIndexChanged(QModelIndex, QModelIndex))); + + // initialize file item delegate + m_fileItemDelegate = new DolphinFileItemDelegate(view); + m_fileItemDelegate->setShowToolTipWhenElided(false); + view->setItemDelegate(m_fileItemDelegate); + + // react on view property changes + const DolphinView* dolphinView = controller->dolphinView(); + connect(dolphinView, SIGNAL(showHiddenFilesChanged()), + this, SLOT(slotShowHiddenFilesChanged())); + connect(dolphinView, SIGNAL(sortingChanged(DolphinView::Sorting)), + this, SLOT(slotSortingChanged(DolphinView::Sorting))); + connect(dolphinView, SIGNAL(sortOrderChanged(Qt::SortOrder)), + this, SLOT(slotSortOrderChanged(Qt::SortOrder))); + connect(dolphinView, SIGNAL(sortFoldersFirstChanged(bool)), + this, SLOT(slotSortFoldersFirstChanged(bool))); + + connect(controller, SIGNAL(nameFilterChanged(const QString&)), + this, SLOT(slotNameFilterChanged(const QString&))); view->viewport()->installEventFilter(this); } @@ -88,6 +110,11 @@ void ViewExtensionsFactory::handleCurrentIndexChange(const QModelIndex& current, m_autoScroller->handleCurrentIndexChange(current, previous); } +DolphinFileItemDelegate* ViewExtensionsFactory::fileItemDelegate() const +{ + return m_fileItemDelegate; +} + bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event) { Q_UNUSED(watched); @@ -116,10 +143,51 @@ void ViewExtensionsFactory::slotShowPreviewChanged() m_previewGenerator->setPreviewShown(show); } +void ViewExtensionsFactory::slotShowHiddenFilesChanged() +{ + KDirModel* dirModel = static_cast(proxyModel()->sourceModel()); + KDirLister* dirLister = dirModel->dirLister(); + + dirLister->stop(); + + const bool show = m_controller->dolphinView()->showHiddenFiles(); + dirLister->setShowingDotFiles(show); + + const KUrl url = dirLister->url(); + if (url.isValid()) { + dirLister->openUrl(url, KDirLister::NoFlags); + } +} + +void ViewExtensionsFactory::slotSortingChanged(DolphinView::Sorting sorting) +{ + proxyModel()->setSorting(sorting); +} + +void ViewExtensionsFactory::slotSortOrderChanged(Qt::SortOrder order) +{ + proxyModel()->setSortOrder(order); +} + +void ViewExtensionsFactory::slotSortFoldersFirstChanged(bool foldersFirst) +{ + proxyModel()->setSortFoldersFirst(foldersFirst); +} + +void ViewExtensionsFactory::slotNameFilterChanged(const QString& nameFilter) +{ + proxyModel()->setFilterRegExp(nameFilter); +} + void ViewExtensionsFactory::requestActivation() { m_controller->requestActivation(); } +DolphinSortFilterProxyModel* ViewExtensionsFactory::proxyModel() const +{ + return static_cast(m_view->model()); +} + #include "viewextensionsfactory.moc"