#include "dolphiniconsview.h"
+#include "dolphincategorydrawer.h"
#include "dolphincontroller.h"
#include "dolphinsettings.h"
-#include "dolphinitemcategorizer.h"
#include "dolphin_iconsmodesettings.h"
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
KCategorizedView(parent),
m_controller(controller),
+ m_categoryDrawer(0),
m_itemSize(),
m_dragging(false),
m_dropRect()
setMouseTracking(true);
viewport()->setAttribute(Qt::WA_Hover);
+ // TODO: Connecting to the signal 'activated()' is not possible, as kstyle
+ // does not forward the single vs. doubleclick to it yet (KDE 4.1?). Hence it is
+ // necessary connecting the signal 'singleClick()' or 'doubleClick' and to handle the
+ // RETURN-key in keyPressEvent().
if (KGlobalSettings::singleClick()) {
connect(this, SIGNAL(clicked(const QModelIndex&)),
controller, SLOT(triggerItem(const QModelIndex&)));
m_viewOptions.decorationPosition = QStyleOptionViewItem::Left;
m_viewOptions.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
}
+
+ m_categoryDrawer = new DolphinCategoryDrawer();
+ setCategoryDrawer(m_categoryDrawer);
}
DolphinIconsView::~DolphinIconsView()
{
+ delete m_categoryDrawer;
+ m_categoryDrawer = 0;
}
QRect DolphinIconsView::visualRect(const QModelIndex& index) const
const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
if (!urls.isEmpty()) {
m_controller->indicateDroppedUrls(urls,
+ m_controller->url(),
indexAt(event->pos()),
event->source());
event->acceptProposedAction();
}
}
+
KCategorizedView::dropEvent(event);
m_dragging = false;
}
}
}
+void DolphinIconsView::keyPressEvent(QKeyEvent* event)
+{
+ KCategorizedView::keyPressEvent(event);
+
+ const QItemSelectionModel* selModel = selectionModel();
+ const QModelIndex currentIndex = selModel->currentIndex();
+ const bool triggerItem = currentIndex.isValid()
+ && (event->key() == Qt::Key_Return)
+ && (selModel->selectedIndexes().count() <= 1);
+ if (triggerItem) {
+ m_controller->triggerItem(currentIndex);
+ }
+}
+
void DolphinIconsView::slotShowPreviewChanged(bool showPreview)
{
updateGridSize(showPreview, m_controller->showAdditionalInfo());