X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f8a61efc8d03532d5b22cae0bdc65afc90303509..862ceee323ad3b474ce9de11eefbddd99c528fac:/src/dolphincolumnview.cpp diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index b01a85103..72173538e 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -22,14 +22,10 @@ #include "dolphincontroller.h" #include "dolphinsettings.h" -//#include "dolphin_iconsmodesettings.h" +#include "dolphin_columnmodesettings.h" -#include -#include -#include - -#include -#include +#include +#include DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* controller) : QColumnView(parent), @@ -37,38 +33,44 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control { Q_ASSERT(controller != 0); + setAcceptDrops(true); + setSelectionBehavior(SelectItems); + setDragDropMode(QAbstractItemView::DragDrop); + setDropIndicatorShown(false); + + setMouseTracking(true); viewport()->setAttribute(Qt::WA_Hover); - connect(this, SIGNAL(clicked(const QModelIndex&)), - controller, SLOT(triggerItem(const QModelIndex&))); + if (KGlobalSettings::singleClick()) { + connect(this, SIGNAL(clicked(const QModelIndex&)), + controller, SLOT(triggerItem(const QModelIndex&))); + } else { + connect(this, SIGNAL(doubleClicked(const QModelIndex&)), + controller, SLOT(triggerItem(const QModelIndex&))); + } connect(this, SIGNAL(activated(const QModelIndex&)), controller, SLOT(triggerItem(const QModelIndex&))); + connect(this, SIGNAL(entered(const QModelIndex&)), + controller, SLOT(emitItemEntered(const QModelIndex&))); + connect(this, SIGNAL(viewportEntered()), + controller, SLOT(emitViewportEntered())); connect(controller, SIGNAL(zoomIn()), this, SLOT(zoomIn())); connect(controller, SIGNAL(zoomOut()), this, SLOT(zoomOut())); - // apply the icons mode settings to the widget - //const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - //Q_ASSERT(settings != 0); + // apply the column mode settings to the widget + const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + Q_ASSERT(settings != 0); m_viewOptions = QColumnView::viewOptions(); - /*QFont font(settings->fontFamily(), settings->fontSize()); + QFont font(settings->fontFamily(), settings->fontSize()); font.setItalic(settings->italicFont()); font.setBold(settings->boldFont()); m_viewOptions.font = font; - updateGridSize(controller->showPreview()); - - if (settings->arrangement() == QColumnView::TopToBottom) { - setFlow(QColumnView::LeftToRight); - m_viewOptions.decorationPosition = QStyleOptionViewItem::Top; - } - else { - setFlow(QColumnView::TopToBottom); - m_viewOptions.decorationPosition = QStyleOptionViewItem::Left; - }*/ + updateDecorationSize(); } DolphinColumnView::~DolphinColumnView() @@ -86,10 +88,10 @@ void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event) m_controller->triggerContextMenuRequest(event->pos()); } -void DolphinColumnView::mouseReleaseEvent(QMouseEvent* event) +void DolphinColumnView::mousePressEvent(QMouseEvent* event) { - QColumnView::mouseReleaseEvent(event); m_controller->triggerActivation(); + QColumnView::mousePressEvent(event); } void DolphinColumnView::dragEnterEvent(QDragEnterEvent* event) @@ -113,20 +115,54 @@ void DolphinColumnView::dropEvent(QDropEvent* event) void DolphinColumnView::zoomIn() { + if (isZoomInPossible()) { + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + // TODO: get rid of K3Icon sizes + switch (settings->iconSize()) { + case K3Icon::SizeSmall: settings->setIconSize(K3Icon::SizeMedium); break; + case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeLarge); break; + default: Q_ASSERT(false); break; + } + updateDecorationSize(); + } } void DolphinColumnView::zoomOut() { + if (isZoomOutPossible()) { + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + // TODO: get rid of K3Icon sizes + switch (settings->iconSize()) { + case K3Icon::SizeLarge: settings->setIconSize(K3Icon::SizeMedium); break; + case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeSmall); break; + default: Q_ASSERT(false); break; + } + updateDecorationSize(); + } } bool DolphinColumnView::isZoomInPossible() const { - return false; + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + return settings->iconSize() < K3Icon::SizeLarge; } bool DolphinColumnView::isZoomOutPossible() const { - return false; + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + return settings->iconSize() > K3Icon::SizeSmall; +} + +void DolphinColumnView::updateDecorationSize() +{ + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + const int iconSize = settings->iconSize(); + m_viewOptions.decorationSize = QSize(iconSize, iconSize); + + m_controller->setZoomInPossible(isZoomInPossible()); + m_controller->setZoomOutPossible(isZoomOutPossible()); + + doItemsLayout(); } #include "dolphincolumnview.moc"