#include "dolphiniconsview.h"
-#include "dolphinitemcategorizer.h"
#include "dolphincontroller.h"
#include "dolphinsettings.h"
#include "dolphinitemcategorizer.h"
#include <kfileitem.h>
#include <kfileitemdelegate.h>
-#include <QAbstractProxyModel>
-#include <QPoint>
+#include <QtGui/QAbstractProxyModel>
+#include <QtCore/QPoint>
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
- KListView(parent),
- m_controller(controller),
- m_itemCategorizer(0)
+ KListView(parent),
+ m_controller(controller)
{
Q_ASSERT(controller != 0);
setViewMode(QListView::IconMode);
setResizeMode(QListView::Adjust);
+ 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(showPreviewChanged(bool)),
- this, SLOT(updateGridSize(bool)));
+ this, SLOT(slotShowPreviewChanged(bool)));
+ connect(controller, SIGNAL(showAdditionalInfoChanged(bool)),
+ this, SLOT(slotShowAdditionalInfoChanged(bool)));
connect(controller, SIGNAL(zoomIn()),
this, SLOT(zoomIn()));
connect(controller, SIGNAL(zoomOut()),
Q_ASSERT(settings != 0);
m_viewOptions = KListView::viewOptions();
+ m_viewOptions.showDecorationSelected = true;
QFont font(settings->fontFamily(), settings->fontSize());
font.setItalic(settings->italicFont());
font.setBold(settings->boldFont());
m_viewOptions.font = font;
- updateGridSize(controller->showPreview());
+ setWordWrap(settings->numberOfTextlines() > 1);
+ updateGridSize(controller->showPreview(), controller->showAdditionalInfo());
if (settings->arrangement() == QListView::TopToBottom) {
setFlow(QListView::LeftToRight);
} else {
setFlow(QListView::TopToBottom);
m_viewOptions.decorationPosition = QStyleOptionViewItem::Left;
+ m_viewOptions.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
}
-
- m_itemCategorizer = new DolphinItemCategorizer();
- // setItemCategorizer(m_itemCategorizer);
}
DolphinIconsView::~DolphinIconsView()
{
- setItemCategorizer(0);
- delete m_itemCategorizer;
- m_itemCategorizer = 0;
}
QStyleOptionViewItem DolphinIconsView::viewOptions() const
KListView::dropEvent(event);
}
-void DolphinIconsView::updateGridSize(bool showPreview)
+void DolphinIconsView::slotShowPreviewChanged(bool showPreview)
{
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- Q_ASSERT(settings != 0);
-
- int gridWidth = settings->gridWidth();
- int gridHeight = settings->gridHeight();
- int size = settings->iconSize();
-
- if (showPreview) {
- const int previewSize = settings->previewSize();
- const int diff = previewSize - size;
- Q_ASSERT(diff >= 0);
- gridWidth += diff;
- gridHeight += diff;
-
- size = previewSize;
- }
-
- m_viewOptions.decorationSize = QSize(size, size);
- setGridSize(QSize(gridWidth, gridHeight));
+ updateGridSize(showPreview, m_controller->showAdditionalInfo());
+}
- m_controller->setZoomInPossible(isZoomInPossible());
- m_controller->setZoomOutPossible(isZoomOutPossible());
+void DolphinIconsView::slotShowAdditionalInfoChanged(bool showAdditionalInfo)
+{
+ updateGridSize(m_controller->showPreview(), showAdditionalInfo);
}
void DolphinIconsView::zoomIn()
// increase also the grid size
const int diff = newIconSize - oldIconSize;
- settings->setGridWidth(settings->gridWidth() + diff);
- settings->setGridHeight(settings->gridHeight() + diff);
+ settings->setItemWidth(settings->itemWidth() + diff);
+ settings->setItemHeight(settings->itemHeight() + diff);
- updateGridSize(showPreview);
+ updateGridSize(showPreview, m_controller->showAdditionalInfo());
}
}
// decrease also the grid size
const int diff = oldIconSize - newIconSize;
- settings->setGridWidth(settings->gridWidth() - diff);
- settings->setGridHeight(settings->gridHeight() - diff);
+ settings->setItemWidth(settings->itemWidth() - diff);
+ settings->setItemHeight(settings->itemHeight() - diff);
- updateGridSize(showPreview);
+ updateGridSize(showPreview, m_controller->showAdditionalInfo());
}
}
return decSize;
}
+void DolphinIconsView::updateGridSize(bool showPreview, bool showAdditionalInfo)
+{
+ const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
+ Q_ASSERT(settings != 0);
+
+ int itemWidth = settings->itemWidth();
+ int itemHeight = settings->itemHeight();
+ int size = settings->iconSize();
+
+ if (showPreview) {
+ const int previewSize = settings->previewSize();
+ const int diff = previewSize - size;
+ Q_ASSERT(diff >= 0);
+ itemWidth += diff;
+ itemHeight += diff;
+
+ size = previewSize;
+ }
+
+ if (showAdditionalInfo) {
+ itemHeight += m_viewOptions.font.pointSize() * 2;
+ }
+
+ if (settings->arrangement() == QListView::TopToBottom) {
+ // The decoration width indirectly defines the maximum
+ // width for the text wrapping. To use the maximum item width
+ // for text wrapping, it is used as decoration width.
+ m_viewOptions.decorationSize = QSize(itemWidth, size);
+ } else {
+ m_viewOptions.decorationSize = QSize(size, size);
+ }
+
+ const int spacing = settings->gridSpacing();
+ setGridSize(QSize(itemWidth + spacing, itemHeight + spacing));
+
+ m_controller->setZoomInPossible(isZoomInPossible());
+ m_controller->setZoomOutPossible(isZoomOutPossible());
+}
+
#include "dolphiniconsview.moc"