┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphindetailsview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dolphindetailsview.cpp')
-rw-r--r--src/dolphindetailsview.cpp53
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());