diff options
Diffstat (limited to 'src/dolphindetailsview.cpp')
| -rw-r--r-- | src/dolphindetailsview.cpp | 53 |
1 files changed, 46 insertions, 7 deletions
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 2861c134f..df5246bed 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -25,9 +25,11 @@ #include "dolphinsettings.h" #include "dolphinsortfilterproxymodel.h" #include "draganddrophelper.h" +#include "selectionmanager.h" #include "viewproperties.h" #include "dolphin_detailsmodesettings.h" +#include "dolphin_generalsettings.h" #include <kdirmodel.h> #include <klocale.h> @@ -43,6 +45,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) : QTreeView(parent), + m_autoResize(true), m_controller(controller), m_font(), m_decorationSize(), @@ -76,6 +79,10 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr headerView->setContextMenuPolicy(Qt::CustomContextMenu); connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(configureColumns(const QPoint&))); + connect(headerView, SIGNAL(sectionResized(int, int, int)), + this, SLOT(slotHeaderSectionResized(int, int, int))); + connect(headerView, SIGNAL(sectionHandleDoubleClicked(int)), + this, SLOT(disableAutoResizing())); connect(parent, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(setSortIndicatorSection(DolphinView::Sorting))); @@ -89,6 +96,13 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr if (KGlobalSettings::singleClick()) { connect(this, SIGNAL(clicked(const QModelIndex&)), this, SLOT(triggerItem(const QModelIndex&))); + if (DolphinSettings::instance().generalSettings()->showSelectionToggle()) { + SelectionManager* selManager = new SelectionManager(this); + connect(selManager, SIGNAL(selectionChanged()), + this, SLOT(requestActivation())); + connect(m_controller, SIGNAL(urlChanged(const KUrl&)), + selManager, SLOT(reset())); + } } else { connect(this, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(triggerItem(const QModelIndex&))); @@ -344,16 +358,20 @@ void DolphinDetailsView::keyPressEvent(QKeyEvent* event) void DolphinDetailsView::resizeEvent(QResizeEvent* event) { + if (m_autoResize) { + resizeColumns(); + } QTreeView::resizeEvent(event); +} - // TODO: There seems to be no easy way to find out whether the resize event - // has been triggered because of resizing the window or by adjusting the column-width - // by a left mouse-click (the columns should only be resized automatically when the window - // size is adjusted). The following workaround works well, but it should be - // considered solving this in a more transparent way. - if (!(QApplication::mouseButtons() & Qt::LeftButton)) { - resizeColumns(); +void DolphinDetailsView::wheelEvent(QWheelEvent* event) +{ + // let Ctrl+wheel events propagate to the DolphinView for icon zooming + if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) { + event->ignore(); + return; } + QTreeView::wheelEvent(event); } void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting) @@ -494,6 +512,26 @@ void DolphinDetailsView::updateColumnVisibility() resizeColumns(); } +void DolphinDetailsView::slotHeaderSectionResized(int logicalIndex, int oldSize, int newSize) +{ + Q_UNUSED(logicalIndex); + Q_UNUSED(oldSize); + Q_UNUSED(newSize); + if (QApplication::mouseButtons() & Qt::LeftButton) { + disableAutoResizing(); + } +} + +void DolphinDetailsView::disableAutoResizing() +{ + m_autoResize = false; +} + +void DolphinDetailsView::requestActivation() +{ + m_controller->requestActivation(); +} + bool DolphinDetailsView::isZoomInPossible() const { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); @@ -510,6 +548,7 @@ void DolphinDetailsView::updateDecorationSize() { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); const int iconSize = settings->iconSize(); + setIconSize(QSize(iconSize, iconSize)); m_decorationSize = QSize(iconSize, iconSize); m_controller->setZoomInPossible(isZoomInPossible()); |
