/***************************************************************************
- * Copyright (C) 2007 by Peter Penz <peter.penz@gmx.at> *
+ * Copyright (C) 2007 by Peter Penz <peter.penz19@gmail.com> *
* Copyright (C) 2007 by David Faure <faure@kde.org> *
* *
* This program is free software; you can redistribute it and/or modify *
#include "draganddrophelper.h"
-#include <kdirmodel.h>
-#include <kfileitem.h>
-#include <kicon.h>
-#include <klocale.h>
+#include <KDirModel>
+#include <KFileItem>
+#include <KIcon>
+#include <KLocale>
#include <konq_operations.h>
#include "views/dolphiniconsview.h"
return s_dragAndDropHelper->instance;
}
-bool DragAndDropHelper::isMimeDataSupported(const QMimeData* mimeData) const
-{
- return mimeData->hasUrls() || mimeData->hasFormat("application/x-kde-dndextract");
-}
-
void DragAndDropHelper::startDrag(QAbstractItemView* itemView,
Qt::DropActions supportedActions,
DolphinViewController* dolphinViewController)
} else {
const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
const int urlsCount = urls.count();
- if (urlsCount == 0) {
- // TODO: handle dropping of other data
- } else if ((urlsCount == 1) && (urls.first() == destination)) {
+ if ((urlsCount == 1) && (urls.first() == destination)) {
emit errorMessage(i18nc("@info:status", "A folder cannot be dropped into itself"));
} else if (dropToItem) {
KonqOperations::doDrop(destItem, destination, event, widget);
QPixmap DragAndDropHelper::createDragPixmap(QAbstractItemView* itemView) const
{
- const QModelIndexList selectedIndexes = itemView->selectionModel()->selectedIndexes();
+ const QModelIndexList selectedIndexes = itemView->selectionModel()->selectedIndexes();
Q_ASSERT(!selectedIndexes.isEmpty());
-
+
QAbstractProxyModel* proxyModel = static_cast<QAbstractProxyModel*>(itemView->model());
KDirModel* dirModel = static_cast<KDirModel*>(proxyModel->sourceModel());
-
+
const int itemCount = selectedIndexes.count();
-
+
// If more than one item is dragged, align the items inside a
// rectangular grid. The maximum grid size is limited to 5 x 5 items.
int xCount = 3;
xCount = 4;
size = KIconLoader::SizeSmallMedium;
}
-
+
if (itemCount < xCount) {
xCount = itemCount;
}
-
+
int yCount = itemCount / xCount;
if (itemCount % xCount != 0) {
++yCount;
yCount = xCount;
}
- // Draw the selected items into the grid cells
+ // Draw the selected items into the grid cells
QPixmap dragPixmap(xCount * size + xCount - 1, yCount * size + yCount - 1);
dragPixmap.fill(Qt::transparent);
-
+
QPainter painter(&dragPixmap);
int x = 0;
int y = 0;
const KFileItem item = dirModel->itemForIndex(index);
const QPixmap pixmap = item.pixmap(size, size);
painter.drawPixmap(x, y, pixmap);
-
+
x += size + 1;
if (x >= dragPixmap.width()) {
x = 0;
break;
}
}
-
+
return dragPixmap;
}