X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5c39ae2675cc34bcb7491cbd725afefdc7f35eee..03f4481bdfb8e96b26acfccbf2b2bc780b060cf2:/src/dolphincolumnview.cpp diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index 45fa68a3f..1ed8b6b82 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -19,25 +19,14 @@ #include "dolphincolumnview.h" -#include "dolphinmodel.h" #include "dolphincolumnwidget.h" #include "dolphincontroller.h" -#include "dolphindirlister.h" -#include "dolphinmodel.h" -#include "dolphinsortfilterproxymodel.h" #include "dolphinsettings.h" #include "dolphin_columnmodesettings.h" -#include -#include -#include - -#include -#include #include #include -#include #include DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* controller) : @@ -48,7 +37,8 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control m_contentX(0), m_columns(), m_emptyViewport(0), - m_animation(0) + m_animation(0), + m_nameFilter() { Q_ASSERT(controller != 0); @@ -65,13 +55,19 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control this, SLOT(zoomIn())); connect(controller, SIGNAL(zoomOut()), this, SLOT(zoomOut())); - connect(controller, SIGNAL(showHiddenFilesChanged(bool)), - this, SLOT(slotShowHiddenFilesChanged(bool))); - connect(controller, SIGNAL(showPreviewChanged(bool)), - this, SLOT(slotShowPreviewChanged(bool))); connect(controller, SIGNAL(activationChanged(bool)), this, SLOT(updateColumnsBackground(bool))); + const DolphinView* view = controller->dolphinView(); + connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)), + this, SLOT(slotSortingChanged(DolphinView::Sorting))); + connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)), + this, SLOT(slotSortOrderChanged(Qt::SortOrder))); + connect(view, SIGNAL(showHiddenFilesChanged()), + this, SLOT(slotShowHiddenFilesChanged())); + connect(view, SIGNAL(showPreviewChanged()), + this, SLOT(slotShowPreviewChanged())); + connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(moveContentHorizontally(int))); @@ -145,14 +141,17 @@ void DolphinColumnView::setRootUrl(const KUrl& url) void DolphinColumnView::setNameFilter(const QString& nameFilter) { - foreach (DolphinColumnWidget* column, m_columns) { - column->setNameFilter(nameFilter); + if (nameFilter != m_nameFilter) { + m_nameFilter = nameFilter; + foreach (DolphinColumnWidget* column, m_columns) { + column->setNameFilter(nameFilter); + } } } QString DolphinColumnView::nameFilter() const { - return activeColumn()->nameFilter(); + return m_nameFilter; } KUrl DolphinColumnView::rootUrl() const @@ -172,6 +171,7 @@ void DolphinColumnView::showColumn(const KUrl& url) if (column->url() == url) { // the column represents already the requested URL, hence activate it requestActivation(column); + layoutColumns(); return; } else if (!column->url().isParentOf(url)) { // the column is no parent of the requested URL, hence @@ -249,6 +249,11 @@ void DolphinColumnView::showColumn(const KUrl& url) assureVisibleActiveColumn(); } +void DolphinColumnView::editItem(const KFileItem& item) +{ + activeColumn()->editItem(item); +} + void DolphinColumnView::selectAll() { activeColumn()->selectAll(); @@ -305,13 +310,12 @@ void DolphinColumnView::setSelection(const QRect& rect, QItemSelectionModel::Sel { Q_UNUSED(rect); Q_UNUSED(flags); - //activeColumn()->setSelection(rect, flags); } QRegion DolphinColumnView::visualRegionForSelection(const QItemSelection& selection) const { Q_UNUSED(selection); - return QRegion(); //activeColumn()->visualRegionForSelection(selection); + return QRegion(); } int DolphinColumnView::horizontalOffset() const @@ -335,6 +339,17 @@ void DolphinColumnView::resizeEvent(QResizeEvent* event) QAbstractItemView::resizeEvent(event); layoutColumns(); updateScrollBar(); + assureVisibleActiveColumn(); +} + +void DolphinColumnView::wheelEvent(QWheelEvent* event) +{ + // let Ctrl+wheel events propagate to the DolphinView for icon zooming + if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) { + event->ignore(); + return; + } + QAbstractItemView::wheelEvent(event); } void DolphinColumnView::zoomIn() @@ -373,11 +388,13 @@ void DolphinColumnView::updateDecorationSize() { ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); const int iconSize = settings->iconSize(); + const QSize size(iconSize, iconSize); + setIconSize(size); foreach (QObject* object, viewport()->children()) { if (object->inherits("QListView")) { DolphinColumnWidget* widget = static_cast(object); - widget->setDecorationSize(QSize(iconSize, iconSize)); + widget->setDecorationSize(size); } } @@ -396,8 +413,12 @@ void DolphinColumnView::updateColumnsBackground(bool active) m_active = active; // dim the background of the viewport - QPalette palette; - palette.setColor(viewport()->backgroundRole(), QColor(0, 0, 0, 0)); + const QPalette::ColorRole role = viewport()->backgroundRole(); + QColor background = viewport()->palette().color(role); + background.setAlpha(0); // make background transparent + + QPalette palette = viewport()->palette(); + palette.setColor(role, background); viewport()->setPalette(palette); foreach (DolphinColumnWidget* column, m_columns) { @@ -405,15 +426,31 @@ void DolphinColumnView::updateColumnsBackground(bool active) } } -void DolphinColumnView::slotShowHiddenFilesChanged(bool show) +void DolphinColumnView::slotSortingChanged(DolphinView::Sorting sorting) { + foreach (DolphinColumnWidget* column, m_columns) { + column->setSorting(sorting); + } +} + +void DolphinColumnView::slotSortOrderChanged(Qt::SortOrder order) +{ + foreach (DolphinColumnWidget* column, m_columns) { + column->setSortOrder(order); + } +} + +void DolphinColumnView::slotShowHiddenFilesChanged() +{ + const bool show = m_controller->dolphinView()->showHiddenFiles(); foreach (DolphinColumnWidget* column, m_columns) { column->setShowHiddenFiles(show); } } -void DolphinColumnView::slotShowPreviewChanged(bool show) +void DolphinColumnView::slotShowPreviewChanged() { + const bool show = m_controller->dolphinView()->showPreview(); foreach (DolphinColumnWidget* column, m_columns) { column->setShowPreview(show); } @@ -504,7 +541,9 @@ void DolphinColumnView::assureVisibleActiveColumn() } else { m_animation->setFrameRange(-m_contentX, -newContentX); } - m_animation->start(); + if (m_animation->state() != QTimeLine::Running) { + m_animation->start(); + } } else if (x < 0) { const int newContentX = m_contentX - x; if (isRightToLeft()) { @@ -512,12 +551,15 @@ void DolphinColumnView::assureVisibleActiveColumn() } else { m_animation->setFrameRange(-m_contentX, -newContentX); } - m_animation->start(); + if (m_animation->state() != QTimeLine::Running) { + m_animation->start(); + } } } void DolphinColumnView::requestActivation(DolphinColumnWidget* column) { + m_controller->setItemView(column); if (column->isActive()) { assureVisibleActiveColumn(); } else {