]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
Converted to the standard mimetype names
[dolphin.git] / src / dolphinview.cpp
index 3602d1563668b3ac85b065e8a5573651284e7757..e49690a04863809e2fb701c252e875e79c0bb093 100644 (file)
@@ -59,6 +59,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
                          bool showHiddenFiles) :
     QWidget(parent),
     m_showProgress(false),
+    m_blockContentsMovedSignal(false),
     m_mode(mode),
     m_iconSize(0),
     m_folderCount(0),
@@ -265,45 +266,31 @@ void DolphinView::renameSelectedItems()
         }
         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 {
@@ -311,8 +298,9 @@ void DolphinView::renameSelectedItems()
         // 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;
@@ -473,6 +461,11 @@ bool DolphinView::hasSelection() const
     return itemView()->selectionModel()->hasSelection();
 }
 
+void DolphinView::clearSelection()
+{
+    itemView()->selectionModel()->clear();
+}
+
 KFileItemList DolphinView::selectedItems() const
 {
     const QAbstractItemView* view = itemView();
@@ -683,14 +676,14 @@ void DolphinView::triggerItem(const QModelIndex& index)
     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);
@@ -739,6 +732,7 @@ void DolphinView::updateItemCount()
 
     updateStatusBar();
 
+    m_blockContentsMovedSignal = false;
     QTimer::singleShot(0, this, SLOT(restoreContentsPos()));
 }
 
@@ -749,11 +743,6 @@ void DolphinView::generatePreviews(const KFileItemList& items)
         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)
@@ -764,11 +753,11 @@ 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);
         }
     }
 }
@@ -834,6 +823,7 @@ void DolphinView::startDirLister(const KUrl& url, bool reload)
         m_statusBar->setProgress(0);
     }
 
+    m_blockContentsMovedSignal = true;
     m_dirLister->stop();
     m_dirLister->openUrl(url, false, reload);
 }
@@ -940,12 +930,15 @@ void DolphinView::updateCutItems()
     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;
@@ -986,7 +979,7 @@ void DolphinView::openContextMenu(const QPoint& pos)
         item = fileItem(index);
     }
 
-    DolphinContextMenu contextMenu(this, item);
+    DolphinContextMenu contextMenu(m_mainWindow, item, url());
     contextMenu.open();
 }
 
@@ -1013,8 +1006,6 @@ void DolphinView::dropUrls(const KUrl::List& urls,
     const KUrl& destination = (directory == 0) ? url() :
                                                  directory->url();
 
-    kDebug() << "DolphinView::dropUrls() - destination: " << destination.prettyUrl() << endl;
-
     dropUrls(urls, destination);
 }
 
@@ -1047,7 +1038,9 @@ void DolphinView::updateSortOrder(Qt::SortOrder order)
 
 void DolphinView::emitContentsMoved()
 {
-    emit contentsMoved(contentsX(), contentsY());
+    if (!m_blockContentsMovedSignal) {
+        emit contentsMoved(contentsX(), contentsY());
+    }
 }
 
 void DolphinView::updateActivationState()