+ Q_ASSERT(view != 0);
+
+ m_fileItemDelegate = new KFileItemDelegate(view);
+ view->setItemDelegate(m_fileItemDelegate);
+
+ view->setModel(m_proxyModel);
+ view->setSelectionMode(QAbstractItemView::ExtendedSelection);
+
+ new KMimeTypeResolver(view, m_dirModel);
+ m_topLayout->insertWidget(1, view);
+
+ connect(view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
+ m_controller, SLOT(indicateSelectionChange()));
+ connect(view->verticalScrollBar(), SIGNAL(valueChanged(int)),
+ this, SLOT(emitContentsMoved()));
+ connect(view->horizontalScrollBar(), SIGNAL(valueChanged(int)),
+ this, SLOT(emitContentsMoved()));
+}
+
+void DolphinView::selectAll(QItemSelectionModel::SelectionFlags flags)
+{
+ QItemSelectionModel* selectionModel = itemView()->selectionModel();
+ const QAbstractItemModel* itemModel = selectionModel->model();
+
+ const QModelIndex topLeft = itemModel->index(0, 0);
+ const QModelIndex bottomRight = itemModel->index(itemModel->rowCount() - 1,
+ itemModel->columnCount() - 1);
+
+ QItemSelection selection(topLeft, bottomRight);
+ selectionModel->select(selection, flags);
+}
+
+QAbstractItemView* DolphinView::itemView() const
+{
+ Q_ASSERT((m_iconsView == 0) || (m_detailsView == 0));
+ if (m_detailsView != 0) {
+ return m_detailsView;
+ }
+ return m_iconsView;
+}
+
+bool DolphinView::isValidNameIndex(const QModelIndex& index) const
+{
+ return index.isValid() && (index.column() == KDirModel::Name);
+}
+
+bool DolphinView::isCutItem(const KFileItem& item) const
+{
+ const QMimeData* mimeData = QApplication::clipboard()->mimeData();
+ const KUrl::List cutUrls = KUrl::List::fromMimeData(mimeData);
+
+ const KUrl& itemUrl = item.url();
+ KUrl::List::const_iterator it = cutUrls.begin();
+ const KUrl::List::const_iterator end = cutUrls.end();
+ while (it != end){
+ if (*it == itemUrl) {
+ return true;
+ }
+ ++it;
+ }
+
+ return false;
+}
+
+void DolphinView::applyCutItemEffect()
+{
+ const QMimeData* mimeData = QApplication::clipboard()->mimeData();
+ if (!KonqMimeData::decodeIsCutSelection(mimeData)) {
+ return;
+ }
+
+ KFileItemList items(m_dirLister->items());
+ KFileItemList::const_iterator it = items.begin();
+ const KFileItemList::const_iterator end = items.end();
+ while (it != end) {
+ KFileItem* item = *it;
+ if (isCutItem(*item)) {
+ const QModelIndex index = m_dirModel->indexForItem(*item);
+ const KFileItem* item = m_dirModel->itemForIndex(index);
+ const QVariant value = m_dirModel->data(index, Qt::DecorationRole);
+ if ((value.type() == QVariant::Icon) && (item != 0)) {
+ const QIcon icon(qvariant_cast<QIcon>(value));
+ QPixmap pixmap = icon.pixmap(128, 128);
+
+ // remember current pixmap for the item to be able
+ // to restore it when other items get cut
+ CutItem cutItem;
+ cutItem.url = item->url();
+ cutItem.pixmap = pixmap;
+ m_cutItemsCache.append(cutItem);
+
+ // apply icon effect to the cut item
+ KIconEffect iconEffect;
+ pixmap = iconEffect.apply(pixmap, K3Icon::Desktop, K3Icon::DisabledState);
+ m_dirModel->setData(index, QIcon(pixmap), Qt::DecorationRole);
+ }
+ }
+ ++it;