#include "dolphincontroller.h"
#include "dolphinsettings.h"
#include "dolphin_iconsmodesettings.h"
+#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
+#include "selectionmanager.h"
#include <kcategorizedsortfilterproxymodel.h>
#include <kdialog.h>
#include <QApplication>
#include <QPainter>
#include <QPoint>
+#include <QScrollBar>
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
KCategorizedView(parent),
if (KGlobalSettings::singleClick()) {
connect(this, SIGNAL(clicked(const QModelIndex&)),
this, SLOT(triggerItem(const QModelIndex&)));
+ if (DolphinSettings::instance().generalSettings()->showSelectionToggle()) {
+ SelectionManager* selManager = new SelectionManager(this);
+ connect(selManager, SIGNAL(selectionChanged()),
+ this, SLOT(requestActivation()));
+ }
} else {
connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
this, SLOT(triggerItem(const QModelIndex&)));
const DolphinView* view = controller->dolphinView();
connect(view, SIGNAL(showPreviewChanged()),
this, SLOT(slotShowPreviewChanged()));
- connect(view, SIGNAL(additionalInfoChanged(const KFileItemDelegate::InformationList&)),
- this, SLOT(slotAdditionalInfoChanged(const KFileItemDelegate::InformationList&)));
+ connect(view, SIGNAL(additionalInfoChanged()),
+ this, SLOT(slotAdditionalInfoChanged()));
connect(this, SIGNAL(entered(const QModelIndex&)),
this, SLOT(slotEntered(const QModelIndex&)));
setDirtyRegion(m_dropRect);
m_dropRect.setSize(QSize()); // set as invalid
- bool destIsDir = false;
if (index.isValid()) {
const KFileItem item = itemForIndex(index);
if (!item.isNull() && item.isDir()) {
m_dropRect = visualRect(index);
- destIsDir = true;
+ } else {
+ m_dropRect.setSize(QSize()); // set as invalid
}
- } else { // dropping on viewport
- destIsDir = true;
}
- if (destIsDir && event->mimeData()->hasUrls()) {
+ if (event->mimeData()->hasUrls()) {
+ // accept url drops, independently from the destination item
event->acceptProposedAction();
}
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
if (m_dragging) {
const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight);
- DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
+ DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush);
}
}
}
}
+void DolphinIconsView::wheelEvent(QWheelEvent* event)
+{
+ KCategorizedView::wheelEvent(event);
+
+ // if the icons are aligned left to right, the vertical wheel event should
+ // be applied to the horizontal scrollbar
+ const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
+ const bool scrollHorizontal = (event->orientation() == Qt::Vertical) &&
+ (settings->arrangement() == QListView::LeftToRight);
+ if (scrollHorizontal) {
+ QWheelEvent horizEvent(event->pos(),
+ event->delta(),
+ event->buttons(),
+ event->modifiers(),
+ Qt::Horizontal);
+ QApplication::sendEvent(horizontalScrollBar(), &horizEvent);
+ }
+}
+
void DolphinIconsView::triggerItem(const QModelIndex& index)
{
m_controller->triggerItem(itemForIndex(index));
updateGridSize(view->showPreview(), additionalInfoCount());
}
-void DolphinIconsView::slotAdditionalInfoChanged(const KFileItemDelegate::InformationList& info)
+void DolphinIconsView::slotAdditionalInfoChanged()
{
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- if (!settings->showAdditionalInfo()) {
- return;
- }
-
- const bool showPreview = m_controller->dolphinView()->showPreview();
- updateGridSize(showPreview, info.count());
+ const DolphinView* view = m_controller->dolphinView();
+ const bool showPreview = view->showPreview();
+ updateGridSize(showPreview, view->additionalInfo().count());
}
void DolphinIconsView::zoomIn()
}
}
+void DolphinIconsView::requestActivation()
+{
+ m_controller->requestActivation();
+}
+
bool DolphinIconsView::isZoomInPossible() const
{
IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
size = previewSize;
}
+ setIconSize(QSize(size, size));
Q_ASSERT(additionalInfoCount >= 0);
itemHeight += additionalInfoCount * m_font.pointSize() * 2;
int DolphinIconsView::additionalInfoCount() const
{
const DolphinView* view = m_controller->dolphinView();
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- return settings->showAdditionalInfo() ? view->additionalInfo().count() : 0;
+ return view->additionalInfo().count();
}
#include "dolphiniconsview.moc"