bool showHiddenFiles) :
QWidget(parent),
m_showProgress(false),
+ m_blockContentsMovedSignal(false),
m_mode(mode),
m_iconSize(0),
m_folderCount(0),
}
else {
// TODO: check how this can be integrated into KonqUndoManager/KonqOperations
-
- //UndoManager& undoMan = UndoManager::instance();
- //undoMan.beginMacro();
-
+ // as one operation instead of n rename operations like it is done now...
Q_ASSERT(newName.contains('#'));
- const int urlsCount = urls.count();
-
// iterate through all selected items and rename them...
const int replaceIndex = newName.indexOf('#');
Q_ASSERT(replaceIndex >= 0);
- for (int i = 0; i < urlsCount; ++i) {
- const KUrl& source = urls[i];
+ int index = 1;
+
+ KUrl::List::const_iterator it = urls.begin();
+ KUrl::List::const_iterator end = urls.end();
+ while (it != end) {
+ const KUrl& oldUrl = *it;
QString number;
- number.setNum(i + 1);
+ number.setNum(index++);
QString name(newName);
name.replace(replaceIndex, 1, number);
- if (source.fileName() != name) {
- KUrl dest(source.upUrl());
- dest.addPath(name);
-
- const bool destExists = KIO::NetAccess::exists(dest, false, view);
- if (destExists) {
- view->statusBar()->setMessage(i18n("Renaming failed (item '%1' already exists).",name),
- DolphinStatusBar::Error);
- break;
- }
- else if (KIO::NetAccess::file_move(source, dest)) {
- // TODO: From the users point of view he executed one 'rename n files' operation,
- // but internally we store it as n 'rename 1 file' operations for the undo mechanism.
- //DolphinCommand command(DolphinCommand::Rename, source, dest);
- //undoMan.addCommand(command);
- }
+ if (oldUrl.fileName() != name) {
+ KUrl newUrl(oldUrl.upUrl());
+ newUrl.addPath(name);
+ m_mainWindow->rename(oldUrl, newUrl);
}
+ ++it;
}
-
- //undoMan.endMacro();
}
}
else {
// renaming mechanism from the views.
Q_ASSERT(urls.count() == 1);
- // TODO: until KFileItemDelegate supports editing, use the the Dolphin
- // rename dialog as temporary workaround:
+ // TODO: Think about using KFileItemDelegate as soon as it supports editing.
+ // Currently the RenameDialog is used, but I'm not sure whether inline renaming
+ // is a benefit for the user at all -> let's wait for some input first...
RenameDialog dialog(urls);
if (dialog.exec() == QDialog::Rejected) {
return;
return itemView()->selectionModel()->hasSelection();
}
+void DolphinView::clearSelection()
+{
+ itemView()->selectionModel()->clear();
+}
+
KFileItemList DolphinView::selectedItems() const
{
const QAbstractItemView* view = itemView();
else if (item->isFile()) {
// allow to browse through ZIP and tar files
KMimeType::Ptr mime = item->mimeTypePtr();
- if (mime->is("application/x-zip")) {
+ if (mime->is("application/zip")) {
url.setProtocol("zip");
setUrl(url);
}
else if (mime->is("application/x-tar") ||
mime->is("application/x-tarz") ||
- mime->is("application/x-tbz") ||
- mime->is("application/x-tgz") ||
+ mime->is("application/x-bzip-compressed-tar") ||
+ mime->is("application/x-compressed-tar") ||
mime->is("application/x-tzo")) {
url.setProtocol("tar");
setUrl(url);
updateStatusBar();
+ m_blockContentsMovedSignal = false;
QTimer::singleShot(0, this, SLOT(restoreContentsPos()));
}
connect(job, SIGNAL(gotPreview(const KFileItem*, const QPixmap&)),
this, SLOT(showPreview(const KFileItem*, const QPixmap&)));
}
-
- const QMimeData* mimeData = QApplication::clipboard()->mimeData();
- if (KonqMimeData::decodeIsCutSelection(mimeData)) {
- QTimer::singleShot(0, this, SLOT(applyCutEffect()));
- }
}
void DolphinView::showPreview(const KFileItem* item, const QPixmap& pixmap)
const QMimeData* mimeData = QApplication::clipboard()->mimeData();
if (KonqMimeData::decodeIsCutSelection(mimeData) && isCutItem(*item)) {
KIconEffect iconEffect;
- QPixmap cutPixmap = iconEffect.apply(pixmap, K3Icon::Desktop, K3Icon::DisabledState);
- m_dirModel->setData(idx, cutPixmap, Qt::DecorationRole);
+ const QPixmap cutPixmap = iconEffect.apply(pixmap, K3Icon::Desktop, K3Icon::DisabledState);
+ m_dirModel->setData(idx, QIcon(cutPixmap), Qt::DecorationRole);
}
else {
- m_dirModel->setData(idx, pixmap, Qt::DecorationRole);
+ m_dirModel->setData(idx, QIcon(pixmap), Qt::DecorationRole);
}
}
}
m_statusBar->setProgress(0);
}
+ m_blockContentsMovedSignal = true;
m_dirLister->stop();
m_dirLister->openUrl(url, false, reload);
}
while (it != end) {
KFileItem* item = *it;
if (isCutItem(*item)) {
- QPixmap pixmap = item->pixmap(0);
- KIconEffect iconEffect;
- pixmap = iconEffect.apply(pixmap, K3Icon::Desktop, K3Icon::DisabledState);
const QModelIndex idx = m_dirModel->indexForItem(*item);
- if (idx.isValid()) {
- m_dirModel->setData(idx, pixmap, Qt::DecorationRole);
+ const QVariant value = m_dirModel->data(idx, Qt::DecorationRole);
+ if (value.type() == QVariant::Icon) {
+ const QIcon icon(qvariant_cast<QIcon>(value));
+ KIconEffect iconEffect;
+ const QPixmap pixmap = iconEffect.apply(icon.pixmap(128, 128),
+ K3Icon::Desktop,
+ K3Icon::DisabledState);
+ m_dirModel->setData(idx, QIcon(pixmap), Qt::DecorationRole);
}
}
++it;
item = fileItem(index);
}
- DolphinContextMenu contextMenu(this, item);
+ DolphinContextMenu contextMenu(m_mainWindow, item, url());
contextMenu.open();
}
const KUrl& destination = (directory == 0) ? url() :
directory->url();
- kDebug() << "DolphinView::dropUrls() - destination: " << destination.prettyUrl() << endl;
-
dropUrls(urls, destination);
}
void DolphinView::emitContentsMoved()
{
- emit contentsMoved(contentsX(), contentsY());
+ if (!m_blockContentsMovedSignal) {
+ emit contentsMoved(contentsX(), contentsY());
+ }
}
void DolphinView::updateActivationState()