X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0e56e0ddcea8db8bb98b387158e0b0cae2a00a26..613a132a3697db603bca593a36f91ee3f9ccafdd:/src/dolphincolumnwidget.cpp diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 3bb1f36c2..ba5632502 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -26,7 +26,9 @@ #include "dolphinsortfilterproxymodel.h" #include "dolphinsettings.h" #include "dolphin_columnmodesettings.h" +#include "dolphin_generalsettings.h" #include "draganddrophelper.h" +#include "selectionmanager.h" #include #include @@ -64,7 +66,7 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, setMouseTracking(true); viewport()->setAttribute(Qt::WA_Hover); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); setSelectionBehavior(SelectItems); setSelectionMode(QAbstractItemView::ExtendedSelection); setDragDropMode(QAbstractItemView::DragDrop); @@ -89,7 +91,7 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, m_font.setBold(settings->boldFont()); const int iconSize = settings->iconSize(); - m_decorationSize = QSize(iconSize, iconSize); + setDecorationSize(QSize(iconSize, iconSize)); KFileItemDelegate* delegate = new KFileItemDelegate(this); setItemDelegate(delegate); @@ -116,8 +118,20 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, m_proxyModel = new DolphinSortFilterProxyModel(this); m_proxyModel->setSourceModel(m_dolphinModel); m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + const DolphinView* dolphinView = m_view->m_controller->dolphinView(); + m_proxyModel->setSorting(dolphinView->sorting()); + m_proxyModel->setSortOrder(dolphinView->sortOrder()); setModel(m_proxyModel); + const bool useSelManager = KGlobalSettings::singleClick() && + DolphinSettings::instance().generalSettings()->showSelectionToggle(); + if (useSelManager) { + SelectionManager* selManager = new SelectionManager(this); + connect(selManager, SIGNAL(selectionChanged()), + this, SLOT(requestActivation())); + connect(m_view->m_controller, SIGNAL(urlChanged(const KUrl&)), + selManager, SLOT(reset())); +} new KMimeTypeResolver(this, m_dolphinModel); m_iconManager = new IconManager(this, m_proxyModel); m_iconManager->setShowPreview(m_view->m_controller->dolphinView()->showPreview()); @@ -136,6 +150,7 @@ DolphinColumnWidget::~DolphinColumnWidget() void DolphinColumnWidget::setDecorationSize(const QSize& size) { + setIconSize(size); m_decorationSize = size; doItemsLayout(); } @@ -161,6 +176,16 @@ void DolphinColumnWidget::reload() m_dirLister->openUrl(m_url, KDirLister::Reload); } +void DolphinColumnWidget::setSorting(DolphinView::Sorting sorting) +{ + m_proxyModel->setSorting(sorting); +} + +void DolphinColumnWidget::setSortOrder(Qt::SortOrder order) +{ + m_proxyModel->setSortOrder(order); +} + void DolphinColumnWidget::setShowHiddenFiles(bool show) { if (show != m_dirLister->showingDotFiles()) { @@ -303,12 +328,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event) void DolphinColumnWidget::mousePressEvent(QMouseEvent* event) { - m_view->m_controller->requestActivation(); - if (!m_active) { - m_view->requestActivation(this); - m_view->m_controller->triggerUrlChangeRequest(m_url); - } - + requestActivation(); QListView::mousePressEvent(event); } @@ -344,6 +364,16 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event) } } +void DolphinColumnWidget::wheelEvent(QWheelEvent* event) +{ + // let Ctrl+wheel events propagate to the DolphinView for icon zooming + if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) { + event->ignore(); + return; + } + QListView::wheelEvent(event); +} + void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) { QListView::selectionChanged(selected, deselected); @@ -366,6 +396,16 @@ void DolphinColumnWidget::slotEntered(const QModelIndex& index) m_view->m_controller->emitItemEntered(item); } +void DolphinColumnWidget::requestActivation() +{ + m_view->m_controller->requestActivation(); + if (!m_active) { + m_view->requestActivation(this); + m_view->m_controller->triggerUrlChangeRequest(m_url); + selectionModel()->clear(); + } +} + void DolphinColumnWidget::activate() { setFocus(Qt::OtherFocusReason);