#include "dolphincontroller.h"
#include "dolphinsettings.h"
-//#include "dolphin_iconsmodesettings.h"
+#include "dolphin_columnmodesettings.h"
-#include <kdirmodel.h>
-#include <kfileitem.h>
-#include <kfileitemdelegate.h>
-
-#include <QAbstractProxyModel>
-#include <QPoint>
+#include <QtGui/QAbstractProxyModel>
+#include <QtCore/QPoint>
DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* controller) :
QColumnView(parent),
{
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(controller, SIGNAL(showPreviewChanged(bool)),
- this, SLOT(updateGridSize(bool)));
+ 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()
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)
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"